qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 2/2] hw/vfio/display: add ramfb support


From: Alex Williamson
Subject: Re: [Qemu-devel] [PATCH v2 2/2] hw/vfio/display: add ramfb support
Date: Thu, 11 Oct 2018 15:19:41 -0600

On Mon, 17 Sep 2018 08:17:29 +0200
Gerd Hoffmann <address@hidden> wrote:

> So we have a boot display when using a vgpu as primary display.
> 
> ramfb depends on a fw_cfg file.  fw_cfg files can not be added and
> removed at runtime, therefore a ramfb-enabled vfio device can't be
> hotplugged.
> 
> Add a nohotplug variant of the vfio-pci device (as child class).  Add
> the ramfb property to the nohotplug variant only.  So to enable the vgpu
> display with boot support use this:
> 
>   -device vfio-pci-nohotplug,display=on,ramfb=on,sysfsdev=...
> 
> Signed-off-by: Gerd Hoffmann <address@hidden>
> ---
>  hw/vfio/pci.h                 |  1 +
>  include/hw/vfio/vfio-common.h |  2 ++
>  hw/vfio/display.c             | 12 ++++++++++++
>  hw/vfio/pci.c                 | 25 +++++++++++++++++++++++++
>  4 files changed, 40 insertions(+)
> 
> diff --git a/hw/vfio/pci.h b/hw/vfio/pci.h
> index 52b065421a..904e286586 100644
> --- a/hw/vfio/pci.h
> +++ b/hw/vfio/pci.h
> @@ -149,6 +149,7 @@ typedef struct VFIOPCIDevice {
>  #define VFIO_FEATURE_ENABLE_IGD_OPREGION \
>                                  (1 << VFIO_FEATURE_ENABLE_IGD_OPREGION_BIT)
>      OnOffAuto display;
> +    bool enable_ramfb;
>      int32_t bootindex;
>      uint32_t igd_gms;
>      OffAutoPCIBAR msix_relo;

Hi Gerd,

One tiny nit here, we can move this new bool down in the struct with
the rest of the bools for better alignment.  I can change that on
commit.  However, I'm not having luck getting ramfb to work; the
display is only getting initialized once the guest driver loads.  This
is a 440FX/SeaBIOS VM, it looks like you've already updated bios.bin in
qemu.git with ramfb support, but I also see the same results with
bios.bin from your seabios.git package.  I'm using libvirt to launch
the guest with a wrapper around qemu-system-x86_64 to replace vfio-pci
with vfio-pci-nohotplug, resulting in a command line including:

-bios /usr/share/seabios.git/bios.bin \
-spice 
port=0,disable-ticketing,gl=on,rendernode=/dev/dri/by-path/pci-0000:00:02.0-render,seamless-migration=on
 \
-device 
vfio-pci-nohotplug,id=hostdev0,sysfsdev=...,display=on,bus=pci.0,addr=0x9 \
-set device.hostdev0.x-igd-opregion=on \
-set device.hostdev0.ramfb=on \

Relevant XML blobs:

    <graphics type='spice'>
      <listen type='none'/>
      <gl enable='yes' rendernode='/dev/dri/by-path/pci-0000:00:02.0-render'/>
    </graphics>
    <video>
      <model type='none'/>
    </video>
    <hostdev mode='subsystem' type='mdev' managed='no' model='vfio-pci' 
display='on'>
      <source>
        <address uuid='cd4fa69f-c24c-476f-a61d-abca705e2a13'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x09' 
function='0x0'/>
    </hostdev>
...
  <qemu:commandline>
    <qemu:arg value='-set'/>
    <qemu:arg value='device.hostdev0.x-igd-opregion=on'/>
    <qemu:arg value='-set'/>
    <qemu:arg value='device.hostdev0.ramfb=on'/>
  </qemu:commandline>

This is a Windows 10 VM, but as I understand this ramfb support, I
think I'm still supposed to see SeaBIOS boot messages and perhaps even
the Windows boot animation before the guest driver takes over, is that
correct?  What am I missing?  Thanks,

Alex



reply via email to

[Prev in Thread] Current Thread [Next in Thread]