Re: [PATCH] Remove warning in efi_enter_virtual_mode

From: Darren Hart
Date: Thu Apr 18 2013 - 20:18:17 EST


On 04/18/2013 09:19 AM, Matt Fleming wrote:
> On 18/04/13 15:51, Darren Hart wrote:
>> I don't believe I have seen a 32-bit EFI system with a BGRT, but then
>> again, I had to look it up today! That said, I suspect the MinnowBoard
>> would benefit from such a thing, so we should have an example of it
>> there in the near future.
>
> That's fine and things will work as-is provided that the BGRT image is
> not in highmem.
>
>> Is this in anyway related to the following patch from Josh Boyer? We're
>> carrying this in the Yocto Project trees currently.
>>
>> commit 6f3e186bc7721c5b24ad90d4a751cccfccd445e6
>> Author: Josh Boyer <jwboyer@xxxxxxxxxx>
>> Date: Fri Aug 5 08:47:23 2011 -0400
>>
>> Add patch to fix 32bit EFI service mapping (rhbz 726701)
>>
>> Signed-off-by: Tom Zanussi <tom.zanussi@xxxxxxxxx>
>> Signed-off-by: Darren Hart <dvhart@xxxxxxxxxxxxxxx>
>
> Yep, it's basically the same fix. My patch just avoids the #ifdef and
> prints an error message if we have EFI Boot services regions we can't
> access directly. The error message will at least be useful if we do
> start seeing BGRT pointers in highmem.
>
> Could you give it a spin on your MinnowBoard?

I've removed the patch I reference above and applied your patch to my
3.8.4 MinnowBoard dev tree. It panics with:

------------[ cut here ]------------
WARNING: at arch/x86/mm/ioremap.c:102 __ioremap_caller+0x2cb/0x2f0()
Hardware name: Minnow
Modules linked in:
Pid: 0, comm: swapper/0 Not tainted 3.8.4-yocto-standard+ #111
Call Trace:
[<c102faf3>] warn_slowpath_common+0x73/0xa0
[<c102752b>] ? __ioremap_caller+0x2cb/0x2f0
[<c102752b>] ? __ioremap_caller+0x2cb/0x2f0
[<c102fb43>] warn_slowpath_null+0x23/0x30
[<c102752b>] __ioremap_caller+0x2cb/0x2f0
[<c110b248>] ? kmem_cache_alloc_trace+0x58/0x120
[<c110b33f>] ? sysfs_slab_alias+0x2f/0x80
[<c165d948>] ? add_preempt_count+0x8/0x80
[<c165d8c8>] ? sub_preempt_count+0x8/0x80
[<c10387aa>] ? walk_system_ram_range+0xfa/0x110
[<c1027599>] ioremap_cache+0x19/0x20
[<c1932889>] ? efi_ioremap+0x1b/0x23
[<c1932889>] efi_ioremap+0x1b/0x23
[<c19326bd>] efi_enter_virtual_mode+0x195/0x346
[<c19208b8>] start_kernel+0x288/0x30b
[<c1920462>] ? repair_env_string+0x51/0x51
[<c19202a2>] i386_start_kernel+0x78/0x7d
---[ end trace f74542647d553317 ]---
efi: ioremap of 0x3DE3F000 failed!
efi: ioremap of 0x3E601000 failed!
efi: ioremap of 0x3E602000 failed!
efi: ioremap of 0x3E609000 failed!
efi: ioremap of 0x3E60C000 failed!
efi: ioremap of 0x3E614000 failed!
efi: ioremap of 0x3E617000 failed!
efi: ioremap of 0x3E621000 failed!
efi: ioremap of 0x3E622000 failed!
efi: ioremap of 0x3E627000 failed!
efi: ioremap of 0x3E628000 failed!
efi: ioremap of 0x3E62D000 failed!
efi: ioremap of 0x3E62E000 failed!
efi: ioremap of 0x3E631000 failed!
efi: ioremap of 0x3E632000 failed!
efi: ioremap of 0x3E63E000 failed!
efi: ioremap of 0x3EA0E000 failed!
efi: ioremap of 0x3EA0F000 failed!
efi: ioremap of 0x3EA11000 failed!
efi: ioremap of 0x3EA1A000 failed!
efi: ioremap of 0x3EA1B000 failed!
efi: ioremap of 0x3EA1D000 failed!
efi: ioremap of 0x3EC0B000 failed!
efi: ioremap of 0x3EC0F000 failed!
efi: ioremap of 0x3F33F000 failed!
efi: ioremap of 0xFED1C000 failed!
------------[ cut here ]------------
kernel BUG at arch/x86/platform/efi/efi.c:933!
invalid opcode: 0000 [#1] PREEMPT SMP
Modules linked in:
Pid: 0, comm: swapper/0 Tainted: G W 3.8.4-yocto-standard+
#111 Circuitco Minnow/Minnow Board

EIP: 0060:[<c193276c>] EFLAGS: 00010246 CPU: 0
EIP is at efi_enter_virtual_mode+0x244/0x346
EAX: ee012930 EBX: 00000030 ECX: 00000000 EDX: 000000d0
ESI: ffe190b0 EDI: ee012960 EBP: c18adfc4 ESP: c18adf7c
DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
CR0: 8005003b CR2: ffe17000 CR3: 019b4000 CR4: 00000690
DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
DR6: ffff0ff0 DR7: 00000400
Process swapper/0 (pid: 0, ti=c18ac000 task=c18b70e0 task.ti=c18ac000)
Stack:
00000000 80000000 00000000 00040000 00040000 80000000 0000a000 00000000
0002effe 00000000 00000032 ee012000 fffaa000 00000000 ffe190b0 c195b3c0
0008a800 c18ae800 c18adfe4 c19208b8 00000113 ffffffff ffffffff c1920462
Call Trace:
[<c19208b8>] start_kernel+0x288/0x30b
[<c1920462>] ? repair_env_string+0x51/0x51
[<c19202a2>] i386_start_kernel+0x78/0x7d
Code: 03 45 e4 89 c7 f3 a4 89 5d e0 8b 1d fc d7 9b c1 01 5d f0 8b 75 f0
39 35 f0 d7 9b c1 0f 87 82 fe ff ff 83 3d a0 be 91 c1 00 75 02 <0f> 0b
8b 1d fc d7 9b c1 8b 75 e0 0f af f3 8b 3d f8 d7 9b c1 e8

EIP: [<c193276c>] efi_enter_virtual_mode+0x244/0x346 SS:ESP 0068:c18adf7c
---[ end trace f74542647d553318 ]---
Kernel panic - not syncing: Attempted to kill the idle task!


--
Darren Hart
Intel Open Source Technology Center
Yocto Project - Linux Kernel
--
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/