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]>
> ---
>  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