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

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