From: Jonathan Cameron <jic23@kernel.org>
To: Alison Schofield <alison.schofield@intel.com>
Cc: Davidlohr Bueso <dave@stgolabs.net>,
Dave Jiang <dave.jiang@intel.com>,
Vishal Verma <vishal.l.verma@intel.com>,
Ira Weiny <iweiny@kernel.org>, Li Ming <ming.li@zohomail.com>,
Richard Cheng <icheng@nvidia.com>, <linux-cxl@vger.kernel.org>
Subject: Re: [PATCH 1/4] Documentation/driver-api/cxl: Add a testing page
Date: Fri, 16 Oct 2026 20:02:27 +0100 [thread overview]
Message-ID: <20261016200227.2dac18dd@jic23-hlaptop> (raw)
In-Reply-To: <as_1dGrwsPYTlZrp@aschofie-mobl2.lan>
On Wed, 14 Oct 2026 14:34:44 -0700
Alison Schofield <alison.schofield@intel.com> wrote:
> On Tue, Oct 13, 2026 at 09:17:52PM -0700, Alison Schofield wrote:
> > The CXL documentation does not describe the subsystem's testing
> > infrastructure or provide guidance on choosing between cxl_test
> > and KUnit.
> >
> > Add a testing page that describes when to use each framework, how
> > to run the tests, and how to add a CXL KUnit test.
>
> Gaobin's question about updating the CMD_CMD_RC_TABLE w the new 4.0
> definitions made me realize this doc could use some words around
> maintaining the kunit tests, ie keeping them running.
>
> see snippet below...
>
>
> > +
> > +KUnit
> > +=====
> > +
> > +KUnit tests run self-contained logic in the kernel without any CXL topology.
> > +KUnit is suited to logic that can be exercised with controlled test inputs,
> > +including encode/decode helpers, address translation and interleave calculations,
> > +parsers of device- or firmware-supplied data, and mailbox command handling
> > +through a stub transport.
> > +
> > +To run all of the CXL KUnit tests, from the top of the kernel tree::
> > +
> > + ./tools/testing/kunit/kunit.py run --kunitconfig=drivers/cxl
> > +
> > +This builds a test kernel in .kunit/ using drivers/cxl/.kunitconfig and runs it
> > +under User Mode Linux (UML). The running kernel is not modified, and no
> > +installation is required. The test kernel runs the tests, reports the results,
> > +and exits.
> > +
> > +Add --arch=x86_64 to run the tests under QEMU instead.
> > +
> > +Running during development
> > +--------------------------
> > +
> > +kunit.py builds in .kunit/, but kbuild does not allow an out-of-tree build when
> > +the source tree already contains an in-tree build. If you build the kernel
> > +in-tree, use a separate worktree for KUnit. The worktree contains the committed
> > +sources at the selected revision::
> > +
> > + git worktree add ../linux-kunit HEAD
> > + cd ../linux-kunit
> > + ./tools/testing/kunit/kunit.py run --kunitconfig=drivers/cxl
> > +
> > +To run a single suite, name it::
> > +
> > + ./tools/testing/kunit/kunit.py run --kunitconfig=drivers/cxl cxl_core_mbox
> > +
> > +Enable KASAN when testing memory safety error paths. It can detect an out-of-bounds
> > +access even when the resulting value does not cause a test assertion to fail::
> > +
> > + ./tools/testing/kunit/kunit.py run --kunitconfig=drivers/cxl \
> > + --arch=x86_64 --kconfig_add CONFIG_KASAN=y
> > +
>
> Here's what I think (so far) folks need to know about maintenance-
>
> Maintaining KUnit tests
> =======================
>
> Use loop bounds and table sizes from the code under test, such as
> ARRAY_SIZE() of a lookup table, so tests adapt as the code evolves.
> Derive expected results from the specification, not the implementation,
> so tests can detect unintended behavior changes.
>
> When a patch changes behavior covered by a test, update the test in the
> same patch. For example, add newly supported encodings to a valid-value
> table or adjust the expected errno for a new return code.
>
> A failing test may indicate a regression or a test that needs updating.
> Run the CXL KUnit tests throughout development, not just before posting,
> to catch either case while making changes.
>
Makes sense to me. With that added
Reviewed-by: Jonathan Cameron <jonathan.cameron@oss.qualcomm.com>
next prev parent reply other threads:[~2026-10-16 19:02 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-14 4:17 [PATCH 0/4] cxl: Add KUnit tests and documentation Alison Schofield
2026-10-14 4:17 ` [PATCH 1/4] Documentation/driver-api/cxl: Add a testing page Alison Schofield
2026-10-14 21:34 ` Alison Schofield
2026-10-16 19:02 ` Jonathan Cameron [this message]
2026-10-16 19:01 ` Jonathan Cameron
2026-10-19 20:44 ` Alison Schofield
2026-10-16 22:52 ` Anisa Su
2026-10-19 20:39 ` Alison Schofield
2026-10-14 4:17 ` [PATCH 2/4] cxl: Add KUnit tests for HDM decoder encoding helpers Alison Schofield
2026-10-15 9:16 ` Li Ming
2026-10-16 20:01 ` Jonathan Cameron
2026-10-19 21:09 ` Alison Schofield
2026-10-14 4:17 ` [PATCH 3/4] cxl/mbox: Treat unknown device return codes as errors Alison Schofield
2026-10-14 15:06 ` 黄高彬
2026-10-15 9:22 ` Li Ming
2026-10-19 21:01 ` Alison Schofield
2026-10-20 2:35 ` Li Ming
2026-10-16 20:03 ` Jonathan Cameron
2026-10-14 4:17 ` [PATCH 4/4] cxl/mbox: Add KUnit tests for cxl_internal_send_cmd() Alison Schofield
2026-10-15 9:37 ` Li Ming
2026-10-19 21:22 ` Alison Schofield
2026-10-20 2:34 ` Li Ming
2026-10-14 20:52 ` [PATCH 0/4] cxl: Add KUnit tests and documentation Dave Jiang
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=20261016200227.2dac18dd@jic23-hlaptop \
--to=jic23@kernel.org \
--cc=alison.schofield@intel.com \
--cc=dave.jiang@intel.com \
--cc=dave@stgolabs.net \
--cc=icheng@nvidia.com \
--cc=iweiny@kernel.org \
--cc=linux-cxl@vger.kernel.org \
--cc=ming.li@zohomail.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.