[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 <benh@kernel.crashing.org> Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com> Acked-by: Arnd Bergmann <arnd.bergmann@de.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
6c7be7d385
commit
43d80439c5
|
@ -50,7 +50,7 @@ int ps3_mmio_region_create(struct ps3_mmio_region *r)
|
||||||
if (result) {
|
if (result) {
|
||||||
pr_debug("%s:%d: lv1_map_device_mmio_region failed: %s\n",
|
pr_debug("%s:%d: lv1_map_device_mmio_region failed: %s\n",
|
||||||
__func__, __LINE__, ps3_result(result));
|
__func__, __LINE__, ps3_result(result));
|
||||||
r->lpar_addr = r->len = r->bus_addr = 0;
|
r->lpar_addr = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
dump_mmio_region(r);
|
dump_mmio_region(r);
|
||||||
|
@ -62,13 +62,13 @@ int ps3_free_mmio_region(struct ps3_mmio_region *r)
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
result = lv1_unmap_device_mmio_region(r->did.bus_id, r->did.dev_id,
|
result = lv1_unmap_device_mmio_region(r->did.bus_id, r->did.dev_id,
|
||||||
r->bus_addr);
|
r->lpar_addr);
|
||||||
|
|
||||||
if (result)
|
if (result)
|
||||||
pr_debug("%s:%d: lv1_unmap_device_mmio_region failed: %s\n",
|
pr_debug("%s:%d: lv1_unmap_device_mmio_region failed: %s\n",
|
||||||
__func__, __LINE__, ps3_result(result));
|
__func__, __LINE__, ps3_result(result));
|
||||||
|
|
||||||
r->lpar_addr = r->len = r->bus_addr = 0;
|
r->lpar_addr = 0;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue