Re: Ignore disabled ROM resources at setup

From: Linus Torvalds
Date: Mon Aug 29 2005 - 22:15:42 EST




On Tue, 30 Aug 2005, Benjamin Herrenschmidt wrote:
>
> pci_map_rom "sees" that the resource is unassigned by testing the parent
> pointer, and calls pci_assign_resource() which, with this new patch,
> will do nothing.

Ehh.. It didn't do anything with the old code either for that case, so
there's apparently something else also going on.

It would write the base address, but since it wouldn't _enable_ the ROM
mapping (only the "non-enabled" case changed by this commit), the end
result from a hw standpoint should be exactly the same: the ROM isn't
actually mapped.

So after pci_assign_resource(), the resource has literally been assigned,
but that patch should not have mattered in any way whether it was actually
_enabled_ or not.

Now, there's clearly a difference. What has always worked is then to do

pci_write_config_dword(dev,
PCI_ROM_ADDRESS,
PCI_ROM_ADDRESS_ENABLE | res->start)

(well, these days you're supposed to use "pcibios_resource_to_bus()" to
get the start value to write out).

Much preferable is probably to just enable the resource manually _before_
calling pci_assign_resource, ie do something like.

dev->resource[PCI_ROM_RESOURCE].flags |= IORESOURCE_ROM_ENABLE;
pci_assign_resource(dev, PCI_ROM_RESOURCE);

But yes, if something used to just blindly set PCI_ROM_ADDRESS_ENABLE,
then that got broken. I grepped for that and didn't see anything like it,
but I guess people are doing it with the magic constant "1"..

I don't even find any access to "PCI_ROM_ADDRESS" in radeonfb, so I wonder
if it has ever worked? I get the feeling that if the ROM wasn't enabled,
it didn't work before either, but perhaps the change makes the failure
mode more spectacular?

Linus
-
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/