mirror of https://github.com/proxmox/mirror_qemu
docs/specs/acpi_mem_hotplug: Convert to rST
Convert the acpi memory hotplug spec to rST. Note that this includes converting a lot of weird whitespace characters to plain old spaces (the rST parser does not like whatever the old ones were). Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Igor Mammedov <imammedo@redhat.com> Message-id: 20210727170414.3368-3-peter.maydell@linaro.orgmaster
parent
444fa22549
commit
615a55827c
|
@ -0,0 +1,128 @@
|
||||||
|
QEMU<->ACPI BIOS memory hotplug interface
|
||||||
|
=========================================
|
||||||
|
|
||||||
|
ACPI BIOS GPE.3 handler is dedicated for notifying OS about memory hot-add
|
||||||
|
and hot-remove events.
|
||||||
|
|
||||||
|
Memory hot-plug interface (IO port 0xa00-0xa17, 1-4 byte access)
|
||||||
|
----------------------------------------------------------------
|
||||||
|
|
||||||
|
Read access behavior
|
||||||
|
^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
[0x0-0x3]
|
||||||
|
Lo part of memory device phys address
|
||||||
|
[0x4-0x7]
|
||||||
|
Hi part of memory device phys address
|
||||||
|
[0x8-0xb]
|
||||||
|
Lo part of memory device size in bytes
|
||||||
|
[0xc-0xf]
|
||||||
|
Hi part of memory device size in bytes
|
||||||
|
[0x10-0x13]
|
||||||
|
Memory device proximity domain
|
||||||
|
[0x14]
|
||||||
|
Memory device status fields
|
||||||
|
|
||||||
|
bits:
|
||||||
|
|
||||||
|
0:
|
||||||
|
Device is enabled and may be used by guest
|
||||||
|
1:
|
||||||
|
Device insert event, used to distinguish device for which
|
||||||
|
no device check event to OSPM was issued.
|
||||||
|
It's valid only when bit 1 is set.
|
||||||
|
2:
|
||||||
|
Device remove event, used to distinguish device for which
|
||||||
|
no device eject request to OSPM was issued.
|
||||||
|
3-7:
|
||||||
|
reserved and should be ignored by OSPM
|
||||||
|
|
||||||
|
[0x15-0x17]
|
||||||
|
reserved
|
||||||
|
|
||||||
|
Write access behavior
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
|
||||||
|
[0x0-0x3]
|
||||||
|
Memory device slot selector, selects active memory device.
|
||||||
|
All following accesses to other registers in 0xa00-0xa17
|
||||||
|
region will read/store data from/to selected memory device.
|
||||||
|
[0x4-0x7]
|
||||||
|
OST event code reported by OSPM
|
||||||
|
[0x8-0xb]
|
||||||
|
OST status code reported by OSPM
|
||||||
|
[0xc-0x13]
|
||||||
|
reserved, writes into it are ignored
|
||||||
|
[0x14]
|
||||||
|
Memory device control fields
|
||||||
|
|
||||||
|
bits:
|
||||||
|
|
||||||
|
0:
|
||||||
|
reserved, OSPM must clear it before writing to register.
|
||||||
|
Due to BUG in versions prior 2.4 that field isn't cleared
|
||||||
|
when other fields are written. Keep it reserved and don't
|
||||||
|
try to reuse it.
|
||||||
|
1:
|
||||||
|
if set to 1 clears device insert event, set by OSPM
|
||||||
|
after it has emitted device check event for the
|
||||||
|
selected memory device
|
||||||
|
2:
|
||||||
|
if set to 1 clears device remove event, set by OSPM
|
||||||
|
after it has emitted device eject request for the
|
||||||
|
selected memory device
|
||||||
|
3:
|
||||||
|
if set to 1 initiates device eject, set by OSPM when it
|
||||||
|
triggers memory device removal and calls _EJ0 method
|
||||||
|
4-7:
|
||||||
|
reserved, OSPM must clear them before writing to register
|
||||||
|
|
||||||
|
Selecting memory device slot beyond present range has no effect on platform:
|
||||||
|
|
||||||
|
- write accesses to memory hot-plug registers not documented above are ignored
|
||||||
|
- read accesses to memory hot-plug registers not documented above return
|
||||||
|
all bits set to 1.
|
||||||
|
|
||||||
|
Memory hot remove process diagram
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
+-------------+ +-----------------------+ +------------------+
|
||||||
|
| 1. QEMU | | 2. QEMU | |3. QEMU |
|
||||||
|
| device_del +---->+ device unplug request +----->+Send SCI to guest,|
|
||||||
|
| | | cb | |return control to |
|
||||||
|
| | | | |management |
|
||||||
|
+-------------+ +-----------------------+ +------------------+
|
||||||
|
|
||||||
|
+---------------------------------------------------------------------+
|
||||||
|
|
||||||
|
+---------------------+ +-------------------------+
|
||||||
|
| OSPM: | remove event | OSPM: |
|
||||||
|
| send Eject Request, | | Scan memory devices |
|
||||||
|
| clear remove event +<-------------+ for event flags |
|
||||||
|
| | | |
|
||||||
|
+---------------------+ +-------------------------+
|
||||||
|
|
|
||||||
|
|
|
||||||
|
+---------v--------+ +-----------------------+
|
||||||
|
| Guest OS: | success | OSPM: |
|
||||||
|
| process Ejection +----------->+ Execute _EJ0 method, |
|
||||||
|
| request | | set eject bit in flags|
|
||||||
|
+------------------+ +-----------------------+
|
||||||
|
|failure |
|
||||||
|
v v
|
||||||
|
+------------------------+ +-----------------------+
|
||||||
|
| OSPM: | | QEMU: |
|
||||||
|
| set OST event & status | | call device unplug cb |
|
||||||
|
| fields | | |
|
||||||
|
+------------------------+ +-----------------------+
|
||||||
|
| |
|
||||||
|
v v
|
||||||
|
+------------------+ +-------------------+
|
||||||
|
|QEMU: | |QEMU: |
|
||||||
|
|Send OST QMP event| |Send device deleted|
|
||||||
|
| | |QMP event |
|
||||||
|
+------------------+ | |
|
||||||
|
+-------------------+
|
|
@ -1,94 +0,0 @@
|
||||||
QEMU<->ACPI BIOS memory hotplug interface
|
|
||||||
--------------------------------------
|
|
||||||
|
|
||||||
ACPI BIOS GPE.3 handler is dedicated for notifying OS about memory hot-add
|
|
||||||
and hot-remove events.
|
|
||||||
|
|
||||||
Memory hot-plug interface (IO port 0xa00-0xa17, 1-4 byte access):
|
|
||||||
---------------------------------------------------------------
|
|
||||||
0xa00:
|
|
||||||
read access:
|
|
||||||
[0x0-0x3] Lo part of memory device phys address
|
|
||||||
[0x4-0x7] Hi part of memory device phys address
|
|
||||||
[0x8-0xb] Lo part of memory device size in bytes
|
|
||||||
[0xc-0xf] Hi part of memory device size in bytes
|
|
||||||
[0x10-0x13] Memory device proximity domain
|
|
||||||
[0x14] Memory device status fields
|
|
||||||
bits:
|
|
||||||
0: Device is enabled and may be used by guest
|
|
||||||
1: Device insert event, used to distinguish device for which
|
|
||||||
no device check event to OSPM was issued.
|
|
||||||
It's valid only when bit 1 is set.
|
|
||||||
2: Device remove event, used to distinguish device for which
|
|
||||||
no device eject request to OSPM was issued.
|
|
||||||
3-7: reserved and should be ignored by OSPM
|
|
||||||
[0x15-0x17] reserved
|
|
||||||
|
|
||||||
write access:
|
|
||||||
[0x0-0x3] Memory device slot selector, selects active memory device.
|
|
||||||
All following accesses to other registers in 0xa00-0xa17
|
|
||||||
region will read/store data from/to selected memory device.
|
|
||||||
[0x4-0x7] OST event code reported by OSPM
|
|
||||||
[0x8-0xb] OST status code reported by OSPM
|
|
||||||
[0xc-0x13] reserved, writes into it are ignored
|
|
||||||
[0x14] Memory device control fields
|
|
||||||
bits:
|
|
||||||
0: reserved, OSPM must clear it before writing to register.
|
|
||||||
Due to BUG in versions prior 2.4 that field isn't cleared
|
|
||||||
when other fields are written. Keep it reserved and don't
|
|
||||||
try to reuse it.
|
|
||||||
1: if set to 1 clears device insert event, set by OSPM
|
|
||||||
after it has emitted device check event for the
|
|
||||||
selected memory device
|
|
||||||
2: if set to 1 clears device remove event, set by OSPM
|
|
||||||
after it has emitted device eject request for the
|
|
||||||
selected memory device
|
|
||||||
3: if set to 1 initiates device eject, set by OSPM when it
|
|
||||||
triggers memory device removal and calls _EJ0 method
|
|
||||||
4-7: reserved, OSPM must clear them before writing to register
|
|
||||||
|
|
||||||
Selecting memory device slot beyond present range has no effect on platform:
|
|
||||||
- write accesses to memory hot-plug registers not documented above are
|
|
||||||
ignored
|
|
||||||
- read accesses to memory hot-plug registers not documented above return
|
|
||||||
all bits set to 1.
|
|
||||||
|
|
||||||
Memory hot remove process diagram:
|
|
||||||
----------------------------------
|
|
||||||
+-------------+ +-----------------------+ +------------------+
|
|
||||||
| 1. QEMU | | 2. QEMU | |3. QEMU |
|
|
||||||
| device_del +---->+ device unplug request +----->+Send SCI to guest,|
|
|
||||||
| | | cb | |return control to |
|
|
||||||
+-------------+ +-----------------------+ |management |
|
|
||||||
+------------------+
|
|
||||||
|
|
||||||
+---------------------------------------------------------------------+
|
|
||||||
|
|
||||||
+---------------------+ +-------------------------+
|
|
||||||
| OSPM: | remove event | OSPM: |
|
|
||||||
| send Eject Request, | | Scan memory devices |
|
|
||||||
| clear remove event +<-------------+ for event flags |
|
|
||||||
| | | |
|
|
||||||
+---------------------+ +-------------------------+
|
|
||||||
|
|
|
||||||
|
|
|
||||||
+---------v--------+ +-----------------------+
|
|
||||||
| Guest OS: | success | OSPM: |
|
|
||||||
| process Ejection +----------->+ Execute _EJ0 method, |
|
|
||||||
| request | | set eject bit in flags|
|
|
||||||
+------------------+ +-----------------------+
|
|
||||||
|failure |
|
|
||||||
v v
|
|
||||||
+------------------------+ +-----------------------+
|
|
||||||
| OSPM: | | QEMU: |
|
|
||||||
| set OST event & status | | call device unplug cb |
|
|
||||||
| fields | | |
|
|
||||||
+------------------------+ +-----------------------+
|
|
||||||
| |
|
|
||||||
v v
|
|
||||||
+------------------+ +-------------------+
|
|
||||||
|QEMU: | |QEMU: |
|
|
||||||
|Send OST QMP event| |Send device deleted|
|
|
||||||
| | |QMP event |
|
|
||||||
+------------------+ | |
|
|
||||||
+-------------------+
|
|
|
@ -14,3 +14,4 @@ guest hardware that is specific to QEMU.
|
||||||
tpm
|
tpm
|
||||||
acpi_hest_ghes
|
acpi_hest_ghes
|
||||||
acpi_cpu_hotplug
|
acpi_cpu_hotplug
|
||||||
|
acpi_mem_hotplug
|
||||||
|
|
Loading…
Reference in New Issue