This patch from 2.6.33 help to me.
https://patchwork.kernel.org/patch/39988/
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index dbd0f94..89efbb5 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -367,8 +367,12 @@ pci_find_parent_resource(const struct pci_dev *dev, struct resource *res) continue; /* Wrong type */ if (!((res->flags ^ r->flags) & IORESOURCE_PREFETCH)) return r; /* Exact match */ - if ((res->flags & IORESOURCE_PREFETCH) && !(r->flags & IORESOURCE_PREFETCH)) - best = r; /* Approximating prefetchable by non-prefetchable */ + /* We can't insert a non-prefetch resource inside a prefetchable parent .. */ + if (r->flags & IORESOURCE_PREFETCH) + continue; + /* .. but we can put a prefetchable resource inside a non-prefetchable one */ + if (!best) + best = r; } return best; }
This patch from 2.6.33 help to me.
https:/ /patchwork. kernel. org/patch/ 39988/
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c parent_ resource( const struct pci_dev *dev, struct resource *res) PREFETCH) ) PREFETCH) && !(r->flags & IORESOURCE_ PREFETCH) ) PREFETCH)
index dbd0f94..89efbb5 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -367,8 +367,12 @@ pci_find_
continue; /* Wrong type */
if (!((res->flags ^ r->flags) & IORESOURCE_
return r; /* Exact match */
- if ((res->flags & IORESOURCE_
- best = r; /* Approximating prefetchable by non-prefetchable */
+ /* We can't insert a non-prefetch resource inside a prefetchable parent .. */
+ if (r->flags & IORESOURCE_
+ continue;
+ /* .. but we can put a prefetchable resource inside a non-prefetchable one */
+ if (!best)
+ best = r;
}
return best;
}