This patch adds a pci stub driver to hyper-fb. The hyperv framebuffer
driver will bind to the pci device then, so linux kernel and userspace
know there is a proper kernel driver for the device active. lspci shows
this for example:
[root@dhcp231 ~]# lspci -vs8
00:08.0 VGA compatible controller: Microsoft Corporation Hyper-V virtual
VGA (prog-if 00 [VGA controller])
Flags: bus master, fast devsel, latency 0, IRQ 11
Memory at f8000000 (32-bit, non-prefetchable) [sizedM]
Expansion ROM at <unassigned> [disabled]
Kernel driver in use: hyperv_fb
Another effect is that the xorg vesa driver will not attach to the
device and thus the Xorg server will automatically use the fbdev
driver instead.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
drivers/video/hyperv_fb.c | 40 +++++++++++++++++++++++++++++++++++++++-
1 file changed, 39 insertions(+), 1 deletion(-)
@@ -795,12 +795,21 @@ static int hvfb_remove(struct hv_device *hdev)}+staticDEFINE_PCI_DEVICE_TABLE(pci_stub_id_table)={+{+.vendor=PCI_VENDOR_ID_MICROSOFT,+.device=PCI_DEVICE_ID_HYPERV_VIDEO,+},+{/* end of list */}+};+staticconststructhv_vmbus_device_idid_table[]={/* Synthetic Video Device GUID */{HV_SYNTHVID_GUID},{}};+MODULE_DEVICE_TABLE(pci,pci_stub_id_table);MODULE_DEVICE_TABLE(vmbus,id_table);staticstructhv_driverhvfb_drv={
@@ -575,6 +575,10 @@ static int hvfb_setcolreg(unsigned regno, unsigned red, unsigned green,return0;}+staticinthvfb_blank(intblank,structfb_info*info)+{+return1;/* get fb_blank to set the colormap to all black */+}staticstructfb_opshvfb_ops={.owner=THIS_MODULE,
-----Original Message-----
From: linux-fbdev-owner@vger.kernel.org [mailto:linux-fbdev-
owner@vger.kernel.org] On Behalf Of Gerd Hoffmann
Sent: Wednesday, October 2, 2013 7:55 AM
Cc: Gerd Hoffmann; KY Srinivasan; Haiyang Zhang; Jean-Christophe Plagniol-
Villard; Tomi Valkeinen; open list:Hyper-V CORE AND...; open
list:FRAMEBUFFER LAYER; open list
Subject: [PATCH 2/2] hyperv-fb: add blanking support
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
From: KY Srinivasan <kys@microsoft.com> Date: 2013-10-02 14:29:34
quoted hunk
-----Original Message-----
From: Gerd Hoffmann [mailto:kraxel@redhat.com]
Sent: Wednesday, October 02, 2013 4:55 AM
Cc: Gerd Hoffmann; KY Srinivasan; Haiyang Zhang; Jean-Christophe Plagniol-
Villard; Tomi Valkeinen; open list:Hyper-V CORE AND...; open list:FRAMEBUFFER
LAYER; open list
Subject: [PATCH 1/2] hyperv-fb: add pci stub
This patch adds a pci stub driver to hyper-fb. The hyperv framebuffer
driver will bind to the pci device then, so linux kernel and userspace
know there is a proper kernel driver for the device active. lspci shows
this for example:
[root@dhcp231 ~]# lspci -vs8
00:08.0 VGA compatible controller: Microsoft Corporation Hyper-V virtual
VGA (prog-if 00 [VGA controller])
Flags: bus master, fast devsel, latency 0, IRQ 11
Memory at f8000000 (32-bit, non-prefetchable) [sizedM]
Expansion ROM at <unassigned> [disabled]
Kernel driver in use: hyperv_fb
Another effect is that the xorg vesa driver will not attach to the
device and thus the Xorg server will automatically use the fbdev
driver instead.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
drivers/video/hyperv_fb.c | 40
+++++++++++++++++++++++++++++++++++++++-
1 file changed, 39 insertions(+), 1 deletion(-)
@@ -795,12 +795,21 @@ static int hvfb_remove(struct hv_device *hdev)}+staticDEFINE_PCI_DEVICE_TABLE(pci_stub_id_table)={+{+.vendor=PCI_VENDOR_ID_MICROSOFT,+.device=PCI_DEVICE_ID_HYPERV_VIDEO,+},+{/* end of list */}+};+staticconststructhv_vmbus_device_idid_table[]={/* Synthetic Video Device GUID */{HV_SYNTHVID_GUID},{}};+MODULE_DEVICE_TABLE(pci,pci_stub_id_table);MODULE_DEVICE_TABLE(vmbus,id_table);staticstructhv_driverhvfb_drv={
Gerd,
Thanks for doing this. This certainly will address some of the issues that are reported. I do have a question though - how would this work if we don't have PCI bus in the guest.
Regards,
K. Y
On Mi, 2013-10-02 at 14:29 +0000, KY Srinivasan wrote:
quoted
This patch adds a pci stub driver to hyper-fb. The hyperv framebuffer
driver will bind to the pci device then, so linux kernel and userspace
know there is a proper kernel driver for the device active. lspci shows
this for example:
Gerd,
Thanks for doing this. This certainly will address some of the issues that are reported. I do have a question though - how would this work if we don't have PCI bus in the guest.
The hyperv framebuffer driver wouldn't work in the first place then as
it looks up the framebuffer address in pci config space (see hvfb_getmem
function).
cheers,
Gerd
On Mo, 2013-10-07 at 17:12 +0000, KY Srinivasan wrote:
quoted
-----Original Message-----
From: Gerd Hoffmann [mailto:kraxel@redhat.com]
Sent: Sunday, October 06, 2013 11:51 PM
To: KY Srinivasan
Cc: Haiyang Zhang; Jean-Christophe Plagniol-Villard; Tomi Valkeinen; open
list:Hyper-V CORE AND...; open list:FRAMEBUFFER LAYER; open list
Subject: Re: [PATCH 1/2] hyperv-fb: add pci stub
On Mi, 2013-10-02 at 14:29 +0000, KY Srinivasan wrote:
quoted
quoted
This patch adds a pci stub driver to hyper-fb. The hyperv framebuffer
driver will bind to the pci device then, so linux kernel and userspace
know there is a proper kernel driver for the device active. lspci shows
this for example:
quoted
Gerd,
Thanks for doing this. This certainly will address some of the issues that are
reported. I do have a question though - how would this work if we don't have PCI
bus in the guest.
The hyperv framebuffer driver wouldn't work in the first place then as
it looks up the framebuffer address in pci config space (see hvfb_getmem
function).
We are going to fix this as we move this code to run on our UEFI firmware.
Hmm, windows server 2012 seems to have no option to enable uefi. So I
guess this is still in development? How this is going to look like?
Probably you are going for pure uefi firmware, without csm, to be able
to leave all the legacy bios stuff behind in uefi mode. Therefore no
vesa bios support. efi drivers for vmbus network/storage/display/input
in the firmware. No legacy ide/vga pci devices. Correct?
The linux kernel will come up with efifb then, switching over to
hyperv-fb once the driver is loaded. The hyperv-fb pci stub driver will
not bind to the hyperv vga pci device if it isn't present in the guest.
hyperv-fb will load just fine nevertheless (once hvfb_getmem is fixed to
not depend on the pci device config space). The pci stub added by the
patch and the vmbus driver in hyperv-fb are completely independent.
cheers,
Gerd
-----Original Message-----
From: linux-fbdev-owner@vger.kernel.org [mailto:linux-fbdev-
owner@vger.kernel.org] On Behalf Of Gerd Hoffmann
Sent: Wednesday, October 2, 2013 7:55 AM
Cc: Gerd Hoffmann; KY Srinivasan; Haiyang Zhang; Jean-Christophe Plagniol-
Villard; Tomi Valkeinen; open list:Hyper-V CORE AND...; open
list:FRAMEBUFFER LAYER; open list
Subject: [PATCH 1/2] hyperv-fb: add pci stub
This patch adds a pci stub driver to hyper-fb. The hyperv framebuffer driver
will bind to the pci device then, so linux kernel and userspace know there is a
proper kernel driver for the device active. lspci shows this for example:
[root@dhcp231 ~]# lspci -vs8
00:08.0 VGA compatible controller: Microsoft Corporation Hyper-V virtual
VGA (prog-if 00 [VGA controller])
Flags: bus master, fast devsel, latency 0, IRQ 11
Memory at f8000000 (32-bit, non-prefetchable) [sizedM]
Expansion ROM at <unassigned> [disabled]
Kernel driver in use: hyperv_fb
Another effect is that the xorg vesa driver will not attach to the device and
thus the Xorg server will automatically use the fbdev driver instead.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Acked-by: Haiyang Zhang <haiyangz@microsoft.com>
Thank you for fixing this!
- Haiyang
From: Tomi Valkeinen <hidden> Date: 2013-10-09 09:53:32
On 02/10/13 14:55, Gerd Hoffmann wrote:
This patch adds a pci stub driver to hyper-fb. The hyperv framebuffer
driver will bind to the pci device then, so linux kernel and userspace
know there is a proper kernel driver for the device active. lspci shows
this for example:
[root@dhcp231 ~]# lspci -vs8
00:08.0 VGA compatible controller: Microsoft Corporation Hyper-V virtual
VGA (prog-if 00 [VGA controller])
Flags: bus master, fast devsel, latency 0, IRQ 11
Memory at f8000000 (32-bit, non-prefetchable) [size=64M]
Expansion ROM at <unassigned> [disabled]
Kernel driver in use: hyperv_fb
Another effect is that the xorg vesa driver will not attach to the
device and thus the Xorg server will automatically use the fbdev
driver instead.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
drivers/video/hyperv_fb.c | 40 +++++++++++++++++++++++++++++++++++++++-
1 file changed, 39 insertions(+), 1 deletion(-)