Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Jan 1996 15:36:35 +0100
From:      se@zpr.uni-koeln.de (Stefan Esser)
To:        ap@bnc.net
Cc:        bugs@freebsd.org
Subject:   Re: kern/970: PCI probe failing with two bridges
Message-ID:  <199601251436.AA04773@Sysiphos>
In-Reply-To: Noses <noses@oink.rhein.de> "kern/970: PCI probe failing with two bridges" (Jan 25, 11:42)

next in thread | previous in thread | raw e-mail | index | archive | help
On Jan 25, 11:42, Noses wrote:
} Subject: kern/970: PCI probe failing with two bridges

} While booting I'm getting the following messages:
} 
} Probing for devices on the PCI bus:
} chip0 <Intel 82437 (Triton)> rev 2 on pci0:0
} chip1 <Intel 82371 (Triton)> rev 2 on pci0:7
} ahc0 <Adaptec 2940 SCSI host adapter> rev 3 int a irq 5 on pci0:9
} ahc0: 2940 Single Channel, SCSIId=7, aic7870, 255 SCBs
} [disks...]
} chip2 <DEC 21050 PCI-PCI bridge> rev 2 on pci 0:11
} chip3 <DEC 21050 PCI-PCI bridge> rev 2 on pci 0:12
} Probing for devices on the PCI bus:
} de0 <Digital DC21040 Ethernet> rev 35 int a irq 12 on pci1:4
} de0: DC21040 [10Mb/s] pass 2.3 Ethernet address 00:00:c0:30:06:c0
} de0: enabling Thinwire/AUI port
} de1 <Digital DC21040 Ethernet> rev 35 int a irq 9 on pci1:5
} de1: DC21040 [10Mb/s] pass 2.3 Ethernet address 00:00:c0:05:05:c0
} de1: enabling Thinwire/AUI port
} Probing for devices on the PCI bus:
} de2 <Digital DC21040 Ethernet> rev 35 int a irq 12 on pci1:4
} pci_map_port failed: device's iorange 0xd8800-0xd87f is incompatible with its bridge's range 0xc0000-0xcfff
} de3 <Digital DC21040 Ethernet> rev 35 int a irq 9 on pci1:5
} pci_map_port failed: device's iorange 0xd400-0xd47f is incompatible with its bridge's range 0xc0000-0xcfff

} >Fix:
} None. Urgently needed.

Not true. (The "None" part, the urgently 
needed is beyond my control ;-).

The bug was found by Matt Thomas, and has 
been incorporated into both FreeBSD-stable
and FreeBSD-current.

But it is just two characters to add, so
you can manually fix it:

In file /sys/pci/pcireg.h, there are macros
to extract the bus numbers from the bridges
PCI configuration space registers. The lines
below are correct, in the version delivered 
with 2.1R, there are ">" operators instead
of the correct ">>".

#define PCI_SUBORDINATE_BUS_EXTRACT(x)	(((x) >> 16) & 0xff)
#define PCI_SECONDARY_BUS_EXTRACT(x)	(((x) >>  8) & 0xff)
                                              ^^
                                              these were ">" in 2.1R

Either get a new version of /sys/pci/pcireg.h
or just modify those two lines to correctly
use the shift operators ...

Regards, STefan

-- 
 Stefan Esser, Zentrum fuer Paralleles Rechnen		Tel:	+49 221 4706021
 Universitaet zu Koeln, Weyertal 80, 50931 Koeln	FAX:	+49 221 4705160
 ==============================================================================
 http://www.zpr.uni-koeln.de/~se			  <se@ZPR.Uni-Koeln.DE>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199601251436.AA04773>