On Tue, May 19, 2026 at 12:31:12PM +0800, Jonathan Cameron wrote:
> On Tue, 19 May 2026 12:18:32 +0200
> Tomasz Wolski <[email protected]> wrote:
> 
> > The dax_region resource conflict in alloc_dax_region() indicates a
> > serious configuration problem — two subsystems (e.g. dax_hmem and
> > dax_cxl) are attempting to register overlapping address ranges. This is
> > not a transient or debug-level condition; it represents a genuine
> > resource conflict that an administrator needs to be aware of.
> > 
> > Switch from request_resource() + dev_dbg() to
> > request_resource_conflict() + dev_err() so that the conflict is visible
> > by default and the colliding resource is identified in the message.
> > 
> > Suggested-by: Dan Williams <[email protected]>
> > Link: 
> > https://lore.kernel.org/linux-cxl/[email protected]/
> > Signed-off-by: Tomasz Wolski <[email protected]>
> Seems reasonable to me
> Reviewed-by: Jonathan Cameron <[email protected]>

Reviewed-by: Richard Cheng <[email protected]>

Best regards,
Richard Cheng.

> > ---
> >  drivers/dax/bus.c | 11 ++++++-----
> >  1 file changed, 6 insertions(+), 5 deletions(-)
> > 
> > diff --git a/drivers/dax/bus.c b/drivers/dax/bus.c
> > index 68437c05e21d..66413c6c2ba0 100644
> > --- a/drivers/dax/bus.c
> > +++ b/drivers/dax/bus.c
> > @@ -637,7 +637,7 @@ struct dax_region *alloc_dax_region(struct device 
> > *parent, int region_id,
> >             unsigned long flags)
> >  {
> >     struct dax_region *dax_region;
> > -   int rc;
> > +   struct resource *conflict;
> >  
> >     /*
> >      * The DAX core assumes that it can store its private data in
> > @@ -670,10 +670,11 @@ struct dax_region *alloc_dax_region(struct device 
> > *parent, int region_id,
> >             .flags = IORESOURCE_MEM | flags,
> >     };
> >  
> > -   rc = request_resource(&dax_regions, &dax_region->res);
> > -   if (rc) {
> > -           dev_dbg(parent, "dax_region resource conflict for %pR\n",
> > -                   &dax_region->res);
> > +   conflict = request_resource_conflict(&dax_regions, &dax_region->res);
> > +   if (conflict) {
> > +           dev_err(parent,
> > +                   "dax_region: can't claim %pR: address conflict with %s 
> > %pR\n",
> > +                   &dax_region->res, conflict->name, conflict);
> >             goto err_res;
> >     }
> >  
> 

Reply via email to