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

[Xen-devel] [patch] HVM: Expand the number of PCI interrupts from 16 to 32



I'm not sure what the reason for this, but the tables relating
to PCI interrupts seem to be truncated to 15 entries. I am
guessing that they are just incomplete and that this has never
been an issue. This patch extends these tables to the full 32 entries.

Tested by giving an ioemu rtl8139 device pci device 24,
which is unable to communicate with the network without this change.

Signed-off-by: Simon Horman <horms@xxxxxxxxxxxx>

Index: xen-unstable.hg/tools/firmware/hvmloader/acpi/dsdt.asl
===================================================================
--- xen-unstable.hg.orig/tools/firmware/hvmloader/acpi/dsdt.asl 2009-03-09 
09:31:33.000000000 +1100
+++ xen-unstable.hg/tools/firmware/hvmloader/acpi/dsdt.asl      2009-03-09 
09:47:33.000000000 +1100
@@ -470,6 +470,102 @@ DefinitionBlock ("DSDT.aml", "DSDT", 2, 
                 Package(){0x000fffff, 1, \_SB.PCI0.LNKA, 0},
                 Package(){0x000fffff, 2, \_SB.PCI0.LNKB, 0},
                 Package(){0x000fffff, 3, \_SB.PCI0.LNKC, 0},
+
+                /* Device 16, INTA - INTD */
+                Package(){0x0010ffff, 0, \_SB.PCI0.LNKD, 0},
+                Package(){0x0010ffff, 1, \_SB.PCI0.LNKA, 0},
+                Package(){0x0010ffff, 2, \_SB.PCI0.LNKB, 0},
+                Package(){0x0010ffff, 3, \_SB.PCI0.LNKC, 0},
+
+                /* Device 17, INTA - INTD */
+                Package(){0x0011ffff, 0, \_SB.PCI0.LNKD, 0},
+                Package(){0x0011ffff, 1, \_SB.PCI0.LNKA, 0},
+                Package(){0x0011ffff, 2, \_SB.PCI0.LNKB, 0},
+                Package(){0x0011ffff, 3, \_SB.PCI0.LNKC, 0},
+
+                /* Device 18, INTA - INTD */
+                Package(){0x0012ffff, 0, \_SB.PCI0.LNKD, 0},
+                Package(){0x0012ffff, 1, \_SB.PCI0.LNKA, 0},
+                Package(){0x0012ffff, 2, \_SB.PCI0.LNKB, 0},
+                Package(){0x0012ffff, 3, \_SB.PCI0.LNKC, 0},
+
+                /* Device 19, INTA - INTD */
+                Package(){0x0013ffff, 0, \_SB.PCI0.LNKD, 0},
+                Package(){0x0013ffff, 1, \_SB.PCI0.LNKA, 0},
+                Package(){0x0013ffff, 2, \_SB.PCI0.LNKB, 0},
+                Package(){0x0013ffff, 3, \_SB.PCI0.LNKC, 0},
+
+                /* Device 20, INTA - INTD */
+                Package(){0x0014ffff, 0, \_SB.PCI0.LNKD, 0},
+                Package(){0x0014ffff, 1, \_SB.PCI0.LNKA, 0},
+                Package(){0x0014ffff, 2, \_SB.PCI0.LNKB, 0},
+                Package(){0x0014ffff, 3, \_SB.PCI0.LNKC, 0},
+
+                /* Device 21, INTA - INTD */
+                Package(){0x0015ffff, 0, \_SB.PCI0.LNKD, 0},
+                Package(){0x0015ffff, 1, \_SB.PCI0.LNKA, 0},
+                Package(){0x0015ffff, 2, \_SB.PCI0.LNKB, 0},
+                Package(){0x0015ffff, 3, \_SB.PCI0.LNKC, 0},
+
+                /* Device 22, INTA - INTD */
+                Package(){0x0016ffff, 0, \_SB.PCI0.LNKD, 0},
+                Package(){0x0016ffff, 1, \_SB.PCI0.LNKA, 0},
+                Package(){0x0016ffff, 2, \_SB.PCI0.LNKB, 0},
+                Package(){0x0016ffff, 3, \_SB.PCI0.LNKC, 0},
+
+                /* Device 23, INTA - INTD */
+                Package(){0x0017ffff, 0, \_SB.PCI0.LNKD, 0},
+                Package(){0x0017ffff, 1, \_SB.PCI0.LNKA, 0},
+                Package(){0x0017ffff, 2, \_SB.PCI0.LNKB, 0},
+                Package(){0x0017ffff, 3, \_SB.PCI0.LNKC, 0},
+
+                /* Device 24, INTA - INTD */
+                Package(){0x0018ffff, 0, \_SB.PCI0.LNKD, 0},
+                Package(){0x0018ffff, 1, \_SB.PCI0.LNKA, 0},
+                Package(){0x0018ffff, 2, \_SB.PCI0.LNKB, 0},
+                Package(){0x0018ffff, 3, \_SB.PCI0.LNKC, 0},
+
+                /* Device 25, INTA - INTD */
+                Package(){0x0019ffff, 0, \_SB.PCI0.LNKD, 0},
+                Package(){0x0019ffff, 1, \_SB.PCI0.LNKA, 0},
+                Package(){0x0019ffff, 2, \_SB.PCI0.LNKB, 0},
+                Package(){0x0019ffff, 3, \_SB.PCI0.LNKC, 0},
+
+                /* Device 26, INTA - INTD */
+                Package(){0x001affff, 0, \_SB.PCI0.LNKD, 0},
+                Package(){0x001affff, 1, \_SB.PCI0.LNKA, 0},
+                Package(){0x001affff, 2, \_SB.PCI0.LNKB, 0},
+                Package(){0x001affff, 3, \_SB.PCI0.LNKC, 0},
+
+                /* Device 27, INTA - INTD */
+                Package(){0x001bffff, 0, \_SB.PCI0.LNKD, 0},
+                Package(){0x001bffff, 1, \_SB.PCI0.LNKA, 0},
+                Package(){0x001bffff, 2, \_SB.PCI0.LNKB, 0},
+                Package(){0x001bffff, 3, \_SB.PCI0.LNKC, 0},
+
+                /* Device 28, INTA - INTD */
+                Package(){0x001cffff, 0, \_SB.PCI0.LNKD, 0},
+                Package(){0x001cffff, 1, \_SB.PCI0.LNKA, 0},
+                Package(){0x001cffff, 2, \_SB.PCI0.LNKB, 0},
+                Package(){0x001cffff, 3, \_SB.PCI0.LNKC, 0},
+
+                /* Device 29, INTA - INTD */
+                Package(){0x001dffff, 0, \_SB.PCI0.LNKD, 0},
+                Package(){0x001dffff, 1, \_SB.PCI0.LNKA, 0},
+                Package(){0x001dffff, 2, \_SB.PCI0.LNKB, 0},
+                Package(){0x001dffff, 3, \_SB.PCI0.LNKC, 0},
+
+                /* Device 30, INTA - INTD */
+                Package(){0x001effff, 0, \_SB.PCI0.LNKD, 0},
+                Package(){0x001effff, 1, \_SB.PCI0.LNKA, 0},
+                Package(){0x001effff, 2, \_SB.PCI0.LNKB, 0},
+                Package(){0x001effff, 3, \_SB.PCI0.LNKC, 0},
+
+                /* Device 31, INTA - INTD */
+                Package(){0x001fffff, 0, \_SB.PCI0.LNKD, 0},
+                Package(){0x001fffff, 1, \_SB.PCI0.LNKA, 0},
+                Package(){0x001fffff, 2, \_SB.PCI0.LNKB, 0},
+                Package(){0x001fffff, 3, \_SB.PCI0.LNKC, 0},
             })
 
             Name(PRTA, Package() {
@@ -562,6 +658,102 @@ DefinitionBlock ("DSDT.aml", "DSDT", 2, 
                 Package(){0x000fffff, 1, 0, 46},
                 Package(){0x000fffff, 2, 0, 47},
                 Package(){0x000fffff, 3, 0, 16},
+
+                /* Device 16, INTA - INTD */
+                Package(){0x0010ffff, 0, 0, 18},
+                Package(){0x0010ffff, 1, 0, 19},
+                Package(){0x0010ffff, 2, 0, 20},
+                Package(){0x0010ffff, 3, 0, 21},
+
+                /* Device 17, INTA - INTD */
+                Package(){0x0011ffff, 0, 0, 22},
+                Package(){0x0011ffff, 1, 0, 23},
+                Package(){0x0011ffff, 2, 0, 24},
+                Package(){0x0011ffff, 3, 0, 25},
+
+                /* Device 18, INTA - INTD */
+                Package(){0x0012ffff, 0, 0, 26},
+                Package(){0x0012ffff, 1, 0, 27},
+                Package(){0x0012ffff, 2, 0, 28},
+                Package(){0x0012ffff, 3, 0, 29},
+
+                /* Device 19, INTA - INTD */
+                Package(){0x0013ffff, 0, 0, 30},
+                Package(){0x0013ffff, 1, 0, 31},
+                Package(){0x0013ffff, 2, 0, 32},
+                Package(){0x0013ffff, 3, 0, 33},
+
+                /* Device 20, INTA - INTD */
+                Package(){0x0014ffff, 0, 0, 34},
+                Package(){0x0014ffff, 1, 0, 35},
+                Package(){0x0014ffff, 2, 0, 36},
+                Package(){0x0014ffff, 3, 0, 37},
+
+                /* Device 21, INTA - INTD */
+                Package(){0x0015ffff, 0, 0, 38},
+                Package(){0x0015ffff, 1, 0, 39},
+                Package(){0x0015ffff, 2, 0, 40},
+                Package(){0x0015ffff, 3, 0, 41},
+
+                /* Device 22, INTA - INTD */
+                Package(){0x0016ffff, 0, 0, 42},
+                Package(){0x0016ffff, 1, 0, 43},
+                Package(){0x0016ffff, 2, 0, 44},
+                Package(){0x0016ffff, 3, 0, 45},
+
+                /* Device 23, INTA - INTD */
+                Package(){0x0017ffff, 0, 0, 46},
+                Package(){0x0017ffff, 1, 0, 47},
+                Package(){0x0017ffff, 2, 0, 17},
+                Package(){0x0017ffff, 3, 0, 18},
+
+                /* Device 24, INTA - INTD */
+                Package(){0x0018ffff, 0, 0, 19},
+                Package(){0x0018ffff, 1, 0, 20},
+                Package(){0x0018ffff, 2, 0, 21},
+                Package(){0x0018ffff, 3, 0, 22},
+
+                /* Device 25, INTA - INTD */
+                Package(){0x0019ffff, 0, 0, 23},
+                Package(){0x0019ffff, 1, 0, 24},
+                Package(){0x0019ffff, 2, 0, 25},
+                Package(){0x0019ffff, 3, 0, 26},
+
+                /* Device 26, INTA - INTD */
+                Package(){0x001affff, 0, 0, 27},
+                Package(){0x001affff, 1, 0, 28},
+                Package(){0x001affff, 2, 0, 29},
+                Package(){0x001affff, 3, 0, 30},
+
+                /* Device 27, INTA - INTD */
+                Package(){0x001bffff, 0, 0, 31},
+                Package(){0x001bffff, 1, 0, 32},
+                Package(){0x001bffff, 2, 0, 33},
+                Package(){0x001bffff, 3, 0, 34},
+
+                /* Device 28, INTA - INTD */
+                Package(){0x001cffff, 0, 0, 35},
+                Package(){0x001cffff, 1, 0, 36},
+                Package(){0x001cffff, 2, 0, 37},
+                Package(){0x001cffff, 3, 0, 38},
+
+                /* Device 29, INTA - INTD */
+                Package(){0x001dffff, 0, 0, 39},
+                Package(){0x001dffff, 1, 0, 40},
+                Package(){0x001dffff, 2, 0, 41},
+                Package(){0x001dffff, 3, 0, 42},
+
+                /* Device 30, INTA - INTD */
+                Package(){0x001effff, 0, 0, 43},
+                Package(){0x001effff, 1, 0, 44},
+                Package(){0x001effff, 2, 0, 45},
+                Package(){0x001effff, 3, 0, 46},
+
+                /* Device 31, INTA - INTD */
+                Package(){0x001fffff, 0, 0, 47},
+                Package(){0x001fffff, 1, 0, 16},
+                Package(){0x001fffff, 2, 0, 17},
+                Package(){0x001fffff, 3, 0, 18},
             })
             
             Device (ISA)
Index: xen-unstable.hg/tools/firmware/rombios/rombios.c
===================================================================
--- xen-unstable.hg.orig/tools/firmware/rombios/rombios.c       2009-03-09 
09:29:12.000000000 +1100
+++ xen-unstable.hg/tools/firmware/rombios/rombios.c    2009-03-09 
09:30:25.000000000 +1100
@@ -9931,7 +9931,7 @@ pci_real_select_reg:
 pci_routing_table_structure:
   db 0x24, 0x50, 0x49, 0x52  ;; "$PIR" signature
   db 0, 1 ;; version
-  dw 32 + (6 * 16) ;; table size
+  dw 32 + (6 * 32) ;; table size
   db 0 ;; PCI interrupt router bus
   db 0x08 ;; PCI interrupt router DevFunc
   dw 0x0000 ;; PCI exclusive IRQs

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.