On Thu, Dec 11, 2014 at 07:48:22PM -0000, Thomas Gleixner wrote: > The range check in setup_res() checks the IO range against > iomem_resource. That's just wrong. > > Move the check into a separate function and use ioport_resource for IO > ranges. > > Signed-off-by: Thomas Gleixner <t...@linutronix.de> > --- > arch/x86/pci/acpi.c | 51 > +++++++++++++++++++++++++++++++++------------------ > 1 file changed, 33 insertions(+), 18 deletions(-) > > Index: tip/arch/x86/pci/acpi.c > =================================================================== > --- tip.orig/arch/x86/pci/acpi.c > +++ tip/arch/x86/pci/acpi.c > @@ -240,12 +240,41 @@ static acpi_status count_resource(struct > return AE_OK; > } > > +static bool valid_resource_range(struct resource *r, struct device *dev) > +{ > + struct resource *ior; > + u64 end; > + > + ior = (r->flags & IORESOURCE_IO) ? &ioport_resource : &iomem_resource; > + > + /* > + * Exclude non-addressable range or non-addressable portion of > + * range. We only check end because ior->start is always 0. > + */ > + end = r->end; > + r->end = min(r->end, ior->end); > + if (r->end <= r->start) { > + dev_info(dev, "host bridge %s window [%#llx-%#llx] invalid > range\n", > + r->flags & IORESOURCE_IO ? "io" : "mem",
I think you can simplify this and below even further as the check Iagainst ORESOURCE_IO is done already when selecting the ior thing (diff Iontop): --- Index: b/arch/x86/pci/acpi.c =================================================================== --- a/arch/x86/pci/acpi.c 2014-12-12 15:54:40.856317113 +0100 +++ b/arch/x86/pci/acpi.c 2014-12-12 15:53:16.832319561 +0100 @@ -255,7 +255,7 @@ static bool valid_resource_range(struct r->end = min(r->end, ior->end); if (r->end <= r->start) { dev_info(dev, "host bridge %s window [%#llx-%#llx] invalid range\n", - r->flags & IORESOURCE_IO ? "io" : "mem", + ior->name, (unsigned long long)r->start, end); return false; } @@ -264,7 +264,7 @@ static bool valid_resource_range(struct return true; dev_info(dev, "host bridge %s window [%#llx-%#llx] truncated to [%#llx-%#llx]\n", - r->flags & IORESOURCE_IO ? "io" : "mem", + ior->name, (unsigned long long)r->start, end, (unsigned long long)r->start, (unsigned long long)r->end); return true; -- Regards/Gruss, Boris. Sent from a fat crate under my desk. Formatting is fine. -- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/