BIOS Name Strings? (Help!)

Joe Pranevich (joepran@telerama.lm.com)
Tue, 18 Nov 1997 18:50:44 -0500


Hello,

As I posted before, I was having a problem with reboots in the PCI
driver on my machine and I had tracked the problem down to a slightly
bad BIOS. (I'm fairly sure, by now.)

On 2.1, by enabling direct access to PCI and not the PCI BIOS, all is
fine. On 2.0, I still have to patch it myself to get a booting kernel
with PCI.

I really would like to submit my little bit of work into a kernel patch
to stop the reboots for other people. (I have gotten mail from others
with the same problem) On 2.0, the correct answer is to detect the BIOS
name and version and cause the pci_find_device function (the only one
that doesn't seem to work) to return FUNCTION_NOT_SUPPORTED (or whatever
the constant is) On 2.1, the answer differs depending on whether PCI
direct access is installed or not. As PCI BIOS takes precedence over PCI
direct support, if pci direct access support is compiled in, I still get
the problem. But, we should be able to detect the BIOS the same way as
in above and change the handler for that function to the direct access
one. (which works fine) If direct access isn't in the kernel, back to
FUNCTION_NOT_SUPPORTED.

I would really like to do this. Although the problem can be solved by
not compiling in PCI, that is not an option for distributions in all
cases. Detection of faulty BIOSes (especially faulty ones that have
easily fixed problems that can't be ignore) would be a nice feature, in
my opinion. My only problem is that I don't know how to get the BIOS
name string and version number with which to make a compare against and
know of no other way to detect it.

Can someone please help me? I'm sure there's a simple solution. Well, I
*hope* there's a simple solution. :)

Joe Pranevich