mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging
virtio, vhost, acpi: features, fixes, tests ARM ACPI memory hotplug support + tests for new arm/virt ACPI tables. Virtio fs support (no migration). A vhost-user reconnect bugfix. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> # gpg: Signature made Tue 15 Oct 2019 22:02:19 BST # gpg: using RSA key 281F0DB8D28D5469 # gpg: Good signature from "Michael S. Tsirkin <mst@kernel.org>" [full] # gpg: aka "Michael S. Tsirkin <mst@redhat.com>" [full] # Primary key fingerprint: 0270 606B 6F3C DF3D 0B17 0970 C350 3912 AFBE 8E67 # Subkey fingerprint: 5D09 FD08 71C8 F85B 94CA 8A0D 281F 0DB8 D28D 5469 * remotes/mst/tags/for_upstream: virtio: add vhost-user-fs-pci device virtio: add vhost-user-fs base device virtio: Add virtio_fs linux headers tests/acpi: add expected tables for arm/virt tests: document how to update acpi tables tests: Add bios tests to arm/virt tests: allow empty expected files tests/acpi: add empty files tests: Update ACPI tables list for upcoming arm/virt tests docs/specs: Add ACPI GED documentation hw/arm: Use GED for system_powerdown event hw/arm: Factor out powerdown notifier from GPIO hw/arm/virt-acpi-build: Add PC-DIMM in SRAT hw/arm/virt: Enable device memory cold/hot plug with ACPI boot hw/arm/virt: Add memory hotplug framework hw/acpi: Add ACPI Generic Event Device Support hw/acpi: Do not create memory hotplug method when handler is not defined hw/acpi: Make ACPI IO address space configurable vhost-user: save features if the char dev is closed Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
==================================================
|
||||
QEMU and ACPI BIOS Generic Event Device interface
|
||||
==================================================
|
||||
|
||||
The ACPI *Generic Event Device* (GED) is a HW reduced platform
|
||||
specific device introduced in ACPI v6.1 that handles all platform
|
||||
events, including the hotplug ones. GED is modelled as a device
|
||||
in the namespace with a _HID defined to be ACPI0013. This document
|
||||
describes the interface between QEMU and the ACPI BIOS.
|
||||
|
||||
GED allows HW reduced platforms to handle interrupts in ACPI ASL
|
||||
statements. It follows a very similar approach to the _EVT method
|
||||
from GPIO events. All interrupts are listed in _CRS and the handler
|
||||
is written in _EVT method. However, the QEMU implementation uses a
|
||||
single interrupt for the GED device, relying on an IO memory region
|
||||
to communicate the type of device affected by the interrupt. This way,
|
||||
we can support up to 32 events with a unique interrupt.
|
||||
|
||||
**Here is an example,**
|
||||
|
||||
::
|
||||
|
||||
Device (\_SB.GED)
|
||||
{
|
||||
Name (_HID, "ACPI0013")
|
||||
Name (_UID, Zero)
|
||||
Name (_CRS, ResourceTemplate ()
|
||||
{
|
||||
Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, ,, )
|
||||
{
|
||||
0x00000029,
|
||||
}
|
||||
})
|
||||
OperationRegion (EREG, SystemMemory, 0x09080000, 0x04)
|
||||
Field (EREG, DWordAcc, NoLock, WriteAsZeros)
|
||||
{
|
||||
ESEL, 32
|
||||
}
|
||||
Method (_EVT, 1, Serialized)
|
||||
{
|
||||
Local0 = ESEL // ESEL = IO memory region which specifies the
|
||||
// device type.
|
||||
If (((Local0 & One) == One))
|
||||
{
|
||||
MethodEvent1()
|
||||
}
|
||||
If ((Local0 & 0x2) == 0x2)
|
||||
{
|
||||
MethodEvent2()
|
||||
}
|
||||
...
|
||||
}
|
||||
}
|
||||
|
||||
GED IO interface (4 byte access)
|
||||
--------------------------------
|
||||
**read access:**
|
||||
|
||||
::
|
||||
|
||||
[0x0-0x3] Event selector bit field (32 bit) set by QEMU.
|
||||
|
||||
bits:
|
||||
0: Memory hotplug event
|
||||
1: System power down event
|
||||
2-31: Reserved
|
||||
|
||||
**write_access:**
|
||||
|
||||
Nothing is expected to be written into GED IO memory
|
||||
@@ -12,3 +12,4 @@ Contents:
|
||||
|
||||
ppc-xive
|
||||
ppc-spapr-xive
|
||||
acpi_hw_reduced_hotplug
|
||||
|
||||
Reference in New Issue
Block a user