public inbox for nvdimm@lists.linux.dev
 help / color / mirror / Atom feed
From: Dave Jiang <dave.jiang@intel.com>
To: linux-cxl@vger.kernel.org, nvdimm@lists.linux.dev
Cc: dave@stgolabs.net, jonathan.cameron@huawei.com,
	alison.schofield@intel.com, vishal.l.verma@intel.com,
	ira.weiny@intel.com, dan.j.williams@intel.com
Subject: [NDCTL PATCH v2 2/2] cxl/test: Add support for poison test for ELC
Date: Thu, 20 Nov 2025 17:20:18 -0700	[thread overview]
Message-ID: <20251121002018.4136006-3-dave.jiang@intel.com> (raw)
In-Reply-To: <20251121002018.4136006-1-dave.jiang@intel.com>

Expand cxl-poison.sh test to include extended linear cache testing.
Additional adjustments are needed for test_poison_by_region_offset()
to test ELC functionality.

Signed-off-by: Dave Jiang <dave.jiang@intel.com>
---
 test/cxl-poison.sh | 61 +++++++++++++++++++++++++++++-----------------
 1 file changed, 39 insertions(+), 22 deletions(-)

diff --git a/test/cxl-poison.sh b/test/cxl-poison.sh
index 8dfed1877907..0cb7bc77b814 100644
--- a/test/cxl-poison.sh
+++ b/test/cxl-poison.sh
@@ -13,11 +13,6 @@ trap 'err $LINENO' ERR
 
 check_prereq "jq"
 
-modprobe -r cxl_test
-modprobe cxl_test
-
-rc=1
-
 # THEORY OF OPERATION: Exercise cxl-cli and cxl driver ability to
 # inject, clear, and get the poison list. Do it by memdev and by region.
 
@@ -150,9 +145,18 @@ test_poison_by_region_by_dpa()
 
 test_poison_by_region_offset()
 {
-	local base gran hpa1 hpa2
+	local base gran hpa1 hpa2 cache_size
 	base=$(cat /sys/bus/cxl/devices/"$region"/resource)
 	gran=$(cat /sys/bus/cxl/devices/"$region"/interleave_granularity)
+	cache_size=0
+
+	if [ -f "/sys/bus/cxl/devices/$region/extended_linear_cache_size" ]; then
+		cache_size=$(cat /sys/bus/cxl/devices/"$region"/extended_linear_cache_size)
+	fi
+
+	if [[ $cache_size -gt 0 ]]; then
+		base=$((base + cache_size))
+	fi
 
 	# Test two HPA addresses: base and base + granularity
 	# This hits the two memdevs in the region interleave.
@@ -162,15 +166,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" 0
+	inject_poison_sysfs "$region" "$cache_size"
 	check_trace_entry "$region" "$hpa1"
-	inject_poison_sysfs "$region" "$gran"
+	inject_poison_sysfs "$region" "$((gran + cache_size))"
 	check_trace_entry "$region" "$hpa2"
 	validate_poison_found "-r $region" 2
 
-	clear_poison_sysfs "$region" 0
+	clear_poison_sysfs "$region" "$cache_size"
 	check_trace_entry "$region" "$hpa1"
-	clear_poison_sysfs "$region" "$gran"
+	clear_poison_sysfs "$region" "$((gran + cache_size))"
 	check_trace_entry "$region" "$hpa2"
 	validate_poison_found "-r $region" 0
 }
@@ -207,19 +211,32 @@ test_poison_by_region_offset_negative()
 	clear_poison_sysfs "$region" "$large_offset" true
 }
 
-# Clear old trace events, enable cxl_poison, enable global tracing
-echo "" > /sys/kernel/tracing/trace
-echo 1 > /sys/kernel/tracing/events/cxl/cxl_poison/enable
-echo 1 > /sys/kernel/tracing/tracing_on
+run_poison_test()
+{
+	# Clear old trace events, enable cxl_poison, enable global tracing
+	echo "" > /sys/kernel/tracing/trace
+	echo 1 > /sys/kernel/tracing/events/cxl/cxl_poison/enable
+	echo 1 > /sys/kernel/tracing/tracing_on
 
-test_poison_by_memdev_by_dpa
-find_auto_region
-test_poison_by_region_by_dpa
-[ -f "/sys/kernel/debug/cxl/$region/inject_poison" ] ||
-       do_skip "test cases requires inject by region kernel support"
-test_poison_by_region_offset
-test_poison_by_region_offset_negative
+	test_poison_by_memdev_by_dpa
+	find_auto_region
+	test_poison_by_region_by_dpa
+	[ -f "/sys/kernel/debug/cxl/$region/inject_poison" ] ||
+		do_skip "test cases requires inject by region kernel support"
+	test_poison_by_region_offset
+	test_poison_by_region_offset_negative
 
-check_dmesg "$LINENO"
+	check_dmesg "$LINENO"
+}
+
+modprobe -r cxl_test
+modprobe cxl_test
+rc=1
+run_poison_test
 
 modprobe -r cxl-test
+modprobe cxl_test extended_linear_cache=1
+rc=1
+run_poison_test
+
+modprobe -r cxl_test
-- 
2.51.1


  parent reply	other threads:[~2025-11-21  0:20 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-21  0:20 [NDCTL PATCH v2 0/2] cxl: Add tests for extended linear cache support Dave Jiang
2025-11-21  0:20 ` [NDCTL PATCH v2 1/2] cxl/test: Add test " Dave Jiang
2025-12-02 22:15   ` Alison Schofield
2025-12-02 22:22     ` Alison Schofield
2025-11-21  0:20 ` Dave Jiang [this message]
2025-12-02 22:21   ` [NDCTL PATCH v2 2/2] cxl/test: Add support for poison test for ELC Alison Schofield

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=20251121002018.4136006-3-dave.jiang@intel.com \
    --to=dave.jiang@intel.com \
    --cc=alison.schofield@intel.com \
    --cc=dan.j.williams@intel.com \
    --cc=dave@stgolabs.net \
    --cc=ira.weiny@intel.com \
    --cc=jonathan.cameron@huawei.com \
    --cc=linux-cxl@vger.kernel.org \
    --cc=nvdimm@lists.linux.dev \
    --cc=vishal.l.verma@intel.com \
    /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