cxl/region: Fix passthrough-decoder detection
A passthrough decoder is a decoder that maps only 1 target. It is a special case because it does not impose any constraints on the interleave-math as compared to a decoder with multiple targets. Extend the passthrough case to multi-target-capable decoders that only have one target selected. I.e. the current code was only considering passthrough *ports* which are only a subset of the potential passthrough decoder scenarios. Fixes: e4f6dfa9ef75 ("cxl/region: Fix 'distance' calculation with passthrough ports") Cc: <stable@vger.kernel.org> Reviewed-by: Dave Jiang <dave.jiang@intel.com> Link: https://lore.kernel.org/r/167564540422.847146.13816934143225777888.stgit@dwillia2-xfh.jf.intel.com Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
parent
4fa4302d6d
commit
711442e29f
@ -993,10 +993,10 @@ static int cxl_port_setup_targets(struct cxl_port *port,
|
|||||||
int i, distance;
|
int i, distance;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Passthrough ports impose no distance requirements between
|
* Passthrough decoders impose no distance requirements between
|
||||||
* peers
|
* peers
|
||||||
*/
|
*/
|
||||||
if (port->nr_dports == 1)
|
if (cxl_rr->nr_targets == 1)
|
||||||
distance = 0;
|
distance = 0;
|
||||||
else
|
else
|
||||||
distance = p->nr_targets / cxl_rr->nr_targets;
|
distance = p->nr_targets / cxl_rr->nr_targets;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user