What is the correct way to indicate an unassigned PCI resource ?
Olaf Hering
olaf at aepfle.de
Fri Jan 5 04:49:47 EST 2007
On Wed, Dec 06, Benjamin Herrenschmidt wrote:
> On Tue, 2006-12-05 at 09:15 +0100, Olaf Hering wrote:
> > On Tue, Dec 05, Benjamin Herrenschmidt wrote:
> >
> > > Olaf, can you give me a dump of /proc/ioports ? What is sitting at 0 on
> > > that PCI bus ?
> >
> > with IDE=y
> >
> > ==> /proc/ioports <==
> > 00000000-0000001f : dma1
>
> So it's indeed colliding with the cruft above.
>
> I reckon it's a bug in the firmware of this machine.
>
> Add to pseries/pci.c a quirk for that chipset (don't forget to test for
> machine_is(pseries) in the quirk as they get called for all platforms in
> a combo kernel. The quirk shall check if resource 6 has a 0 base and
> clear the size as Alan suggested (possibly setting the UNSET flag as
> well).
I will test this change tomorrow:
+++ linux-2.6/arch/powerpc/platforms/pseries/pci.c
@@ -98,6 +98,10 @@ static void fixup_winbond_82c105(struct
if (dev->resource[i].flags & IORESOURCE_IO
&& dev->bus->number == 0 && dev->devfn == 0x81)
dev->resource[i].flags &= ~IORESOURCE_IO;
+ if (dev->resource[i].start == 0) {
+ printk("disable IO resource %d on W82c105 IDE controller\n", i);
+ dev->resource[i].flags = IORESOURCE_DISABLED;
+ }
}
}
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_82C105,
Or did you mean 'if (dev->resource[5].start == 0)' ?
More information about the Linuxppc-dev
mailing list