On Thu, 13 Aug 2026 15:06:15 +0530 <[email protected]> wrote: > From: Manish Honap <[email protected]> > > devm_cxl_probe_mem() maps the component registers through the CXL core. > By default the core claims each HDM/RAS sub-block, which then collides > with the full-BAR request that vfio-pci makes when the guest opens the > device. > > Discover the component registers into the device reg_map and pass > bar_owned to cxl_pci_setup_regs(), so the core maps the sub-blocks > without claiming them and vfio-pci owns the whole BAR. > > Signed-off-by: Manish Honap <[email protected]> > --- > drivers/vfio/pci/cxl/vfio_cxl_core.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/drivers/vfio/pci/cxl/vfio_cxl_core.c > b/drivers/vfio/pci/cxl/vfio_cxl_core.c > index 7edc53b25576..966b7c22a6ac 100644 > --- a/drivers/vfio/pci/cxl/vfio_cxl_core.c > +++ b/drivers/vfio/pci/cxl/vfio_cxl_core.c > @@ -10,6 +10,7 @@ > #include <linux/range.h> > #include <linux/vfio_pci_core.h> > #include <cxl/cxl.h> > +#include <cxl/pci.h> > > /** > * struct vfio_cxl_state - per-device state for a vfio-cxl device > @@ -70,6 +71,16 @@ static int vfio_cxl_init_device(struct > vfio_pci_core_device *vdev) > if (!cxl) > return -ENOMEM; > > + /* > + * vfio-pci requests the whole component BAR when the guest opens the > + * device. Declare the BAR owned so the CXL core maps the HDM/RAS > + * sub-blocks without claiming them and that request does not collide. > + */ > + ret = cxl_pci_setup_regs(pdev, CXL_REGLOC_RBI_COMPONENT, > + &cxl->cxlds.reg_map, true); > + if (ret) > + return ret; > + > ret = cxl_set_capacity(&cxl->cxlds, hdm_size); > if (ret) > return ret;
Previous comments on patch 2 suggest a different interface here, but do note that cxl_pci_set_regs() can return -EPROBE_DEFER and if we do actually want to defer the probe (until when?) we'd need to split this errno out as a legitimate probe error case versus the fallback mechanism for other errnos. Thanks, Alex

