> -----Original Message----- > From: Ard Biesheuvel [mailto:ard.biesheu...@linaro.org] > Sent: Wednesday, November 11, 2015 1:08 AM > To: Vladimir Olovyannikov > Cc: edk2-devel@lists.01.org > Subject: Re: Armv8 64bit: System error booting linux from the UEFI > > On 11 November 2015 at 01:20, Vladimir Olovyannikov > <volov...@broadcom.com> wrote: > > Hello, > > > > I am not sure this is the right forum to ask this question, so I am sorry in > > advance if this is an offtopic here (please point me to the proper one). > > > > I brought up UEFI on the device and am trying to load linux from the SD > card > > (loading from the network using GRUB is a topic for another message). > > > > Linux kernel starts and shortly after that (as soon as local_async is > > enabled which is simple “MSR DAIfclr,4”) there is a kernel crash with > > > > “Bad mode in Error handler detected, code 0xbf000000 -- SError” > > Here is the log: > > > > > > > > The default boot selection will start in 10 seconds > > > > Unrelated note: *please* get rid of the ARM BDS and use the Intel BDS > instead. The ARM BDS violates the UEFI spec, (i.e., you cannot boot > installer images from it without a lot of hassle) and does not allow > you to enable UEFI secure boot. > > Look at the development history of ArmVExpress-FVP-AArch64.dsc for > hints how to do this. Thank you for the hint. I will follow your advice to get rid of the ARM BDS. > > > [1] Linux Kernel from SD Card > > > > - SD(0x0)/HD(1,MBR,0x00000000,0x89,0x3A9F77)/Image > > > > - Arguments: dtb=ns2-svk.dtb initrd=initrd console=ttyS0,115200n8 > > earlycon=uart8250,mmio32,0x66130000,maxcpus=1 > > > > [2] GRUB > > > > - MAC(001019D0B2A4,0x1)/IPv4(10.136.12.136)/grub.efi > > > > - Arguments: > > > > [3] Shell > > > > [4] Boot Manager > > > > Start: 1 > > > > InstallProtocolInterface: CE345171-BA0B-11D2-8E4F-00A0C969723B > BEDB9DA0 > > > > BlockSize : 512 > > > > LastBlock : 3A9FFF > > > > InstallProtocolInterface: 09576E91-6D3F-11D2-8E39-00A0C969723B > BEDB9798 > > > > InstallProtocolInterface: 964E5B21-6459-11D2-8E39-00A0C969723B > BEDB9670 > > > > InstallProtocolInterface: CE345171-BA0B-11D2-8E4F-00A0C969723B > BEDB95A0 > > > > InstallProtocolInterface: 964E5B22-6459-11D2-8E39-00A0C969723B > BEDAF030 > > > > InstallProtocolInterface: 5B1B31A1-9562-11D2-8E3F-00A0C969723B > BE2E6040 > > > > Loading driver at 0x000B8C0C000 EntryPoint=0x000B9297440 > > > > Loading driver at 0x000B8C0C000 EntryPoint=0x000B9297440 > > > > InstallProtocolInterface: BC62157E-3E33-4FEC-9920-2D3B36D750DF > BEDB0718 > > > > EFI stub: Booting Linux Kernel... > > > > ConvertPages: Incompatible memory types > > > > EFI stub: Using DTB from command line > > > > EFI stub: Exiting boot services and installing virtual address map... > > > > MmcHost: ExitBootServicesEvent+ > > > > Marked card brcm-SDIO1 as removed > > > > Resetting Card brcm-SDIO1 > > > > brcm-SDIO1 Card reset done. > > > > MmcHost: ExitBootServicesEvent- > > > > MmcHost: ExitBootServicesEvent+ > > > > Marked card brcm-SDIO0 as removed > > > > Resetting Card brcm-SDIO0 > > > > brcm-SDIO0 Card reset done. > > > > MmcHost: ExitBootServicesEvent- > > > > [ 0.000000] Booting Linux on physical CPU 0x0 > > > > [ 0.000000] Initializing cgroup subsys cpu > > > > [ 0.000000] Linux version 4.2.0+ (volovyan@LBRMN-LNXUB114) (gcc > version > > 4.9.2 20140904 (prerelease) (crosstool-NG linaro-1.13.1-4.9-2014.09 - Linaro > > GCC 4.9-2014.09) ) #1 SMP PREEMPT Tue Oct 13 11:33:09 PDT 2015 > > > > [ 0.000000] CPU: AArch64 Processor [411fd073] revision 3 > > > > [ 0.000000] Detected PIPT I-cache on CPU0 > > > > [ 0.000000] earlycon: Early serial console at MMIO32 0x66130000 (options > > 'maxcpus=1') > > > > [ 0.000000] bootconsole [uart0] enabled > > > > [ 0.000000] Bad mode in Error handler detected, code 0xbf000000 -- SError > > > > [ 0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 4.2.0+ #1 > > > > [ 0.000000] Hardware name: SVK proto (DT) > > > > [ 0.000000] task: ffffffc0007584b0 ti: ffffffc00074c000 task.ti: > > ffffffc00074c000 > > > > [ 0.000000] PC is at setup_arch+0x260/0x5b4 > > > > [ 0.000000] LR is at setup_arch+0x25c/0x5b4 > > > > [ 0.000000] pc : [<ffffffc000709708>] lr : [<ffffffc000709704>] pstate: > > 000002c5 > > > > [ 0.000000] sp : ffffffc00074ff20 > > > > [ 0.000000] x29: ffffffc00074ff20 x28: 0000000000000000 > > > > [ 0.000000] x27: ffffffc000081198 x26: 00000000807cd000 > > > > [ 0.000000] x25: 00000000807ca000 x24: 0000000080000000 > > > > [ 0.000000] x23: 0000000000000000 x22: ffffffc000752000 > > > > [ 0.000000] x21: ffffffc000752610 x20: ffffffbffa800000 > > > > [ 0.000000] x19: ffffffc000080000 x18: 0000000000000000 > > > > [ 0.000000] x17: 00000000000005e3 x16: 0000000000001000 > > > > [ 0.000000] x15: 0000000000001c00 x14: 0ffffffffffffffe > > > > [ 0.000000] x13: 0000000000000020 x12: 0000000000000028 > > > > [ 0.000000] x11: 0000000000000007 x10: 0101010101010101 > > > > [ 0.000000] x9 : fffffffffffffffb x8 : 0000000000000008 > > > > [ 0.000000] x7 : 0000000000000003 x6 : 0000000000800000 > > > > [ 0.000000] x5 : 000000000000005f x4 : 0000000000000000 > > > > [ 0.000000] x3 : 0000000000000000 x2 : 0000000000000065 > > > > [ 0.000000] x1 : 0000000000000000 x0 : 0000000000000001 > > > > [ 0.000000] > > > > [ 0.000000] Internal error: Oops - bad mode: 0 [#1] PREEMPT SMP > > > > [ 0.000000] Modules linked in: > > > > [ 0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 4.2.0+ #1 > > > > [ 0.000000] Hardware name: SVK proto (DT) > > > > [ 0.000000] task: ffffffc0007584b0 ti: ffffffc00074c000 task.ti: > > ffffffc00074c000 > > > > [ 0.000000] PC is at setup_arch+0x260/0x5b4 > > > > [ 0.000000] LR is at setup_arch+0x25c/0x5b4 > > > > [ 0.000000] pc : [<ffffffc000709708>] lr : [<ffffffc000709704>] pstate: > > 000002c5 > > > > [ 0.000000] sp : ffffffc00074ff20 > > > > [ 0.000000] x29: ffffffc00074ff20 x28: 0000000000000000 > > > > [ 0.000000] x27: ffffffc000081198 x26: 00000000807cd000 > > > > [ 0.000000] x25: 00000000807ca000 x24: 0000000080000000 > > > > [ 0.000000] x23: 0000000000000000 x22: ffffffc000752000 > > > > [ 0.000000] x21: ffffffc000752610 x20: ffffffbffa800000 > > > > [ 0.000000] x19: ffffffc000080000 x18: 0000000000000000 > > > > [ 0.000000] x17: 00000000000005e3 x16: 0000000000001000 > > > > [ 0.000000] x15: 0000000000001c00 x14: 0ffffffffffffffe > > > > [ 0.000000] x13: 0000000000000020 x12: 0000000000000028 > > > > [ 0.000000] x11: 0000000000000007 x10: 0101010101010101 > > > > [ 0.000000] x9 : fffffffffffffffb x8 : 0000000000000008 > > > > [ 0.000000] x7 : 0000000000000003 x6 : 0000000000800000 > > > > [ 0.000000] x5 : 000000000000005f x4 : 0000000000000000 > > > > [ 0.000000] x3 : 0000000000000000 x2 : 0000000000000065 > > > > [ 0.000000] x1 : 0000000000000000 x0 : 0000000000000001 > > > > [ 0.000000] > > > > [ 0.000000] Process swapper (pid: 0, stack limit = 0xffffffc00074c020) > > > > [ 0.000000] Stack: (0xffffffc00074ff20 to 0xffffffc000750000) > > > > [ 0.000000] ff20: 0074ffa0 ffffffc0 00707688 ffffffc0 00733fa8 ffffffc0 > > 0079d000 ffffffc0 > > > > [ 0.000000] ff40: 0079d000 ffffffc0 00752000 ffffffc0 00000000 00000000 > > 80000000 00000000 > > > > [ 0.000000] ff60: 807ca000 00000000 807cd000 00000000 00000001 00000000 > > 9f400000 00000000 > > > > [ 0.000000] ff80: ffffffff ffffffff 00000000 00000000 00000080 00000000 > > fefefefe fefefefe > > > > [ 0.000000] ffa0: 00000000 00000000 8053e000 00000000 befe0018 > 00000000 > > 00000e12 00000000 > > > > [ 0.000000] ffc0: 9f400000 00000000 00000000 00000000 00000000 00000000 > > 80000000 00000000 > > > > [ 0.000000] ffe0: 00000000 00000000 00733fa8 ffffffc0 00000000 00000000 > > 00000000 00000000 > > > > [ 0.000000] Call trace: > > > > [ 0.000000] [<ffffffc000709708>] setup_arch+0x260/0x5b4 > > > > [ 0.000000] [<ffffffc000707684>] start_kernel+0xa4/0x3ac > > > > [ 0.000000] Code: 91316000 94001ac2 97fff7a3 d50344ff (9400069a) > > > > [ 0.000000] ---[ end trace cb88537fdc8fa200 ]--- > > > > [ 0.000000] Kernel panic - not syncing: Attempted to kill the idle task! > > > > [ 0.000000] ---[ end Kernel panic - not syncing: Attempted to kill the > > idle task! > > > > > > > > Searching for this issue on the Internet yielded several discussions, but it > > looks like they do not apply to my case. > > > > Thus, I have tried to set the EFI_RT_VIRTUAL_BASE to some high value to > > catch if anything from the UEFI tries to dereference memory while > mapping is > > being done, > > to no avail – no errors. > > > > If anything like that is going on, I would expect the fault to be > reported synchronously. > > > > > > > Has anybody faced this issue? Or have any idea on how to catch where it > > happens? > > > > The problem here is that obviously something happens way BEFORE aborts > are > > enabled, but inspecting GIC distributor etc. does not show any trace of an > > abort. > > > > This is a firmware problem, not a kernel problem. The kernel is > entered with an pending asynchronous external abort, which may have > several causes. You need to instrument the firmware (i.e., unmask the > aborts earlier and run in the debugger) to get a feeling for what is > going on there. It could be something like speculative accesses to > unassigned physical ranges that are mapped cacheable inadvertently, > but it could be lots of other things as well.
Thank you for your help Ard. Back to investigation :) Vladimir _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel