In the CXL Unit Test Suite, region creation coverage is split between
cxl-create-region.sh and cxl-xor-region.sh.

Consolidate the XOR coverage into cxl-create-region.sh so region
creation testing lives in one place. This avoids maintaining parallel
test infrastructure and makes it easier to add new region creation
cases.

Remove the now redundant cxl-xor-region.sh.

Continue to maintain cxl-region-sysfs.sh because it exercises the CXL
driver ABI directly.

Assisted-by: Claude:Opus-4-8
Signed-off-by: Alison Schofield <[email protected]>
---
 test/cxl-create-region.sh | 111 ++++++++++++++++++++++++++++++++
 test/cxl-xor-region.sh    | 129 --------------------------------------
 test/meson.build          |   2 -
 3 files changed, 111 insertions(+), 131 deletions(-)
 delete mode 100644 test/cxl-xor-region.sh

diff --git a/test/cxl-create-region.sh b/test/cxl-create-region.sh
index 658b9b8ff58a..d7a6840fed1a 100644
--- a/test/cxl-create-region.sh
+++ b/test/cxl-create-region.sh
@@ -133,6 +133,98 @@ create_single()
        destroy_regions "$region"
 }
 
+create_and_destroy_region()
+{
+       region=$($CXL create-region -d "$decoder" -m "$memdevs" |
+               jq -r ".region")
+
+       if [[ ! $region ]]; then
+               echo "create-region failed for $decoder"
+               err "$LINENO"
+       fi
+
+       destroy_regions "$region"
+}
+
+setup_x1()
+{
+       # Find an x1 decoder
+       decoder=$($CXL list -b cxl_test -D -d root | jq -r ".[] |
+               select(.pmem_capable == true) |
+               select(.nr_targets == 1) |
+               .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")
+       memdevs="$mem0"
+}
+
+setup_x2()
+{
+       # Find an x2 decoder
+       decoder=$($CXL list -b cxl_test -D -d root | jq -r ".[] |
+               select(.pmem_capable == true) |
+               select(.nr_targets == 2) |
+               .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")
+       memdevs="$mem0 $mem1"
+}
+
+setup_x4()
+{
+       # find an x2 decoder
+       decoder=$($CXL list -b cxl_test -D -d root | jq -r ".[] |
+               select(.pmem_capable == true) |
+               select(.nr_targets == 2) |
+               .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")
+       memdevs="$mem0 $mem1 $mem2 $mem3"
+}
+
+setup_x3()
+{
+       # find an x3 decoder
+       decoder=$($CXL list -b cxl_test -D -d root | jq -r ".[] |
+               select(.pmem_capable == true) |
+               select(.nr_targets == 3) |
+               .decoder")
+
+       if [[ ! $decoder ]]; then
+               echo "no x3 decoder found, skipping xor-x3 test"
+               return
+       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")
+       memdevs="$mem0 $mem1 $mem2"
+}
+
 # test region creation on devices behind a single-port host-bridge
 create_single
 
@@ -149,6 +241,25 @@ for mem in ${mems[@]}; do
        create_subregions "$mem"
 done
 
+# Reload cxl_test with XOR interleave arithmetic to exercise the XOR math
+# option of the CXL driver. Create x1,2,3,4 regions across the XOR roots.
+# As with the modulo tests above, changes to the CXL topology in
+# tools/testing/cxl/test/cxl.c may require an update here.
+modprobe -r cxl_test
+modprobe cxl_test interleave_arithmetic=1
+
+setup_x1
+create_and_destroy_region
+setup_x2
+create_and_destroy_region
+setup_x4
+create_and_destroy_region
+# x3 decoder may not be available in cxl/test topo yet
+setup_x3
+if [[ $decoder ]]; then
+       create_and_destroy_region
+fi
+
 check_dmesg "$LINENO"
 
 modprobe -r cxl_test
diff --git a/test/cxl-xor-region.sh b/test/cxl-xor-region.sh
deleted file mode 100644
index fb4f9a0a1515..000000000000
--- a/test/cxl-xor-region.sh
+++ /dev/null
@@ -1,129 +0,0 @@
-#!/bin/bash
-# SPDX-License-Identifier: GPL-2.0
-# Copyright (C) 2022 Intel Corporation. All rights reserved.
-
-. $(dirname $0)/common
-
-rc=77
-
-set -ex
-
-trap 'err $LINENO' ERR
-
-check_prereq "jq"
-
-modprobe -r cxl_test
-modprobe cxl_test interleave_arithmetic=1
-rc=1
-
-# THEORY OF OPERATION: Create x1,2,3,4 regions to exercise the XOR math
-# option of the CXL driver. As with other cxl_test tests, changes to the
-# CXL topology in tools/testing/cxl/test/cxl.c may require an update here.
-
-create_and_destroy_region()
-{
-       region=$($CXL create-region -d "$decoder" -m "$memdevs" |
-               jq -r ".region")
-
-       if [[ ! $region ]]; then
-               echo "create-region failed for $decoder"
-               err "$LINENO"
-       fi
-
-       $CXL destroy-region -f -b cxl_test "$region"
-}
-
-setup_x1()
-{
-       # Find an x1 decoder
-       decoder=$($CXL list -b cxl_test -D -d root | jq -r ".[] |
-               select(.pmem_capable == true) |
-               select(.nr_targets == 1) |
-               .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")
-       memdevs="$mem0"
-}
-
-setup_x2()
-{
-       # Find an x2 decoder
-       decoder=$($CXL list -b cxl_test -D -d root | jq -r ".[] |
-               select(.pmem_capable == true) |
-               select(.nr_targets == 2) |
-               .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")
-       memdevs="$mem0 $mem1"
-}
-
-setup_x4()
-{
-       # find an x2 decoder
-       decoder=$($CXL list -b cxl_test -D -d root | jq -r ".[] |
-               select(.pmem_capable == true) |
-               select(.nr_targets == 2) |
-               .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")
-       memdevs="$mem0 $mem1 $mem2 $mem3"
-}
-
-setup_x3()
-{
-       # find an x3 decoder
-       decoder=$($CXL list -b cxl_test -D -d root | jq -r ".[] |
-               select(.pmem_capable == true) |
-               select(.nr_targets == 3) |
-               .decoder")
-
-       if [[ ! $decoder ]]; then
-               echo "no x3 decoder found, skipping xor-x3 test"
-               return
-       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")
-       memdevs="$mem0 $mem1 $mem2"
-}
-
-setup_x1
-create_and_destroy_region
-setup_x2
-create_and_destroy_region
-setup_x4
-create_and_destroy_region
-# x3 decoder may not be available in cxl/test topo yet
-setup_x3
-if [[ $decoder ]]; then
-       create_and_destroy_region
-fi
-
-check_dmesg "$LINENO"
-
-modprobe -r cxl_test
diff --git a/test/meson.build b/test/meson.build
index 56aed9cc3c9d..5729d26d2a31 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -161,7 +161,6 @@ cxl_topo = find_program('cxl-topology.sh')
 cxl_sysfs = find_program('cxl-region-sysfs.sh')
 cxl_labels = find_program('cxl-labels.sh')
 cxl_create_region = find_program('cxl-create-region.sh')
-cxl_xor_region = find_program('cxl-xor-region.sh')
 cxl_update_firmware = find_program('cxl-update-firmware.sh')
 cxl_events = find_program('cxl-events.sh')
 cxl_sanitize = find_program('cxl-sanitize.sh')
@@ -198,7 +197,6 @@ tests = [
   [ 'cxl-region-sysfs.sh',    cxl_sysfs,         'cxl'   ],
   [ 'cxl-labels.sh',          cxl_labels,        'cxl'   ],
   [ 'cxl-create-region.sh',   cxl_create_region,  'cxl'   ],
-  [ 'cxl-xor-region.sh',      cxl_xor_region,     'cxl'   ],
   [ 'cxl-events.sh',          cxl_events,         'cxl'   ],
   [ 'cxl-sanitize.sh',        cxl_sanitize,       'cxl'   ],
   [ 'cxl-destroy-region.sh',  cxl_destroy_region, 'cxl'   ],
-- 
2.37.3


Reply via email to