mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2024-11-24 20:48:55 +00:00
121e33246b
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>
29 lines
793 B
TOML
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" }
|