[PATCH v2 08/15] cxl/region: Use the endpoint's SPA range to find a region
From: Robert Richter
Date: Tue Feb 18 2025 - 08:31:13 EST
To find the correct region and root port of an endpoint of a system
needing address translation, the endpoint's HPA range must be
translated to each of the parent port address ranges up to the root
decoder.
Use the calculated SPA range of an endpoint to find the endpoint's
region.
Signed-off-by: Robert Richter <rrichter@xxxxxxx>
---
drivers/cxl/core/region.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c
index 6d5ede5b4c43..ffe6038249ed 100644
--- a/drivers/cxl/core/region.c
+++ b/drivers/cxl/core/region.c
@@ -3535,7 +3535,6 @@ static struct cxl_region *construct_region(struct cxl_root_decoder *cxlrd,
static int cxl_endpoint_decoder_add(struct cxl_endpoint_decoder *cxled)
{
- struct range *hpa = &cxled->cxld.hpa_range;
struct cxl_root_decoder *cxlrd = cxled->cxlrd;
struct cxl_region_params *p;
struct cxl_region *cxlr;
@@ -3547,7 +3546,7 @@ static int cxl_endpoint_decoder_add(struct cxl_endpoint_decoder *cxled)
* one does the construction and the others add to that.
*/
mutex_lock(&cxlrd->range_lock);
- cxlr = cxl_find_region_by_range(cxlrd, hpa);
+ cxlr = cxl_find_region_by_range(cxlrd, &cxled->spa_range);
if (!cxlr)
cxlr = construct_region(cxlrd, cxled);
mutex_unlock(&cxlrd->range_lock);
--
2.39.5