| qemu: bios: pci hotplug support (Marcelo Tosatti) |
| |
| Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com> |
| Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> |
| |
| Index: bochs/bios/acpi-dsdt.dsl |
| =================================================================== |
| --- bochs.orig/bios/acpi-dsdt.dsl |
| +++ bochs/bios/acpi-dsdt.dsl |
| @@ -91,6 +91,61 @@ DefinitionBlock ( |
| prt_slot3(0x001f), |
| }) |
| |
| + OperationRegion(PCST, SystemIO, 0xae00, 0x08) |
| + Field (PCST, DWordAcc, NoLock, WriteAsZeros) |
| + { |
| + PCIU, 32, |
| + PCID, 32, |
| + } |
| + |
| + OperationRegion(SEJ, SystemIO, 0xae08, 0x04) |
| + Field (SEJ, DWordAcc, NoLock, WriteAsZeros) |
| + { |
| + B0EJ, 32, |
| + } |
| + |
| +#define hotplug_slot(name, nr) \ |
| + Device (S##name) { \ |
| + Name (_ADR, nr##0000) \ |
| + Method (_EJ0,1) { \ |
| + Store(ShiftLeft(1, nr), B0EJ) \ |
| + Return (0x0) \ |
| + } \ |
| + Name (_SUN, name) \ |
| + } |
| + |
| + hotplug_slot(1, 0x0001) |
| + hotplug_slot(2, 0x0002) |
| + hotplug_slot(3, 0x0003) |
| + hotplug_slot(4, 0x0004) |
| + hotplug_slot(5, 0x0005) |
| + hotplug_slot(6, 0x0006) |
| + hotplug_slot(7, 0x0007) |
| + hotplug_slot(8, 0x0008) |
| + hotplug_slot(9, 0x0009) |
| + hotplug_slot(10, 0x000a) |
| + hotplug_slot(11, 0x000b) |
| + hotplug_slot(12, 0x000c) |
| + hotplug_slot(13, 0x000d) |
| + hotplug_slot(14, 0x000e) |
| + hotplug_slot(15, 0x000f) |
| + hotplug_slot(16, 0x0010) |
| + hotplug_slot(17, 0x0011) |
| + hotplug_slot(18, 0x0012) |
| + hotplug_slot(19, 0x0013) |
| + hotplug_slot(20, 0x0014) |
| + hotplug_slot(21, 0x0015) |
| + hotplug_slot(22, 0x0016) |
| + hotplug_slot(23, 0x0017) |
| + hotplug_slot(24, 0x0018) |
| + hotplug_slot(25, 0x0019) |
| + hotplug_slot(26, 0x001a) |
| + hotplug_slot(27, 0x001b) |
| + hotplug_slot(28, 0x001c) |
| + hotplug_slot(29, 0x001d) |
| + hotplug_slot(30, 0x001e) |
| + hotplug_slot(31, 0x001f) |
| + |
| Name (_CRS, ResourceTemplate () |
| { |
| WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode, |
| @@ -605,8 +660,50 @@ DefinitionBlock ( |
| Method(_L00) { |
| Return(0x01) |
| } |
| + |
| +#define gen_pci_hotplug(nr) \ |
| + If (And(\_SB.PCI0.PCIU, ShiftLeft(1, nr))) { \ |
| + Notify(\_SB.PCI0.S##nr, 1) \ |
| + } \ |
| + If (And(\_SB.PCI0.PCID, ShiftLeft(1, nr))) { \ |
| + Notify(\_SB.PCI0.S##nr, 3) \ |
| + } |
| + |
| Method(_L01) { |
| - Return(0x01) |
| + gen_pci_hotplug(1) |
| + gen_pci_hotplug(2) |
| + gen_pci_hotplug(3) |
| + gen_pci_hotplug(4) |
| + gen_pci_hotplug(5) |
| + gen_pci_hotplug(6) |
| + gen_pci_hotplug(7) |
| + gen_pci_hotplug(8) |
| + gen_pci_hotplug(9) |
| + gen_pci_hotplug(10) |
| + gen_pci_hotplug(11) |
| + gen_pci_hotplug(12) |
| + gen_pci_hotplug(13) |
| + gen_pci_hotplug(14) |
| + gen_pci_hotplug(15) |
| + gen_pci_hotplug(16) |
| + gen_pci_hotplug(17) |
| + gen_pci_hotplug(18) |
| + gen_pci_hotplug(19) |
| + gen_pci_hotplug(20) |
| + gen_pci_hotplug(21) |
| + gen_pci_hotplug(22) |
| + gen_pci_hotplug(23) |
| + gen_pci_hotplug(24) |
| + gen_pci_hotplug(25) |
| + gen_pci_hotplug(26) |
| + gen_pci_hotplug(27) |
| + gen_pci_hotplug(28) |
| + gen_pci_hotplug(29) |
| + gen_pci_hotplug(30) |
| + gen_pci_hotplug(31) |
| + |
| + Return (0x01) |
| + |
| } |
| Method(_L02) { |
| Return(0x01) |
| |
| -- |
| |
| |
| |