02/13/2008 8:26 AM
RE: Possible flaw in pci-bios for x86???
This field also contains the class code, which cannot be zero. The Revision
ID is only one byte.
From: Freddy Martens [mailto:email@example.com]
Sent: Wednesday, February 13, 2008 5:10 AM
Subject: Possible flaw in pci-bios for x86???
I don't want to cross post but this one is related to:
There seems to be a flaw in scan_all(), find_all() and rescan_all() in
server.c. It is about the following code (snippet from find_all():
if ((PCI_read_config32 (bus,
(char *)&dword) != PCI_SUCCESS))
if (dword == 0 || dword == 0xffffffff)
The last 2 lines should be:
if (dword == 0xffffffff)
because (according to the PCI specification):
This register specifies a device specific revision identifier. The value is
chosen by the vendor. Zero is an acceptable value. This field should be
viewed as a vendor defined extension to the Device ID.
At that stage in the code, PCI_read_config32 returns '0', so the register
could be read and the revision ID is known and could be zero. And that
should not be a reason to ignore the PCI adapter.
Is this a flaw in 'pci-bios' and should I fix this when I run into this
problem or is QSSL going to fix this in a future release?