public inbox for linux-cxl@vger.kernel.org
 help / color / mirror / Atom feed
From: Alison Schofield <alison.schofield@intel.com>
To: nvdimm@lists.linux.dev, linux-cxl@vger.kernel.org
Cc: Dan Williams <dan.j.williams@intel.com>,
	Alison Schofield <alison.schofield@intel.com>
Subject: [ndctl PATCH] test/cxl-dax-hmem.sh: validate dax_hmem vs CXL collisions
Date: Wed,  1 Apr 2026 15:13:35 -0700	[thread overview]
Message-ID: <20260401221336.2894052-1-alison.schofield@intel.com> (raw)

From: Dan Williams <dan.j.williams@intel.com>

Use the new "cxl_test.hmem_test" and "cxl_test.fail_autoassemble"
module options to implement a new cxl-dax-hmem.sh test. The test
checks dax_hmem takeover of Soft Reserve ranges that collide with
autoassembled CXL regions. It depends on the cxl_mock_mem driver
to launch multiple async probes before the dax_hmem driver attaches.

[as: do_skip on missing params, explicit param usage, robust unload,
check_dmesg, misc style]

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Tested-by: Alison Schofield <alison.schofield@intel.com>
---
 test/cxl-dax-hmem.sh | 66 ++++++++++++++++++++++++++++++++++++++++++++
 test/meson.build     |  2 ++
 2 files changed, 68 insertions(+)
 create mode 100755 test/cxl-dax-hmem.sh

diff --git a/test/cxl-dax-hmem.sh b/test/cxl-dax-hmem.sh
new file mode 100755
index 000000000000..1c00ab021e03
--- /dev/null
+++ b/test/cxl-dax-hmem.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2026 Intel Corporation
+
+. $(dirname $0)/common
+
+rc=77
+
+set -ex
+
+trap 'err $LINENO' ERR
+
+check_prereq "jq"
+
+modinfo cxl_test | grep -q '^parm:.*hmem_test' || \
+	do_skip "cxl_test hmem_test module param not available"
+
+modinfo cxl_test | grep -q '^parm:.*fail_autoassemble' || \
+	do_skip "cxl_test fail_autoassemble module param not available"
+
+rc=1
+
+unload()
+{
+	modprobe -r dax_cxl 2>/dev/null || true
+	modprobe -r dax_hmem 2>/dev/null || true
+	modprobe -r cxl_mock_mem 2>/dev/null || true
+	modprobe -r cxl_test 2>/dev/null || true
+}
+
+find_dax_cxl()
+{
+	$DAXCTL list -R | jq -r \
+		'.[] | select(.path | contains("cxl_acpi.0")) | .path'
+}
+
+find_dax_hmem()
+{
+	$DAXCTL list -R | jq -r \
+		'.[] | select(.path | contains("hmem_platform.1")) | .path'
+}
+
+unload
+
+# Verify CXL autoassembly claims the Soft Reserve range before dax_hmem.
+modprobe cxl_mock_mem
+modprobe cxl_test hmem_test=1
+
+dax=$(find_dax_cxl)
+[[ -z "$dax" ]] && err $LINENO
+dax=$(find_dax_hmem)
+[[ -n "$dax" ]] && err $LINENO
+
+unload
+
+# Verify dax_hmem claims the Soft Reserve range when CXL autoassembly fails.
+modprobe cxl_mock_mem
+modprobe cxl_test hmem_test=1 fail_autoassemble=1
+
+dax=$(find_dax_cxl)
+[[ -n "$dax" ]] && err $LINENO
+dax=$(find_dax_hmem)
+[[ -z "$dax" ]] && err $LINENO
+
+unload
+check_dmesg "$LINENO"
diff --git a/test/meson.build b/test/meson.build
index 593edf552b36..4260a3fa4448 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -169,6 +169,7 @@ cxl_destroy_region = find_program('cxl-destroy-region.sh')
 cxl_qos_class = find_program('cxl-qos-class.sh')
 cxl_translate = find_program('cxl-translate.sh')
 cxl_elc = find_program('cxl-elc.sh')
+cxl_dax_hmem = find_program('cxl-dax-hmem.sh')
 
 tests = [
   [ 'libndctl',               libndctl,		  'ndctl' ],
@@ -203,6 +204,7 @@ tests = [
   [ 'cxl-qos-class.sh',       cxl_qos_class,      'cxl'   ],
   [ 'cxl-translate.sh',       cxl_translate,      'cxl'   ],
   [ 'cxl-elc.sh',             cxl_elc,            'cxl'   ],
+  [ 'cxl-dax-hmem.sh',        cxl_dax_hmem,       'cxl'   ],
 ]
 
 if get_option('destructive').enabled()
-- 
2.37.3


             reply	other threads:[~2026-04-01 22:13 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-01 22:13 Alison Schofield [this message]
2026-04-01 22:36 ` [ndctl PATCH] test/cxl-dax-hmem.sh: validate dax_hmem vs CXL collisions Dan Williams

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=20260401221336.2894052-1-alison.schofield@intel.com \
    --to=alison.schofield@intel.com \
    --cc=dan.j.williams@intel.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