Skip site navigation (1)Skip section navigation (2)
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>