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.
>
>

Reply via email to