Re: Ignore disabled ROM resources at setup

From: Benjamin Herrenschmidt
Date: Mon Aug 29 2005 - 23:42:24 EST


On Mon, 2005-08-29 at 21:20 -0700, David S. Miller wrote:
> From: Linus Torvalds <torvalds@xxxxxxxx>
> Date: Mon, 29 Aug 2005 21:09:24 -0700 (PDT)
>
> > So 2.6.13 is being "safe". It allocates the space for the ROM in the
> > resource tables, but it neither enables it nor does it write the
> > (disabled) address out to the device, since both of those actions have
> > been shown to break on PC's. And sadly (or happily, depends on your
> > viewpoint), PC's have a _much_ wider range of hardware, so they are the
> > ones we have to work around.
>
> Actually, I can tell you that it is a known fact that Qlogic ISP
> PCI cards will not respond to I/O and MEM space when you enable
> the ROM. And this behavior exists in quite a few other PCI parts
> as well.

Yes, including Matrox cards.

> So I think the kernel, by not enabling the ROM, is doing the
> right thing here.

It is, the problem is that not only it doesn't enable it, but it also
doesn't write the resource to the BAR, which triggers a bug in
pci_map_rom which then enables the decoding but doesn't update the BAR
with the new address neither.

Note also the, imho totally broken, code in pci_map_rom_copy() which is
supposed to keep a cached copy of the ROM in memory specifically for
these cards to have an easier access afterward (or for sysfs rom file
access to work).

I think that code should have a pointer in pci_dev for the cache instead
of stuffing a kernel virtual address in the middle of the resouce tree.

Ben.


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/