On 8/30/05, Linus Torvalds <[EMAIL PROTECTED]> wrote: > > > On Mon, 29 Aug 2005, David S. Miller wrote: > > > > So I think the kernel, by not enabling the ROM, is doing the > > right thing here. > > Notice that on ppc even older versions didn't actually _enable_ the rom, > but they would write the non-enabled address to the PCI_ROM_ADDRESS > register, so that anybody who read that register would see _where_ the ROM > would be enabled if it was enabled. > > That's the thing that changed in the commit Ben dislikes. Now, if the ROM > is disabled, we won't even write the disabled address to the PCI register, > because it led to trouble on some strange Matrox card. Probably a card > that nobody has ever used on PPC, and certainly not on a Powerbook, so in > that sense the apparent breakage on ppc is arguably "unnecessary" as far > as Ben is concerned. > > But I notice the problem: pci_enable_rom() is indeed broken with the > change. > > Ben, does this (totally untested) patch fix it for you? > > Linus > > ---- > diff --git a/drivers/pci/rom.c b/drivers/pci/rom.c > --- a/drivers/pci/rom.c > +++ b/drivers/pci/rom.c > @@ -23,11 +23,14 @@ > */ > static void pci_enable_rom(struct pci_dev *pdev) > { > - u32 rom_addr; > + struct resource *res = pdev->resource + PCI_ROM_RESOURCE; > + struct pci_bus_region region; > > - pci_read_config_dword(pdev, pdev->rom_base_reg, &rom_addr); > - rom_addr |= PCI_ROM_ADDRESS_ENABLE; > - pci_write_config_dword(pdev, pdev->rom_base_reg, rom_addr); > + if (!res->flags) > + return; > + > + pcibios_resource_to_bus(pdev, ®ion, res); > + pci_write_config_dword(pdev, pdev->rom_base_reg, region.start | > PCI_ROM_ADDRESS_ENABLE); > }
I was reading the status out of the PCI config space to account for our friend X which enables ROMs without informing the OS. With X around PCI config space can get out of sync with the kernel structures. > > /** > - > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to [EMAIL PROTECTED] > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > -- Jon Smirl [EMAIL PROTECTED] - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/