Re: PCI Sanity check breaks on Compaw Deskpro XL 590

Martin Mares (mj@ucw.cz)
Tue, 6 Oct 1998 22:05:33 +0200


Hello,

> 00:00.0 Non-VGA unclassified device: Compaq Computer Corporation:
> Unknown device 1000 (rev 01)
> Subsystem: Unknown device 2000:0000
> Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+
> Stepping- SERR+ FastB2B-
> Status: 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort-
> <MAbort+ >SERR+ <PERR+
> Latency: 32 set
> Interrupt: pin  routed to IRQ 32
> Region 0: Memory at 0ffffff0 (32-bit, non-prefetchable)
> Region 1: Memory at 0000dc20 (32-bit, non-prefetchable)
> Region 2: Memory at 0ffffff0 (32-bit, non-prefetchable)
> Region 3: Memory at 0000dc20 (32-bit, non-prefetchable)
> Region 4: I/O ports at 10000e10
> Region 5: I/O ports at e2000144
> 00: 11 0e 00 10 47 01 00 e2 01 00 00 00 00 20 00 00
> 10: f0 ff ff 0f 20 dc 00 00 f0 ff ff 0f 20 dc 00 00
> 20: 11 0e 00 10 47 01 00 e2 01 00 00 00 00 20 00 00
> 30: f0 ff ff 0f 20 dc 00 00 f0 ff ff 0f 20 dc 00 00

This device has completely bogus header. Compaq scores again :-|
It's a host bridge, but it should be called ghost bridge instead ;^)

Anyway, try this patch.

Have a nice fortnight

-- 
Martin `MJ' Mares   <mj@ucw.cz>   http://atrey.karlin.mff.cuni.cz/~mj/
Faculty of Math and Physics, Charles University, Prague, Czech Rep., Earth
"ebius tagline. This is a moebius tagline. This is a mo ..."

--- arch/i386/kernel/bios32.c.mj Tue Oct 6 22:01:42 1998 +++ arch/i386/kernel/bios32.c Tue Oct 6 22:03:40 1998 @@ -346,7 +346,7 @@ * attempt to make use of direct access hints provided by the PCI BIOS). * * This should be close to trivial, but it isn't, because there are buggy - * chipsets (yes, you guessed it, by Intel) that have no class ID. + * chipsets (yes, you guessed it, by Intel and Compaq) that have no class ID. */ __initfunc(int pci_sanity_check(struct pci_access *a)) { @@ -356,9 +356,9 @@ return 1; for(dfn=0; dfn < 0x100; dfn++) if ((!a->read_config_word(0, dfn, PCI_CLASS_DEVICE, &x) && - x == PCI_CLASS_BRIDGE_HOST) || + (x == PCI_CLASS_BRIDGE_HOST || x == PCI_CLASS_DISPLAY_VGA)) || (!a->read_config_word(0, dfn, PCI_VENDOR_ID, &x) && - x == PCI_VENDOR_ID_INTEL)) + (x == PCI_VENDOR_ID_INTEL || x == PCI_VENDOR_ID_COMPAQ))) return 1; DBG("PCI: Sanity check failed\n"); return 0;

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/