]> www.infradead.org Git - users/hch/misc.git/commitdiff
cxl: Fix match_region_by_range() to use region_res_match_cxl_range()
authorDave Jiang <dave.jiang@intel.com>
Fri, 10 Oct 2025 20:57:55 +0000 (13:57 -0700)
committerDave Jiang <dave.jiang@intel.com>
Tue, 14 Oct 2025 20:02:07 +0000 (13:02 -0700)
match_region_by_range() is not using the helper function that also takes
extended linear cache size into account when comparing regions. This
causes a x2 region to show up as 2 partial incomplete regions rather
than a single CXL region with extended linear cache support. Replace
the open coded compare logic with the proper helper function for
comparison. User visible impact is that when 'cxl list' is issued,
no activa CXL region(s) are shown. There may be multiple idle regions
present. No actual active CXL region is present in the kernel.

[dj: Fix stable address]

Fixes: 0ec9849b6333 ("acpi/hmat / cxl: Add extended linear cache support for CXL")
Cc: stable@vger.kernel.org
Reviewed-by: Gregory Price <gourry@gourry.net>
Reviewed-by: Alison Schofield <alison.schofield@intel.com>
Reviewed-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
drivers/cxl/core/region.c

index 858d4678628dcc3783cd5acbfa6a9327d1ca7eed..57ed85e332d3ffeb1836ffa1de17e42722d26d16 100644 (file)
@@ -3398,10 +3398,7 @@ static int match_region_by_range(struct device *dev, const void *data)
        p = &cxlr->params;
 
        guard(rwsem_read)(&cxl_rwsem.region);
-       if (p->res && p->res->start == r->start && p->res->end == r->end)
-               return 1;
-
-       return 0;
+       return region_res_match_cxl_range(p, r);
 }
 
 static int cxl_extended_linear_cache_resize(struct cxl_region *cxlr,