crosvm/x86_64/Cargo.toml
Dmytro Maluka 121e33246b acpi: vGPE: support direct SCI interrupt passthrough
In order to allow handling physical GPE in the guest, implement
physical SCI interrupts forwarding from the host to the guest.

It uses an eventfd based mechanism similar to how we normaly do
forwarding of other level-triggered interrupts. The difference is that
SCI trigger events from kernel are not injected directly to irqchip.
In order to support injecting both physical and virtual SCI interrupts
(so that some GPEs can be handled as physical while other GPEs can be
emulated), SCI trigger event is intercepted by ACPIPMResource which
injects it to irqchip via another eventfd - the same eventfd which is
used for injecting virtual SCI interrupts.

Similarly, resample event for physical forwarded SCI is received
via the same eventfd as for virtual SCI, then forwarded back to kernel.

BUG=b:205072342
TEST=see CL:3492224

Change-Id: I480a3000d69305aabc777e193d3453c476d2dbbd
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3492221
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Dmytro Maluka <dmy@semihalf.com>
Reviewed-by: Dmitry Torokhov <dtor@chromium.org>
Commit-Queue: Tomasz Nowicki <tnowicki@google.com>
2022-03-21 09:16:35 +00:00

29 lines
793 B
TOML

[package]
name = "x86_64"
version = "0.1.0"
authors = ["The Chromium OS Authors"]
edition = "2021"
[features]
gdb = ["gdbstub_arch", "arch/gdb"]
direct = []
[dependencies]
arch = { path = "../arch" }
assertions = { path = "../common/assertions" }
data_model = { path = "../common/data_model" }
devices = { path = "../devices" }
gdbstub_arch = { version = "0.1.0", optional = true }
hypervisor = { path = "../hypervisor" }
kernel_cmdline = { path = "../kernel_cmdline" }
kernel_loader = { path = "../kernel_loader" }
libc = "*"
minijail = "*"
remain = "*"
resources = { path = "../resources" }
sync = { path = "../common/sync" }
thiserror = "*"
base = { path = "../base" }
acpi_tables = {path = "../acpi_tables" }
vm_control = { path = "../vm_control" }
vm_memory = { path = "../vm_memory" }