--- a/arch/powerpc/kernel/pci_64.c
+++ b/arch/powerpc/kernel/pci_64.c
@@ -1234,6 +1234,14 @@ static void __devinit fixup_resource(str
        struct pci_controller *hose = pci_bus_to_host(dev->bus);
        unsigned long start, end, mask, offset;

+       /*
+        * tell the core code that this ressource is unassigned
+        * fixes p630 winbond IDE with libata
+        */
+       if (res->start == 0) {
+               res->flags = 0;
+               return;
+       }
        if (res->flags & IORESOURCE_IO) {
                offset = (unsigned long)hose->io_base_virt - pci_io_base;

Please make this run on pSeries only; on a PowerMac for

I could just match for winbond an start == 0.

Why not fix it properly?  The "0 means unassigned" thing is
something this specific firmware does, it is not a standard
or anything, and certainly not a property of the winbond
hardware (it _will_ react to legacy I/O at address 0).

So make this new code only run when this firmware is used,
too (perhaps do a check in prom_init and remove this BAR
from the assigned addresses property?)


Segher

-
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to