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; > > } > > >

