[Precise] [PATCH 02/12] x86, efi: Calling __pa() with an ioremap()ed address is invalid

Herton Ronaldo Krzesinski herton.krzesinski at canonical.com
Sun Feb 3 23:38:23 UTC 2013


On Fri, Feb 01, 2013 at 02:45:42PM -0800, Brad Figg wrote:
> From: Matt Fleming <matt.fleming at intel.com>
> 
> BugLink: http://bugs.launchpad.net/bugs/1111689
> 
> If we encounter an efi_memory_desc_t without EFI_MEMORY_WB set
> in ->attribute we currently call set_memory_uc(), which in turn
> calls __pa() on a potentially ioremap'd address.
> 
> On CONFIG_X86_32 this is invalid, resulting in the following
> oops on some machines:
> 
>   BUG: unable to handle kernel paging request at f7f22280
>   IP: [<c10257b9>] reserve_ram_pages_type+0x89/0x210
>   [...]
> 
>   Call Trace:
>    [<c104f8ca>] ? page_is_ram+0x1a/0x40
>    [<c1025aff>] reserve_memtype+0xdf/0x2f0
>    [<c1024dc9>] set_memory_uc+0x49/0xa0
>    [<c19334d0>] efi_enter_virtual_mode+0x1c2/0x3aa
>    [<c19216d4>] start_kernel+0x291/0x2f2
>    [<c19211c7>] ? loglevel+0x1b/0x1b
>    [<c19210bf>] i386_start_kernel+0xbf/0xc8
(...)

This commit was reverted upstream, in commit
e1ad783b12ec8b69da83479c5d21a0d8180bc519, due to introducing a
regression on Macbook Air at boot as said on the changelog. Then
commit 3e8fa263a97079c74880675c451587bb6899e661 was applied later,
which says to be reimplementing this (e8c7106280a3) and thus
handling the regression.

-- 
[]'s
Herton




More information about the kernel-team mailing list