summary refs log tree commit diff
path: root/x86_64
diff options
context:
space:
mode:
authorChuanxiao Dong <chuanxiao.dong@intel.corp-partner.google.com>2020-02-12 21:58:47 +0800
committerCommit Bot <commit-bot@chromium.org>2020-02-19 10:38:04 +0000
commit546f01cb96b0b2c688257371608c64db78b5d31a (patch)
treea47c679e7cfff5977b99af7b7444c05f30ebaccb /x86_64
parent80a8d52fac83f5f6cd0187ebcbab6e1e5bd8586f (diff)
downloadcrosvm-546f01cb96b0b2c688257371608c64db78b5d31a.tar
crosvm-546f01cb96b0b2c688257371608c64db78b5d31a.tar.gz
crosvm-546f01cb96b0b2c688257371608c64db78b5d31a.tar.bz2
crosvm-546f01cb96b0b2c688257371608c64db78b5d31a.tar.lz
crosvm-546f01cb96b0b2c688257371608c64db78b5d31a.tar.xz
crosvm-546f01cb96b0b2c688257371608c64db78b5d31a.tar.zst
crosvm-546f01cb96b0b2c688257371608c64db78b5d31a.zip
acpipm: implement suspend and resume mechanism
For suspend request from VM, will write suspend event and notify
crosvm main process to pause VCPUs.

For resume request, it is not from VM itself but by the resume
command through crosvm socket. Resume request will notify the PM
device to fill its wakeup registers with wakeup event so that
when VCPUs start to run, VM can know there is wakeup from outside.

BUG=chromium:1018674
TEST=cargo test -p devices

Change-Id: I4724ffee10150065a62bf520076c16cbc70b7749
Signed-off-by: Chuanxiao Dong <chuanxiao.dong@intel.corp-partner.google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2035169
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Tomasz Jeznach <tjeznach@chromium.org>
Diffstat (limited to 'x86_64')
-rw-r--r--x86_64/src/lib.rs3
1 files changed, 2 insertions, 1 deletions
diff --git a/x86_64/src/lib.rs b/x86_64/src/lib.rs
index f9efad4..5ab0445 100644
--- a/x86_64/src/lib.rs
+++ b/x86_64/src/lib.rs
@@ -734,12 +734,13 @@ impl X8664arch {
         let pm = Arc::new(Mutex::new(devices::ACPIPMResource::new(suspend_evt)));
         io_bus
             .insert(
-                pm,
+                pm.clone(),
                 devices::acpi::ACPIPM_RESOURCE_BASE,
                 devices::acpi::ACPIPM_RESOURCE_LEN,
                 false,
             )
             .unwrap();
+        io_bus.notify_on_resume(pm);
 
         Ok(io_bus)
     }