Date: Tue, 30 Jun 2015 20:52:36 +0200 (CEST) From: "Jakob Alvermark" <jakob@alvermark.net> To: freebsd-current@freebsd.org Subject: Re: UEFI boot fail on higher resolutions (Re: Acer E3-112 and UEFI) Message-ID: <24273.85.229.92.85.1435690356.squirrel@webmail.alvermark.net> In-Reply-To: <E86A0514-6C11-4592-BB62-0F992727AFDC@alvermark.net> References: <20876.213.113.68.53.1419950410.squirrel@webmail.alvermark.net> <54A2CC2D.3040105@freebsd.org> <42818.213.113.68.53.1420039470.squirrel@webmail.alvermark.net> <E86A0514-6C11-4592-BB62-0F992727AFDC@alvermark.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, February 4, 2015 15:04, Jakob Alvermark wrote: > > On 31 dec 2014, at 16:24, Jakob Alvermark wrote: > > >> On Tue, December 30, 2014 17:00, Nathan Whitehorn wrote: >> >>> >> >>> On 12/30/14 06:40, Jakob Alvermark wrote: >>> >>> >>>> Hi, >>>> >>>> >>>> >>>> Have been playing with this machine for a while now. >>>> It is a quad core Pentium N3540 (ValleyView/Bay Trail), 8 GB RAM. It >>>> came with a Broadcom WiFi card which I swapped for an Intel which >>>> is supported by FreeBSD. Also swapped the hard drive for an SSD. >>>> >>>> When first trying to boot FreeBSD with UEFI it would not boot. >>>> It stops after the loader is trying to start the kernel. >>>> My workaround now is using refind, http://www.rodsbooks.com/refind/ >>>> to set the screen resolution to 800x600. (Native is 1366x768) Only >>>> then will it boot using UEFI. I tried setting it to 1024x768, then >>>> it crashes. If it helps I can get the backtrace. >>> >>> [Not sure what's going on here] >>> >>> > > > A follow up on this: > > > I tried this on my desktop machine (AMD FX-8350, Radeon HD 5450) to see > if it has the issue, and it has! I went on to try it on my desktop machine > at work (Core i3-4130, Radeon HD 4350) and it boots! > > On the Acer, resolution set to 1024x768: > > >>> FreeBSD EFI boot block >>> > Loader path: /boot/loader.efi > Consoles: EFI console > Image base: 0x7502f000 > EFI version: 2.40 > EFI Firmware: INSYDE Corp. (rev 21522.39) > > > --- > Start @ 0xffffffff802e1000 ... > EFI framebuffer information: > addr, size 0x80000000, 0x300000 dimensions 1024 x 768 stride > 1024 > masks 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000 > > --- > > > kernel trap12 with interrupts disabled > > > Fatal trap 12: page fault while in kernel mode > cpuid = 0; apic id = 00 fault virtual address = 0x13 fault code > = supervisor read data, page not present > instruction pointer = 0x20:0xffffffff80a20834 stack pointer > = 0x28:0xffffffff81604170 > frame pointer = 0x28:0xffffffff81604290 code segment > = base 0x0, limit 0xfffff, type 0x1b > = DPL 0, pres 1, long 1, def32 0, gran 1 > processor eflags = resume, IOPL = 0 current process = 0 > () > [ thread pid 0 tid 0] > Stopped at kvprintf+0xd4: movzbl (%r14),%eax > > > .... > > > > > On the home desktop resolution 1024x768: > > >>> FreeBSD EFI boot block >>> > Loader path: /boot/loader.efi > Consoles: EFI console > Image base: 0xb08ac000 > EFI version: 2.31 > EFI Firmware: American Megatrends (rev 4.653) > > > --- > Start @ 0xffffffff802e1000 ... > EFI framebuffer information: > addr, size 0xc0000000, 0x300000 dimensions 1024 x 768 stride > 1024 > masks 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000 > > --- > kernel trap12 with interrupts disabled > > > Fatal trap 12: page fault while in kernel mode > cpuid = 0; apic id = 00 fault virtual address = 0x13 fault code > = supervisor read data, page not present > instruction pointer = 0x20:0xffffffff80a20654 stack pointer > = 0x28:0xffffffff81603d70 > frame pointer = 0x28:0xffffffff81603e90 code segment > = base 0x0, limit 0xfffff, type 0x1b > = DPL 0, pres 1, long 1, def32 0, gran 1 > processor eflags = resume, IOPL = 0 current process = 0 > () > [ thread pid 0 tid 0] > Stopped at kvprintf+0xd4: movzbl (%r14),%eax > > > ---- > > > On the work desktop: > > >>> FreeBSD EFI boot block >>> > Loader path: /boot/loader.efi > Consoles: EFI console > Image base: 0xbb7aa000 > EFI version: 2.31 > EFI Firmware: American Megatrends (rev 4.654) > > > --- > Start @ 0xffffffff802e1000 ... > EFI framebuffer information: > addr, size 0xe0000000, 0x300000 dimensions 1024 x 768 stride > 1024 > masks 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000 > > And then it boots normally. > > > > Does anyone have any clues on what's going on here? > > > (This all typed manually from screenshots taken with my phone, there > might be typos.) Another update! As I found out the EFI loader has the capability to change screen modes I dumped refind and started playing with this again. "mode 5" gives me 1024x768 and a panic: --- kernel trap 12 with interrupts disabled Fatal trap 12: page fault while in kernel mode cpuid = 0; apic id = 00 fault virtual address = 0x1f2d0ec fault code = supervisor read data, page not present instruction pointer = 0x20:0xffffffff8030003d stack pointer = 0x28:0xffffffff81616f70 frame pointer = 0x28:0x0 code segment = base 0x0, limit 0xfffff, type 0x1b = DPL 0, pres 1, long 1, def32 0, gran 1 processor eflags = resume, IOPL = 0 current process = 0 () --- What struck me then was this line: instruction pointer = 0x20:0xffffffff8030003d and the fact that: EFI framebuffer information: addr, size 0x80000000, 0x300000 Coincidence? Maybe not. In sys/dev/vt/hw/efifb/efifb.c I changed this line: info->fb_vbase = PHYS_TO_DMAP(efifb->fb_addr); Into this hack: info->fb_vbase = PHYS_TO_DMAP(0x90000000); Recompile kernel and now it boots at native resolution (1366x768)! Any thoughts on this? Thanks, Jakob
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?24273.85.229.92.85.1435690356.squirrel>