Linux CXL
 help / color / mirror / Atom feed
From: Alison Schofield <alison.schofield@intel.com>
To: Dave Jiang <dave.jiang@intel.com>
Cc: <linux-cxl@vger.kernel.org>, <nvdimm@lists.linux.dev>
Subject: Re: [NDCTL PATCH] cxl: Add CXL type2 accelerator unit test
Date: Tue, 5 May 2026 21:14:01 -0700	[thread overview]
Message-ID: <afrACW-GUhsIs0cQ@aschofie-mobl2.lan> (raw)
In-Reply-To: <20260422230833.2622279-1-dave.jiang@intel.com>

On Wed, Apr 22, 2026 at 04:08:33PM -0700, Dave Jiang wrote:
> CXL type2 hierachy can be setup via the cxl_test. Add a regression test
> unit to CXL CLI to verify the type2 loading/unloading. Test include
> removing the root port and bringing it back as well as unbinding the
> type2 mock device driver and bringing it back. The expectation is that
> the auto region should return.

I guess I'd like some words here about what is important to test, and
how much type2 we can test with the accel mock driver. This topology is
limited to an auto region with a single device which I believe matches
our kernel implementation.  BTW, is that spec limit or linux implementation
limit?

How about checking that it cannot be destroyed? That's one we've been
discussing for the kernel.

How about disable/enable memdev?

I'd like to see replay_region run here too. You've already set this up
as an autoregion, but running the replay_region means we've kept the
topology rebuild in tact.

I did run this test with your kernel branch.

More below...

> 
> Signed-off-by: Dave Jiang <dave.jiang@intel.com>
> ---
>  test/cxl-type2.sh | 71 +++++++++++++++++++++++++++++++++++++++++++++++
>  test/meson.build  |  2 ++
>  2 files changed, 73 insertions(+)
>  create mode 100644 test/cxl-type2.sh
> 
> diff --git a/test/cxl-type2.sh b/test/cxl-type2.sh
> new file mode 100644
> index 000000000000..0ece0c4f6ddb
> --- /dev/null
> +++ b/test/cxl-type2.sh
> @@ -0,0 +1,71 @@
> +#!/bin/bash
> +# SPDX-License-Identifier: GPL-2.0
> +# Copyright (C) 2026 Intel Corporation. All rights reserved.
> +
> +. "$(dirname "$0")"/common
> +
> +rc=77
> +
> +set -ex
> +
> +trap 'err $LINENO' ERR
> +
> +check_prereq "jq"
> +
> +remove_kmod() {
> +	modprobe -r cxl_test
> +}
> +
> +load_kmod() {
> +	modprobe cxl_test type2_test=1
> +}
> +
> +init_check() {
> +	load_kmod
> +	[ -f /sys/module/cxl_test/parameters/type2_test ] || \
> +		do_skip "cxl_test type2_test module param not available"
> +	region=$("$CXL" list -b cxl_test -R | jq -r '.[0].region')
> +	[ -n "$region" ] || err "$LINENO"
> +	check_dmesg "$LINENO"
> +	remove_kmod
> +}

This is different than other scripts, including the 3x load/unload
cycles and 3x the check_dmesg surface area. Unless you are looking
for something special in kernel log, and in that case we can look
for that specifically.

Suggest following the typical test pattern of:

check_prereq like you have, then:

unload
load
check for skip
rc=1  /* rc=1 after we pass the skip test meaning failures are real */

...do testing...


check_dmesg
unload


> +
> +# Test rootport disable/enable case
> +cycle_root_port() {
> +	load_kmod
> +	port=$("$CXL" list -b cxl_test -P | jq -r '.[0].port')
> +	[ -n "$port" ] || err "$LINENO"
> +
> +	"$CXL" disable-port "$port" -f
> +	region=$(cxl list -b cxl_test -R | jq -r '.[0].region // empty')

s/cxl/"$CXL"
s/cxl_test/"$CXL_TEST_BUS"
more of those need fixup below

> +	[ -z "$region" ] || err "$LINENO"
> +
> +	"$CXL" enable-port "$port"
> +	echo cxl_type2_accel.0 > /sys/bus/platform/drivers/cxl_mock_accel/bind
> +	region=$(cxl list -b cxl_test -R | jq -r '.[0].region')
> +	[ -n "$region" ] || err "$LINENO"
> +	check_dmesg "$LINENO"
> +	remove_kmod
> +}
> +
> +# Test reload firmware case

firmware

> +cycle_pdev_driver() {
> +	load_kmod
> +	region=$("$CXL" list -b cxl_test -R | jq -r '.[0].region')
> +	[ -n "$region" ] || err "$LINENO"
> +	echo cxl_type2_accel.0 > /sys/bus/platform/drivers/cxl_mock_accel/unbind
> +	region=$("$CXL" list -b cxl_test -R | jq -r '.[0].region // empty')
> +	[ -z "$region" ] || err "$LINENO"
> +	echo cxl_type2_accel.0 > /sys/bus/platform/drivers/cxl_mock_accel/bind
> +	region=$("$CXL" list -b cxl_test -R | jq -r '.[0].region')
> +	[ -n "$region" ] || err "$LINENO"
> +	check_dmesg "$LINENO"
> +	remove_kmod
> +}
> +
> +remove_kmod
> +rc=1
> +
> +init_check
> +cycle_root_port
> +cycle_pdev_driver
> diff --git a/test/meson.build b/test/meson.build
> index e0e2193bfd51..567347b655d2 100644
> --- a/test/meson.build
> +++ b/test/meson.build
> @@ -171,6 +171,7 @@ cxl_translate = find_program('cxl-translate.sh')
>  cxl_elc = find_program('cxl-elc.sh')
>  cxl_dax_hmem = find_program('cxl-dax-hmem.sh')
>  cxl_region_replay = find_program('cxl-region-replay.sh')
> +cxl_type2 = find_program('cxl-type2.sh')
>  
>  tests = [
>    [ 'libndctl',               libndctl,		  'ndctl' ],
> @@ -207,6 +208,7 @@ tests = [
>    [ 'cxl-elc.sh',             cxl_elc,            'cxl'   ],
>    [ 'cxl-dax-hmem.sh',        cxl_dax_hmem,       'cxl'   ],
>    [ 'cxl-region-replay.sh',   cxl_region_replay,  'cxl'   ],
> +  [ 'cxl-type2.sh',           cxl_type2,          'cxl'   ],
>  ]
>  
>  if get_option('destructive').enabled()
> 
> base-commit: 81c7cdd6cbcb4f1f77870ff02d8dd86298036f58
> -- 
> 2.53.0
> 

      reply	other threads:[~2026-05-06  4:14 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-22 23:08 [NDCTL PATCH] cxl: Add CXL type2 accelerator unit test Dave Jiang
2026-05-06  4:14 ` 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=afrACW-GUhsIs0cQ@aschofie-mobl2.lan \
    --to=alison.schofield@intel.com \
    --cc=dave.jiang@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