qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [6590] Add BIOS patches necessary for hotplug (Marcelo Tosa


From: Anthony Liguori
Subject: [Qemu-devel] [6590] Add BIOS patches necessary for hotplug (Marcelo Tosatti)
Date: Wed, 11 Feb 2009 15:11:44 +0000

Revision: 6590
          http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=6590
Author:   aliguori
Date:     2009-02-11 15:11:43 +0000 (Wed, 11 Feb 2009)

Log Message:
-----------
Add BIOS patches necessary for hotplug (Marcelo Tosatti)

See each patch for appropriate Signed-off-by's.

Modified Paths:
--------------
    trunk/pc-bios/bios-pq/series
    trunk/pc-bios/bios.bin

Added Paths:
-----------
    
trunk/pc-bios/bios-pq/0006_qemu-bios-use-preprocessor-for-pci-link-routing.patch
    
trunk/pc-bios/bios-pq/0007_bios-add-26-pci-slots,-bringing-the-total-to-32.patch
    trunk/pc-bios/bios-pq/0008_qemu-bios-provide-gpe-_l0x-methods.patch
    trunk/pc-bios/bios-pq/0009_qemu-bios-pci-hotplug-support.patch
    
trunk/pc-bios/bios-pq/0010_bios-mark-the-acpi-sci-interrupt-as-connected-to-irq-9.patch

Added: 
trunk/pc-bios/bios-pq/0006_qemu-bios-use-preprocessor-for-pci-link-routing.patch
===================================================================
--- 
trunk/pc-bios/bios-pq/0006_qemu-bios-use-preprocessor-for-pci-link-routing.patch
                            (rev 0)
+++ 
trunk/pc-bios/bios-pq/0006_qemu-bios-use-preprocessor-for-pci-link-routing.patch
    2009-02-11 15:11:43 UTC (rev 6590)
@@ -0,0 +1,73 @@
+qemu: bios: use preprocessor for pci link routing (Avi Kivity)
+
+Signed-off-by: Avi Kivity <address@hidden>
+Signed-off-by: Anthony Liguori <address@hidden>
+
+Index: bochs/bios/acpi-dsdt.dsl
+===================================================================
+--- bochs.orig/bios/acpi-dsdt.dsl
++++ bochs/bios/acpi-dsdt.dsl
+@@ -47,42 +47,22 @@ DefinitionBlock (
+                    section 6.2.8.1 */
+                 /* Note: we provide the same info as the PCI routing
+                    table of the Bochs BIOS */
+-
+-                // PCI Slot 0
+-                Package() {0x0000ffff, 0, LNKD, 0},
+-                Package() {0x0000ffff, 1, LNKA, 0},
+-                Package() {0x0000ffff, 2, LNKB, 0},
+-                Package() {0x0000ffff, 3, LNKC, 0},
+-
+-                // PCI Slot 1
+-                Package() {0x0001ffff, 0, LNKA, 0},
+-                Package() {0x0001ffff, 1, LNKB, 0},
+-                Package() {0x0001ffff, 2, LNKC, 0},
+-                Package() {0x0001ffff, 3, LNKD, 0},
+-
+-                // PCI Slot 2
+-                Package() {0x0002ffff, 0, LNKB, 0},
+-                Package() {0x0002ffff, 1, LNKC, 0},
+-                Package() {0x0002ffff, 2, LNKD, 0},
+-                Package() {0x0002ffff, 3, LNKA, 0},
+-
+-                // PCI Slot 3
+-                Package() {0x0003ffff, 0, LNKC, 0},
+-                Package() {0x0003ffff, 1, LNKD, 0},
+-                Package() {0x0003ffff, 2, LNKA, 0},
+-                Package() {0x0003ffff, 3, LNKB, 0},
+-
+-                // PCI Slot 4
+-                Package() {0x0004ffff, 0, LNKD, 0},
+-                Package() {0x0004ffff, 1, LNKA, 0},
+-                Package() {0x0004ffff, 2, LNKB, 0},
+-                Package() {0x0004ffff, 3, LNKC, 0},
+-
+-                // PCI Slot 5
+-                Package() {0x0005ffff, 0, LNKA, 0},
+-                Package() {0x0005ffff, 1, LNKB, 0},
+-                Package() {0x0005ffff, 2, LNKC, 0},
+-                Package() {0x0005ffff, 3, LNKD, 0},
++#define prt_slot(nr, lnk0, lnk1, lnk2, lnk3) \
++       Package() { nr##ffff, 0, lnk0, 0 }, \
++       Package() { nr##ffff, 1, lnk1, 0 }, \
++       Package() { nr##ffff, 2, lnk2, 0 }, \
++       Package() { nr##ffff, 3, lnk3, 0 }
++
++#define prt_slot0(nr) prt_slot(nr, LNKD, LNKA, LNKB, LNKC)
++#define prt_slot1(nr) prt_slot(nr, LNKA, LNKB, LNKC, LNKD)
++#define prt_slot2(nr) prt_slot(nr, LNKB, LNKC, LNKD, LNKA)
++#define prt_slot3(nr) prt_slot(nr, LNKC, LNKD, LNKA, LNKB)
++               prt_slot0(0x0000),
++               prt_slot1(0x0001),
++               prt_slot2(0x0002),
++               prt_slot3(0x0003),
++               prt_slot0(0x0004),
++               prt_slot1(0x0005),
+             })
+ 
+             Name (_CRS, ResourceTemplate ()
+
+-- 
+
+
+

Added: 
trunk/pc-bios/bios-pq/0007_bios-add-26-pci-slots,-bringing-the-total-to-32.patch
===================================================================
--- 
trunk/pc-bios/bios-pq/0007_bios-add-26-pci-slots,-bringing-the-total-to-32.patch
                            (rev 0)
+++ 
trunk/pc-bios/bios-pq/0007_bios-add-26-pci-slots,-bringing-the-total-to-32.patch
    2009-02-11 15:11:43 UTC (rev 6590)
@@ -0,0 +1,49 @@
+bios: add 26 pci slots, bringing the total to 32 (Avi Kivity)
+
+lack of pci slots causes Windows to complain when installing too many devices.
+
+Signed-off-by: Avi Kivity <address@hidden>
+Signed-off-by: Anthony Liguori <address@hidden>
+
+Index: bochs/bios/acpi-dsdt.dsl
+===================================================================
+--- bochs.orig/bios/acpi-dsdt.dsl
++++ bochs/bios/acpi-dsdt.dsl
+@@ -63,6 +63,32 @@ DefinitionBlock (
+                prt_slot3(0x0003),
+                prt_slot0(0x0004),
+                prt_slot1(0x0005),
++               prt_slot2(0x0006),
++               prt_slot3(0x0007),
++               prt_slot0(0x0008),
++               prt_slot1(0x0009),
++               prt_slot2(0x000a),
++               prt_slot3(0x000b),
++               prt_slot0(0x000c),
++               prt_slot1(0x000d),
++               prt_slot2(0x000e),
++               prt_slot3(0x000f),
++               prt_slot0(0x0010),
++               prt_slot1(0x0011),
++               prt_slot2(0x0012),
++               prt_slot3(0x0013),
++               prt_slot0(0x0014),
++               prt_slot1(0x0015),
++               prt_slot2(0x0016),
++               prt_slot3(0x0017),
++               prt_slot0(0x0018),
++               prt_slot1(0x0019),
++               prt_slot2(0x001a),
++               prt_slot3(0x001b),
++               prt_slot0(0x001c),
++               prt_slot1(0x001d),
++               prt_slot2(0x001e),
++               prt_slot3(0x001f),
+             })
+ 
+             Name (_CRS, ResourceTemplate ()
+
+-- 
+
+
+

Added: trunk/pc-bios/bios-pq/0008_qemu-bios-provide-gpe-_l0x-methods.patch
===================================================================
--- trunk/pc-bios/bios-pq/0008_qemu-bios-provide-gpe-_l0x-methods.patch         
                (rev 0)
+++ trunk/pc-bios/bios-pq/0008_qemu-bios-provide-gpe-_l0x-methods.patch 
2009-02-11 15:11:43 UTC (rev 6590)
@@ -0,0 +1,92 @@
+qemu: bios: provide gpe _L0x methods (Glauber Costa)
+
+provide methods for gpe blk 0, even though they do nothing atm
+    
+Signed-off-by: Glauber Costa <address@hidden>
+Signed-off-by: Avi Kivity <address@hidden>
+Signed-off-by: Anthony Liguori <address@hidden>
+
+Index: bochs/bios/acpi-dsdt.dsl
+===================================================================
+--- bochs.orig/bios/acpi-dsdt.dsl
++++ bochs/bios/acpi-dsdt.dsl
+@@ -597,4 +597,59 @@ DefinitionBlock (
+         Zero,  /* reserved */
+         Zero   /* reserved */
+     })
++
++    Scope (\_GPE)
++    {
++        Name(_HID, "ACPI0006")
++
++        Method(_L00) {
++            Return(0x01)
++        }
++        Method(_L01) {
++            Return(0x01)
++        }
++        Method(_L02) {
++            Return(0x01)
++        }
++        Method(_L03) {
++            Return(0x01)
++        }
++        Method(_L04) {
++            Return(0x01)
++        }
++        Method(_L05) {
++            Return(0x01)
++        }
++        Method(_L06) {
++            Return(0x01)
++        }
++        Method(_L07) {
++            Return(0x01)
++        }
++        Method(_L08) {
++            Return(0x01)
++        }
++        Method(_L09) {
++            Return(0x01)
++        }
++        Method(_L0A) {
++            Return(0x01)
++        }
++        Method(_L0B) {
++            Return(0x01)
++        }
++        Method(_L0C) {
++            Return(0x01)
++        }
++        Method(_L0D) {
++            Return(0x01)
++        }
++        Method(_L0E) {
++            Return(0x01)
++        }
++        Method(_L0F) {
++            Return(0x01)
++        }
++    }
++
+ }
+Index: bochs/bios/rombios32.c
+===================================================================
+--- bochs.orig/bios/rombios32.c
++++ bochs/bios/rombios32.c
+@@ -1647,6 +1647,8 @@ void acpi_bios_init(void)
+     fadt->pm_tmr_len = 4;
+     fadt->plvl2_lat = cpu_to_le16(0xfff); // C2 state not supported
+     fadt->plvl3_lat = cpu_to_le16(0xfff); // C3 state not supported
++    fadt->gpe0_blk = cpu_to_le32(0xafe0);
++    fadt->gpe0_blk_len = 4;
+     /* WBINVD + PROC_C1 + PWR_BUTTON + SLP_BUTTON + FIX_RTC */
+     fadt->flags = cpu_to_le32((1 << 0) | (1 << 2) | (1 << 4) | (1 << 5) | (1 
<< 6));
+     acpi_build_table_header((struct acpi_table_header *)fadt, "FACP",
+
+-- 
+
+
+
+
+

Added: trunk/pc-bios/bios-pq/0009_qemu-bios-pci-hotplug-support.patch
===================================================================
--- trunk/pc-bios/bios-pq/0009_qemu-bios-pci-hotplug-support.patch              
                (rev 0)
+++ trunk/pc-bios/bios-pq/0009_qemu-bios-pci-hotplug-support.patch      
2009-02-11 15:11:43 UTC (rev 6590)
@@ -0,0 +1,128 @@
+qemu: bios: pci hotplug support (Marcelo Tosatti)
+
+Signed-off-by: Marcelo Tosatti <address@hidden>
+Signed-off-by: Anthony Liguori <address@hidden>
+
+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)
+
+-- 
+
+
+

Added: 
trunk/pc-bios/bios-pq/0010_bios-mark-the-acpi-sci-interrupt-as-connected-to-irq-9.patch
===================================================================
--- 
trunk/pc-bios/bios-pq/0010_bios-mark-the-acpi-sci-interrupt-as-connected-to-irq-9.patch
                             (rev 0)
+++ 
trunk/pc-bios/bios-pq/0010_bios-mark-the-acpi-sci-interrupt-as-connected-to-irq-9.patch
     2009-02-11 15:11:43 UTC (rev 6590)
@@ -0,0 +1,26 @@
+bios: mark the acpi sci interrupt as connected to irq 9 (Avi Kivity)
+
+Due to a chipset bug, the sci interrupt is hardwired to irq 9.  Set the
+pci interrupt line register accordingly.
+    
+Signed-off-by: Avi Kivity <address@hidden>
+Signed-off-by: Anthony Liguori <address@hidden>
+
+Index: bochs/bios/rombios32.c
+===================================================================
+--- bochs.orig/bios/rombios32.c
++++ bochs/bios/rombios32.c
+@@ -981,6 +981,8 @@ static void pci_bios_init_device(PCIDevi
+         /* PIIX4 Power Management device (for ACPI) */
+         pm_io_base = PM_IO_BASE;
+         smb_io_base = SMB_IO_BASE;
++        // acpi sci is hardwired to 9
++        pci_config_writeb(d, PCI_INTERRUPT_LINE, 9);
+         pm_sci_int = pci_config_readb(d, PCI_INTERRUPT_LINE);
+         piix4_pm_enable(d);
+         acpi_enabled = 1;
+
+-- 
+
+
+

Modified: trunk/pc-bios/bios-pq/series
===================================================================
--- trunk/pc-bios/bios-pq/series        2009-02-11 14:55:47 UTC (rev 6589)
+++ trunk/pc-bios/bios-pq/series        2009-02-11 15:11:43 UTC (rev 6590)
@@ -3,3 +3,8 @@
 0003_kvm-bios-generate-mptable-unconditionally.patch
 
0004_kvm-bios-resolve-memory-device-roll-over-reporting--issues-with-32g-guests.patch
 0005_kvm-bios-fix-smbios-memory-device-length-boundary--condition.patch
+0006_qemu-bios-use-preprocessor-for-pci-link-routing.patch
+0007_bios-add-26-pci-slots,-bringing-the-total-to-32.patch
+0008_qemu-bios-provide-gpe-_l0x-methods.patch
+0009_qemu-bios-pci-hotplug-support.patch
+0010_bios-mark-the-acpi-sci-interrupt-as-connected-to-irq-9.patch

Modified: trunk/pc-bios/bios.bin
===================================================================
(Binary files differ)






reply via email to

[Prev in Thread] Current Thread [Next in Thread]