108 lines
3.4 KiB
Diff
108 lines
3.4 KiB
Diff
|
|
From 9c1752703fb8a5b70985cf4c9caabc3388c5953b Mon Sep 17 00:00:00 2001
|
||
|
|
From: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
|
||
|
|
Date: Wed, 18 Sep 2019 14:06:31 +0100
|
||
|
|
Subject: [PATCH] docs/specs: Add ACPI GED documentation
|
||
|
|
|
||
|
|
Documents basic concepts of ACPI Generic Event device(GED)
|
||
|
|
and interface between QEMU and the ACPI BIOS.
|
||
|
|
|
||
|
|
Signed-off-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
|
||
|
|
Reviewed-by: Eric Auger <eric.auger@redhat.com>
|
||
|
|
Message-Id: <20190918130633.4872-10-shameerali.kolothum.thodi@huawei.com>
|
||
|
|
Acked-by: Peter Maydell <peter.maydell@linaro.org>
|
||
|
|
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
|
||
|
|
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
|
||
|
|
---
|
||
|
|
docs/specs/acpi_hw_reduced_hotplug.rst | 70 ++++++++++++++++++++++++++
|
||
|
|
docs/specs/index.rst | 1 +
|
||
|
|
2 files changed, 71 insertions(+)
|
||
|
|
create mode 100644 docs/specs/acpi_hw_reduced_hotplug.rst
|
||
|
|
|
||
|
|
diff --git a/docs/specs/acpi_hw_reduced_hotplug.rst b/docs/specs/acpi_hw_reduced_hotplug.rst
|
||
|
|
new file mode 100644
|
||
|
|
index 0000000000..911a98255b
|
||
|
|
--- /dev/null
|
||
|
|
+++ b/docs/specs/acpi_hw_reduced_hotplug.rst
|
||
|
|
@@ -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
|
||
|
|
diff --git a/docs/specs/index.rst b/docs/specs/index.rst
|
||
|
|
index 40adb97c5e..984ba44029 100644
|
||
|
|
--- a/docs/specs/index.rst
|
||
|
|
+++ b/docs/specs/index.rst
|
||
|
|
@@ -12,3 +12,4 @@ Contents:
|
||
|
|
|
||
|
|
ppc-xive
|
||
|
|
ppc-spapr-xive
|
||
|
|
+ acpi_hw_reduced_hotplug
|
||
|
|
--
|
||
|
|
2.19.1
|