Re: [PATCH] x86/efi: Only pass mapped RAM regions to free_bootmem_late()

From: Matt Fleming
Date: Thu Jun 05 2014 - 14:07:56 EST


On 5 June 2014 16:01, Alan Cox <alan@xxxxxxxxxxxxxxxxxxx> wrote:
> On Thu, 5 Jun 2014 14:27:34 +0100
> Matt Fleming <matt@xxxxxxxxxxxxxxxxx> wrote:
>
>> From: Matt Fleming <matt.fleming@xxxxxxxxx>
>>
>> free_bootmem_late() expects to only be passed RAM regions that the
>> kernel can access, and that have a corresponding 'struct page'. It's
>> possible for regions in the EFI memory map to reside in address ranges
>> for which pfn_to_page() doesn't work, for instance when running on an
>> i386 system with CONFIG_HIGHMEM=n.
>>
>> This is in fact the case for one of Alan's machines where some of the
>> EFI boot services pages live in highmem, and running a kernel without
>> CONFIG_HIGHMEM enabled results in the following oops,
>>
>> BUG: unable to handle kernel paging request at f7f1f080
>> IP: [<c17fba96>] __free_pages_bootmem+0x5a/0xb8
>> *pdpt = 0000000001887001 *pde = 0000000001984067 *pte = 000000000 0000000
>> Oops: 0002 [#1] SMP
>
> No improvement, and the if case is never true 8(

Argh, dammit. OK, back to the drawing board. Thanks for testing.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/