Skip to contentSkip to conversation

ps3: system bus minor mmio fix

PATCH In review Geoff Levand 3 participants 5 messages Jan 27, 2007 – Jan 29, 2007

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

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_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;
 }
 
#1 lore raw
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_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.

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.

---
 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_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;
 }
 

_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://ozlabs.org/mailman/listinfo/linuxppc-dev

#2 lore raw
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_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.

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

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.

#3 lore raw
Quoted 7 lines · Christoph Hellwig
Quoted 2 lines · Benjamin Herrenschmidt

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

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.

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

#4 lore raw
Quoted 11 lines · Geoff Levand
Quoted 7 lines · Christoph Hellwig
Quoted 2 lines · Benjamin Herrenschmidt

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

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.

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 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.

Ben.