anitazha / rpms / ndctl

Forked from rpms/ndctl 2 years ago
Clone

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

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