diff options
author | Tomasz Jeznach <tjeznach@chromium.org> | 2020-05-20 23:27:59 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-06-01 23:25:39 +0000 |
commit | 4264464153a7a788ef73c5015ac8bbde5f8ebe1c (patch) | |
tree | 38d1e2b38304f9fc81b9627a037fa11146a291fb /src/linux.rs | |
parent | 2705264dc649a60077dfefc9924b8689d8f7d994 (diff) | |
download | crosvm-4264464153a7a788ef73c5015ac8bbde5f8ebe1c.tar crosvm-4264464153a7a788ef73c5015ac8bbde5f8ebe1c.tar.gz crosvm-4264464153a7a788ef73c5015ac8bbde5f8ebe1c.tar.bz2 crosvm-4264464153a7a788ef73c5015ac8bbde5f8ebe1c.tar.lz crosvm-4264464153a7a788ef73c5015ac8bbde5f8ebe1c.tar.xz crosvm-4264464153a7a788ef73c5015ac8bbde5f8ebe1c.tar.zst crosvm-4264464153a7a788ef73c5015ac8bbde5f8ebe1c.zip |
acpi: support user provided ACPI SDTs.
Enable support for user provided ACPI tables with supplementary system description. Argument --acpi-table shall point to exsting file or pseudo-file with valid ACPI table content. BUG=None TEST=boot Linux kernel with generated SSDT tables. Change-Id: I8eac21da070dcc325884ed888cc7bcb01bc086ce Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2212501 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Tested-by: Tomasz Jeznach <tjeznach@chromium.org> Commit-Queue: Tomasz Jeznach <tjeznach@chromium.org>
Diffstat (limited to 'src/linux.rs')
-rw-r--r-- | src/linux.rs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/linux.rs b/src/linux.rs index e95f372..fb463c2 100644 --- a/src/linux.rs +++ b/src/linux.rs @@ -26,6 +26,8 @@ use std::time::Duration; use libc::{self, c_int, gid_t, uid_t}; +use acpi_tables::sdt::SDT; + #[cfg(feature = "gpu")] use devices::virtio::EventDevice; use devices::virtio::{self, Console, VirtioDevice}; @@ -109,6 +111,7 @@ pub enum Error { LoadKernel(Box<dyn StdError>), MemoryTooLarge, NetDeviceNew(virtio::NetError), + OpenAcpiTable(PathBuf, io::Error), OpenAndroidFstab(PathBuf, io::Error), OpenBios(PathBuf, io::Error), OpenInitrd(PathBuf, io::Error), @@ -196,6 +199,7 @@ impl Display for Error { LoadKernel(e) => write!(f, "failed to load kernel: {}", e), MemoryTooLarge => write!(f, "requested memory size too large"), NetDeviceNew(e) => write!(f, "failed to set up virtio networking: {}", e), + OpenAcpiTable(p, e) => write!(f, "failed to open ACPI file {}: {}", p.display(), e), OpenAndroidFstab(p, e) => write!( f, "failed to open android fstab file {}: {}", @@ -1712,6 +1716,11 @@ pub fn run_config(cfg: Config) -> Result<()> { initrd_image, extra_kernel_params: cfg.params.clone(), wayland_dmabuf: cfg.wayland_dmabuf, + acpi_sdts: cfg + .acpi_tables + .iter() + .map(|path| SDT::from_file(path).map_err(|e| Error::OpenAcpiTable(path.clone(), e))) + .collect::<Result<Vec<SDT>>>()?, }; let control_server_socket = match &cfg.socket_path { |