Blame SOURCES/0206-cxl-test-Validate-switch-port-settings-in-cxl-region.patch

26ccd9
From bcc9897b38be91df38f81fb3105d2351f7941377 Mon Sep 17 00:00:00 2001
26ccd9
From: Dan Williams <dan.j.williams@intel.com>
26ccd9
Date: Fri, 5 Aug 2022 13:38:26 -0700
26ccd9
Subject: [PATCH 206/217] cxl/test: Validate switch port settings in
26ccd9
 cxl-region-sysfs.sh
26ccd9
26ccd9
A recent kernel fix to add the missing update of endpoint decoder HPA range
26ccd9
settings regressed switch decoder HPA range settings. Add validation for
26ccd9
switch port settings to avoid regressions like that going forward.
26ccd9
26ccd9
Link: https://lore.kernel.org/r/165973190625.1528532.12244196912617964754.stgit@dwillia2-xfh.jf.intel.com
26ccd9
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
26ccd9
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
26ccd9
---
26ccd9
 test/cxl-region-sysfs.sh | 32 ++++++++++++++++++++++++++++++++
26ccd9
 1 file changed, 32 insertions(+)
26ccd9
26ccd9
diff --git a/test/cxl-region-sysfs.sh b/test/cxl-region-sysfs.sh
26ccd9
index 110e037..ae0f556 100644
26ccd9
--- a/test/cxl-region-sysfs.sh
26ccd9
+++ b/test/cxl-region-sysfs.sh
26ccd9
@@ -112,6 +112,38 @@ do
26ccd9
 	[ $res -ne $region_base ] && err "$LINENO: decoder: $i base: $res region_base: $region_base"
26ccd9
 done
26ccd9
 
26ccd9
+# validate all switch decoders have the correct settings
26ccd9
+nr_switches=$((nr_targets/2))
26ccd9
+nr_host_bridges=$((nr_switches/2))
26ccd9
+nr_switch_decoders=$((nr_switches + nr_host_bridges))
26ccd9
+
26ccd9
+json=$($CXL list -D -r $region -d switch)
26ccd9
+readarray -t switch_decoders < <(echo $json | jq -r ".[].decoder")
26ccd9
+
26ccd9
+[ ${#switch_decoders[@]} -ne $nr_switch_decoders ] && err \
26ccd9
+"$LINENO: expected $nr_switch_decoders got ${#switch_decoders[@]} switch decoders"
26ccd9
+
26ccd9
+for i in ${switch_decoders[@]}
26ccd9
+do
26ccd9
+	decoder=$(echo $json | jq -r ".[] | select(.decoder == \"$i\")")
26ccd9
+	id=${i#decoder}
26ccd9
+	port_id=${id%.*}
26ccd9
+	depth=$($CXL list -p $port_id -S | jq -r ".[].depth")
26ccd9
+	iw=$(echo $decoder | jq -r ".interleave_ways")
26ccd9
+	ig=$(echo $decoder | jq -r ".interleave_granularity")
26ccd9
+
26ccd9
+	[ $iw -ne 2 ] && err "$LINENO: decoder: $i iw: $iw targets: 2"
26ccd9
+	[ $ig -ne $((r_ig << depth)) ] && err \
26ccd9
+	"$LINENO: decoder: $i ig: $ig switch_ig: $((r_ig << depth))"
26ccd9
+
26ccd9
+	res=$(echo $decoder | jq -r ".resource")
26ccd9
+	sz=$(echo $decoder | jq -r ".size")
26ccd9
+	[ $sz -ne $region_size ] && err \
26ccd9
+	"$LINENO: decoder: $i sz: $sz region_size: $region_size"
26ccd9
+	[ $res -ne $region_base ] && err \
26ccd9
+	"$LINENO: decoder: $i base: $res region_base: $region_base"
26ccd9
+done
26ccd9
+
26ccd9
 # walk up the topology and commit all decoders
26ccd9
 echo 1 > /sys/bus/cxl/devices/$region/commit
26ccd9
 
26ccd9
-- 
26ccd9
2.27.0
26ccd9