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

Info ... save this



Hi All,

This is informational only; it could save somebody a whole lot of time and
hassle down the road if you ever run into the problem I had.

I had two testers consistently locking up during a PCI bus scan searching for a
class/subclass code of 01 01 for the IDE controller.  This was the simplest scan
imaginable; all it did was run through the config area headers looking for this
device.  On some P5/90 IBM Ambra and some other system it was locking up; the
simplicity of this test wasn't enough.  A simple selection of dword 2, bus 0,
device 0, function 5, caused the lockup as soon as the dword value was sent out
port CF8h.  Totally bogus but it happened.

I finally solved the problem by inserting 2 checks:

1) Vendor ID value of FFFF at dword 0.  If encountered, move to the next device
immediately, no further I/O on that device.
2) If bit 7 in the header type register (bits 23 - 16, dword 3) was clear, it
would indicate a single-function device, so only function 0 would be tested,
then move on to the next device.

This solved the lockups and still didn't miss anything on the bus, as long as
the resident hardware properly reported itself in the config space.  

I'm sure these lockups are totally against the specs, but then it seems that
this is all I'm running into these days.  Anyway maybe this info will come in
handy for somebody, somewhere down the road.

-- Chris
MhW