]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
cxl/region: Fix passthrough-decoder detection
authorDan Williams <dan.j.williams@intel.com>
Tue, 7 Feb 2023 19:04:30 +0000 (11:04 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 14 Feb 2023 18:11:52 +0000 (19:11 +0100)
commit 711442e29f16f0d39dd0e2460c9baacfccb9d5a7 upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/cxl/core/region.c

index 36962d1c235101202af704311322ba0bebe1126f..9709bbf773b72dee1198ad0ba2f3e53c5da1f9c2 100644 (file)
@@ -993,10 +993,10 @@ static int cxl_port_setup_targets(struct cxl_port *port,
                int i, distance;
 
                /*
-                * Passthrough ports impose no distance requirements between
+                * Passthrough decoders impose no distance requirements between
                 * peers
                 */
-               if (port->nr_dports == 1)
+               if (cxl_rr->nr_targets == 1)
                        distance = 0;
                else
                        distance = p->nr_targets / cxl_rr->nr_targets;