* Re: [Qemu-devel] [PATCH v2 2/2] hw/vfio/display: add ramfb support
[not found] ` <20180917061729.22407-3-kraxel@redhat.com>
@ 2018-10-11 21:19 ` Alex Williamson
2018-10-12 8:43 ` Gerd Hoffmann
0 siblings, 1 reply; 3+ messages in thread
From: Alex Williamson @ 2018-10-11 21:19 UTC (permalink / raw)
To: Gerd Hoffmann; +Cc: qemu-devel, Paolo Bonzini
On Mon, 17 Sep 2018 08:17:29 +0200
Gerd Hoffmann <kraxel@redhat.com> 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 <kraxel@redhat.com>
> ---
> 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
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] [PATCH v2 2/2] hw/vfio/display: add ramfb support
2018-10-11 21:19 ` [Qemu-devel] [PATCH v2 2/2] hw/vfio/display: add ramfb support Alex Williamson
@ 2018-10-12 8:43 ` Gerd Hoffmann
2018-10-12 13:05 ` Alex Williamson
0 siblings, 1 reply; 3+ messages in thread
From: Gerd Hoffmann @ 2018-10-12 8:43 UTC (permalink / raw)
To: Alex Williamson; +Cc: qemu-devel, Paolo Bonzini
Hi,
> > 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.
I've grouped it with the display option because it is display related
too, but if you prefer to group the bools instead this is fine with me.
> 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,
Yes, seabios (and vgabios) bundled with 3.0 (and master branch) should work fine.
There is a standalone device you can use for testing (-vga none -device
ramfb), to see whenever the firmware side of things works correctly.
OVMF has ramfb support too btw (merged a few months back).
> -device vfio-pci-nohotplug,id=hostdev0,sysfsdev=...,display=on,bus=pci.0,addr=0x9 \
> <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>
Hmm, that actually uses vfio-pci-nohotplug?
But when ramfb=on doesn't throw an error, then yes, appearently.
> <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>
I have this (additionally):
<qemu:arg value='-set'/>
<qemu:arg value='device.hostdev0.driver=vfio-pci-nohotplug'/>
> 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?
Yes, you should see both.
cheers,
Gerd
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] [PATCH v2 2/2] hw/vfio/display: add ramfb support
2018-10-12 8:43 ` Gerd Hoffmann
@ 2018-10-12 13:05 ` Alex Williamson
0 siblings, 0 replies; 3+ messages in thread
From: Alex Williamson @ 2018-10-12 13:05 UTC (permalink / raw)
To: Gerd Hoffmann; +Cc: qemu-devel, Paolo Bonzini
On Fri, 12 Oct 2018 10:43:02 +0200
Gerd Hoffmann <kraxel@redhat.com> wrote:
> Hi,
>
> > > 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.
>
> I've grouped it with the display option because it is display related
> too, but if you prefer to group the bools instead this is fine with me.
Not so much grouping the bools as simply making the struct a bit more
space efficient by not adding obvious alignment holes.
> > 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,
>
> Yes, seabios (and vgabios) bundled with 3.0 (and master branch) should work fine.
>
> There is a standalone device you can use for testing (-vga none -device
> ramfb), to see whenever the firmware side of things works correctly.
>
> OVMF has ramfb support too btw (merged a few months back).
Yes, I'm also trying with an OVMF build from your firmware repo.
> > -device vfio-pci-nohotplug,id=hostdev0,sysfsdev=...,display=on,bus=pci.0,addr=0x9 \
>
> > <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>
>
> Hmm, that actually uses vfio-pci-nohotplug?
> But when ramfb=on doesn't throw an error, then yes, appearently.
That's where my wrapper script was replacing
s/vfio-pci/vfio-pci-nohotplug/, I didn't know about the driver override
you list below, that's much cleaner.
> > <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>
>
> I have this (additionally):
>
> <qemu:arg value='-set'/>
> <qemu:arg value='device.hostdev0.driver=vfio-pci-nohotplug'/>
>
> > 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?
>
> Yes, you should see both.
Ok, I'll update my xml and also try the raw ramfb device and see if I
can make it work. Thanks,
Alex
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2018-10-12 13:05 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20180917061729.22407-1-kraxel@redhat.com>
[not found] ` <20180917061729.22407-3-kraxel@redhat.com>
2018-10-11 21:19 ` [Qemu-devel] [PATCH v2 2/2] hw/vfio/display: add ramfb support Alex Williamson
2018-10-12 8:43 ` Gerd Hoffmann
2018-10-12 13:05 ` Alex Williamson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).