Pull EFI fix from Ingo Molnar: "An arm64 boot crash fix" * 'efi-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: efi/arm64: Don't apply MEMBLOCK_NOMAP to UEFI memory map mapping
Unified · Split
| @@ -203,7 +203,19 @@ void __init efi_init(void) · 202 unmodified lines | ||
| 203 | 203 | |
| 204 | 204 | reserve_regions(); |
| 205 | 205 | early_memunmap(memmap.map, params.mmap_size); |
| 206 | − memblock_mark_nomap(params.mmap & PAGE_MASK, | |
| 207 | − PAGE_ALIGN(params.mmap_size + | |
| 208 | − (params.mmap & ~PAGE_MASK))); | |
| 206 | + | |
| 207 | + if (IS_ENABLED(CONFIG_ARM)) { | |
| 208 | + /* | |
| 209 | + * ARM currently does not allow ioremap_cache() to be called on | |
| 210 | + * memory regions that are covered by struct page. So remove the | |
| 211 | + * UEFI memory map from the linear mapping. | |
| 212 | + */ | |
| 213 | + memblock_mark_nomap(params.mmap & PAGE_MASK, | |
| 214 | + PAGE_ALIGN(params.mmap_size + | |
| 215 | + (params.mmap & ~PAGE_MASK))); | |
| 216 | + } else { | |
| 217 | + memblock_reserve(params.mmap & PAGE_MASK, | |
| 218 | + PAGE_ALIGN(params.mmap_size + | |
| 219 | + (params.mmap & ~PAGE_MASK))); | |
| 220 | + } | |
| 209 | 221 | } |