[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: PCI funnnies...



Hi Ben,
	I think you have a BIOS that has problems with resource allocation
and handling PCI 2 PCI bridges.  Did you procure your backplane from the
same vendor as the SBC?  I would suggest trying a different make of SBC to
see if you have the same problems.

	Also, are you looking at the resources using a DOS utility or using
a Windows 2K utility?  If you see the resource allocation messed up under
windows, it might be due to ACPI (or more specifically the ACPI component of
the BIOS). You could try installing windows with ACPI disabled.

	The fact that you see different results for different boots can be
because the BIOS uses something called the ESCD to store the previous
resource assignment and then tries to assign the same resources for the
devices it finds unchanged on the next boot.  If the comparison code is
buggy you might see the resources get badly mangled from boot to boot.

--Prakash
>  -----Original Message-----
> From: 	Ben Yurick [mailto:byurick@keithley.com] 
> Sent:	Friday, January 03, 2003 5:46 PM
> To:	pci-sig@znyx.com
> Subject:	PCI funnnies...
> 
> 
> I've got a strange case of the PCI funnies...
> 
> I've got a system that has an industrial backplane (2.1).
> On this backplane, it looks like the SBC PCI bridge drives
> 3 slots and one more P2P. This second P2P drives 7
> more PCI slots(secondary bus). The OS is Win2K SP2 and I'm not sure about
> the
> BIOS but it is certainly recent.
> 
> Some particular plug in peripherals are not getting resources when plugged
> into the secondary PCI bus. When I run sniff utilities, I see these cards
> have 0 assigned to BADDR in the requested regions. I understand that this
> is 
> effectively disabling the device.
> 
> Depending on how many of these devices I populate, sometimes one or more
> of the devices gets 0 BADDR. It is not following any obvious pattern.
> Sometimes
> I can populate many devices and they are all ok, other times I can
> populate just 
> a few and one will be ok and the other not. The problems are repeatable on
> a power
> to power cycle basis but seem to follow no pattern as to which slots and
> how many devices.
> Except for the fact that these problems only show up in the secondary bus.
> The devices
> all require I/O space only. I know that is discouraged (older devices).
> But even with two
> devices (plenty of I/O resource available) I can see these problems that
> change on a
> per slot basis. Sometimes I see the command capabilities of the devices
> report back no I/O
> access but the device has what looks to be valid BADDR assigned in I/O
> space.
> 
> So with this, I was suspecting that electrical bus loading may be causing
> something
> nasty during the configuration cycles causing the BIOS in turn to disable
> the device
> that was corrupt.
> 
> With these strange configuration space results occuring, it was no
> surprise to me that the
> device driver would sometimes load and other times it would not.
> 
> Now here is the really strange part, I have seen a repeatable case where
> there are two of the same devices populated, one of their
> config spaces looks perfect and the other device config space looked fine
> with the exception of having 0 assigned to the
> BADDR. I was expecting the device driver to load and the former device to
> be ok and the latter to not. In reality, BOTH devices
> actually functioned properly. I was able to perform I/O accesses to both
> devices no problem.
> 
> Somehow the device driver discovered the distinct BADDR's for both devices
> and attached to it properly. Yet the BIOS sniffer utility
> reported that one had zero BADDR (disabled).
> 
> So now, I can't trust the sniffer utility and now I'm not sure that it is
> a non-compliance electrical bus problem either because as far as I know,
> no
> matter what the bios sniffer reports, apparently these devices are getting
> resources. In the single device case, with a 0 BADDR, the device driver
> won't load
> so I can't discover if the device actually got resources or not. Until
> now, I have never seen a case where the PCI bios reports that it assigned
> a
> 0 BADDR but actually allocated resources that the devices driver evidently
> discovered.
> 
> We have third party company do the device driver for these hardware
> devices so I could not debug at the driver level.
> 
> Do any of you experts have any initial ideas on what the problem could
> actually be here? I am a hardware guy so before I go ahead and
> start checking into PCI compliant bus cycles and timing, I can't help but
> wonder if there is something crazy going on that is simply
> related to the BIOS, OS and/or device driver. Ok, maybe not _simply_ ! but
> I am unfamiliar with Win2k and WDM driver design.
> 
> I'm a little leary about my observation that it seems like the backplane's
> intel 21150 is driving 7 slots and there could be a loading problem. But
> at the same time, I havn't been able to prove that any device was _really_
> disabled even though a bios sniffer showed 0 BADDR.
> 
> I would be grateful for any ideas, opinions, or suggestions on this
> problem.
> 
> Thanks!
> 
> 
> 

winmail.dat