|
|
1.1 ! root 1: qemu: bios: pci hotplug support (Marcelo Tosatti) ! 2: ! 3: Signed-off-by: Marcelo Tosatti <[email protected]> ! 4: Signed-off-by: Anthony Liguori <[email protected]> ! 5: ! 6: Index: bochs/bios/acpi-dsdt.dsl ! 7: =================================================================== ! 8: --- bochs.orig/bios/acpi-dsdt.dsl ! 9: +++ bochs/bios/acpi-dsdt.dsl ! 10: @@ -91,6 +91,61 @@ DefinitionBlock ( ! 11: prt_slot3(0x001f), ! 12: }) ! 13: ! 14: + OperationRegion(PCST, SystemIO, 0xae00, 0x08) ! 15: + Field (PCST, DWordAcc, NoLock, WriteAsZeros) ! 16: + { ! 17: + PCIU, 32, ! 18: + PCID, 32, ! 19: + } ! 20: + ! 21: + OperationRegion(SEJ, SystemIO, 0xae08, 0x04) ! 22: + Field (SEJ, DWordAcc, NoLock, WriteAsZeros) ! 23: + { ! 24: + B0EJ, 32, ! 25: + } ! 26: + ! 27: +#define hotplug_slot(name, nr) \ ! 28: + Device (S##name) { \ ! 29: + Name (_ADR, nr##0000) \ ! 30: + Method (_EJ0,1) { \ ! 31: + Store(ShiftLeft(1, nr), B0EJ) \ ! 32: + Return (0x0) \ ! 33: + } \ ! 34: + Name (_SUN, name) \ ! 35: + } ! 36: + ! 37: + hotplug_slot(1, 0x0001) ! 38: + hotplug_slot(2, 0x0002) ! 39: + hotplug_slot(3, 0x0003) ! 40: + hotplug_slot(4, 0x0004) ! 41: + hotplug_slot(5, 0x0005) ! 42: + hotplug_slot(6, 0x0006) ! 43: + hotplug_slot(7, 0x0007) ! 44: + hotplug_slot(8, 0x0008) ! 45: + hotplug_slot(9, 0x0009) ! 46: + hotplug_slot(10, 0x000a) ! 47: + hotplug_slot(11, 0x000b) ! 48: + hotplug_slot(12, 0x000c) ! 49: + hotplug_slot(13, 0x000d) ! 50: + hotplug_slot(14, 0x000e) ! 51: + hotplug_slot(15, 0x000f) ! 52: + hotplug_slot(16, 0x0010) ! 53: + hotplug_slot(17, 0x0011) ! 54: + hotplug_slot(18, 0x0012) ! 55: + hotplug_slot(19, 0x0013) ! 56: + hotplug_slot(20, 0x0014) ! 57: + hotplug_slot(21, 0x0015) ! 58: + hotplug_slot(22, 0x0016) ! 59: + hotplug_slot(23, 0x0017) ! 60: + hotplug_slot(24, 0x0018) ! 61: + hotplug_slot(25, 0x0019) ! 62: + hotplug_slot(26, 0x001a) ! 63: + hotplug_slot(27, 0x001b) ! 64: + hotplug_slot(28, 0x001c) ! 65: + hotplug_slot(29, 0x001d) ! 66: + hotplug_slot(30, 0x001e) ! 67: + hotplug_slot(31, 0x001f) ! 68: + ! 69: Name (_CRS, ResourceTemplate () ! 70: { ! 71: WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode, ! 72: @@ -605,8 +660,50 @@ DefinitionBlock ( ! 73: Method(_L00) { ! 74: Return(0x01) ! 75: } ! 76: + ! 77: +#define gen_pci_hotplug(nr) \ ! 78: + If (And(\_SB.PCI0.PCIU, ShiftLeft(1, nr))) { \ ! 79: + Notify(\_SB.PCI0.S##nr, 1) \ ! 80: + } \ ! 81: + If (And(\_SB.PCI0.PCID, ShiftLeft(1, nr))) { \ ! 82: + Notify(\_SB.PCI0.S##nr, 3) \ ! 83: + } ! 84: + ! 85: Method(_L01) { ! 86: - Return(0x01) ! 87: + gen_pci_hotplug(1) ! 88: + gen_pci_hotplug(2) ! 89: + gen_pci_hotplug(3) ! 90: + gen_pci_hotplug(4) ! 91: + gen_pci_hotplug(5) ! 92: + gen_pci_hotplug(6) ! 93: + gen_pci_hotplug(7) ! 94: + gen_pci_hotplug(8) ! 95: + gen_pci_hotplug(9) ! 96: + gen_pci_hotplug(10) ! 97: + gen_pci_hotplug(11) ! 98: + gen_pci_hotplug(12) ! 99: + gen_pci_hotplug(13) ! 100: + gen_pci_hotplug(14) ! 101: + gen_pci_hotplug(15) ! 102: + gen_pci_hotplug(16) ! 103: + gen_pci_hotplug(17) ! 104: + gen_pci_hotplug(18) ! 105: + gen_pci_hotplug(19) ! 106: + gen_pci_hotplug(20) ! 107: + gen_pci_hotplug(21) ! 108: + gen_pci_hotplug(22) ! 109: + gen_pci_hotplug(23) ! 110: + gen_pci_hotplug(24) ! 111: + gen_pci_hotplug(25) ! 112: + gen_pci_hotplug(26) ! 113: + gen_pci_hotplug(27) ! 114: + gen_pci_hotplug(28) ! 115: + gen_pci_hotplug(29) ! 116: + gen_pci_hotplug(30) ! 117: + gen_pci_hotplug(31) ! 118: + ! 119: + Return (0x01) ! 120: + ! 121: } ! 122: Method(_L02) { ! 123: Return(0x01) ! 124: ! 125: -- ! 126: ! 127: ! 128:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.