Skip to content

Commit bdf2d9f

Browse files
MingLi-4davejiang
authored andcommitted
cxl/core: Using cxl_resource_contains_addr() to check address availability
Helper function cxl_resource_contains_addr() can be used to check if a resource range contains an input address. Use it to replace all code that checks whether a resource range contains a DPA/HPA/SPA. Signed-off-by: Li Ming <[email protected]> Reviewed-by: Dave Jiang <[email protected]> Reviewed-by: Alison Schofield <[email protected]> Reviewed-by: Jonathan Cameron <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Dave Jiang <[email protected]>
1 parent 03ff65c commit bdf2d9f

File tree

3 files changed

+6
-6
lines changed

3 files changed

+6
-6
lines changed

drivers/cxl/core/edac.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1523,7 +1523,7 @@ static int cxl_mem_sparing_set_dpa(struct device *dev, void *drv_data, u64 dpa)
15231523
struct cxl_memdev *cxlmd = ctx->cxlmd;
15241524
struct cxl_dev_state *cxlds = cxlmd->cxlds;
15251525

1526-
if (dpa < cxlds->dpa_res.start || dpa > cxlds->dpa_res.end)
1526+
if (!cxl_resource_contains_addr(&cxlds->dpa_res, dpa))
15271527
return -EINVAL;
15281528

15291529
ctx->dpa = dpa;
@@ -1892,7 +1892,7 @@ static int cxl_ppr_set_dpa(struct device *dev, void *drv_data, u64 dpa)
18921892
struct cxl_memdev *cxlmd = cxl_ppr_ctx->cxlmd;
18931893
struct cxl_dev_state *cxlds = cxlmd->cxlds;
18941894

1895-
if (dpa < cxlds->dpa_res.start || dpa > cxlds->dpa_res.end)
1895+
if (!cxl_resource_contains_addr(&cxlds->dpa_res, dpa))
18961896
return -EINVAL;
18971897

18981898
cxl_ppr_ctx->dpa = dpa;

drivers/cxl/core/memdev.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ static int cxl_validate_poison_dpa(struct cxl_memdev *cxlmd, u64 dpa)
267267
dev_dbg(cxlds->dev, "device has no dpa resource\n");
268268
return -EINVAL;
269269
}
270-
if (dpa < cxlds->dpa_res.start || dpa > cxlds->dpa_res.end) {
270+
if (!cxl_resource_contains_addr(&cxlds->dpa_res, dpa)) {
271271
dev_dbg(cxlds->dev, "dpa:0x%llx not in resource:%pR\n",
272272
dpa, &cxlds->dpa_res);
273273
return -EINVAL;

drivers/cxl/core/region.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2847,7 +2847,7 @@ static int __cxl_dpa_to_region(struct device *dev, void *arg)
28472847
if (!cxled || !cxled->dpa_res || !resource_size(cxled->dpa_res))
28482848
return 0;
28492849

2850-
if (dpa > cxled->dpa_res->end || dpa < cxled->dpa_res->start)
2850+
if (!cxl_resource_contains_addr(cxled->dpa_res, dpa))
28512851
return 0;
28522852

28532853
/*
@@ -2959,7 +2959,7 @@ u64 cxl_dpa_to_hpa(struct cxl_region *cxlr, const struct cxl_memdev *cxlmd,
29592959
if (cxlrd->hpa_to_spa)
29602960
hpa = cxlrd->hpa_to_spa(cxlrd, hpa);
29612961

2962-
if (hpa < p->res->start || hpa > p->res->end) {
2962+
if (!cxl_resource_contains_addr(p->res, hpa)) {
29632963
dev_dbg(&cxlr->dev,
29642964
"Addr trans fail: hpa 0x%llx not in region\n", hpa);
29652965
return ULLONG_MAX;
@@ -3499,7 +3499,7 @@ u64 cxl_port_get_spa_cache_alias(struct cxl_port *endpoint, u64 spa)
34993499
xa_for_each(&endpoint->regions, index, iter) {
35003500
struct cxl_region_params *p = &iter->region->params;
35013501

3502-
if (p->res->start <= spa && spa <= p->res->end) {
3502+
if (cxl_resource_contains_addr(p->res, spa)) {
35033503
if (!p->cache_size)
35043504
return ~0ULL;
35053505

0 commit comments

Comments
 (0)