ISSUE: kernel hangs during PCI device probing

Tomasz Kepczynski (tomkep@globalnet.co.uk)
Sun, 22 Mar 1998 11:12:14 +0000 (GMT)


Hi all
It's first time I post here so please - have mercy on me if I do
something wrong. Here is the problem:
1. kernel hangs during PCI device probing
2. During boot kernel decompresses itself, displays a few lines on console
and dies when it tries to detect PCI devices. Nope. PC is dead and the
only thing I can do is to switch it off and on again. I would have
pressed reset button if I had had one...
3. PCI, kernel, SiS-510X
4. Kernel version 2.0.33 with modular sound patches from RH5. But it
appears also on some earlier 2.0 versions and I am 95% sure the same
problem exists in 2.1.
5. No oops...
6. And no shell script...
7. The ver_linux script doesn't work very well on RH5. But here it is:

-- Versions installed: (if some fields are empty or looks
-- unusual then possibly you have very old versions)
Linux ciri 2.0.33 #1 nie mar 15 18:05:16 GMT 1998 i586 unknown
Kernel modules 2.1.55
Gnu C 2.7.2.3
Binutils linux-2.8.1.0.1
Linux C Library 0.6.so (2.0.6 - glibc 2.0)
Linux C++ Library 2.7.2
Procps 1.2.4
Mount 2.7f
Net-tools 1.33
Kbd 0.94
Sh-utils 1.16

/proc/cpuinfo

processor : 0
cpu : 586
model : Pentium 75+
vendor_id : GenuineIntel
stepping : 12
fdiv_bug : no
hlt_bug : no
f00f_bug : yes
fpu : yes
fpu_exception : yes
cpuid : yes
wp : yes
flags : fpu vme de pse tsc msr mce cx8
bogomips : 47.82

/proc/modules

psaux 1 1 (autoclean)
autofs 2 1 (autoclean)
pcnet_cs 2 1
8390 2 [pcnet_cs] 0
ds 2 [pcnet_cs] 5
i82365 4 4
pcmcia_core 7 [pcnet_cs ds i82365] 6
vfat 3 1 (autoclean)
fat 6 [vfat] 1 (autoclean)
opl3 3 0
sb 6 0
uart401 2 [sb] 0
sound 16 [opl3 sb uart401] 0

no scsi

/proc/pci (yes I have it, go further for details...)

PCI devices found:
Bus 0, device 14, function 0:
PCMCIA bridge: Omega Micro 82C092G (rev 2).
Slow devsel. Fast back-to-back capable.
I/O at 0x3e4.
Bus 0, device 13, function 0:
PCMCIA bridge: Omega Micro 82C092G (rev 2).
Slow devsel. Fast back-to-back capable.
I/O at 0x3e0.
Bus 0, device 6, function 0:
VGA compatible controller: Trident TG 9660 (rev 211).
Medium devsel. IRQ 255.
Non-prefetchable 32 bit memory at 0x8000000.
Non-prefetchable 32 bit memory at 0x8800000.
Non-prefetchable 32 bit memory at 0x8400000.
Bus 0, device 2, function 0:
PCI bridge: Silicon Integrated Systems 5107 (rev 1).
Medium devsel. Master Capable. No bursts.
Non-prefetchable 32 bit memory at 0xc2800000.
Bus 0, device 1, function 1:
IDE interface: Silicon Integrated Systems 85C601 (rev 1).
Medium devsel. IRQ 14.
I/O at 0x174.
I/O at 0x1f4.
I/O at 0x374.
I/O at 0x3f4.
Bus 0, device 1, function 0:
ISA bridge: Silicon Integrated Systems 85C503 (rev 1).
Medium devsel. Master Capable. No bursts.
Bus 0, device 0, function 0:
Host bridge: Silicon Integrated Systems 85C501 (rev 0).
Fast devsel. Master Capable. No bursts.

output from NT compatibility tool:

Hardware Detection Tool For Windows NT 4.0 Beta 2

Master Boot Sector Virus Protection Check
Hard Disk Boot Sector Protection: Off.
No problem to write to MBR

ISA Plug and Play Add-in cards detection Summary Report

No ISA Plug and Play cards found in the system
ISA PnP Detection: Complete

EISA Add-in card detection Summary Report
Scan Range: Slot 0 - 16
Slot 0: EISA System Board
EISA Bus Detected: No
EISA Detection: Complete

Legacy Detection Summary Report

Drive 3, Total Clusters: 51380
Available Clusters: 22641
Sectors per Cluster: 16
Bytes per Sector: 512
Available Space: 176MB

Drive 4, Total Clusters: 63970
Available Clusters: 28434
Sectors per Cluster: 16
Bytes per Sector: 512
Available Space: 222MB

System Information
Device: System board
Can't locate Computername
Machine Type: IBM PC/AT
Machine Model: fc
Machine Revision: 00
Microprocessor: Pentium
Conventional memory: 655360
Available memory: 32 MB
Can't locate BIOSName
BIOS Version: SystemSoft PCI BIOS for SiS-510X Ver 1.01.26 (6X00-05-11)
BIOS Date: 03/14/97
Bus Type: ISA

Device: Programmable interrupt controller
Hardware ID (for Legacy Devices): *PNP0000
I/O: 20 - 21
I/O: a0 - a1
IRQ: 2

Device: Direct memory access controller
Hardware ID (for Legacy Devices): *PNP0200
I/O: 0 - f
I/O: 81 - 83
I/O: 87 - 87
I/O: 89 - 8b
I/O: 8f - 8f
I/O: c0 - df
DMA: 4

Device: System CMOS/real time clock
Hardware ID (for Legacy Devices): *PNP0B00
I/O: 70 - 71
IRQ: 8

Device: System timer
Hardware ID (for Legacy Devices): *PNP0100
I/O: 40 - 43
IRQ: 0

Device: System speaker
Hardware ID (for Legacy Devices): *PNP0800
I/O: 61 - 61

Device: Numeric data processor
Hardware ID (for Legacy Devices): *PNP0C04
I/O: f0 - ff
IRQ: 13

Device: Standard 101/102-Key or Microsoft Natural Keyboard
Hardware ID (for Legacy Devices): *PNP0303
I/O: 60 - 60
I/O: 64 - 64
IRQ: 1

Device: Plug and Play BIOS
Hardware ID (for Legacy Devices): *PNP0C00
Didn't detect system resources being used.

Device: Advanced Power Management support
Hardware ID (for Legacy Devices): *PNP0C05
Didn't detect system resources being used.

Device: Standard PS/2 Port Mouse
Hardware ID (for Legacy Devices): *PNP0F0E
IRQ: 12

Device: Trident Super VGA
Hardware ID (for Legacy Devices): *PNP0903
I/O: 3b0 - 3bb
I/O: 3c0 - 3df
Memory: a0000 - affff
Memory: b8000 - bffff

Device: Standard Floppy Disk Controller
Hardware ID (for Legacy Devices): *PNP0700
I/O: 3f2 - 3f5
IRQ: 6
DMA: 2

Device: Communications Port
Hardware ID (for Legacy Devices): *PNP0500
Friendly Port Name: COM1
I/O: 3f8 - 3ff
IRQ: 4

Device: Standard IDE/ESDI Hard Disk Controller
Hardware ID (for Legacy Devices): *PNP0600
I/O: 1f0 - 1f7
I/O: 3f6 - 3f6
IRQ: 14

Device: ECP Printer Port
Hardware ID (for Legacy Devices): *PNP0401
Friendly Port Name: LPT1
I/O: 378 - 37a

Device: ESS ES1688 AudioDrive
Hardware ID (for Legacy Devices): *ESS1681
I/O: 240 - 24f
I/O: 388 - 38b
I/O: 300 - 301
IRQ: 9
DMA: 0

Device: Gameport Joystick
Hardware ID (for Legacy Devices): *PNPB02F
I/O: 201 - 201
Parse Legacy Data: Complete

MicroChannel (MCA)card detection Summary Report
Scan Range: Slot 0 - 16
Only MCA IDs are detected
MCA Bus Detected: No
MCA Detection: Complete

Enumerate all IDE devices

IDE Devices Detection Summary Report
Primary Channel: master drive detected
Model Number: HITACHI_DK224A-14
Firmware Revision: 00C0A0A2
Serial Number: 658955
Type of Drive: Fixed Drive
Disk Transfer Rate: >10Mbs
Number of Cylinders: 2792
Number of Heads: 16
Number of Sectors Per Track: 63
Number of unformatted bytes per sector Per Track: 579
LBA Support: Yes
DMA Support: Yes
Drive Supports PIO Transfer Cycle Time Mode: 1
Drive Supports Fast PIO Mode: 3
Drive Supports Fast PIO Mode: 4

Secondary Channel: ATAPI device as a master drive detected
Model Number: CD-211E
Firmware Revision: 5.0D
Protocol Type: ATAPI
Device Type: CD-ROM drive
LBA Support: Yes
DMA Support: Yes
Drive Supports PIO Transfer Cycle Time Mode: 1
Drive Supports Fast PIO Mode: 3
Drive Supports Fast PIO Mode: 4

IDE/ATAPI: Complete

Enumerate SCSI devices
ASPI for Windows is not available!

SCSI Device Enumeration: complete

PCI Add-in card detection Summary Report

PCI Access Mechanism Support: 1
Special Cycle 1 supported
Number of Last PCI Bus: 0
PCI Version: 2.10

PCI Bus Detected: Yes

Vendor ID: 1039
Device ID: 0406
Subsystem ID: 0000
Subsystem Vendor ID:0000
Device Type: Bridge Device
Silicon Integrated Systems Pentium(r) to PCI bridge [original model]

Vendor ID: 1039
Device ID: 0008
Subsystem ID: 0000
Subsystem Vendor ID:0000
Device Type: Bridge Device
Silicon Integrated Systems PCI to ISA bridge

Vendor ID: 1039
Device ID: 0601
Subsystem ID: 0000
Subsystem Vendor ID:0000
Device Type: Mass Storage Controller
Unknown PCI Device. Its device ID is not recognized by this program.
IO Base: 00000174, IO Len 028c
IO Base: 000001f4, IO Len 020c
IO Base: 00000374, IO Len 008c
IO Base: 000003f4, IO Len 000c

Vendor ID: 1039
Device ID: 5107
Subsystem ID: 0000
Subsystem Vendor ID:0000
Device Type: Bridge Device
Unknown PCI Device. Its device ID is not recognized by this program.
Memory: c2800000, MemoryLength 3d7f0f10
Bridge is not configured for use

Vendor ID: 1023
Device ID: 9660
Subsystem ID: 0000
Subsystem Vendor ID:0000
Device Type: Display Controller
Trident 9660, Linear Addressing For PCI V1.0a
INT Pin: set
Int not needed (Disabled=255), Pin 01
Memory: 08000000, MemoryLength 00400000
Memory: 08800000, MemoryLength 00010000
Memory: 08400000, MemoryLength 00400000

Vendor ID: 119B
Device ID: 1221
Subsystem ID: 0000
Subsystem Vendor ID:0000
Device Type: Bridge Device
Unknown PCI Device. Its device ID is not recognized by this program.
INT Pin: set
IRQ 00, Pin 01
IO Base: 000003e0, IO Len 0004

Vendor ID: 119B
Device ID: 1221
Subsystem ID: 0000
Subsystem Vendor ID:0000
Device Type: Bridge Device
Unknown PCI Device. Its device ID is not recognized by this program.
INT Pin: set
IRQ 00, Pin 01
IO Base: 000003e4, IO Len 0004
!!!Memory range overlap with device 2
!!!Memory range overlap with device 2
!!!Memory range overlap with device 2
!!!Memory range overlap with device 2
!!!Memory range overlap with device 2
!!!Memory range overlap with device 2
!!!Memory range overlap with device 2
!!!Memory range overlap with device 2
!!!Memory range overlap with device 2
!!!Memory range overlap with device 2
!!!Memory range overlap with device 2
!!!Memory range overlap with device 2

Overall PCI configuration Fails
PCI Detection: Complete

===============End of Detection Report===================
Enough Processor
Enough Disk
Enough Memory
Compatible Video
Compatible CDROM
Compatible KeyBoard
Compatible Mouse
Truth Table Output:
Enough memory: 1
Enough disk space: 1
Video card: 1
Keyboard: 1
Mouse: 1
CD-ROM drive: 1

That was long....

I bought laptop some time ago, mainly to use it with linux. And it
didn't install. As I've already written it stopped during PCI probing so I
decided to build custom kernel on another machine with pci disabled. It
worked. At this point I decided to investigate a little and was able to
find offending device - it is PCI to PCI bridge with id 1039:5107. As I
understand there is a function in pci.c called scan_bus and this is
recursive function called for each bridge found. In my case top level call
(I suppose it called for host to PCI bridge) is OK, but this function
hangs when called for bridge mentioned earlier. My guess is that this
bridge is used as bridge between laptop's bus and bus in docking station.
And I don't use it.
I don't remeber where exactly it hung but I think it was inside first
call to pcibios_read_config_byte from scan_bus.
I developed quick and dirty fix for it - it just skips recursive call to
scan_bus for offending bridge:

--- linux/drivers/pci/pci.c.orig Wed Jan 7 21:24:39 1998
+++ linux/drivers/pci/pci.c Wed Jan 7 21:26:53 1998
@@ -993,7 +993,9 @@
dev->sibling = bus->devices;
bus->devices = dev;

- if (dev->class >> 8 == PCI_CLASS_BRIDGE_PCI) {
+ if (dev->class >> 8 == PCI_CLASS_BRIDGE_PCI &&
+ dev->vendor != PCI_VENDOR_ID_SI &&
+ dev->device != PCI_DEVICE_ID_SI_5107) {
unsigned int buses;
unsigned short cr;

I suppose it will work fine as long as you don't want to use docking
station...
And one more thing - I can't tell a lot about my laptop. It's produced
in Taiwan as model 6200T and was bought in the UK as PICO 6200. It is also
available here as AJP 6200 and I saw some other names I don't remember.
That was quite long... Sorry for that. If you want to have a look at
this and need more information or want me to test something - send me
email to: tomkep@globalnet.co.uk (during weekend, I don't check this
account on daily bases) or etltkki@etl.ericsson.se (mon-fri).
Tomek
PS: Can you understand my English?

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu