sh: Do not try merging two 128MB PMB mappings
authorMatt Fleming <matt@console-pimps.org>
Sun, 25 Apr 2010 16:29:07 +0000 (17:29 +0100)
committerMatt Fleming <matt@console-pimps.org>
Sun, 25 Apr 2010 19:44:23 +0000 (20:44 +0100)
There is a logic error in pmb_merge() that means we will incorrectly try
to merge two 128MB PMB mappings into one mapping. However, 256MB isn't a
valid PMB map size and pmb_merge() will actually drop the second 128MB
mapping.

This patch allows my SDK7786 board to boot when configured with
CONFIG_MEMORY_SIZE=0x10000000.

Signed-off-by: Matt Fleming <matt@console-pimps.org>
arch/sh/mm/pmb.c

index 3cc2193..c0fdc21 100644 (file)
@@ -681,7 +681,7 @@ static void __init pmb_merge(struct pmb_entry *head)
        /*
         * The merged page size must be valid.
         */
        /*
         * The merged page size must be valid.
         */
-       if (!pmb_size_valid(newsize))
+       if (!depth || !pmb_size_valid(newsize))
                return;
 
        head->flags &= ~PMB_SZ_MASK;
                return;
 
        head->flags &= ~PMB_SZ_MASK;