Date: Sun, 27 Apr 2014 12:16:36 +0300 From: Aleksandr Rybalko <ray@freebsd.org> To: Nathan Whitehorn <nwhitehorn@FreeBSD.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r264997 - head/sys/dev/vt/hw/vga Message-ID: <20140427121636.b93682e4.ray@freebsd.org> In-Reply-To: <201404270219.s3R2Jr60076569@svn.freebsd.org> References: <201404270219.s3R2Jr60076569@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 27 Apr 2014 02:19:53 +0000 (UTC) Nathan Whitehorn <nwhitehorn@FreeBSD.org> wrote: > Author: nwhitehorn > Date: Sun Apr 27 02:19:53 2014 > New Revision: 264997 > URL: http://svnweb.freebsd.org/changeset/base/264997 > > Log: > Disable vga if EFI framebuffer present. vt(9) should handle this > internally based on efifb's higher priority, but it doesn't, and this > at least lets us build a kernel that boots on both BIOS and EFI > systems for now. > > Modified: > head/sys/dev/vt/hw/vga/vga.c > > Modified: head/sys/dev/vt/hw/vga/vga.c > ============================================================================== > --- head/sys/dev/vt/hw/vga/vga.c Sun Apr 27 01:15:10 > 2014 (r264996) +++ head/sys/dev/vt/hw/vga/vga.c Sun Apr > 27 02:19:53 2014 (r264997) @@ -45,8 +45,10 @@ __FBSDID > ("$FreeBSD$"); > #if defined(__amd64__) || defined(__i386__) > #include <vm/vm.h> > #include <vm/pmap.h> > +#include <machine/metadata.h> > #include <machine/pmap.h> > #include <machine/vmparam.h> > +#include <sys/linker.h> > #endif /* __amd64__ || __i386__ */ > > struct vga_softc { > @@ -637,6 +639,19 @@ vga_init(struct vt_device *vd) > int textmode = 0; > > #if defined(__amd64__) || defined(__i386__) > + /* Disable if EFI framebuffer present. Should be handled by > priority > + * logic in vt(9), but this will do for now. XXX */ > + > + caddr_t kmdp, efifb; > + kmdp = preload_search_by_type("elf kernel"); > + if (kmdp == NULL) > + kmdp = preload_search_by_type("elf64 kernel"); > + efifb = preload_search_info(kmdp, MODINFO_METADATA | > MODINFOMD_EFI_FB); > + if (efifb != NULL) > + return (CN_DEAD); > +#endif > + > +#if defined(__amd64__) || defined(__i386__) > sc->vga_fb_tag = X86_BUS_SPACE_MEM; > sc->vga_fb_handle = KERNBASE + VGA_MEM_BASE; > sc->vga_reg_tag = X86_BUS_SPACE_IO; > I have patch for that, but it require testing: http://people.freebsd.org/~ray/newcons/vt_early_select.patch WBW -- Aleksandr Rybalko <ray@freebsd.org>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140427121636.b93682e4.ray>