Skip to contentSkip to conversation

PCI64 bus vanished in 2.4.23-pre6

DISCUSSION J.A. Magallon 2 participants 5 messages Oct 7, 2003 – Oct 14, 2003

lore
Share & tools
lore
#0 lore raw

Hi all...

With 2.4.23-pre6, my e1000 cards did not work. I was thinking it was a driver problem, but the I realized that they are not even listed in lspci.

lspci (-n) in pre5:

00:00.0 Class 0600: 1166:0009 (rev 06)
00:00.1 Class 0600: 1166:0009 (rev 06)
00:04.0 Class 0300: 1039:6326 (rev 0b)
00:06.0 Class 0200: 8086:1229 (rev 08)
00:0f.0 Class 0601: 1166:0200 (rev 51)
00:0f.1 Class 0101: 1166:0211
00:0f.2 Class 0c03: 1166:0220 (rev 04)
01:02.0 Class 0200: 8086:1004 (rev 02)

00:00.0 Host bridge: ServerWorks CNB20LE Host Bridge (rev 06) 00:00.1 Host bridge: ServerWorks CNB20LE Host Bridge (rev 06) 00:04.0 VGA compatible controller: Silicon Integrated Systems [SiS] 86C326 5598/ 00:06.0 Ethernet controller: Intel Corp. 82557/8/9 [Ethernet Pro 100] (rev 08) 00:0f.0 ISA bridge: ServerWorks OSB4 South Bridge (rev 51)
00:0f.1 IDE interface: ServerWorks OSB4 IDE Controller
00:0f.2 USB Controller: ServerWorks OSB4/CSB5 OHCI USB Controller (rev 04) 01:02.0 Ethernet controller: Intel Corp. 82543GC Gigabit Ethernet Controller (Co

lspci in pre6:

00:00.0 Class 0600: 1166:0009 (rev 06)
00:00.1 Class 0600: 1166:0009 (rev 06)
00:04.0 Class 0300: 1039:6326 (rev 0b)
00:06.0 Class 0200: 8086:1229 (rev 08)
00:0f.0 Class 0601: 1166:0200 (rev 51)
00:0f.1 Class 0101: 1166:0211
00:0f.2 Class 0c03: 1166:0220 (rev 04)

00:00.0 Host bridge: ServerWorks CNB20LE Host Bridge (rev 06) 00:00.1 Host bridge: ServerWorks CNB20LE Host Bridge (rev 06) 00:04.0 VGA compatible controller: Silicon Integrated Systems [SiS] 86C326 5598/ 00:06.0 Ethernet controller: Intel Corp. 82557/8/9 [Ethernet Pro 100] (rev 08) 00:0f.0 ISA bridge: ServerWorks OSB4 South Bridge (rev 51)
00:0f.1 IDE interface: ServerWorks OSB4 IDE Controller
00:0f.2 USB Controller: ServerWorks OSB4/CSB5 OHCI USB Controller (rev 04)

Do not know if it is a problem of the driver (i suppose it is not, the driver has nothing to do with lspci...), a problem of the bus number, a problem of the PCI bus being 64 bit, or a problem with the OSB4 chipset.

Quoted 1 line

From the changelog, my candidates are:

<moilanen:austin.ibm.com>:
o Workaround PPC64 PCI scan issue

Len Brown:
o [ACPI] ...

Any ideas ?

TIA

Signature · 4 lines
J.A. Magallon <jamagallon()able!es>     \                 Software is like sex:
werewolf!able!es                         \           It's better when it's free
Mandrake Linux release 9.2 (Cooker) for i586
Linux 2.4.23-pre6-jam1 (gcc 3.3.1 (Mandrake Linux 9.2 3.3.1-2mdk))
#1 lore raw
Quoted 43 lines · J.A. Magallon

Hi all...

With 2.4.23-pre6, my e1000 cards did not work. I was thinking it was a driver problem, but the I realized that they are not even listed in lspci.

lspci (-n) in pre5:

00:00.0 Class 0600: 1166:0009 (rev 06)
00:00.1 Class 0600: 1166:0009 (rev 06)
00:04.0 Class 0300: 1039:6326 (rev 0b)
00:06.0 Class 0200: 8086:1229 (rev 08)
00:0f.0 Class 0601: 1166:0200 (rev 51)
00:0f.1 Class 0101: 1166:0211
00:0f.2 Class 0c03: 1166:0220 (rev 04)
01:02.0 Class 0200: 8086:1004 (rev 02)

00:00.0 Host bridge: ServerWorks CNB20LE Host Bridge (rev 06) 00:00.1 Host bridge: ServerWorks CNB20LE Host Bridge (rev 06) 00:04.0 VGA compatible controller: Silicon Integrated Systems [SiS] 86C326 5598/ 00:06.0 Ethernet controller: Intel Corp. 82557/8/9 [Ethernet Pro 100] (rev 08) 00:0f.0 ISA bridge: ServerWorks OSB4 South Bridge (rev 51)
00:0f.1 IDE interface: ServerWorks OSB4 IDE Controller
00:0f.2 USB Controller: ServerWorks OSB4/CSB5 OHCI USB Controller (rev 04) 01:02.0 Ethernet controller: Intel Corp. 82543GC Gigabit Ethernet Controller (Co

lspci in pre6:

00:00.0 Class 0600: 1166:0009 (rev 06)
00:00.1 Class 0600: 1166:0009 (rev 06)
00:04.0 Class 0300: 1039:6326 (rev 0b)
00:06.0 Class 0200: 8086:1229 (rev 08)
00:0f.0 Class 0601: 1166:0200 (rev 51)
00:0f.1 Class 0101: 1166:0211
00:0f.2 Class 0c03: 1166:0220 (rev 04)

00:00.0 Host bridge: ServerWorks CNB20LE Host Bridge (rev 06) 00:00.1 Host bridge: ServerWorks CNB20LE Host Bridge (rev 06) 00:04.0 VGA compatible controller: Silicon Integrated Systems [SiS] 86C326 5598/ 00:06.0 Ethernet controller: Intel Corp. 82557/8/9 [Ethernet Pro 100] (rev 08) 00:0f.0 ISA bridge: ServerWorks OSB4 South Bridge (rev 51)
00:0f.1 IDE interface: ServerWorks OSB4 IDE Controller
00:0f.2 USB Controller: ServerWorks OSB4/CSB5 OHCI USB Controller (rev 04)

Quoted 4 lines

Do not know if it is a problem of the driver (i suppose it is not, the driver has nothing to do with lspci...), a problem of the bus number, a problem of the PCI bus being 64 bit, or a problem with the OSB4 chipset.

Er, it looks like chipset specific. The front end has the very same card (different mobo) on bus 3:

annwn:~> lspci
00:00.0 Host bridge: Intel Corp. 82860 860 (Wombat) Chipset Host Bridge (MCH) (rev 04) 00:01.0 PCI bridge: Intel Corp. 82850 850 (Tehama) Chipset AGP Bridge (rev 04) 00:02.0 PCI bridge: Intel Corp. 82860 860 (Wombat) Chipset AGP Bridge (rev 04) 00:1e.0 PCI bridge: Intel Corp. 82801BA/CA/DB/EB PCI Bridge (rev 04)
00:1f.0 ISA bridge: Intel Corp. 82801BA ISA Bridge (LPC) (rev 04)
00:1f.1 IDE interface: Intel Corp. 82801BA IDE U100 (rev 04)
00:1f.2 USB Controller: Intel Corp. 82801BA/BAM USB (Hub #1) (rev 04)
00:1f.3 SMBus: Intel Corp. 82801BA/BAM SMBus (rev 04)
00:1f.4 USB Controller: Intel Corp. 82801BA/BAM USB (Hub #2) (rev 04)
00:1f.5 Multimedia audio controller: Intel Corp. 82801BA/BAM AC'97 Audio (rev 04) 01:00.0 VGA compatible controller: nVidia Corporation NV11 [GeForce2 MX/MX 400] (rev a1) 02:1f.0 PCI bridge: Intel Corp. 82806AA PCI64 Hub PCI Bridge (rev 03)
03:00.0 PIC: Intel Corp. 82806AA PCI64 Hub Advanced Programmable Interrupt Controller (rev 01) 03:01.0 Ethernet controller: Intel Corp. 82543GC Gigabit Ethernet Controller (Copper) (rev 02) 03:02.0 SCSI storage controller: Adaptec AIC-7892A U160/m (rev 02)
04:03.0 Ethernet controller: 3Com Corporation 3c905C-TX/TX-M [Tornado] (rev 74) 04:04.0 Ethernet controller: Intel Corp. 82557/8/9 [Ethernet Pro 100] (rev 08)

???

Signature · 4 lines
J.A. Magallon <jamagallon()able!es>     \                 Software is like sex:
werewolf!able!es                         \           It's better when it's free
Mandrake Linux release 9.2 (Cooker) for i586
Linux 2.4.23-pre6-jam1 (gcc 3.3.1 (Mandrake Linux 9.2 3.3.1-2mdk))
#2 lore raw
In reply to J.A. Magallon
Quoted 7 lines · J.A. Magallon

Hi all...

With 2.4.23-pre6, my e1000 cards did not work. I was thinking it was a driver problem, but the I realized that they are not even listed in lspci.

<moilanen:austin.ibm.com>:
o Workaround PPC64 PCI scan issue

This has a high chance of being the problem.

Attached patch for you to revert (-R) and retry is attached, please. :)

# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher. # This patch includes the following deltas:
# ChangeSet 1.1136 -> 1.1136.2.1
# include/asm-alpha/pci.h 1.8 -> 1.9
# include/asm-mips64/pci.h 1.11 -> 1.12
# include/asm-sparc64/pci.h 1.6 -> 1.7
# include/asm-ppc64/pci.h 1.3 -> 1.4
# drivers/pci/pci.c 1.45 -> 1.46
# include/asm-arm/pci.h 1.10 -> 1.11
# include/asm-i386/pci.h 1.16 -> 1.17
# include/asm-m68k/pci.h 1.3 -> 1.4
# include/asm-sh/pci.h 1.10 -> 1.11
# include/asm-mips/pci.h 1.12 -> 1.13
# include/asm-parisc/pci.h 1.7 -> 1.8
# include/asm-ppc/pci.h 1.14 -> 1.15
# include/asm-sparc/pci.h 1.8 -> 1.9
# include/asm-ia64/pci.h 1.13 -> 1.14
# include/asm-x86_64/pci.h 1.5 -> 1.6
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 03/09/29 [email protected] 1.1137
# Merge intel.com:/home/lenb/bk/linux-2.4.23

# into intel.com:/home/lenb/bk/linux-acpi-test-2.4.23
# --------------------------------------------
# 03/09/29	[email protected]	1.1136.1.1
# Merge intel.com:/home/lenb/bk/linux-2.4.23
# into intel.com:/home/lenb/bk/linux-acpi-release-2.4.23
# --------------------------------------------
# 03/09/29	[email protected]	1.1136.2.1
# [PATCH] Workaround PPC64 PCI scan issue
# 
# This patch is a port of some work that Anton Blanchard did for 2.6.
# 
# There are some arch, like PPC64, that need to be able to scan all the
# PCI functions.  The problem comes in on a logically partitioned system
# where function 0 on a PCI-PCI bridge is assigned to one partition and say
# function 2 is assiged to another partition.  On the second partition, it
# would appear that function 0 does not exist, but function 2 does.  If all
# the functions are not scanned, everything under function 2 would not be
# detected.
# 
# 
# Thanks,
# Jake
# --------------------------------------------
#
diff -Nru a/drivers/pci/pci.c b/drivers/pci/pci.c
--- a/drivers/pci/pci.c	Fri Oct 10 15:27:59 2003
+++ b/drivers/pci/pci.c	Fri Oct 10 15:27:59 2003
@@ -1475,17 +1475,22 @@
 	u8 hdr_type;

for (func = 0; func < 8; func++, temp->devfn++) {
- if (func && !is_multi) /* not a multi-function device */
- continue;
if (pci_read_config_byte(temp, PCI_HEADER_TYPE, &hdr_type))
continue;
temp->hdr_type = hdr_type & 0x7f;

dev = pci_scan_device(temp);
- if (!dev)
- continue;
+ if (!pcibios_scan_all_fns() && func == 0) {
+ if (!dev)
+ break;
+ } else {
+ if (!dev)
+ continue;
+ is_multi = 1;
+ }
+
pci_name_device(dev);
- if (!func) {
+ if (!first_dev) {
is_multi = hdr_type & 0x80; first_dev = dev;
}
@@ -1499,6 +1504,14 @@

/* Fix up broken headers */ pci_fixup_device(PCI_FIXUP_HEADER, dev);
+
+ /*
+ * If this is a single function device
+ * don't scan past the first function.
+ */
+ if (!is_multi)
+ break;
+
}
return first_dev;
}

include/asm-alpha/pci.h +1 -0
diff -Nru a/include/asm-alpha/pci.h b/include/asm-alpha/pci.h
@@ -50,6 +50,7 @@
    bus numbers.  */
 
 #define pcibios_assign_all_busses()	1
+#define pcibios_scan_all_fns()		0
 
 #define PCIBIOS_MIN_IO		alpha_mv.min_io_address
 #define PCIBIOS_MIN_MEM		alpha_mv.min_mem_address
include/asm-arm/pci.h +2 -0
diff -Nru a/include/asm-arm/pci.h b/include/asm-arm/pci.h
@@ -53,6 +53,8 @@
 	/* We don't do dynamic PCI IRQ allocation */
 }
 
+#define pcibios_scan_all_fns()		0
+
 struct pci_dev;
 
 /* Allocate and map kernel buffer using consistent mode DMA for a device.
include/asm-i386/pci.h +1 -0
diff -Nru a/include/asm-i386/pci.h b/include/asm-i386/pci.h
@@ -14,6 +14,7 @@
 #else
 #define pcibios_assign_all_busses()	0
 #endif
+#define pcibios_scan_all_fns()		0
 
 extern unsigned long pci_mem_start;
 #define PCIBIOS_MIN_IO		0x1000
include/asm-ia64/pci.h +1 -0
diff -Nru a/include/asm-ia64/pci.h b/include/asm-ia64/pci.h
@@ -15,6 +15,7 @@
  * loader.
  */
 #define pcibios_assign_all_busses()     0
+#define pcibios_scan_all_fns()		0
 
 #define PCIBIOS_MIN_IO		0x1000
 #define PCIBIOS_MIN_MEM		0x10000000
include/asm-m68k/pci.h +1 -0
diff -Nru a/include/asm-m68k/pci.h b/include/asm-m68k/pci.h
@@ -34,6 +34,7 @@
 };
 
 #define pcibios_assign_all_busses()	0
+#define pcibios_scan_all_fns()		0
 
 extern inline void pcibios_set_master(struct pci_dev *dev)
 {
include/asm-mips/pci.h +1 -0
diff -Nru a/include/asm-mips/pci.h b/include/asm-mips/pci.h
@@ -19,6 +19,7 @@
 #else
 #define pcibios_assign_all_busses()	0
 #endif
+#define pcibios_scan_all_fns()		0
 
 #define PCIBIOS_MIN_IO		0x1000
 #define PCIBIOS_MIN_MEM		0x10000000
include/asm-mips64/pci.h +1 -0
diff -Nru a/include/asm-mips64/pci.h b/include/asm-mips64/pci.h
@@ -19,6 +19,7 @@
 #else
 #define pcibios_assign_all_busses()	0
 #endif
+#define pcibios_scan_all_fns()		0
 
 #define PCIBIOS_MIN_IO		0x1000
 #define PCIBIOS_MIN_MEM		0x10000000
include/asm-parisc/pci.h +1 -0
diff -Nru a/include/asm-parisc/pci.h b/include/asm-parisc/pci.h
@@ -259,6 +259,7 @@
 **   to zero for legacy platforms and one for PAT platforms.
 */
 #define pcibios_assign_all_busses()     (pdc_type == PDC_TYPE_PAT)
+#define pcibios_scan_all_fns()		0
 
 #define PCIBIOS_MIN_IO          0x10
 #define PCIBIOS_MIN_MEM         0x1000 /* NBPG - but pci/setup-res.c dies */
include/asm-ppc/pci.h +1 -0
diff -Nru a/include/asm-ppc/pci.h b/include/asm-ppc/pci.h
@@ -24,6 +24,7 @@
 extern int pci_assign_all_busses;
 
 #define pcibios_assign_all_busses()	(pci_assign_all_busses)
+#define pcibios_scan_all_fns()		0
 
 #define PCIBIOS_MIN_IO		0x1000
 #define PCIBIOS_MIN_MEM		0x10000000
include/asm-ppc64/pci.h +6 -0
diff -Nru a/include/asm-ppc64/pci.h b/include/asm-ppc64/pci.h
@@ -25,6 +25,12 @@
 #define PCIBIOS_MIN_IO		0x1000
 #define PCIBIOS_MIN_MEM		0x10000000
 
+/*
+ * ppc64 can have multifunction devices that do not respond to function 0.
+ * In this case we must scan all functions.
+ */
+#define pcibios_scan_all_fns()     1
+
 static inline void pcibios_set_master(struct pci_dev *dev)
 {
 	/* No special bus mastering setup handling */
include/asm-sh/pci.h +1 -0
diff -Nru a/include/asm-sh/pci.h b/include/asm-sh/pci.h
@@ -10,6 +10,7 @@
    or architectures with incomplete PCI setup by the loader */
 
 #define pcibios_assign_all_busses()	1
+#define pcibios_scan_all_fns()		0
 
 #if defined(CONFIG_CPU_SUBTYPE_ST40)
 /* These are currently the correct values for the ST40 based chips.
include/asm-sparc/pci.h +1 -0
diff -Nru a/include/asm-sparc/pci.h b/include/asm-sparc/pci.h
@@ -8,6 +8,7 @@
  * or architectures with incomplete PCI setup by the loader.
  */
 #define pcibios_assign_all_busses()	0
+#define pcibios_scan_all_fns()		0
 
 #define PCIBIOS_MIN_IO		0UL
 #define PCIBIOS_MIN_MEM		0UL
include/asm-sparc64/pci.h +1 -0
diff -Nru a/include/asm-sparc64/pci.h b/include/asm-sparc64/pci.h
@@ -11,6 +11,7 @@
  * or architectures with incomplete PCI setup by the loader.
  */
 #define pcibios_assign_all_busses()	0
+#define pcibios_scan_all_fns()		0
 
 #define PCIBIOS_MIN_IO		0UL
 #define PCIBIOS_MIN_MEM		0UL
include/asm-x86_64/pci.h +1 -0
diff -Nru a/include/asm-x86_64/pci.h b/include/asm-x86_64/pci.h
@@ -17,6 +17,7 @@
 #else
 #define pcibios_assign_all_busses()	0
 #endif
+#define pcibios_scan_all_fns()		0
 
 extern unsigned long pci_mem_start;
 #define PCIBIOS_MIN_IO		0x1000
#3 lore raw
Quoted 9 lines · Marcelo Tosatti
Quoted 5 lines · J.A. Magallon

Hi all...

With 2.4.23-pre6, my e1000 cards did not work. I was thinking it was a driver problem, but the I realized that they are not even listed in lspci.

Quoted 7 lines
Quoted 2 lines

<moilanen:austin.ibm.com>:
o Workaround PPC64 PCI scan issue

This has a high chance of being the problem.

Attached patch for you to revert (-R) and retry is attached, please. :)

Thanks, I can't try it until monday (I need to be in front of the box to see the node messages ;)).

Will report about the results.

Signature · 4 lines
J.A. Magallon <jamagallon()able!es>     \                 Software is like sex:
werewolf!able!es                         \           It's better when it's free
Mandrake Linux release 9.2 (Cooker) for i586
Linux 2.4.23-pre6-jam1 (gcc 3.3.1 (Mandrake Linux 9.2 3.3.1-2mdk))
#4 lore raw
Quoted 16 lines · J.A. Magallon
Quoted 14 lines · Marcelo Tosatti
Quoted 7 lines · J.A. Magallon

Hi all...

With 2.4.23-pre6, my e1000 cards did not work. I was thinking it was a driver problem, but the I realized that they are not even listed in lspci.

<moilanen:austin.ibm.com>:
o Workaround PPC64 PCI scan issue

This has a high chance of being the problem.

Quoted 7 lines
Quoted 2 lines

Attached patch for you to revert (-R) and retry is attached, please. :)

Thanks, I can't try it until monday (I need to be in front of the box to see the node messages ;)).

Will report about the results.

Still doesn't work. I have tried with several kernels and put the dmesg and lspci logs here:

http://giga.cps.unizar.es/~magallon/linux/acpi/

Some things I have noticed (diff from -pre5 to -pre6):

-Booting processor 1/1 eip 2000
+Booting processor 1/1 eip 3000
...
-Setting 4 in the phys_id_present_map
-...changing IO-APIC physical APIC ID to 4 ... ok.
-Setting 5 in the phys_id_present_map
-...changing IO-APIC physical APIC ID to 5 ... ok.
init IO_APIC IRQs
- IO-APIC (apicid-pin) 4-0, 4-10, 4-11, 5-0, 5-1, 5-2, 5-3, 5-4, 5-5, 5-6, 5-7, 5-8, 5-9, 5-11, 5-12, 5-13, 5-14 not connected.
+ IO-APIC (apicid-pin) 4-0, 5-0, 5-1, 5-2, 5-3, 5-4, 5-5, 5-6, 5-7, 5-8, 5-9, 5-10, 5-11, 5-12, 5-13, 5-14, 5-15 not connected.
...
NR Log Phy Mask Trig IRR Pol Stat Dest Deli Vect:
...

- 0a 000 00  1    0    0   0   0    0    0    00
- 0b 000 00  1    0    0   0   0    0    0    00
- 0c 003 03  0    0    0   0   0    1    1    79
- 0d 003 03  0    0    0   0   0    1    1    81
- 0e 003 03  0    0    0   0   0    1    1    89
- 0f 003 03  0    0    0   0   0    1    1    91
+ 0a 003 03  0    0    0   0   0    1    1    79
+ 0b 003 03  0    0    0   0   0    1    1    81
+ 0c 003 03  0    0    0   0   0    1    1    89
+ 0d 003 03  0    0    0   0   0    1    1    91
+ 0e 003 03  0    0    0   0   0    1    1    99
+ 0f 003 03  0    0    0   0   0    1    1    A1

...
-.... register #02: 01000000
-....... : arbitration: 01
+.... register #02: 03000000
+....... : arbitration: 03
...
IRQ7 -> 0:7
IRQ8 -> 0:8
IRQ9 -> 0:9
+IRQ10 -> 0:10
+IRQ11 -> 0:11
IRQ12 -> 0:12
IRQ13 -> 0:13
IRQ14 -> 0:14
IRQ15 -> 0:15
-IRQ26 -> 1:10
-IRQ31 -> 1:15

-pre6 does not detect IRQ26-31 (second APIC?). And pre5 used them:

PCI: PCI BIOS revision 2.10 entry at 0xfdbb1, last bus=1
PCI: Using configuration type 1
PCI: Probing PCI hardware
PCI: Probing PCI hardware (bus 00)
PCI: Discovered primary peer bus 01 [IRQ]
PCI: Using IRQ router ServerWorks [1166/0200] at 00:0f.0 PCI->APIC IRQ transform: (B0,I6,P0) -> 31 PCI->APIC IRQ transform: (B1,I2,P0) -> 26

Booting with pci=noacpi just hangs the booting process.

Any ideas ?

--
Juan Antonio Magallon Lacarta \ Software is like sex:
mailto:magallon()unizar!es \ It's better when it's free
34-976-762354 - Fax: 34-976-761914 \ -- Linus Torvalds, FSF T-shirt
Grupo de Informatica Grafica Avanzada: http://giga.cps.unizar.es