Hi On Tue, Jun 16, 2026 at 8:29 PM Cédric Le Goater <[email protected]> wrote: > > Hello, > > Subject could be : > > docs: add mdpy mdev vfio display testing guide ?
yes, I was too ambitious at first :) > > On 6/11/26 11:03, Marc-André Lureau wrote: > > Add a section to help me remember how to test vfio display hotplug. > > May be : > > Document how to test VFIO display hotplug using the kernel mdpy mdev > sample > > > Signed-off-by: Marc-André Lureau <[email protected]> > > --- > > docs/devel/index-internals.rst | 1 + > > docs/devel/vfio-mdpy.rst | 83 > > ++++++++++++++++++++++++++++++++++++++++++ > > 2 files changed, 84 insertions(+) > > > > diff --git a/docs/devel/index-internals.rst b/docs/devel/index-internals.rst > > index 7a0678cbdd3..198f155247a 100644 > > --- a/docs/devel/index-internals.rst > > +++ b/docs/devel/index-internals.rst > > @@ -22,6 +22,7 @@ Details about QEMU's various subsystems including how to > > add features to them. > > tracing > > uefi-vars > > vfio-iommufd > > + vfio-mdpy > > writing-monitor-commands > > virtio-backends > > crypto > > diff --git a/docs/devel/vfio-mdpy.rst b/docs/devel/vfio-mdpy.rst > > new file mode 100644 > > index 00000000000..14cddd11d81 > > --- /dev/null > > +++ b/docs/devel/vfio-mdpy.rst > > @@ -0,0 +1,83 @@ > > +.. SPDX-License-Identifier: GPL-2.0-or-later > > + > > +=================================== > > +Testing VFIO display with mdev mdpy > > +=================================== > > + > > +.. contents:: Table of Contents > > + > > +The kernel provides a sample mediated device driver, ``mdpy`` > > +(``samples/vfio-mdev/mdpy.c``), that exposes a fake framebuffer through > > the VFIO > > +display region interface. It can be used to test VFIO display support, > > including > > +hotplug, without any real GPU hardware. > > + > > +The kernel modules > > +================== > > + > > +The ``mdpy`` driver depends on the ``mdev`` subsystem. Enable, build and > > load > > +the modules. > > The minimal set is: > > CONFIG_SAMPLE_VFIO_MDEV_MDPY=m > CONFIG_SAMPLE_VFIO_MDEV_MDPY_FB=m # guest framebuffer driver > > CONFIG_VFIO_MDEV is selected automatically. > ok > > > + > > +Verify that the driver registered successfully: > > + > > +.. code-block:: bash > > + > > + ls /sys/devices/virtual/mdpy/mdpy/mdev_supported_types/ > > + > > +Creating an mdev instance > > +========================= > > + > > +Available types correspond to different resolutions (e.g. ``mdpy-vga`` > > +for 640x480, ``mdpy-xga`` for 1024x768, ``mdpy-hd`` for 1920x1080). > > + > > +Each mdev instance is identified by a UUID: > > + > > +.. code-block:: bash > > + > > + uuid=$(uuidgen) > > + echo "$uuid" > > > /sys/devices/virtual/mdpy/mdpy/mdev_supported_types/mdpy-xga/create > > + > > +To remove the instance later: > > + > > +.. code-block:: bash > > + > > + echo 1 > /sys/bus/mdev/devices/$uuid/remove > > + > > +Make sure your user has the necessary permissions to access the vfio group. > > +(ex: chmod 666 /dev/vfio/16) > > + > > +Starting QEMU > > +============= > > + > > +Boot-time attachment > > +-------------------- > > + > > +.. code-block:: bash > > + > > + qemu-system-x86_64 -machine q35 -m 1G \ > > + -device vfio-pci,sysfsdev=/sys/bus/mdev/devices/$uuid,display=on \ > > + -display gtk,gl=on > > + > > +Hotplug via HMP > > +--------------- > > + > > +Start QEMU with a PCIe root port (required for PCIe hotplug) and a > > +monitor: > > + > > +.. code-block:: bash > > + > > + qemu-system-x86_64 -machine q35 -m 1G \ > > + -device pcie-root-port,id=rp0,slot=1 \ > > + -display gtk,gl=on \ > > + -monitor stdio > > + > > +Then at the ``(qemu)`` prompt: > > + > > +.. code-block:: none > > + > > + device_add > > vfio-pci,sysfsdev=/sys/bus/mdev/devices/<uuid>,display=on,bus=rp0,id=mdpy0 > > + > > +To hot-unplug: > > + > > +.. code-block:: none > > + > > + device_del mdpy0 > > > > Thanks, > > C. > >
