Thread (6 messages) 6 messages, 2 authors, 2013-08-16

RE: conflict of hyperv_fb and the generic video driver?

From: Haiyang Zhang <haiyangz@microsoft.com>
Date: 2013-08-16 20:27:41

-----Original Message-----
From: David Herrmann [mailto:dh.herrmann@gmail.com]
Sent: Friday, August 16, 2013 3:11 PM
To: Haiyang Zhang
Cc: linux-fbdev@vger.kernel.org; driverdev-devel@linuxdriverproject.org;
Tomi Valkeinen; Jean-Christophe Plagniol-Villard; akpm@linux-
foundation.org; KY Srinivasan
Subject: Re: conflict of hyperv_fb and the generic video driver?

Hi

(hint: your mail header seems to drop Reference-to/Reply-to headers
and breaks thread-info)

On Fri, Aug 16, 2013 at 8:45 PM, Haiyang Zhang [off-list ref]
wrote:
quoted
quoted
-----Original Message-----
From: David Herrmann [mailto:dh.herrmann@gmail.com]
Sent: Friday, August 16, 2013 9:46 AM
To: Haiyang Zhang
Cc: linux-fbdev@vger.kernel.org; driverdev-devel@linuxdriverproject.org;
Tomi Valkeinen; Jean-Christophe Plagniol-Villard; akpm@linux-
foundation.org; KY Srinivasan
Subject: Re: source code file for the generic vga driver?

Hi

On Mon, Aug 5, 2013 at 9:12 PM, Haiyang Zhang
[off-list ref]
quoted
quoted
wrote:
quoted
Hi folks,

I'm working on an issue of HyperV synthetic frame buffer driver, which
seems to have a conflict with the generic vga driver (not the vesa
driver). I hope to read and trace into the source code for the generic vga
driver...
quoted
Can anyone point me to the source code file for the generic vga driver in
the kernel tree?

Everything lives in ./drivers/video/. The drivers you're probably interested
in
quoted
quoted
are "vesafb.c" or "vga16fb.c". There is also the "vgacon" driver
in ./drivers/video/console/vgacon.c. I am not sure which one you are
talking
quoted
quoted
about.

You might also want to have a look at the x86 sysfb infrastructure which
isn't
quoted
quoted
merged, yet:
http://git.kernel.org/cgit/linux/kernel/git/tip/tip.git/log/?h=x86/fb
It provides proper platform-devices so drivers no longer conflict on the
vga/vesa/efi.. framebuffer resources. It's x86 only as all the relevant
drivers
quoted
quoted
only work on x86.

If you give some more information on what you are trying to do, I can
point
quoted
quoted
you to the relevant resources. My guess is that you want to have a look at
remove_conflicting_framebuffers() in ./drivers/video/fbmem.c.
Thank you for the detailed reply!

I'm looking at a problem of Hyper-V synthetic fb driver (hyperv_fb) which
seems
quoted
to have conflict with some kind of generic video driver. I'm not sure which
driver
quoted
is this.

On Suse, the vesafb is removed automatically by
remove_conflicting_framebuffers()
quoted
when hyperv_fb is loaded. We don't have any problem here.

On some other Distros, like RHEL, CentOS, Ubuntu, the generic driver
seems not
quoted
to be vesafb -- I can't see any /dev/fb* there. And, the generic video driver
seems not be
quoted
removed when hyperv_fb is loaded. This generic video driver is not vesafb
or vga16fb or
quoted
vgacon, because it supports x-window GUI, and it's still here after I un-
configured vesafb
quoted
and vga16fb.

Could point out what is the generic video driver used by RHEL, Ubuntu by
default? And,
quoted
how to let it exit automatically when our FB driver (hyperv_fb) is loaded?
I have no idea what RHEL or Ubuntu use, sorry. But your description
sounds odd. The kernel has 3 different places that could use VGA
resources:
 - fbdev drivers (/dev/fbX or /sys/class/graphics)
 - DRM drivers (/dev/dri/cardX or /sys/class/drm)
 - vgacon
Could you check whether these directories are empty?
(/sys/class/graphics/ and /sys/class/drm/ on a running machine)

If these are empty, this doesn't look like a kernel thing. Are you
sure it's a kernel driver that accesses your VGA resources? The
xserver used to have some pretty huge vga/vesa/.. user-space drivers.

Could you tell me whether the linux-console actually works? That is,
do you get some console output if xserver is not running?
To find out the default driver, I manually removed my hyperv_fb driver.
The vesafb is unconfigured:
# CONFIG_FB_BOOT_VESA_SUPPORT is not set
# CONFIG_FB_UVESA is not set
# CONFIG_FB_VESA is not set

But I saw VESA VBE in the x log. Seems it's the default driver:
"/var/log/Xorg.0.log":
[    12.340] (II) VESA(0): Primary V_BIOS segment is: 0xc000
[    12.341] (II) VESA(0): VESA BIOS detected
[    12.341] (II) VESA(0): VESA VBE Version 2.0
[    12.341] (II) VESA(0): VESA VBE Total Mem: 4096 kB
[    12.341] (II) VESA(0): VESA VBE OEM: IBM SVGA BIOS, (C) 1993 International Business Machines
[    12.341] (II) VESA(0): VESA VBE OEM Software Rev: 0.0
[    12.365] (II) VESA(0): Creating default Display subsection in Screen section
        "Default Screen Section" for depth/fbbpp 24/32
[    12.365] (=) VESA(0): Depth 24, (--) framebuffer bpp 32
[    12.365] (=) VESA(0): RGB weight 888
[    12.365] (=) VESA(0): Default visual is TrueColor
[    12.365] (=) VESA(0): Using gamma correction (1.0, 1.0, 1.0)

There is no  /dev/fb*,  /dev/dri/, /sys/class/drm
I see /sys/class/graphics/fbcon is here.  But console output is not working.

Seems that the VESA VBE is causing conflict with my driver... Is there
any way to disable VESA VBE driver?

Thanks,
- Haiyang
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help