| From 002ea9eefec98dada56fd5f8e432a4e8570c2a26 Mon Sep 17 00:00:00 2001 |
| From: Linus Walleij <linus.walleij@linaro.org> |
| Date: Thu, 29 Sep 2011 09:37:23 +0100 |
| Subject: ARM: 7113/1: mm: Align bank start to MAX_ORDER_NR_PAGES |
| |
| From: Linus Walleij <linus.walleij@linaro.org> |
| |
| commit 002ea9eefec98dada56fd5f8e432a4e8570c2a26 upstream. |
| |
| The VM subsystem assumes that there are valid memmap entries from |
| the bank start aligned to MAX_ORDER_NR_PAGES. |
| |
| On the Ux500 we have a lot of mem=N arguments on the commandline |
| triggering this bug several times over and causing kernel |
| oops messages. |
| |
| Cc: Michael Bohan <mbohan@codeaurora.org> |
| Cc: Nicolas Pitre <nico@fluxnic.net> |
| Signed-off-by: Johan Palsson <johan.palsson@stericsson.com> |
| Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> |
| Signed-off-by: Linus Walleij <linus.walleij@linaro.org> |
| Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| arch/arm/mm/init.c | 7 +++++++ |
| 1 file changed, 7 insertions(+) |
| |
| --- a/arch/arm/mm/init.c |
| +++ b/arch/arm/mm/init.c |
| @@ -473,6 +473,13 @@ static void __init free_unused_memmap(st |
| */ |
| bank_start = min(bank_start, |
| ALIGN(prev_bank_end, PAGES_PER_SECTION)); |
| +#else |
| + /* |
| + * Align down here since the VM subsystem insists that the |
| + * memmap entries are valid from the bank start aligned to |
| + * MAX_ORDER_NR_PAGES. |
| + */ |
| + bank_start = round_down(bank_start, MAX_ORDER_NR_PAGES); |
| #endif |
| /* |
| * If we had a previous bank, and there is a space |