> -----Original Message-----
> From: Alex Williamson <[email protected]>
> Sent: Friday, August 28, 2026 2:43 AM
> To: Manish Honap <[email protected]>
> Cc: [email protected]; Ankit Agrawal <[email protected]>; [email protected];
> [email protected]; [email protected]; Srirangan Madhavan
> <[email protected]>; [email protected]; [email protected];
> [email protected]; [email protected]; [email protected];
> [email protected]; [email protected]; Yishai Hadas
> <[email protected]>; Shameer Kolothum Thodi
> <[email protected]>; [email protected]; [email protected];
> [email protected]; [email protected]; [email protected]; Neo Jia
> <[email protected]>; Krishnakant Jaju <[email protected]>; Vikram Sethi
> <[email protected]>; Zhi Wang <[email protected]>; linux-
> [email protected]; [email protected]; [email protected];
> [email protected]; [email protected]; linux-
> [email protected]; [email protected]; [email protected]
> Subject: Re: [PATCH v4 11/27] vfio/cxl: Own the whole component register BAR
> 
> External email: Use caution opening links or attachments
> 
> 
> 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

Okay, I will make sure to split the -EPROBE_DEFER from cxl_pci_set_regs() from 
other-errno
fallback, so a genuine defer is honored while other errnos fall back to plain 
vfio-pci (matching
patch 07).

Manish

Reply via email to