Re: PCI Weirdness found (sort of)

Gabriel Paubert (paubert@iram.es)
Fri, 31 Jul 1998 10:55:19 +0200 (METDST)


On Thu, 30 Jul 1998, Jonathan Corbet wrote:

> About every third kernel release I've been sending in a note saying that
> I've not been able to boot a development kernel since the 90's. I got a
> couple of responses, including one from Leonard since I had pointed a
> (mistaken) finger toward the BusLogic controller, but no solutions.
>
> [The problem was all kinds of weird SCSI errors and timeouts shortly after
> the controller was initialized.]
>
> So I decided to get off my lazy butt and try to figure out what was going
> on. Slogging through the old kernels showed me that 2.1.95 brought in the
> problem. Looking at the patch, I narrowed things down to this bit of new
> code in arch/i386/kernel/bios32.c:
>
> if (has_io && !(cmd & PCI_COMMAND_IO)) {
> printk("PCI: Enabling I/O for device %02x:%02x\n",
> dev->bus->number, dev->devfn);
> cmd |= PCI_COMMAND_IO;
> pci_write_config_word(dev, PCI_COMMAND, cmd);
> }
>

It looks like an address conflict on PCI (i.e. several devices at the
same address), maybe your BIOS does not assign I/O addresses correctly ?

Can you please send the output of lspci -vvx. And also what was this
message exactly (device ??:??).

> This stuff was new; before 2.1.95 it used to content itself with griping in
> this situation. Since my system does the above printk, I figured that the
> problem might be here. So I commented these lines, rebuilt, and rebooted.
> It worked...this is the first time I've been able to run a kernel above
> 2.1.94. I'm happy about that.

:-)

> Now, I obviously don't recommend that this change go into the kernel. The
> fact is that I don't know what the hell I'm doing; I know nothing about PCI
> and how it works. But there's clearly something in my setup that doesn't
> like having PCI_COMMAND_IO sent to it. I would sure like to track it down
> so that this problem can be squashed, but I don't know how to go about it.
> Any suggestions would be appreciated.

PCI_COMMAND_IO enables the response of a device to certain types of bus
cycles. But if the registers describing to which addresses the devices
responds are set up incorrectly, you may end up with a badly thrashed
system. It seems to be your case.

> (For what it's worth, I have an Intel VS440FX motherboard, American
> Megatrends BIOS 1.00.06.CS1).

Can you get a BIOS upgrade (it might very well be a BIOS bug).

Regards,
Gabriel.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html