diff options
| -rw-r--r-- | arch/xtensa/mm/init.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/arch/xtensa/mm/init.c b/arch/xtensa/mm/init.c index 479d7537a32a..aff108df92d3 100644 --- a/arch/xtensa/mm/init.c +++ b/arch/xtensa/mm/init.c | |||
| @@ -90,7 +90,7 @@ int __init mem_reserve(unsigned long start, unsigned long end, int must_exist) | |||
| 90 | 90 | ||
| 91 | 91 | ||
| 92 | /* | 92 | /* |
| 93 | * Initialize the bootmem system and give it all the memory we have available. | 93 | * Initialize the bootmem system and give it all low memory we have available. |
| 94 | */ | 94 | */ |
| 95 | 95 | ||
| 96 | void __init bootmem_init(void) | 96 | void __init bootmem_init(void) |
| @@ -142,9 +142,14 @@ void __init bootmem_init(void) | |||
| 142 | 142 | ||
| 143 | /* Add all remaining memory pieces into the bootmem map */ | 143 | /* Add all remaining memory pieces into the bootmem map */ |
| 144 | 144 | ||
| 145 | for (i=0; i<sysmem.nr_banks; i++) | 145 | for (i = 0; i < sysmem.nr_banks; i++) { |
| 146 | free_bootmem(sysmem.bank[i].start, | 146 | if (sysmem.bank[i].start >> PAGE_SHIFT < max_low_pfn) { |
| 147 | sysmem.bank[i].end - sysmem.bank[i].start); | 147 | unsigned long end = min(max_low_pfn << PAGE_SHIFT, |
| 148 | sysmem.bank[i].end); | ||
| 149 | free_bootmem(sysmem.bank[i].start, | ||
| 150 | end - sysmem.bank[i].start); | ||
| 151 | } | ||
| 152 | } | ||
| 148 | 153 | ||
| 149 | } | 154 | } |
| 150 | 155 | ||
