Date: Thu, 30 Aug 2018 10:56:06 +0200 From: Rainer Hurling <rhurlin@gwdg.de> To: Kyle Evans <kevans@freebsd.org>, <yuripv@yuripv.net> Cc: Konstantin Belousov <kostikbel@gmail.com>, FreeBSD Current <freebsd-current@freebsd.org> Subject: Re: r336921 broke booting on MBP 2017, EFIRT related Message-ID: <7162d397-43df-01bc-f97d-0dae6a8f6926@gwdg.de> In-Reply-To: <CACNAnaFvSGLs9XwQYZ%2BGVfmXwDD-Bh%2BgVvnkmOipKUHNOGS2DA@mail.gmail.com> References: <499f05f4-4fab-9b31-5d37-83ecb554013c@yuripv.net> <20180829102727.GD2340@kib.kiev.ua> <b767f852-6e1a-1c02-11eb-5548aea26afe@yuripv.net> <a8611843-8fbc-c5d2-2246-1853fa4ca1b7@yuripv.net> <CACNAnaFvSGLs9XwQYZ%2BGVfmXwDD-Bh%2BgVvnkmOipKUHNOGS2DA@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Am 29.08.18 um 16:12 schrieb Kyle Evans: > On Wed, Aug 29, 2018 at 6:53 AM Yuri Pankov <yuripv@yuripv.net> wrote: >> >> Yuri Pankov wrote: >>> Konstantin Belousov wrote: >>>> On Wed, Aug 29, 2018 at 12:37:52PM +0300, Yuri Pankov wrote: >>>>> Hi, >>>>> >>>>> I've noticed that all recent snapshots (ALPHA3, ALPHA2, ALPHA1, >>>>> 20180802) fail to boot on MBP 2017: >>>>> >>>>> kbd0 at kbdmux0 >>>>> netmap: loaded module >>>>> nexus0 >>>>> >>>>> Fatal trap 12: page fault while in kernel mode >>>>> cpuid = 2: apic id = 02 >>>>> fault virtual address = 0x74c64a50 >>>>> fault code = supervisor read data, page not present >>>>> instruction pointer = 0x20: 0x7abece31 >>>>> stack pointer = 0x28: 0xffffffff82b2f7c0 >>>>> frame pointer = 0x28: 0xffffffff82b2f810 >>>>> code segment = base 0x0, limit 0xfffff, type 0x1b >>>>> = DPL 0, pres 1, long 1, def32 0, gran 1 >>>>> processor eflags = interrupt enabled, resume, IOPL = 0 >>>>> current process = 0 (swapper) >>>>> [ thread pid 0 tid 100000 ] >>>>> Stopped at 0x7abece31: calll *0x18(%rax) >>>>> db> >>>>> >>>>> Sadly, there's no support for internal keyboard yet (it's connected via >>>>> SPI), and external USB one stops working. >>>>> >>>>> A (not so quick) bisect is pointing at r336921, which enabled EFIRT. >>>>> >>>>> Some questions here: >>>>> - is this something that can/should be fixed? >>>>> - can we print some "enabling EFIRT" message to the console to make >>>>> guesses about the problem source a bit easier? >>>> >>>> It is not in 'enabling'. Looking at the faulting VA, I believe that >>>> it occurs inside the BIOS code. >>>> >>>> Disable efirt by removing the kernel option, then try to load the module >>>> at runtime. Does it still fault ? Also, get the efi mem map for the >>>> machine and look at which region the faulting address and the faulting >>>> instruction belong. >>> >>> kldload'ing the efirt module gets the same fault. Several top lines of >>> backtrace: >>> >>> kernphys() at 0x7abece31 >>> efi_get_time() at efi_get_time+0xd9 >>> efirtc_probe() at efirtc_probe+0x17 >> >> For the efi mem map, if I'm understanding it correctly, there's the >> following: >> >> ... >> BootServicesData 00007421d000 000000000000 00000a8b UC WC WT WB >> ... >> RuntimeServicesCode 00007ab9f000 000000000000 00000070 UC WC WT WB >> ... >> > > Hi, > > I guess this patch might do it: > https://people.freebsd.org/~kevans/efi-bootmap.diff > > Linux commit messages depict a tale in which they used to also only > map RUNTIME entries, but they were effectively forced to back down on > that because of buggy firmware that does exactly what you've described > and they later reintroduced the restrictive mapping for i386-only > where they'd not found such bugs. > > Thanks, > > Kyle Evans Hi Kyle, After Yuri had no success with the patches of kib, I tried your patch on a DELL Latitude E6520 with BIOS version A21. Kernel config file contains OPTIONS EFIRT, efi.rt.disabled is commented out in /boot/loader.conf. Unfortunately, it also does not work. My trap message is this: [..snip..] netmap: loaded module kbd1 at kbdmux0 nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms 390.77 Tue Jul. 10 21:54:30 PDT 2018 nexus0 Fatal trap 12: page fault while in kernel mode cpuid = 0: apic id = 00 fault virtual address = 0xce09ee60 fault code = supervisor read data, page not present instruction pointer = 0x20: 0xcf58334d stack pointer = 0x28: 0xffffffff83252920 frame pointer = 0x28: 0xffffffff832529a0 code segment = base 0x0, limit 0xfffff, type 0x1b = DPL 0, pres 1, long 1, def32 0, gran 1 processor eflags = interrupt enabled, resume, IOPL = 0 current process = 0 (swapper) trap number = 12 panic: page fault cpuid = 0 time = 1 Uptime: 1s Automatic reboot in 15 seconds ... Regards, Rainer Hurling
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7162d397-43df-01bc-f97d-0dae6a8f6926>