From: "Daniel P. Berrangé" <berrange@redhat.com>
To: qemu-devel@nongnu.org
Cc: xen-devel@lists.xenproject.org, qemu-riscv@nongnu.org,
qemu-ppc@nongnu.org, qemu-block@nongnu.org,
qemu-s390x@nongnu.org, qemu-arm@nongnu.org
Subject: Re: [PATCH 00/28] Mark user creatable devices for secure for virt use case
Date: Mon, 28 Sep 2026 11:37:35 +0100 [thread overview]
Message-ID: <arpDbzwmj8_KnHQ4@redhat.com> (raw)
In-Reply-To: <20260911143627.2743803-1-berrange@redhat.com>
Ping, any maintainers have thoughts on this proposal ?
On Fri, Sep 11, 2026 at 03:35:59PM +0100, Daniel P. Berrangé wrote:
> This (largish) series undertakes the task of marking devices
> secure, if they are intended to be used a virtualization
> use case.
>
> NB, the maintainer CC list was way too huge to include every
> individual, so I've trimmed to just the mailing list CCs.
>
> The approach taken was iterative as follows
>
> * Machines listed in
>
> https://www.qemu.org/docs/master/system/security.html#virtualization-use-case
>
> * All virtio/vhost/vfio/xen related devices
>
> * Most PCI related devices/controllers/bridges
>
> I then used the RHEL builds of QEMU as an approximation for
> what should be considered "virtualization use case", since
> they cut out a huge pile of devices from the build. IOW,
> more or less everything that RHEL builds for x86_64, ppc64,
> aarch64, s390x gets included. Notably since RHEL does not
> yet ship riscv or loongarch, I've possibly missed some
> devices that ought to be in scope.
>
> Devices are marked secure *regardless* of their maintainer
> status, if they are relevant to virt. Notably all the USB
> stuff is included despite USB being orphaned. An exception
> is CXL which is arguably relevant to virt, but maintainers
> agreed it is too immature to include so far.
>
> IOW, the "secure" flag as set in this series mostly avoids
> saying anything about the support status of the object types.
>
> Over the long term, IMHO, the set of devices we declare as
> providing a security boundary needs to be stable. We should
> not declare a device out of scope for the virt use case simply
> because a maintainer steps aside. The device doesn't become
> instantly less secure. It does mean bug fixes may not be
> timely enough, and rely on the goodwill of other contributors
> or maintainers to step up and fix.
>
> Or to put it another way. "secure = true" does not guarantee
> that the device is secure, but it states our intent that we
> *want* it to be secure, as opposed to "secure = false" which
> indicates we just don't care either way.
>
> The intersection of (secure, orphaned) highlights to QEMU
> contributors or corporate sponsors, where they might step
> up their effort / investment.
>
> Finally this is just user creatable devices. Use of these
> devices implies use of many more non-user creatable devices.
>
> I don't have a good way to enumerate those yet, and while
> the end user doesn't care at runtime, as maintainers we
> want to be clear if all devices are in scope for CVE
> handling or not.
>
> Based-on: <20260910103628.2326622-1-berrange@redhat.com>
>
> Daniel P. Berrangé (28):
> hw: mark secure machines for x86, s390, ppc, arm, loonarch, riscv
> accel: mark kvm and xen accelerators as secure
> hw: mark all virtio PCI devices as secure
> hw: mark all virtio CCW devices as secure
> hw: mark all vhost devices a secure
> hw: mark all remaining virtio object types as secure
> hw/vfio: mark all VFIO object classes as secure
> hw/xen: mark all Xen related object types as being secure
> hw/net: mark e1000, e1000e, IGB, rtl8139 & sPAPR VLAN as secure
> hw/usb: mark commonly used USB devices/hosts as secure
> hw/watchdog: mark some watchdog devices as secure
> hw/scsi: mark spapr and vmware SCSI controllers as secure
> hw/scsi: mark SCSI disk endpoint devices as secure
> hw/ide: mark ICH9 and ide-hd/ide-cd as secure
> hw: define most common PCI types as secure
> hw/pci-host: mark common x86, ppc, arm and s390 PCI hosts as secure
> hw/display: mark bochs, cirrus, qxl, VGA, ramfb as secure
> hw/tpm: mark all TPM implementations as secure
> hw/misc: mark pvpanic, vmcoreinfo as secure
> hw/audio: mark Intel HDA devices & codecs as secure
> hw/char: mark common serial / console devicess a secure
> hw/mem: mark nvdimm, pc-dimm & spapr-nvdimm devices as secure
> hw/uefi: mark the EFI vars service as secure
> hw/acpi: mark erst, vmclock and vmgenid devices as secure
> hw: mark KVM clock and RTC devices as secure
> hw: device AMD, Intel and ARM IOMMUs as secure
> hw/input: mark PS/2 and PC Keyboard devices as secure
> hw/i386: mark vmmouse / vmport as secure
>
> accel/accel-common.c | 2 ++
> accel/accel-system.c | 1 +
> accel/kvm/kvm-accel-ops.c | 1 +
> accel/kvm/kvm-all.c | 1 +
> accel/xen/xen-all.c | 2 ++
> hw/9pfs/virtio-9p-device.c | 1 +
> hw/acpi/erst.c | 1 +
> hw/acpi/vmclock.c | 1 +
> hw/acpi/vmgenid.c | 1 +
> hw/arm/smmu-common.c | 1 +
> hw/arm/smmuv3.c | 2 ++
> hw/arm/virt.c | 1 +
> hw/arm/xen-pvh.c | 1 +
> hw/audio/hda-codec.c | 4 ++++
> hw/audio/intel-hda.c | 5 +++++
> hw/audio/virtio-snd.c | 1 +
> hw/block/vhost-user-blk.c | 1 +
> hw/block/virtio-blk.c | 1 +
> hw/block/xen-block.c | 3 +++
> hw/char/debugcon.c | 1 +
> hw/char/sclpconsole-lm.c | 1 +
> hw/char/sclpconsole.c | 1 +
> hw/char/serial-isa.c | 1 +
> hw/char/serial-pci.c | 1 +
> hw/char/serial.c | 1 +
> hw/char/spapr_vty.c | 1 +
> hw/char/virtio-console.c | 2 ++
> hw/char/virtio-serial-bus.c | 3 +++
> hw/char/xen_console.c | 1 +
> hw/display/bochs-display.c | 1 +
> hw/display/cirrus_vga.c | 1 +
> hw/display/qxl.c | 3 +++
> hw/display/ramfb-standalone.c | 1 +
> hw/display/vga-mmio.c | 1 +
> hw/display/vga-pci.c | 3 +++
> hw/display/vhost-user-gpu.c | 1 +
> hw/display/virtio-gpu-base.c | 3 ++-
> hw/display/virtio-gpu-gl.c | 1 +
> hw/display/virtio-gpu-pci-rutabaga.c | 1 +
> hw/display/virtio-gpu-pci.c | 3 ++-
> hw/display/virtio-gpu-rutabaga.c | 1 +
> hw/display/virtio-gpu.c | 1 +
> hw/i386/amd_iommu.c | 4 +++-
> hw/i386/intel_iommu.c | 1 +
> hw/i386/kvm/clock.c | 1 +
> hw/i386/microvm.c | 1 +
> hw/i386/pc_piix.c | 4 ++--
> hw/i386/vmmouse.c | 1 +
> hw/i386/vmport.c | 1 +
> hw/i386/xen/xen-pvh.c | 1 +
> hw/i386/xen/xen_platform.c | 1 +
> hw/i386/xen/xen_pvdevice.c | 1 +
> hw/ide/ich.c | 1 +
> hw/ide/ide-dev.c | 3 +++
> hw/ide/piix.c | 2 ++
> hw/input/pckbd.c | 3 ++-
> hw/input/ps2.c | 9 ++++++---
> hw/input/virtio-input-hid.c | 5 +++++
> hw/input/virtio-input-host.c | 1 +
> hw/input/virtio-input.c | 1 +
> hw/loongarch/virt.c | 2 ++
> hw/mem/nvdimm.c | 1 +
> hw/mem/pc-dimm.c | 1 +
> hw/misc/pvpanic-isa.c | 1 +
> hw/misc/pvpanic-mmio.c | 1 +
> hw/misc/pvpanic-pci.c | 1 +
> hw/misc/vmcoreinfo.c | 1 +
> hw/net/e1000.c | 1 +
> hw/net/e1000e.c | 1 +
> hw/net/igb.c | 1 +
> hw/net/rtl8139.c | 1 +
> hw/net/spapr_llan.c | 1 +
> hw/net/virtio-net.c | 1 +
> hw/net/xen_nic.c | 1 +
> hw/pci-bridge/gen_pcie_root_port.c | 1 +
> hw/pci-bridge/i82801b11.c | 1 +
> hw/pci-bridge/ioh3420.c | 1 +
> hw/pci-bridge/pci_bridge_dev.c | 2 ++
> hw/pci-bridge/pci_expander_bridge.c | 8 ++++++++
> hw/pci-bridge/pcie_pci_bridge.c | 1 +
> hw/pci-bridge/pcie_root_port.c | 1 +
> hw/pci-bridge/xio3130_downstream.c | 1 +
> hw/pci-bridge/xio3130_upstream.c | 1 +
> hw/pci-host/gpex.c | 2 ++
> hw/pci-host/i440fx.c | 2 ++
> hw/pci-host/pnv_phb.c | 2 ++
> hw/pci-host/pnv_phb3.c | 3 +++
> hw/pci-host/pnv_phb3_msi.c | 1 +
> hw/pci-host/pnv_phb3_pbcq.c | 1 +
> hw/pci-host/pnv_phb4.c | 4 +++-
> hw/pci-host/pnv_phb4_pec.c | 1 +
> hw/pci-host/q35.c | 2 ++
> hw/pci-host/remote.c | 1 +
> hw/pci-host/xen_igd_pt.c | 1 +
> hw/pci/pci.c | 7 +++++++
> hw/pci/pci_bridge.c | 1 +
> hw/pci/pci_host.c | 1 +
> hw/pci/pcie_host.c | 1 +
> hw/pci/pcie_port.c | 1 +
> hw/ppc/spapr.c | 1 +
> hw/ppc/spapr_nvdimm.c | 1 +
> hw/ppc/spapr_pci.c | 1 +
> hw/ppc/spapr_tpm_proxy.c | 1 +
> hw/riscv/virt.c | 1 +
> hw/rtc/mc146818rtc.c | 1 +
> hw/s390x/s390-pci-bus.c | 4 ++++
> hw/s390x/s390-virtio-ccw.c | 1 +
> hw/s390x/vhost-scsi-ccw.c | 1 +
> hw/s390x/vhost-user-fs-ccw.c | 1 +
> hw/s390x/vhost-vsock-ccw.c | 1 +
> hw/s390x/virtio-ccw-9p.c | 1 +
> hw/s390x/virtio-ccw-balloon.c | 1 +
> hw/s390x/virtio-ccw-blk.c | 1 +
> hw/s390x/virtio-ccw-crypto.c | 1 +
> hw/s390x/virtio-ccw-gpu.c | 1 +
> hw/s390x/virtio-ccw-input.c | 5 +++++
> hw/s390x/virtio-ccw-md.c | 1 +
> hw/s390x/virtio-ccw-mem.c | 1 +
> hw/s390x/virtio-ccw-net.c | 1 +
> hw/s390x/virtio-ccw-rng.c | 1 +
> hw/s390x/virtio-ccw-scsi.c | 1 +
> hw/s390x/virtio-ccw-serial.c | 1 +
> hw/s390x/virtio-ccw.c | 1 +
> hw/scsi/scsi-disk.c | 4 ++++
> hw/scsi/scsi-generic.c | 1 +
> hw/scsi/spapr_vscsi.c | 1 +
> hw/scsi/vhost-scsi-common.c | 1 +
> hw/scsi/vhost-scsi.c | 1 +
> hw/scsi/vhost-user-scsi.c | 1 +
> hw/scsi/virtio-scsi.c | 2 ++
> hw/scsi/vmw_pvscsi.c | 1 +
> hw/tpm/tpm_crb.c | 1 +
> hw/tpm/tpm_spapr.c | 1 +
> hw/tpm/tpm_tis_i2c.c | 1 +
> hw/tpm/tpm_tis_isa.c | 1 +
> hw/tpm/tpm_tis_sysbus.c | 1 +
> hw/uefi/var-service-sysbus.c | 2 ++
> hw/usb/ccid-card-emulated.c | 1 +
> hw/usb/ccid-card-passthru.c | 1 +
> hw/usb/dev-hid.c | 4 ++++
> hw/usb/dev-hub.c | 1 +
> hw/usb/dev-smartcard-reader.c | 3 +++
> hw/usb/dev-storage-bot.c | 1 +
> hw/usb/dev-storage-classic.c | 1 +
> hw/usb/dev-storage.c | 1 +
> hw/usb/hcd-ehci-pci.c | 2 ++
> hw/usb/hcd-ehci-sysbus.c | 8 ++++++++
> hw/usb/hcd-ohci-pci.c | 1 +
> hw/usb/hcd-ohci-sysbus.c | 1 +
> hw/usb/hcd-uhci.c | 2 ++
> hw/usb/hcd-xhci-nec.c | 1 +
> hw/usb/hcd-xhci-pci.c | 2 ++
> hw/usb/hcd-xhci-sysbus.c | 3 ++-
> hw/usb/hcd-xhci.c | 1 +
> hw/usb/host-libusb.c | 1 +
> hw/usb/redirect.c | 1 +
> hw/vfio-user/pci.c | 1 +
> hw/vfio/ap.c | 1 +
> hw/vfio/ccw.c | 1 +
> hw/vfio/container.c | 1 +
> hw/vfio/igd.c | 1 +
> hw/vfio/iommufd.c | 2 ++
> hw/vfio/pci.c | 3 +++
> hw/vfio/spapr.c | 1 +
> hw/virtio/vdpa-dev.c | 1 +
> hw/virtio/vhost-user-base.c | 3 ++-
> hw/virtio/vhost-user-fs.c | 1 +
> hw/virtio/vhost-user-gpio.c | 1 +
> hw/virtio/vhost-user-i2c.c | 1 +
> hw/virtio/vhost-user-input.c | 1 +
> hw/virtio/vhost-user-rng.c | 1 +
> hw/virtio/vhost-user-rtc.c | 1 +
> hw/virtio/vhost-user-scmi.c | 1 +
> hw/virtio/vhost-user-snd.c | 1 +
> hw/virtio/vhost-user-spi.c | 1 +
> hw/virtio/vhost-user-test-device.c | 1 +
> hw/virtio/vhost-user-vsock.c | 1 +
> hw/virtio/vhost-vsock-common.c | 1 +
> hw/virtio/vhost-vsock.c | 1 +
> hw/virtio/virtio-balloon.c | 1 +
> hw/virtio/virtio-bus.c | 1 +
> hw/virtio/virtio-crypto.c | 1 +
> hw/virtio/virtio-input-pci.c | 2 ++
> hw/virtio/virtio-iommu.c | 2 ++
> hw/virtio/virtio-md-pci.c | 1 +
> hw/virtio/virtio-mem.c | 1 +
> hw/virtio/virtio-mmio.c | 2 ++
> hw/virtio/virtio-nsm.c | 1 +
> hw/virtio/virtio-pci.c | 3 +++
> hw/virtio/virtio-pmem.c | 1 +
> hw/virtio/virtio-rng.c | 1 +
> hw/virtio/virtio-rtc.c | 1 +
> hw/watchdog/sbsa_gwdt.c | 1 +
> hw/watchdog/spapr_watchdog.c | 1 +
> hw/watchdog/wdt_diag288.c | 1 +
> hw/watchdog/wdt_i6300esb.c | 1 +
> hw/watchdog/wdt_ib700.c | 1 +
> hw/xen/xen-bus.c | 3 +++
> hw/xen/xen-legacy-backend.c | 3 +++
> hw/xen/xen-pvh-common.c | 1 +
> hw/xen/xen_pt.c | 1 +
> hw/xenpv/xen_machine_pv.c | 2 +-
> include/hw/i386/pc.h | 1 +
> 203 files changed, 304 insertions(+), 13 deletions(-)
>
> --
> 2.55.0
>
With regards,
Daniel
--
|: https://berrange.com ~~ https://hachyderm.io/@berrange :|
|: https://libvirt.org ~~ https://entangle-photo.org :|
|: https://pixelfed.art/berrange ~~ https://fstop138.berrange.com :|
next prev parent reply other threads:[~2026-09-28 10:38 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-11 14:35 [PATCH 00/28] Mark user creatable devices for secure for virt use case Daniel P. Berrangé
2026-09-11 14:36 ` [PATCH 01/28] hw: mark secure machines for x86, s390, ppc, arm, loonarch, riscv Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-10-05 13:06 ` Philippe Mathieu-Daudé
2026-10-05 13:23 ` Daniel P. Berrangé
2026-10-05 13:34 ` Philippe Mathieu-Daudé
2026-10-05 13:39 ` Daniel P. Berrangé
2026-10-05 16:41 ` Cornelia Huck
2026-09-11 14:36 ` [PATCH 02/28] accel: mark kvm and xen accelerators as secure Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-10-05 13:26 ` Philippe Mathieu-Daudé
2026-09-11 14:36 ` [PATCH 03/28] hw: mark all virtio PCI devices " Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-10-05 9:29 ` Daniel P. Berrangé
2026-09-11 14:36 ` [PATCH 04/28] hw: mark all virtio CCW " Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-10-05 13:15 ` Eric Farman
2026-10-05 16:43 ` Cornelia Huck
2026-09-11 14:36 ` [PATCH 05/28] hw: mark all vhost devices a secure Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-09-11 14:36 ` [PATCH 06/28] hw: mark all remaining virtio object types as secure Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-09-11 14:36 ` [PATCH 07/28] hw/vfio: mark all VFIO object classes " Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-10-05 16:44 ` Cornelia Huck
2026-09-11 14:36 ` [PATCH 08/28] hw/xen: mark all Xen related object types as being secure Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-09-11 14:36 ` [PATCH 09/28] hw/net: mark e1000, e1000e, IGB, rtl8139 & sPAPR VLAN as secure Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-09-11 14:36 ` [PATCH 10/28] hw/usb: mark commonly used USB devices/hosts " Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-10-05 9:39 ` Daniel P. Berrangé
2026-09-11 14:36 ` [PATCH 11/28] hw/watchdog: mark some watchdog devices " Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-10-05 16:45 ` Cornelia Huck
2026-09-11 14:36 ` [PATCH 12/28] hw/scsi: mark spapr and vmware SCSI controllers " Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-09-11 14:36 ` [PATCH 13/28] hw/scsi: mark SCSI disk endpoint devices " Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-09-11 14:36 ` [PATCH 14/28] hw/ide: mark ICH9 and ide-hd/ide-cd " Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-10-05 13:30 ` Philippe Mathieu-Daudé
2026-10-05 13:35 ` Daniel P. Berrangé
2026-09-11 14:36 ` [PATCH 15/28] hw: define most common PCI types " Daniel P. Berrangé
2026-09-11 16:50 ` Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-10-05 9:26 ` Daniel P. Berrangé
2026-09-11 14:36 ` [PATCH 16/28] hw/pci-host: mark common x86, ppc, arm and s390 PCI hosts " Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-10-05 16:49 ` Cornelia Huck
2026-09-11 14:36 ` [PATCH 17/28] hw/display: mark bochs, cirrus, qxl, VGA, ramfb " Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-10-05 9:36 ` Daniel P. Berrangé
2026-09-11 14:36 ` [PATCH 18/28] hw/tpm: mark all TPM implementations " Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-09-11 14:36 ` [PATCH 19/28] hw/misc: mark pvpanic, vmcoreinfo " Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-09-11 14:36 ` [PATCH 20/28] hw/audio: mark Intel HDA devices & codecs " Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-09-11 14:36 ` [PATCH 21/28] hw/char: mark common serial / console devicess a secure Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-10-05 16:50 ` Cornelia Huck
2026-09-11 14:36 ` [PATCH 22/28] hw/mem: mark nvdimm, pc-dimm & spapr-nvdimm devices as secure Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-09-11 14:36 ` [PATCH 23/28] hw/uefi: mark the EFI vars service " Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-09-11 14:36 ` [PATCH 24/28] hw/acpi: mark erst, vmclock and vmgenid devices " Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-09-11 14:36 ` [PATCH 25/28] hw: mark KVM clock and RTC " Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-09-11 14:36 ` [PATCH 26/28] hw: device AMD, Intel and ARM IOMMUs " Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-09-11 14:36 ` [PATCH 27/28] hw/input: mark PS/2 and PC Keyboard devices " Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-09-11 14:36 ` [PATCH 28/28] hw/i386: mark vmmouse / vmport " Daniel P. Berrangé
2026-10-02 17:21 ` marcandre.lureau
2026-09-28 10:37 ` Daniel P. Berrangé [this message]
2026-10-02 17:21 ` [PATCH 00/28] Mark user creatable devices for secure for virt use case marcandre.lureau
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=arpDbzwmj8_KnHQ4@redhat.com \
--to=berrange@redhat.com \
--cc=qemu-arm@nongnu.org \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=qemu-riscv@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox