aboutsummaryrefslogtreecommitdiff
path: root/pc-bios/bios-pq/0009_qemu-bios-pci-hotplug-support.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pc-bios/bios-pq/0009_qemu-bios-pci-hotplug-support.patch')
-rw-r--r--pc-bios/bios-pq/0009_qemu-bios-pci-hotplug-support.patch128
1 files changed, 128 insertions, 0 deletions
diff --git a/pc-bios/bios-pq/0009_qemu-bios-pci-hotplug-support.patch b/pc-bios/bios-pq/0009_qemu-bios-pci-hotplug-support.patch
new file mode 100644
index 0000000000..f55a335b32
--- /dev/null
+++ b/pc-bios/bios-pq/0009_qemu-bios-pci-hotplug-support.patch
@@ -0,0 +1,128 @@
+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)
+
+--
+
+
+