ps3: system bus minor mmio fix
Subsystems (2)
PATCH 4/16 ps3: system bus minor mmio fix
From: Benjamin Herrenschmidt <[email protected]>
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.
--- drivers/ps3/system-bus.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)
drivers/ps3/system-bus.c +3 -3
@@ -50,7 +50,7 @@ int ps3_mmio_region_create(struct ps3_mmif (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_mmioint 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; }
Quoted 6 lines · Geoff Levand
From: Benjamin Herrenschmidt <[email protected]>
Fix two minor bugs in the PS3 system bus mmio region code. First, on error or when freeing a region, retain the
bus_addrand len fields to allow subsequent calls to create the region. Second, correct the region address argument to thelv1_unmap_device_mmio_region()call.
Note that I personally think that drivers/ps3 is a very wrong place for the ps3 system bus. It should stay in arch/powerpc/platform/ps3
Ben.
Quoted 42 lines
Fixes modprobe/rmmod of some drivers.
Signed-off-by Benjamin Herrenschmidt <[email protected]>Signed-off-by Geoff Levand <[email protected]>Acked-by Arnd Bergmann <[email protected]>--- drivers/ps3/system-bus.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-)drivers/ps3/system-bus.c +3
-3@@ -50,7 +50,7 @@ int ps3_mmio_region_create(struct ps3_mmif (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_mmioint 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; }_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://ozlabs.org/mailman/listinfo/linuxppc-dev
Quoted 10 lines · Benjamin Herrenschmidt
Quoted 6 lines · Geoff Levand
From: Benjamin Herrenschmidt <[email protected]>
Fix two minor bugs in the PS3 system bus mmio region code. First, on error or when freeing a region, retain the
bus_addrand len fields to allow subsequent calls to create the region. Second, correct the region address argument to thelv1_unmap_device_mmio_region()call.Note that I personally think that
drivers/ps3is a very wrong place for the ps3 system bus. It should stay inarch/powerpc/platform/ps3
Yes, absolutely. We should not spreads things all over the tree do make understanding the code even more difficult than all the lv1 braindamage already makes it.
Quoted 7 lines · Christoph Hellwig
Quoted 2 lines · Benjamin Herrenschmidt
Note that I personally think that
drivers/ps3is a very wrong place for the ps3 system bus. It should stay inarch/powerpc/platform/ps3Yes, absolutely. We should not spreads things all over the tree do make understanding the code even more difficult than all the lv1 braindamage already makes it.
I'm really disappointed that you both feel that way. Why didn't you say so several months ago when I first posted that? I also don't think it is a good place, since I need to expose a bunch of platform specifics in asm-powerpc/ps3.h, which would better stay in my platform/ps3/platform.h. When I had that stuff in the platform directory there was criticism that it shouldn't go there, so I moved it out. I'll make a patch for RFC and see what happens.
-Geoff
Quoted 11 lines · Geoff Levand
Quoted 7 lines · Christoph Hellwig
Quoted 2 lines · Benjamin Herrenschmidt
Note that I personally think that
drivers/ps3is a very wrong place for the ps3 system bus. It should stay inarch/powerpc/platform/ps3Yes, absolutely. We should not spreads things all over the tree do make understanding the code even more difficult than all the lv1 braindamage already makes it.
I'm really disappointed that you both feel that way. Why didn't you say so several months ago when I first posted that?
I overlooked it. It's not the end of the world, easy enough to move them. Sorry about that.
Quoted 5 lines
I also don't think it is a good place, since
I need to expose a bunch of platform specifics inasm-powerpc/ps3.h, which would better stay in myplatform/ps3/platform.h. When I had that stuff in the platform directory there was criticism that it shouldn't go there, so I moved it out. I'll make a patch for RFC and see what happens.
Ben.