[PATCH 3/14] ps3: system bus minor mmio fix
From: Geoff Levand <hidden>
Date: 2007-01-25 02:40:01
From: Benjamin Herrenschmidt <benh@kernel.crashing.org> 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 <benh@kernel.crashing.org> Signed-off-by: Geoff Levand <redacted> --- drivers/ps3/system-bus.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)
--- ps3-linux-dev.orig/drivers/ps3/system-bus.c
+++ ps3-linux-dev/drivers/ps3/system-bus.c@@ -50,7 +50,7 @@ int ps3_mmio_region_create(struct ps3_mm 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 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; }