Subject: Re: ioapic, PCI_BUS_FIXUP and power
To: David Young <dyoung@pobox.com>
From: Mark Davies <mark@mcs.vuw.ac.nz>
List: current-users
Date: 05/30/2007 13:17:12
On Wed, 30 May 2007, David Young wrote:
> > With ioapic enabled in the kernel, bge fails with watchdog
> > timeout errors etc unless I define PCI_BUS_FIXUP.  However
> > defining PCI_BUS_FIXUP is what causes "halt -p" not to complete
> > and furthermore it causes the machine to hang if I unplug the ac
> > adapter (to switch to battery).  So is there something in
> > PCI_BUS_FIXUP thats not handling power management properly?
>
> Perhaps the information that this script (attached) prints before
> and after PCI_BUS_FIXUP may expose the critical difference.

Full output from the script can be found at 
	http://www.mcs.vuw.ac.nz/~mark/pcidump.withoutfixup
and 	http://www.mcs.vuw.ac.nz/~mark/pcidump.withfixup

The differences are:

--- pcidump.withoutfixup	2007-05-30 13:09:07.000000000 +1200
+++ pcidump.withfixup	2007-05-30 13:09:07.000000000 +1200
@@ -389,7 +389,7 @@
     Cache Line Size: 0x10
 
   Type 1 (PCI-PCI bridge) header:
-    0x10: 0x00000000 0x00000000 0x000b0b00 0x200000f0
+    0x10: 0x00000000 0x00000000 0x00010100 0x200000f0
     0x20: 0x0000fff0 0x0001fff1 0x00000000 0x00000000
     0x30: 0x00000000 0x00000040 0x00000000 0x00020100
 
@@ -398,8 +398,8 @@
     Base address register at 0x14
       not implemented(?)
     Primary bus number: 0x00
-    Secondary bus number: 0x0b
-    Subordinate bus number: 0x0b
+    Secondary bus number: 0x01
+    Subordinate bus number: 0x01
     Secondary bus latency timer: 0x00
     Secondary status register: 0x2000
       66 MHz capable: off
@@ -502,7 +502,7 @@
     Cache Line Size: 0x10
 
   Type 1 (PCI-PCI bridge) header:
-    0x10: 0x00000000 0x00000000 0x000c0c00 0x200000f0
+    0x10: 0x00000000 0x00000000 0x00020200 0x200000f0
     0x20: 0xdfd0dfd0 0x0001fff1 0x00000000 0x00000000
     0x30: 0x00000000 0x00000040 0x00000000 0x00020200
 
@@ -511,8 +511,8 @@
     Base address register at 0x14
       not implemented(?)
     Primary bus number: 0x00
-    Secondary bus number: 0x0c
-    Subordinate bus number: 0x0c
+    Secondary bus number: 0x02
+    Subordinate bus number: 0x02
     Secondary bus latency timer: 0x00
     Secondary status register: 0x2000
       66 MHz capable: off
@@ -571,7 +571,7 @@
     0xb0: 0x00000000 0x00000000 0x00000000 0x00000000
     0xc0: 0x00000000 0x00000000 0x00000000 0x00000000
     0xd0: 0x00000000 0x00000000 0xc0110000 0x00000000
-    0xe0: 0x83c70f00 0x00080706 0x00000000 0x00000000
+    0xe0: 0x03c70f00 0x00080706 0x00000000 0x00000000
     0xf0: 0x00000000 0x00000000 0x00020f86 0x00000000
 
 -- bus=000 dev=28 fn=2 --
@@ -615,7 +615,7 @@
     Cache Line Size: 0x10
 
   Type 1 (PCI-PCI bridge) header:
-    0x10: 0x00000000 0x00000000 0x00090900 0x200000f0
+    0x10: 0x00000000 0x00000000 0x00030300 0x200000f0
     0x20: 0xdfc0dfc0 0x0001fff1 0x00000000 0x00000000
     0x30: 0x00000000 0x00000040 0x00000000 0x00020300
 
@@ -624,8 +624,8 @@
     Base address register at 0x14
       not implemented(?)
     Primary bus number: 0x00
-    Secondary bus number: 0x09
-    Subordinate bus number: 0x09
+    Secondary bus number: 0x03
+    Subordinate bus number: 0x03
     Secondary bus latency timer: 0x00
     Secondary status register: 0x2000
       66 MHz capable: off
@@ -690,7 +690,7 @@
 -- bus=000 dev=29 fn=0 --
 PCI configuration registers:
   Common header:
-    0x00: 0x27c88086 0x02880005 0x0c030001 0x00800000
+    0x00: 0x27c88086 0x02800005 0x0c030001 0x00800000
 
     Vendor Name: Intel (0x8086)
     Device Name: 82801GB/GR USB UHCI Controller (0x27c8)
@@ -706,7 +706,7 @@
       System error (SERR): off
       Fast back-to-back transactions: off
       Interrupt disable: off
-    Status register: 0x0288
+    Status register: 0x0280
       Capability List support: off
       66 MHz capable: off
       User Definable Features (UDF) support: off
@@ -765,7 +765,7 @@
     0x90: 0x00000000 0x00000000 0x00000000 0x00000000
     0xa0: 0x00000000 0x00000000 0x00000000 0x00000000
     0xb0: 0x00000000 0x00000000 0x00000000 0x00000000
-    0xc0: 0x00003f00 0x00000000 0x00010000 0x00000000
+    0xc0: 0x00002f00 0x00000000 0x00010000 0x00000000
     0xd0: 0x00000000 0x00000000 0x00000000 0x00000000
     0xe0: 0x00000000 0x00000000 0x00000000 0x00000000
     0xf0: 0x00000000 0x00000000 0x00020f86 0x00000000
@@ -1022,7 +1022,7 @@
 -- bus=000 dev=29 fn=7 --
 PCI configuration registers:
   Common header:
-    0x00: 0x27cc8086 0x02980106 0x0c032001 0x00000000
+    0x00: 0x27cc8086 0x02900106 0x0c032001 0x00000000
 
     Vendor Name: Intel (0x8086)
     Device Name: 82801GB/GR USB EHCI Controller (0x27cc)
@@ -1038,7 +1038,7 @@
       System error (SERR): on
       Fast back-to-back transactions: off
       Interrupt disable: off
-    Status register: 0x0298
+    Status register: 0x0290
       Capability List support: on
       66 MHz capable: off
       User Definable Features (UDF) support: off
@@ -1096,7 +1096,7 @@
   Device-dependent header:
     0x40: 0x00000000 0x00000000 0x00000000 0x00000000
     0x50: 0xc9c25801 0x00000000 0x20a0000a 0x00000000
-    0x60: 0x01ff2020 0x00000000 0x01000001 0xe00c0000
+    0x60: 0x01ff2020 0x00000000 0x01000001 0xe0080000
     0x70: 0x3fdf0000 0x00000000 0x00000000 0x00000000
     0x80: 0x00000000 0x00000011 0x00000000 0x00000000
     0x90: 0x00000000 0x00000000 0x00000000 0x00000000
@@ -1148,7 +1148,7 @@
     Cache Line Size: 0x00
 
   Type 1 (PCI-PCI bridge) header:
-    0x10: 0x00000000 0x00000000 0x20040300 0x228000f0
+    0x10: 0x00000000 0x00000000 0x20050400 0x228000f0
     0x20: 0x0000fff0 0x0001fff1 0x00000000 0x00000000
     0x30: 0x00000000 0x00000050 0x00000000 0x000200ff
 
@@ -1157,8 +1157,8 @@
     Base address register at 0x14
       not implemented(?)
     Primary bus number: 0x00
-    Secondary bus number: 0x03
-    Subordinate bus number: 0x04
+    Secondary bus number: 0x04
+    Subordinate bus number: 0x05
     Secondary bus latency timer: 0x20
     Secondary status register: 0x2280
       66 MHz capable: off
@@ -1472,7 +1472,7 @@
     0xe0: 0x00000000 0x00000000 0x00000000 0x00000000
     0xf0: 0x00000000 0x00000000 0x00020f86 0x00000000
 
--- bus=012 dev=00 fn=0 --
+-- bus=002 dev=00 fn=0 --
 PCI configuration registers:
   Common header:
     0x00: 0x42228086 0x00100106 0x02800002 0x00000010
@@ -1559,13 +1559,13 @@
     0xb0: 0x00000000 0x00000000 0x00000000 0x00000000
     0xc0: 0x00000000 0x00000000 0xc822d001 0x0d000000
     0xd0: 0x0080e005 0x00000000 0x00000000 0x00000000
-    0xe0: 0x00110010 0x00000ec0 0x001a0810 0x00071c11
+    0xe0: 0x00110010 0x00000ec0 0x001b0810 0x00071c11
     0xf0: 0x10110042 0x00000000 0x00000000 0x00000000
 
--- bus=009 dev=00 fn=0 --
+-- bus=003 dev=00 fn=0 --
 PCI configuration registers:
   Common header:
-    0x00: 0x160014e4 0x00180106 0x02000002 0x00000010
+    0x00: 0x160014e4 0x00100106 0x02000002 0x00000010
 
     Vendor Name: Broadcom (0x14e4)
     Device Name: BCM5752 10/100/1000 Ethernet (0x1600)
@@ -1581,7 +1581,7 @@
       System error (SERR): on
       Fast back-to-back transactions: off
       Interrupt disable: off
-    Status register: 0x0018
+    Status register: 0x0010
       Capability List support: on
       66 MHz capable: off
       User Definable Features (UDF) support: off
@@ -1640,26 +1640,26 @@
 
   Device-dependent header:
     0x40: 0x00000000 0x00000000 0xc0025001 0x64002100
-    0x50: 0x00285803 0x6812e6b8 0x0086d005 0xe4bdd8d4
-    0x60: 0x2ac7c4ae 0x00007f7c 0x60020088 0x76180000
-    0x70: 0x00001290 0x00000040 0x00006804 0x00000000
+    0x50: 0x00e85803 0xe9f2e6fc 0x0086d005 0xe4fddcfc
+    0x60: 0xebefe6be 0x0000ff7e 0x60020088 0x76180000
+    0x70: 0x00001292 0x00000040 0x00006804 0x00000000
     0x80: 0x00080082 0x00000000 0x04930034 0x00080082
-    0x90: 0x01000028 0x00000000 0x00000000 0x000000ff
-    0xa0: 0x00000000 0x00000000 0x00000000 0x00000000
+    0x90: 0x01000629 0x00000000 0x00000000 0x000001cb
+    0xa0: 0x00000000 0x000000cc 0x00000000 0x00000181
     0xb0: 0x00000000 0x00000000 0x00000000 0x00000000
-    0xc0: 0x00000000 0x00004010 0x0000800e 0x00000000
-    0xd0: 0x00010010 0x05040fa2 0x00105000 0x00035c11
+    0xc0: 0x00000000 0x00004010 0x0000000e 0x00000000
+    0xd0: 0x00010010 0x05040fa2 0x001a5000 0x00035c11
     0xe0: 0x10110042 0x00000000 0x00000000 0x00000000
     0xf0: 0x00000000 0x00000000 0x00000000 0x00000000
 
--- bus=003 dev=01 fn=0 --
+-- bus=004 dev=01 fn=0 --
 PCI configuration registers:
   Common header:
-    0x00: 0x69721217 0x04100007 0x06070040 0x00024000
+    0x00: 0x69721217 0x04100107 0x06070040 0x00024000
 
     Vendor Name: O2 Micro (0x1217)
     Device Name: OZ6912/OZ6972 PCI-CardBus Bridge (0x6972)
-    Command register: 0x0007
+    Command register: 0x0107
       I/O space accesses: on
       Memory space accesses: on
       Bus mastering: on
@@ -1668,7 +1668,7 @@
       Palette snooping: off
       Parity error checking: off
       Address/data stepping: off
-      System error (SERR): off
+      System error (SERR): on
       Fast back-to-back transactions: off
       Interrupt disable: off
     Status register: 0x0410
@@ -1693,14 +1693,14 @@
     Cache Line Size: 0x00
 
   Type 2 (PCI-CardBus bridge) header:
-    0x10: 0x40000000 0x020000a0 0x20040403 0xfffff000
+    0x10: 0x3f700000 0x020000a0 0x20050504 0xfffff000
     0x20: 0x00000000 0xfffff000 0x00000000 0x0000fffd
-    0x30: 0x00000001 0x0000fffd 0x00000001 0x04c001ff
+    0x30: 0x00000001 0x0000fffd 0x00000001 0x04c00105
     0x40: 0x01c21028 0x00000001
 
     Base address register at 0x10 (CardBus socket/ExCA registers)
       type: 32-bit nonprefetchable memory
-      base: 0x40000000, not sized
+      base: 0x3f700000, not sized
     Capability list pointer: 0xa0
     Secondary status register: 0x0200
       66 MHz capable: off
@@ -1713,9 +1713,9 @@
       Bus initiator aborts terminate initiator transactions: off
       System error: off
       Parity error: off
-    PCI bus number: 0x03
-    CardBus bus number: 0x04
-    Subordinate bus number: 0x04
+    PCI bus number: 0x04
+    CardBus bus number: 0x05
+    Subordinate bus number: 0x05
     CardBus latency timer: 0x20
     CardBus memory region 0:
       base register:  0xfffff000
@@ -1729,7 +1729,7 @@
     CardBus I/O region 1:
       base register:  0x0000fffd
       limit register: 0x00000001
-    Interrupt line: 0xff
+    Interrupt line: 0x05
     Interrupt pin: 0x01 (pin A)
     Bridge control register: 0x04c0
       Parity error response: off
@@ -1758,7 +1758,7 @@
     0x70: 0x00000000 0x00000000 0x00000000 0x00000000
     0x80: 0x00000000 0x00000000 0x00000000 0x01001002
     0x90: 0x00400001 0x00000000 0x00000000 0x00000000
-    0xa0: 0xfe020001 0x00c04000 0x00000000 0x00000000
+    0xa0: 0xfe020001 0x00c04000 0x00000000 0x00000001
     0xb0: 0x00000000 0x00000000 0x00000000 0x00000000
     0xc0: 0x00000000 0x00000000 0x00000000 0x00000000
     0xd0: 0x08004000 0x808223ea 0x00000000 0x00000000


cheers
mark