powerpc/ps3: Write highmem info to repository
authorGeoff Levand <geoff@infradead.org>
Tue, 13 Jan 2015 01:00:20 +0000 (01:00 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 22 Jan 2015 06:31:21 +0000 (17:31 +1100)
Add calls to the ps3_mm_set_repository_highmem() routine when the ps3
r1 highmem region is either created or destroyed.

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/platforms/ps3/mm.c

index 04c1b938d7624d989a5a7b69b7fbc9e436ac2502..b0f34663b1aecf388a5e6cf6e09bebbf7ae76bc3 100644 (file)
@@ -329,6 +329,7 @@ static void ps3_mm_region_destroy(struct mem_region *r)
                r->size = r->base = r->offset = 0;
                map.total = map.rm.size;
        }
+       ps3_mm_set_repository_highmem(NULL);
 }
 
 /*============================================================================*/
@@ -1218,8 +1219,12 @@ void __init ps3_mm_init(void)
 
        /* Check if we got the highmem region from an earlier boot step */
 
-       if (ps3_mm_get_repository_highmem(&map.r1))
-               ps3_mm_region_create(&map.r1, map.total - map.rm.size);
+       if (ps3_mm_get_repository_highmem(&map.r1)) {
+               result = ps3_mm_region_create(&map.r1, map.total - map.rm.size);
+
+               if (!result)
+                       ps3_mm_set_repository_highmem(&map.r1);
+       }
 
        /* correct map.total for the real total amount of memory we use */
        map.total = map.rm.size + map.r1.size;