Several region setup helpers open-code the same decoder and memdev lookups.
Factor the common queries into shared helpers. This reduces duplicate logic and simplifies adding new region configuration tests. No functional change. Assisted-by: Claude:Opus-4-8 Signed-off-by: Alison Schofield <[email protected]> --- test/cxl-create-region.sh | 73 ++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 40 deletions(-) diff --git a/test/cxl-create-region.sh b/test/cxl-create-region.sh index d7a6840fed1a..5941e18f338d 100644 --- a/test/cxl-create-region.sh +++ b/test/cxl-create-region.sh @@ -25,17 +25,21 @@ destroy_regions() fi } +# Find the pmem capable single-target root decoder for a memdev +find_x1_decoder() +{ + $CXL list -b cxl_test -D -d root -m "$1" | + jq -r ".[] | + select(.pmem_capable == true) | + select(.nr_targets == 1) | + .decoder" +} + create_x1_region() { mem="$1" - # find a pmem capable root decoder for this mem - decoder=$($CXL list -b cxl_test -D -d root -m "$mem" | - jq -r ".[] | - select(.pmem_capable == true) | - select(.nr_targets == 1) | - .decoder") - + decoder=$(find_x1_decoder "$mem") if [[ ! $decoder ]]; then echo "no suitable decoder found for $mem, skipping" return @@ -69,13 +73,7 @@ create_subregions() slice=$((256 << 20)) mem="$1" - # find a pmem capable root decoder for this mem - decoder=$($CXL list -b cxl_test -D -d root -m "$mem" | - jq -r ".[] | - select(.pmem_capable == true) | - select(.nr_targets == 1) | - .decoder") - + decoder=$(find_x1_decoder "$mem") if [[ ! $decoder ]]; then echo "no suitable decoder found for $mem, skipping" return @@ -133,6 +131,17 @@ create_single() destroy_regions "$region" } +# Find the index'th memdev behind the decoder's target at position +find_memdev() +{ + local decoder="$1" position="$2" index="$3" + local port_dev + + port_dev=$($CXL list -T -d "$decoder" | jq -r ".[] | + .targets | .[] | select(.position == $position) | .target") + $CXL list -M -p "$port_dev" | jq -r ".[$index].memdev" +} + create_and_destroy_region() { region=$($CXL create-region -d "$decoder" -m "$memdevs" | @@ -155,9 +164,7 @@ setup_x1() .decoder") # Find a memdev for this host-bridge - port_dev0=$($CXL list -T -d "$decoder" | jq -r ".[] | - .targets | .[] | select(.position == 0) | .target") - mem0=$($CXL list -M -p "$port_dev0" | jq -r ".[0].memdev") + mem0=$(find_memdev "$decoder" 0 0) memdevs="$mem0" } @@ -170,12 +177,8 @@ setup_x2() .decoder") # Find a memdev for each host-bridge interleave position - port_dev0=$($CXL list -T -d "$decoder" | jq -r ".[] | - .targets | .[] | select(.position == 0) | .target") - port_dev1=$($CXL list -T -d "$decoder" | jq -r ".[] | - .targets | .[] | select(.position == 1) | .target") - mem0=$($CXL list -M -p "$port_dev0" | jq -r ".[0].memdev") - mem1=$($CXL list -M -p "$port_dev1" | jq -r ".[0].memdev") + mem0=$(find_memdev "$decoder" 0 0) + mem1=$(find_memdev "$decoder" 1 0) memdevs="$mem0 $mem1" } @@ -188,14 +191,10 @@ setup_x4() .decoder") # Find a memdev for each host-bridge interleave position - port_dev0=$($CXL list -T -d "$decoder" | jq -r ".[] | - .targets | .[] | select(.position == 0) | .target") - port_dev1=$($CXL list -T -d "$decoder" | jq -r ".[] | - .targets | .[] | select(.position == 1) | .target") - mem0=$($CXL list -M -p "$port_dev0" | jq -r ".[0].memdev") - mem1=$($CXL list -M -p "$port_dev1" | jq -r ".[0].memdev") - mem2=$($CXL list -M -p "$port_dev0" | jq -r ".[1].memdev") - mem3=$($CXL list -M -p "$port_dev1" | jq -r ".[1].memdev") + mem0=$(find_memdev "$decoder" 0 0) + mem1=$(find_memdev "$decoder" 1 0) + mem2=$(find_memdev "$decoder" 0 1) + mem3=$(find_memdev "$decoder" 1 1) memdevs="$mem0 $mem1 $mem2 $mem3" } @@ -213,15 +212,9 @@ setup_x3() fi # Find a memdev for each host-bridge interleave position - port_dev0=$($CXL list -T -d "$decoder" | jq -r ".[] | - .targets | .[] | select(.position == 0) | .target") - port_dev1=$($CXL list -T -d "$decoder" | jq -r ".[] | - .targets | .[] | select(.position == 1) | .target") - port_dev2=$($CXL list -T -d "$decoder" | jq -r ".[] | - .targets | .[] | select(.position == 2) | .target") - mem0=$($CXL list -M -p "$port_dev0" | jq -r ".[0].memdev") - mem1=$($CXL list -M -p "$port_dev1" | jq -r ".[0].memdev") - mem2=$($CXL list -M -p "$port_dev2" | jq -r ".[0].memdev") + mem0=$(find_memdev "$decoder" 0 0) + mem1=$(find_memdev "$decoder" 1 0) + mem2=$(find_memdev "$decoder" 2 0) memdevs="$mem0 $mem1 $mem2" } -- 2.37.3
