cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

acpi_mem_hotplug.rst (4604B)


      1QEMU<->ACPI BIOS memory hotplug interface
      2=========================================
      3
      4ACPI BIOS GPE.3 handler is dedicated for notifying OS about memory hot-add
      5and hot-remove events.
      6
      7Memory hot-plug interface (IO port 0xa00-0xa17, 1-4 byte access)
      8----------------------------------------------------------------
      9
     10Read access behavior
     11^^^^^^^^^^^^^^^^^^^^
     12
     13[0x0-0x3]
     14  Lo part of memory device phys address
     15[0x4-0x7]
     16  Hi part of memory device phys address
     17[0x8-0xb]
     18  Lo part of memory device size in bytes
     19[0xc-0xf]
     20  Hi part of memory device size in bytes
     21[0x10-0x13]
     22  Memory device proximity domain
     23[0x14]
     24  Memory device status fields
     25
     26  bits:
     27
     28  0:
     29    Device is enabled and may be used by guest
     30  1:
     31    Device insert event, used to distinguish device for which
     32    no device check event to OSPM was issued.
     33    It's valid only when bit 1 is set.
     34  2:
     35    Device remove event, used to distinguish device for which
     36    no device eject request to OSPM was issued.
     37  3-7:
     38    reserved and should be ignored by OSPM
     39
     40[0x15-0x17]
     41  reserved
     42
     43Write access behavior
     44^^^^^^^^^^^^^^^^^^^^^
     45
     46
     47[0x0-0x3]
     48  Memory device slot selector, selects active memory device.
     49  All following accesses to other registers in 0xa00-0xa17
     50  region will read/store data from/to selected memory device.
     51[0x4-0x7]
     52  OST event code reported by OSPM
     53[0x8-0xb]
     54  OST status code reported by OSPM
     55[0xc-0x13]
     56  reserved, writes into it are ignored
     57[0x14]
     58  Memory device control fields
     59
     60  bits:
     61
     62  0:
     63    reserved, OSPM must clear it before writing to register.
     64    Due to BUG in versions prior 2.4 that field isn't cleared
     65    when other fields are written. Keep it reserved and don't
     66    try to reuse it.
     67  1:
     68    if set to 1 clears device insert event, set by OSPM
     69    after it has emitted device check event for the
     70    selected memory device
     71  2:
     72    if set to 1 clears device remove event, set by OSPM
     73    after it has emitted device eject request for the
     74    selected memory device
     75  3:
     76    if set to 1 initiates device eject, set by OSPM when it
     77    triggers memory device removal and calls _EJ0 method
     78  4-7:
     79    reserved, OSPM must clear them before writing to register
     80
     81Selecting memory device slot beyond present range has no effect on platform:
     82
     83- write accesses to memory hot-plug registers not documented above are ignored
     84- read accesses to memory hot-plug registers not documented above return
     85  all bits set to 1.
     86
     87Memory hot remove process diagram
     88---------------------------------
     89
     90::
     91
     92   +-------------+     +-----------------------+      +------------------+
     93   |  1. QEMU    |     | 2. QEMU               |      |3. QEMU           |
     94   |  device_del +---->+ device unplug request +----->+Send SCI to guest,|
     95   |             |     |         cb            |      |return control to |
     96   |             |     |                       |      |management        |
     97   +-------------+     +-----------------------+      +------------------+
     98
     99   +---------------------------------------------------------------------+
    100
    101   +---------------------+              +-------------------------+
    102   | OSPM:               | remove event | OSPM:                   |
    103   | send Eject Request, |              | Scan memory devices     |
    104   | clear remove event  +<-------------+ for event flags         |
    105   |                     |              |                         |
    106   +---------------------+              +-------------------------+
    107             |
    108             |
    109   +---------v--------+            +-----------------------+
    110   | Guest OS:        |  success   | OSPM:                 |
    111   | process Ejection +----------->+ Execute _EJ0 method,  |
    112   | request          |            | set eject bit in flags|
    113   +------------------+            +-----------------------+
    114             |failure                         |
    115             v                                v
    116   +------------------------+      +-----------------------+
    117   | OSPM:                  |      | QEMU:                 |
    118   | set OST event & status |      | call device unplug cb |
    119   | fields                 |      |                       |
    120   +------------------------+      +-----------------------+
    121            |                                  |
    122            v                                  v
    123   +------------------+              +-------------------+
    124   |QEMU:             |              |QEMU:              |
    125   |Send OST QMP event|              |Send device deleted|
    126   |                  |              |QMP event          |
    127   +------------------+              |                   |
    128                                     +-------------------+