From: Alison Schofield <alison.schofield@intel.com>
To: Ben Cheatham <Benjamin.Cheatham@amd.com>
Cc: Alison Schofield <alison.schofield@intel.com>,
nvdimm@lists.linux.dev, linux-cxl@vger.kernel.org
Subject: [ndctl PATCH] cxl/test: use inject and clear cmds in cxl-poison.sh
Date: Tue, 16 Dec 2025 21:00:58 -0800 [thread overview]
Message-ID: <20251217050100.2393796-1-alison.schofield@intel.com> (raw)
In-Reply-To: <20251215213630.8983-1-Benjamin.Cheatham@amd.com>
cxl-cli commands were recently added for poison inject and clear
operations by memdev. Replace the writes to sysfs with the new
commands in the cxl-poison unit test.
Continue to use the sysfs writes for inject and clear poison
by region offset until that support arrives in cxl-cli.
Signed-off-by: Alison Schofield <alison.schofield@intel.com>
---
Ben - Please append this to your in flight set and suggest
anything else you'd like to see covered here.
test/cxl-poison.sh | 79 ++++++++++++++++++++++++----------------------
1 file changed, 42 insertions(+), 37 deletions(-)
diff --git a/test/cxl-poison.sh b/test/cxl-poison.sh
index 59e807ece932..ebad38c14e3e 100644
--- a/test/cxl-poison.sh
+++ b/test/cxl-poison.sh
@@ -41,32 +41,37 @@ find_auto_region()
echo "$region"
}
-# When cxl-cli support for inject and clear arrives, replace
-# the writes to /sys/kernel/debug with the new cxl commands.
-
-_do_poison_sysfs()
+_do_poison()
{
local action="$1" dev="$2" addr="$3"
local expect_fail=${4:-false}
- if "$expect_fail"; then
- if echo "$addr" > "/sys/kernel/debug/cxl/$dev/${action}_poison"; then
- echo "Expected ${action}_poison to fail for $addr"
- err "$LINENO"
- fi
- else
- echo "$addr" > "/sys/kernel/debug/cxl/$dev/${action}_poison"
+ # Regions use sysfs, memdevs use cxl-cli commands
+ if [[ "$dev" =~ ^region ]]; then
+ local sysfs_path="/sys/kernel/debug/cxl/$dev/${action}_poison"
+ "$expect_fail" && echo "$addr" > "$sysfs_path" && err "$LINENO"
+ "$expect_fail" || echo "$addr" > "$sysfs_path"
+ return
fi
+
+ case "$action" in
+ inject) local cmd=("$CXL" inject-error "$dev" -t poison -a "$addr") ;;
+ clear) local cmd=("$CXL" clear-error "$dev" -a "$addr") ;;
+ *) err "$LINENO" ;;
+ esac
+
+ "$expect_fail" && "${cmd[@]}" && err "$LINENO"
+ "$expect_fail" || "${cmd[@]}"
}
-inject_poison_sysfs()
+inject_poison()
{
- _do_poison_sysfs 'inject' "$@"
+ _do_poison 'inject' "$@"
}
-clear_poison_sysfs()
+clear_poison()
{
- _do_poison_sysfs 'clear' "$@"
+ _do_poison 'clear' "$@"
}
check_trace_entry()
@@ -119,27 +124,27 @@ validate_poison_found()
test_poison_by_memdev_by_dpa()
{
find_memdev
- inject_poison_sysfs "$memdev" "0x40000000"
- inject_poison_sysfs "$memdev" "0x40001000"
- inject_poison_sysfs "$memdev" "0x600"
- inject_poison_sysfs "$memdev" "0x0"
+ inject_poison "$memdev" "0x40000000"
+ inject_poison "$memdev" "0x40001000"
+ inject_poison "$memdev" "0x600"
+ inject_poison "$memdev" "0x0"
validate_poison_found "-m $memdev" 4
- clear_poison_sysfs "$memdev" "0x40000000"
- clear_poison_sysfs "$memdev" "0x40001000"
- clear_poison_sysfs "$memdev" "0x600"
- clear_poison_sysfs "$memdev" "0x0"
+ clear_poison "$memdev" "0x40000000"
+ clear_poison "$memdev" "0x40001000"
+ clear_poison "$memdev" "0x600"
+ clear_poison "$memdev" "0x0"
validate_poison_found "-m $memdev" 0
}
test_poison_by_region_by_dpa()
{
- inject_poison_sysfs "$mem0" "0"
- inject_poison_sysfs "$mem1" "0"
+ inject_poison "$mem0" "0"
+ inject_poison "$mem1" "0"
validate_poison_found "-r $region" 2
- clear_poison_sysfs "$mem0" "0"
- clear_poison_sysfs "$mem1" "0"
+ clear_poison "$mem0" "0"
+ clear_poison "$mem1" "0"
validate_poison_found "-r $region" 0
}
@@ -166,15 +171,15 @@ test_poison_by_region_offset()
# Inject at the offset and check result using the hpa
# ABI takes an offset, but recall the hpa to check trace event
- inject_poison_sysfs "$region" "$cache_size"
+ inject_poison "$region" "$cache_size"
check_trace_entry "$region" "$hpa1"
- inject_poison_sysfs "$region" "$((gran + cache_size))"
+ inject_poison "$region" "$((gran + cache_size))"
check_trace_entry "$region" "$hpa2"
validate_poison_found "-r $region" 2
- clear_poison_sysfs "$region" "$cache_size"
+ clear_poison "$region" "$cache_size"
check_trace_entry "$region" "$hpa1"
- clear_poison_sysfs "$region" "$((gran + cache_size))"
+ clear_poison "$region" "$((gran + cache_size))"
check_trace_entry "$region" "$hpa2"
validate_poison_found "-r $region" 0
}
@@ -194,21 +199,21 @@ test_poison_by_region_offset_negative()
if [[ $cache_size -gt 0 ]]; then
cache_offset=$((cache_size - 1))
echo "Testing offset within cache: $cache_offset (cache_size: $cache_size)"
- inject_poison_sysfs "$region" "$cache_offset" true
- clear_poison_sysfs "$region" "$cache_offset" true
+ inject_poison "$region" "$cache_offset" true
+ clear_poison "$region" "$cache_offset" true
else
echo "Skipping cache test - cache_size is 0"
fi
# Offset exceeds region size
exceed_offset=$((region_size))
- inject_poison_sysfs "$region" "$exceed_offset" true
- clear_poison_sysfs "$region" "$exceed_offset" true
+ inject_poison "$region" "$exceed_offset" true
+ clear_poison "$region" "$exceed_offset" true
# Offset exceeds region size by a lot
large_offset=$((region_size * 2))
- inject_poison_sysfs "$region" "$large_offset" true
- clear_poison_sysfs "$region" "$large_offset" true
+ inject_poison "$region" "$large_offset" true
+ clear_poison "$region" "$large_offset" true
}
run_poison_test()
--
2.37.3
prev parent reply other threads:[~2025-12-17 5:01 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-15 21:36 [ndctl PATCH v5 0/7] Add error injection support Ben Cheatham
2025-12-15 21:36 ` [PATCH v5 1/7] libcxl: Add debugfs path to CXL context Ben Cheatham
2025-12-17 4:26 ` Alison Schofield
2025-12-17 19:55 ` Cheatham, Benjamin
2025-12-15 21:36 ` [PATCH v5 2/7] libcxl: Add CXL protocol errors Ben Cheatham
2025-12-17 4:31 ` Alison Schofield
2025-12-17 19:55 ` Cheatham, Benjamin
2025-12-19 4:38 ` Alison Schofield
2026-01-05 21:00 ` Cheatham, Benjamin
2025-12-15 21:36 ` [PATCH v5 3/7] libcxl: Add poison injection support Ben Cheatham
2025-12-15 21:36 ` [PATCH v5 4/7] cxl: Add inject-error command Ben Cheatham
2025-12-17 4:36 ` Alison Schofield
2025-12-17 19:56 ` Cheatham, Benjamin
2025-12-15 21:36 ` [PATCH v5 5/7] cxl: Add clear-error command Ben Cheatham
2025-12-17 4:39 ` Alison Schofield
2025-12-17 19:56 ` Cheatham, Benjamin
2025-12-15 21:36 ` [PATCH v5 6/7] cxl/list: Add injectable errors in output Ben Cheatham
2025-12-15 21:36 ` [PATCH v5 7/7] Documentation: Add docs for inject/clear-error commands Ben Cheatham
2025-12-17 4:42 ` Alison Schofield
2025-12-17 19:56 ` Cheatham, Benjamin
2025-12-19 4:52 ` Alison Schofield
2026-01-05 21:13 ` Cheatham, Benjamin
2026-01-06 4:41 ` Alison Schofield
2025-12-17 4:47 ` [ndctl PATCH v5 0/7] Add error injection support Alison Schofield
2025-12-17 19:56 ` Cheatham, Benjamin
2025-12-19 5:08 ` Alison Schofield
2026-01-05 21:14 ` Cheatham, Benjamin
2025-12-17 5:00 ` Alison Schofield [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251217050100.2393796-1-alison.schofield@intel.com \
--to=alison.schofield@intel.com \
--cc=Benjamin.Cheatham@amd.com \
--cc=linux-cxl@vger.kernel.org \
--cc=nvdimm@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox