summary refs log tree commit diff
path: root/src/main.rs
diff options
context:
space:
mode:
authorTomasz Jeznach <tjeznach@chromium.org>2020-05-20 23:27:59 -0700
committerCommit Bot <commit-bot@chromium.org>2020-06-01 23:25:39 +0000
commit4264464153a7a788ef73c5015ac8bbde5f8ebe1c (patch)
tree38d1e2b38304f9fc81b9627a037fa11146a291fb /src/main.rs
parent2705264dc649a60077dfefc9924b8689d8f7d994 (diff)
downloadcrosvm-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/main.rs')
-rw-r--r--src/main.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs
index 61fcd48..e8a6e6c 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1232,6 +1232,23 @@ fn set_argument(cfg: &mut Config, name: &str, value: Option<&str>) -> argument::
         "video-encoder" => {
             cfg.video_enc = true;
         }
+        "acpi-table" => {
+            let acpi_table = PathBuf::from(value.unwrap());
+            if !acpi_table.exists() {
+                return Err(argument::Error::InvalidValue {
+                    value: value.unwrap().to_owned(),
+                    expected: String::from("the acpi-table path does not exist"),
+                });
+            }
+            if !acpi_table.is_file() {
+                return Err(argument::Error::InvalidValue {
+                    value: value.unwrap().to_owned(),
+                    expected: String::from("the acpi-table path should be a file"),
+                });
+            }
+
+            cfg.acpi_tables.push(acpi_table);
+        }
 
         "help" => return Err(argument::Error::PrintHelp),
         _ => unreachable!(),
@@ -1406,6 +1423,7 @@ writeback=BOOL - Indicates whether the VM can use writeback caching (default: fa
           Argument::flag("video-decoder", "(EXPERIMENTAL) enable virtio-video decoder device"),
           #[cfg(feature = "video-encoder")]
           Argument::flag("video-encoder", "(EXPERIMENTAL) enable virtio-video encoder device"),
+          Argument::value("acpi-table", "PATH", "Path to user provided ACPI table"),
           Argument::short_flag('h', "help", "Print help message.")];
 
     let mut cfg = Config::default();