Skip to content

Commit 2901c8b

Browse files
committed
cxl/region: Fix decoder interleave programming
Jonathan notes: "Curiously interleave ways = 1 for the EPs which is obviously wrong" ...while testing the latest CXL development branch on QEMU. It turns out the region creation process failed to program the endpoint decoders. This was missed because the default settings of x1 at 4K intereleave still results in the region appearing to function. Jonathan caught the bug by reverse mapping the translations that need to happen for the QEMU support. Link: https://lore.kernel.org/r/[email protected] Fixes: 384e624 ("cxl/region: Attach endpoint decoders") Reported-by: Jonathan Cameron <[email protected]> Link: https://lore.kernel.org/r/165951146336.967013.11160153960900111443.stgit@dwillia2-xfh.jf.intel.com Acked-by: Jonathan Cameron <[email protected]> Signed-off-by: Dan Williams <[email protected]>
1 parent 8732947 commit 2901c8b

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

drivers/cxl/core/region.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1255,6 +1255,9 @@ static int cxl_region_attach(struct cxl_region *cxlr,
12551255
p->state = CXL_CONFIG_ACTIVE;
12561256
}
12571257

1258+
cxled->cxld.interleave_ways = p->interleave_ways;
1259+
cxled->cxld.interleave_granularity = p->interleave_granularity;
1260+
12581261
return 0;
12591262

12601263
err_decrement:

0 commit comments

Comments
 (0)