Most x86 boxes have no iomem system board resources, but some ia64 boxes do. Signed-off-by: Bjorn Helgaas <bjorn.helgaas@xxxxxx> Index: mm-work3/drivers/pnp/system.c =================================================================== --- mm-work3.orig/drivers/pnp/system.c 2007-01-11 15:56:57.000000000 -0700 +++ mm-work3/drivers/pnp/system.c 2007-01-12 12:14:53.000000000 -0700 @@ -3,7 +3,8 @@ * * Some code is based on pnpbios_core.c * Copyright 2002 Adam Belay <ambx1@xxxxxxxxxx> - * + * (c) Copyright 2007 Hewlett-Packard Development Company, L.P. + * Bjorn Helgaas <bjorn.helgaas@xxxxxx> */ #include <linux/pnp.h> @@ -21,7 +22,7 @@ { "", 0 } }; -static void reserve_ioport_range(char *pnpid, int start, int end) +static void reserve_range(char *pnpid, int start, int end, int port) { struct resource *res; char *regionid; @@ -30,7 +31,10 @@ if ( regionid == NULL ) return; snprintf(regionid, 16, "pnp %s", pnpid); - res = request_region(start,end-start+1,regionid); + if (port) + res = request_region(start,end-start+1,regionid); + else + res = request_mem_region(start,end-start+1,regionid); if ( res == NULL ) kfree( regionid ); else @@ -41,8 +45,8 @@ * have double reservations. */ printk(KERN_INFO - "pnp: %s: ioport range 0x%x-0x%x %s reserved\n", - pnpid, start, end, + "pnp: %s: %s range 0x%x-0x%x %s reserved\n", + pnpid, port ? "ioport" : "iomem", start, end, NULL != res ? "has been" : "could not be" ); @@ -75,13 +79,21 @@ /* invalid endpoint */ /* Do nothing */ continue; - reserve_ioport_range( + reserve_range( dev->dev.bus_id, pnp_port_start(dev, i), - pnp_port_end(dev, i) + pnp_port_end(dev, i), 1 ); } + for (i = 0; i < PNP_MAX_MEM; i++) { + if (!pnp_mem_valid(dev, i)) + continue; + + reserve_range(dev->dev.bus_id, pnp_mem_start(dev, i), + pnp_mem_end(dev, i), 0); + } + return; } - To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html