From: Benjamin Herrenschmidt Date: Sat, 27 Jan 2007 03:07:54 +0000 (-0800) Subject: [POWERPC] ps3: system bus minor mmio fix X-Git-Tag: v2.6.21-rc1~92^2~23^2~66 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=43d80439c5f619446e174abdbdaff4fc0e539546;p=linux-2.6 [POWERPC] ps3: system bus minor mmio fix Fix two minor bugs in the PS3 system bus mmio region code. First, on error or when freeing a region, retain the bus_addr and len fields to allow subsequent calls to create the region. Second, correct the region address argument to the lv1_unmap_device_mmio_region() call. Fixes modprobe/rmmod of some drivers. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Geoff Levand Acked-by: Arnd Bergmann Signed-off-by: Paul Mackerras --- diff --git a/drivers/ps3/system-bus.c b/drivers/ps3/system-bus.c index d79f949bcb..468bdbcc72 100644 --- a/drivers/ps3/system-bus.c +++ b/drivers/ps3/system-bus.c @@ -50,7 +50,7 @@ int ps3_mmio_region_create(struct ps3_mmio_region *r) if (result) { pr_debug("%s:%d: lv1_map_device_mmio_region failed: %s\n", __func__, __LINE__, ps3_result(result)); - r->lpar_addr = r->len = r->bus_addr = 0; + r->lpar_addr = 0; } dump_mmio_region(r); @@ -62,13 +62,13 @@ int ps3_free_mmio_region(struct ps3_mmio_region *r) int result; result = lv1_unmap_device_mmio_region(r->did.bus_id, r->did.dev_id, - r->bus_addr); + r->lpar_addr); if (result) pr_debug("%s:%d: lv1_unmap_device_mmio_region failed: %s\n", __func__, __LINE__, ps3_result(result)); - r->lpar_addr = r->len = r->bus_addr = 0; + r->lpar_addr = 0; return result; }