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