Message ID | 20190904085629.13872-10-shameerali.kolothum.thodi@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ARM virt: ACPI memory hotplug support | expand |
On Wed, 4 Sep 2019 at 09:58, Shameer Kolothum <shameerali.kolothum.thodi@huawei.com> wrote: > > 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> > --- > docs/specs/acpi_hw_reduced_hotplug.txt | 60 ++++++++++++++++++++++++++ > 1 file changed, 60 insertions(+) > create mode 100644 docs/specs/acpi_hw_reduced_hotplug.txt New documentation in docs/specs should be in .rst format and listed in docs/specs/index.rst, please. That way it gets built into the sphinx manual sets we're transitioning to. The rst markup should hopefully not be too difficult to add. Some minor typo/grammar fixes below: > +GED allows HW reduced platforms to handle interrupts in ACPI ASL > +statements. It follows a very similar approach like the _EVT method "similar approach to the" > +from GPIO events. All interrupts are listed in _CRS and the handler > +is written in _EVT method. However, Qemu implementation uses a single "the QEMU implementation" >+ interrupt for the GED device, relying on IO memory region to communicate "on an IO memory region" > +the type of device affected by the interrupt. This way, we can support > +up to 32 events with a unique interrupt. > + [0x0-0x3] Event selector bit field(32 bit) set by Qemu. Missing space before '('. "QEMU" should be all-capitals. thanks -- PMM
diff --git a/docs/specs/acpi_hw_reduced_hotplug.txt b/docs/specs/acpi_hw_reduced_hotplug.txt new file mode 100644 index 0000000000..2d78c40d6a --- /dev/null +++ b/docs/specs/acpi_hw_reduced_hotplug.txt @@ -0,0 +1,60 @@ +QEMU<->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 like the _EVT method +from GPIO events. All interrupts are listed in _CRS and the handler +is written in _EVT method. However, Qemu implementation uses a single +interrupt for the GED device, relying on 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