Re: [PATCH 06/10] hw/vfio/pci: Bind a CXL device to its fixed memory window

Junjie Cao <[email protected]>
Newsgroups org.nongnu.qemu-devel,org.nongnu.qemu-arm
Message-ID <[email protected]>
Hi Manish,

On Thu, 13 Aug 2026 18:36:19 +0530, Manish Honap wrote:
> +/*
> + * Cold-plug path: the CFMWS windows are placed at machine init done, so the
> + * binding can only be validated from this notifier. The VM has not run yet, so
> + * a configuration error is fatal to startup. A hotplugged device is validated
> + * in realize instead (see vfio_cxl_setup), where the failure fails device_add
> + * without taking down the running VM.

At this point in the series that isn't true yet: the
DEVICE(vdev)->hotplugged branch only arrives in patch 7, while this
patch registers the notifier unconditionally.
qemu_add_machine_init_done_notifier() invokes the notifier immediately
once the machine has reached PHASE_MACHINE_READY (hw/core/machine.c),
so between patches 6 and 7 a device_add with a bad CFMWS config lands
in vfio_cxl_bind_fmws() and exit(1)s the running VM. Move the hotplug
branch from patch 7 into this patch; then every point of the series
matches the comment.

> +        for (slot = 0; slot < PCI_SLOT_MAX; slot++) {
> +            for (fn = 0; fn < PCI_FUNC_MAX; fn++) {
> +                if (ep_bus->devices[PCI_DEVFN(slot, fn)]) {
> +                    nendpoints++;
> +                    break;

This counts occupied slots, not functions: the inner loop breaks on
the first function of a slot, so two vfio-cxl functions cold-plugged
at slot 0 each pass with nendpoints == 1, bind the same single-target
window, and map at the same base with equal priority -- the aliasing
this check exists to reject. Count devfns instead.

Many thanks,
Junjie
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.