summaryrefslogblamecommitdiffstats
path: root/docs/specs/acpi_mem_hotplug.txt
blob: 12909940ccded731e96b283d8fb5a65c40eb7be4 (plain) (tree)











































                                                                            
QEMU<->ACPI BIOS memory hotplug interface
--------------------------------------

ACPI BIOS GPE.3 handler is dedicated for notifying OS about memory hot-add
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-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
              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-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.