acpi: event listener: ignore events for direct GPEs

Ignore ACPI netlink events for GPEs which are configured as direct
GPEs. Such GPEs are forwarded to the guest directly as physical GPEs
using eventfd based forwarding of physical SCI interrupts (which
ensures that the GPE handling in the guest is synchronized with SCI
interrupt context in the host).
Forwarding via netlink should be used for emulated GPEs only.

With this change, we are still propagating all GPE events received by
the host to the guest. In the future we may need to enhance this logic,
since for some types of GPEs we may not want to inject them to the
guest at all, e.g. for Thunderbolt hotplug GPE we want to receive it
in crosvm and then inject a normal PCI hotplug interrupt instead.

BUG=b:197247746, b:205072342
TEST=Make sure that GPE marked as direct are ignored

Change-Id: Id5b05a99951455f52dcb375289cb10d040e8ff7f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3492225
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Tomasz Nowicki <tnowicki@google.com>
1 file changed
tree: f1950e6797f4238cacc6362f0afa060e45073225
  1. .cargo/
  2. .devcontainer/
  3. .github/
  4. aarch64/
  5. acpi_tables/
  6. arch/
  7. base/
  8. bin/
  9. bit_field/
  10. ci/
  11. common/
  12. crosvm-fuzz/
  13. crosvm_control/
  14. crosvm_plugin/
  15. devices/
  16. disk/
  17. docs/
  18. fuse/
  19. gpu_display/
  20. hypervisor/
  21. infra/
  22. integration_tests/
  23. kernel_cmdline/
  24. kernel_loader/
  25. kvm/
  26. kvm_sys/
  27. libcras_stub/
  28. libvda/
  29. linux_input_sys/
  30. logo/
  31. net_sys/
  32. net_util/
  33. power_monitor/
  34. protos/
  35. qcow_utils/
  36. resources/
  37. rutabaga_gfx/
  38. seccomp/
  39. src/
  40. system_api_stub/
  41. tests/
  42. third_party/
  43. tools/
  44. tpm2/
  45. tpm2-sys/
  46. usb_sys/
  47. usb_util/
  48. vfio_sys/
  49. vhost/
  50. virtio_sys/
  51. vm_control/
  52. vm_memory/
  53. x86_64/
  54. .dockerignore
  55. .gitignore
  56. .gitmodules
  57. .rustfmt.toml
  58. ARCHITECTURE.md
  59. Cargo.toml
  60. CONTRIBUTING.md
  61. LICENSE
  62. navbar.md
  63. OWNERS
  64. README.chromeos.md
  65. README.md
  66. run_tests
  67. rust-toolchain
  68. setup_cros_cargo.sh
  69. test_all
  70. unblocked_terms.txt
README.md

crosvm - The Chrome OS Virtual Machine Monitor

crosvm is a virtual machine monitor (VMM) based on Linux’s KVM hypervisor, with a focus on simplicity, security, and speed. crosvm is intended to run Linux guests, originally as a security boundary for running native applications on the Chrome OS platform. Compared to QEMU, crosvm doesn’t emulate architectures or real hardware, instead concentrating on paravirtualized devices, such as the virtio standard.

crosvm is currently used to run Linux/Android guests on Chrome OS devices.

Logo