Re: [RFC PATCH 1/4] cxl/mem: Add support to cleanly continue after attach
From: Cheatham, Benjamin
Date: Thu Apr 09 2026 - 18:03:00 EST
On 4/3/2026 4:00 PM, Dan Williams wrote:
> For drivers that want to fallback to PCI-only operation, immediately
> cleanup on attach failure. Otherwise vestigial topology objects are left
> until driver unload.
>
The usage of "attach" here is somewhat ambiguous. Does this mean the attach callback,
or cxl_mem attach? Also, I know that providing the attach callback is probably what
indicates a driver wants to fallback to PCIe operation, but it's not evident based on
the description or contents of the patch.
> Signed-off-by: Dan Williams <dan.j.williams@xxxxxxxxx>
> ---
> drivers/cxl/mem.c | 14 +++++++++++++-
> 1 file changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/cxl/mem.c b/drivers/cxl/mem.c
> index ff858318091f..5e7fa378dd66 100644
> --- a/drivers/cxl/mem.c
> +++ b/drivers/cxl/mem.c
> @@ -201,7 +201,19 @@ static int cxl_mem_probe(struct device *dev)
> struct cxl_memdev *devm_cxl_add_memdev(struct cxl_dev_state *cxlds,
> const struct cxl_memdev_attach *attach)
> {
> - return __devm_cxl_add_memdev(cxlds, attach);
> + struct cxl_memdev *cxlmd;
> + void *group;
> +
> + group = devres_open_group(cxlds->dev, NULL, GFP_KERNEL);
> + if (!group)
> + return ERR_PTR(-ENOMEM);
> +
> + cxlmd = __devm_cxl_add_memdev(cxlds, attach);
> + if (IS_ERR(cxlmd))
> + devres_release_group(cxlds->dev, group);
> + else
> + devres_remove_group(cxlds->dev, group);
> + return cxlmd;
> }
> EXPORT_SYMBOL_NS_GPL(devm_cxl_add_memdev, "CXL");
>
I'm having trouble figuring out how exactly this is supposed to work. I guess I have two questions:
1) What is this devres group doing? There aren't any actions added to it (afaik), so it seems to do nothing? Maybe there's some magic
going on here I don't know about?
2) Isn't the memdev already cleaned up if cxl_mem probe fails and attach is provided? What's the extra cleanup happening here?