mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2024-11-25 13:23:08 +00:00
298be81446
In order to replicate the ACPI notification from the host to the guest pass-through devices: 1) allocate GPE and eventfd per pci-vfio device 2) generate proper aml code for ACPI GPE handler. The example of generated aml: Scope (_GPE) { Method (_E00, 0, NotSerialized) // _Exx: Edge-Triggered GPE, xx=0x00-0xFF { Local0 = \_SB.PC00.PE08.NOTY Notify (\_SB.PC00.PE08, Local0) } } The eventfd is registered by host kernel via VFIO_DEVICE_SET_IRQS ioctl. Crosvm upon receiving early provided, per pci-vfio eventfd, stores the notification value and triggers GPE associated to pci-vfio device. Guest kernel upon handling GPE (thanks to generated aml [ad 2)], triggers Notify on required pass-through device and therefore replicates the ACPI Notification on the guest side [Accessing \_SB.PC00.PE08.NOTY pointed by VCFG opregion result with trap to crosvm, which returns previously stored notify value]. Kernel counterpart: CL:4538472 BUG=b:244205651 TEST=Observe replication of ACPI notification in the guest kernel Change-Id: Iaf66097acd84f3066f6ff70d382f83ecaeea9a00 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4538483 Commit-Queue: Grzegorz Jaszczyk <jaszczyk@google.com> Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> |
||
---|---|---|
.. | ||
src | ||
.build_test_skip | ||
Cargo.toml |