From: Jason Gunthorpe <jgg@nvidia.com>
To: Nicolin Chen <nicolinc@nvidia.com>, Michael Shavit <mshavit@google.com>
Cc: iommu@lists.linux.dev, Joerg Roedel <joro@8bytes.org>,
linux-arm-kernel@lists.infradead.org,
Robin Murphy <robin.murphy@arm.com>,
Will Deacon <will@kernel.org>, Eric Auger <eric.auger@redhat.com>,
Moritz Fischer <mdf@kernel.org>,
Moritz Fischer <moritzf@google.com>,
patches@lists.linux.dev,
Shameerali Kolothum Thodi <shameerali.kolothum.thodi@huawei.com>,
Mostafa Saleh <smostafa@google.com>
Subject: Re: [PATCH v7 9/9] iommu/arm-smmu-v3: Add unit tests for arm_smmu_write_entry
Date: Wed, 17 Apr 2024 11:16:18 -0300 [thread overview]
Message-ID: <20240417141618.GS3637727@nvidia.com> (raw)
In-Reply-To: <Zh+DxJoAMIXy9O/R@Asurada-Nvidia>
On Wed, Apr 17, 2024 at 01:09:40AM -0700, Nicolin Chen wrote:
> On Tue, Apr 16, 2024 at 04:28:20PM -0300, Jason Gunthorpe wrote:
> > Add tests for some of the more common STE update operations that we expect
> > to see, as well as some artificial STE updates to test the edges of
> > arm_smmu_write_entry. These also serve as a record of which common
> > operation is expected to be hitless, and how many syncs they require.
> >
> > arm_smmu_write_entry implements a generic algorithm that updates an STE/CD
> > to any other abritrary STE/CD configuration. The update requires a
> > sequence of write+sync operations with some invariants that must be held
> > true after each sync. arm_smmu_write_entry lends itself well to
> > unit-testing since the function's interaction with the STE/CD is already
> > abstracted by input callbacks that we can hook to introspect into the
> > sequence of operations. We can use these hooks to guarantee that
> > invariants are held throughout the entire update operation.
> >
> > Link: https://lore.kernel.org/r/20240106083617.1173871-3-mshavit@google.com
> > Signed-off-by: Michael Shavit <mshavit@google.com>
> > Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
> > ---
> > drivers/iommu/Kconfig | 12 +-
> > drivers/iommu/arm/arm-smmu-v3/Makefile | 2 +
> > .../iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c | 6 +-
> > .../iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c | 467 ++++++++++++++++++
> > drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 36 +-
> > drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 30 ++
>
> > +config ARM_SMMU_V3_KUNIT_TEST
> > + tristate "KUnit tests for arm-smmu-v3 driver" if !KUNIT_ALL_TESTS
> > + depends on KUNIT
> > + default KUNIT_ALL_TESTS
> > + help
> > + Enable this option to unit-test arm-smmu-v3 driver functions.
> > +
> > + If unsure, say N.
>
> Forgot that my SVA sanity doesn't cover this patch. And it looks
> like some problems here when building it with "=m":
>
> ERROR: modpost: missing MODULE_LICENSE() in drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.o
> ERROR: modpost: "arm_smmu_make_cdtable_ste" [drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.ko] undefined!
> ERROR: modpost: "arm_smmu_make_bypass_ste" [drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.ko] undefined!
> ERROR: modpost: "arm_smmu_make_abort_ste" [drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.ko] undefined!
> ERROR: modpost: "arm_smmu_make_s2_domain_ste" [drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.ko] undefined!
> ERROR: modpost: "arm_smmu_get_ste_used" [drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.ko] undefined!
> ERROR: modpost: "arm_smmu_write_entry" [drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.ko] undefined!
>
> Likely needs MODULE_LICENSE and some EXPORT_SYMBOLs.
Oh! The kbuild never tested this kconfig combination...
I think just this? Michael?
diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig
index d03c729c4142dc..7b6a4e244e99cf 100644
--- a/drivers/iommu/Kconfig
+++ b/drivers/iommu/Kconfig
@@ -411,7 +411,7 @@ config ARM_SMMU_V3_SVA
and PRI.
config ARM_SMMU_V3_KUNIT_TEST
- tristate "KUnit tests for arm-smmu-v3 driver" if !KUNIT_ALL_TESTS
+ bool "KUnit tests for arm-smmu-v3 driver" if !KUNIT_ALL_TESTS
depends on KUNIT
default KUNIT_ALL_TESTS
help
diff --git a/drivers/iommu/arm/arm-smmu-v3/Makefile b/drivers/iommu/arm/arm-smmu-v3/Makefile
index 014a997753a8a2..0b97054b3929b7 100644
--- a/drivers/iommu/arm/arm-smmu-v3/Makefile
+++ b/drivers/iommu/arm/arm-smmu-v3/Makefile
@@ -2,6 +2,5 @@
obj-$(CONFIG_ARM_SMMU_V3) += arm_smmu_v3.o
arm_smmu_v3-objs-y += arm-smmu-v3.o
arm_smmu_v3-objs-$(CONFIG_ARM_SMMU_V3_SVA) += arm-smmu-v3-sva.o
+arm_smmu_v3-objs-$(CONFIG_ARM_SMMU_V3_KUNIT_TEST) += arm-smmu-v3-test.o
arm_smmu_v3-objs := $(arm_smmu_v3-objs-y)
-
-obj-$(CONFIG_ARM_SMMU_V3_KUNIT_TEST) += arm-smmu-v3-test.o
Jason
WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg@nvidia.com>
To: Nicolin Chen <nicolinc@nvidia.com>, Michael Shavit <mshavit@google.com>
Cc: iommu@lists.linux.dev, Joerg Roedel <joro@8bytes.org>,
linux-arm-kernel@lists.infradead.org,
Robin Murphy <robin.murphy@arm.com>,
Will Deacon <will@kernel.org>, Eric Auger <eric.auger@redhat.com>,
Moritz Fischer <mdf@kernel.org>,
Moritz Fischer <moritzf@google.com>,
patches@lists.linux.dev,
Shameerali Kolothum Thodi <shameerali.kolothum.thodi@huawei.com>,
Mostafa Saleh <smostafa@google.com>
Subject: Re: [PATCH v7 9/9] iommu/arm-smmu-v3: Add unit tests for arm_smmu_write_entry
Date: Wed, 17 Apr 2024 11:16:18 -0300 [thread overview]
Message-ID: <20240417141618.GS3637727@nvidia.com> (raw)
In-Reply-To: <Zh+DxJoAMIXy9O/R@Asurada-Nvidia>
On Wed, Apr 17, 2024 at 01:09:40AM -0700, Nicolin Chen wrote:
> On Tue, Apr 16, 2024 at 04:28:20PM -0300, Jason Gunthorpe wrote:
> > Add tests for some of the more common STE update operations that we expect
> > to see, as well as some artificial STE updates to test the edges of
> > arm_smmu_write_entry. These also serve as a record of which common
> > operation is expected to be hitless, and how many syncs they require.
> >
> > arm_smmu_write_entry implements a generic algorithm that updates an STE/CD
> > to any other abritrary STE/CD configuration. The update requires a
> > sequence of write+sync operations with some invariants that must be held
> > true after each sync. arm_smmu_write_entry lends itself well to
> > unit-testing since the function's interaction with the STE/CD is already
> > abstracted by input callbacks that we can hook to introspect into the
> > sequence of operations. We can use these hooks to guarantee that
> > invariants are held throughout the entire update operation.
> >
> > Link: https://lore.kernel.org/r/20240106083617.1173871-3-mshavit@google.com
> > Signed-off-by: Michael Shavit <mshavit@google.com>
> > Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
> > ---
> > drivers/iommu/Kconfig | 12 +-
> > drivers/iommu/arm/arm-smmu-v3/Makefile | 2 +
> > .../iommu/arm/arm-smmu-v3/arm-smmu-v3-sva.c | 6 +-
> > .../iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c | 467 ++++++++++++++++++
> > drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 36 +-
> > drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 30 ++
>
> > +config ARM_SMMU_V3_KUNIT_TEST
> > + tristate "KUnit tests for arm-smmu-v3 driver" if !KUNIT_ALL_TESTS
> > + depends on KUNIT
> > + default KUNIT_ALL_TESTS
> > + help
> > + Enable this option to unit-test arm-smmu-v3 driver functions.
> > +
> > + If unsure, say N.
>
> Forgot that my SVA sanity doesn't cover this patch. And it looks
> like some problems here when building it with "=m":
>
> ERROR: modpost: missing MODULE_LICENSE() in drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.o
> ERROR: modpost: "arm_smmu_make_cdtable_ste" [drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.ko] undefined!
> ERROR: modpost: "arm_smmu_make_bypass_ste" [drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.ko] undefined!
> ERROR: modpost: "arm_smmu_make_abort_ste" [drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.ko] undefined!
> ERROR: modpost: "arm_smmu_make_s2_domain_ste" [drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.ko] undefined!
> ERROR: modpost: "arm_smmu_get_ste_used" [drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.ko] undefined!
> ERROR: modpost: "arm_smmu_write_entry" [drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.ko] undefined!
>
> Likely needs MODULE_LICENSE and some EXPORT_SYMBOLs.
Oh! The kbuild never tested this kconfig combination...
I think just this? Michael?
diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig
index d03c729c4142dc..7b6a4e244e99cf 100644
--- a/drivers/iommu/Kconfig
+++ b/drivers/iommu/Kconfig
@@ -411,7 +411,7 @@ config ARM_SMMU_V3_SVA
and PRI.
config ARM_SMMU_V3_KUNIT_TEST
- tristate "KUnit tests for arm-smmu-v3 driver" if !KUNIT_ALL_TESTS
+ bool "KUnit tests for arm-smmu-v3 driver" if !KUNIT_ALL_TESTS
depends on KUNIT
default KUNIT_ALL_TESTS
help
diff --git a/drivers/iommu/arm/arm-smmu-v3/Makefile b/drivers/iommu/arm/arm-smmu-v3/Makefile
index 014a997753a8a2..0b97054b3929b7 100644
--- a/drivers/iommu/arm/arm-smmu-v3/Makefile
+++ b/drivers/iommu/arm/arm-smmu-v3/Makefile
@@ -2,6 +2,5 @@
obj-$(CONFIG_ARM_SMMU_V3) += arm_smmu_v3.o
arm_smmu_v3-objs-y += arm-smmu-v3.o
arm_smmu_v3-objs-$(CONFIG_ARM_SMMU_V3_SVA) += arm-smmu-v3-sva.o
+arm_smmu_v3-objs-$(CONFIG_ARM_SMMU_V3_KUNIT_TEST) += arm-smmu-v3-test.o
arm_smmu_v3-objs := $(arm_smmu_v3-objs-y)
-
-obj-$(CONFIG_ARM_SMMU_V3_KUNIT_TEST) += arm-smmu-v3-test.o
Jason
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2024-04-17 14:16 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-16 19:28 [PATCH v7 0/9] Make the SMMUv3 CD logic match the new STE design (part 2a/3) Jason Gunthorpe
2024-04-16 19:28 ` Jason Gunthorpe
2024-04-16 19:28 ` [PATCH v7 1/9] iommu/arm-smmu-v3: Add an ops indirection to the STE code Jason Gunthorpe
2024-04-16 19:28 ` Jason Gunthorpe
2024-04-16 20:18 ` Nicolin Chen
2024-04-16 20:18 ` Nicolin Chen
2024-04-19 21:02 ` Mostafa Saleh
2024-04-19 21:02 ` Mostafa Saleh
2024-04-22 13:09 ` Jason Gunthorpe
2024-04-22 13:09 ` Jason Gunthorpe
2024-04-16 19:28 ` [PATCH v7 2/9] iommu/arm-smmu-v3: Make CD programming use arm_smmu_write_entry() Jason Gunthorpe
2024-04-16 19:28 ` Jason Gunthorpe
2024-04-16 20:48 ` Nicolin Chen
2024-04-16 20:48 ` Nicolin Chen
2024-04-18 13:01 ` Robin Murphy
2024-04-18 13:01 ` Robin Murphy
2024-04-18 16:08 ` Jason Gunthorpe
2024-04-18 16:08 ` Jason Gunthorpe
2024-04-19 21:07 ` Mostafa Saleh
2024-04-19 21:07 ` Mostafa Saleh
2024-04-22 13:29 ` Jason Gunthorpe
2024-04-22 13:29 ` Jason Gunthorpe
2024-04-27 22:08 ` Mostafa Saleh
2024-04-27 22:08 ` Mostafa Saleh
2024-04-29 14:29 ` Jason Gunthorpe
2024-04-29 14:29 ` Jason Gunthorpe
2024-04-29 15:30 ` Mostafa Saleh
2024-04-29 15:30 ` Mostafa Saleh
2024-04-16 19:28 ` [PATCH v7 3/9] iommu/arm-smmu-v3: Move the CD generation for S1 domains into a function Jason Gunthorpe
2024-04-16 19:28 ` Jason Gunthorpe
2024-04-16 21:22 ` Nicolin Chen
2024-04-16 21:22 ` Nicolin Chen
2024-04-19 21:10 ` Mostafa Saleh
2024-04-19 21:10 ` Mostafa Saleh
2024-04-22 13:52 ` Jason Gunthorpe
2024-04-22 13:52 ` Jason Gunthorpe
2024-04-16 19:28 ` [PATCH v7 4/9] iommu/arm-smmu-v3: Consolidate clearing a CD table entry Jason Gunthorpe
2024-04-16 19:28 ` Jason Gunthorpe
2024-04-16 19:28 ` [PATCH v7 5/9] iommu/arm-smmu-v3: Make arm_smmu_alloc_cd_ptr() Jason Gunthorpe
2024-04-16 19:28 ` Jason Gunthorpe
2024-04-16 22:19 ` Nicolin Chen
2024-04-16 22:19 ` Nicolin Chen
2024-04-19 21:14 ` Mostafa Saleh
2024-04-19 21:14 ` Mostafa Saleh
2024-04-22 14:20 ` Jason Gunthorpe
2024-04-22 14:20 ` Jason Gunthorpe
2024-04-27 22:19 ` Mostafa Saleh
2024-04-27 22:19 ` Mostafa Saleh
2024-04-29 14:01 ` Jason Gunthorpe
2024-04-29 14:01 ` Jason Gunthorpe
2024-04-29 14:47 ` Mostafa Saleh
2024-04-29 14:47 ` Mostafa Saleh
2024-04-29 14:55 ` Jason Gunthorpe
2024-04-29 14:55 ` Jason Gunthorpe
2024-04-16 19:28 ` [PATCH v7 6/9] iommu/arm-smmu-v3: Allocate the CD table entry in advance Jason Gunthorpe
2024-04-16 19:28 ` Jason Gunthorpe
2024-04-16 19:28 ` [PATCH v7 7/9] iommu/arm-smmu-v3: Move the CD generation for SVA into a function Jason Gunthorpe
2024-04-16 19:28 ` Jason Gunthorpe
2024-04-17 7:37 ` Nicolin Chen
2024-04-17 7:37 ` Nicolin Chen
2024-04-17 13:17 ` Jason Gunthorpe
2024-04-17 13:17 ` Jason Gunthorpe
2024-04-17 16:25 ` Nicolin Chen
2024-04-17 16:25 ` Nicolin Chen
2024-04-17 16:26 ` Nicolin Chen
2024-04-17 16:26 ` Nicolin Chen
2024-04-18 4:40 ` Michael Shavit
2024-04-18 4:40 ` Michael Shavit
2024-04-18 14:28 ` Jason Gunthorpe
2024-04-18 14:28 ` Jason Gunthorpe
2024-04-16 19:28 ` [PATCH v7 8/9] iommu/arm-smmu-v3: Build the whole CD in arm_smmu_make_s1_cd() Jason Gunthorpe
2024-04-16 19:28 ` Jason Gunthorpe
2024-04-17 7:43 ` Nicolin Chen
2024-04-17 7:43 ` Nicolin Chen
2024-04-16 19:28 ` [PATCH v7 9/9] iommu/arm-smmu-v3: Add unit tests for arm_smmu_write_entry Jason Gunthorpe
2024-04-16 19:28 ` Jason Gunthorpe
2024-04-17 8:09 ` Nicolin Chen
2024-04-17 8:09 ` Nicolin Chen
2024-04-17 14:16 ` Jason Gunthorpe [this message]
2024-04-17 14:16 ` Jason Gunthorpe
2024-04-17 16:13 ` Nicolin Chen
2024-04-17 16:13 ` Nicolin Chen
2024-04-18 4:39 ` Michael Shavit
2024-04-18 4:39 ` Michael Shavit
2024-04-18 12:48 ` Jason Gunthorpe
2024-04-18 12:48 ` Jason Gunthorpe
2024-04-18 14:34 ` Michael Shavit
2024-04-18 14:34 ` Michael Shavit
2024-04-19 21:24 ` Mostafa Saleh
2024-04-19 21:24 ` Mostafa Saleh
2024-04-22 14:24 ` Jason Gunthorpe
2024-04-22 14:24 ` Jason Gunthorpe
2024-04-27 22:33 ` Mostafa Saleh
2024-04-27 22:33 ` Mostafa Saleh
2024-04-16 19:40 ` [PATCH v7 0/9] Make the SMMUv3 CD logic match the new STE design (part 2a/3) Nicolin Chen
2024-04-16 19:40 ` Nicolin Chen
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=20240417141618.GS3637727@nvidia.com \
--to=jgg@nvidia.com \
--cc=eric.auger@redhat.com \
--cc=iommu@lists.linux.dev \
--cc=joro@8bytes.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=mdf@kernel.org \
--cc=moritzf@google.com \
--cc=mshavit@google.com \
--cc=nicolinc@nvidia.com \
--cc=patches@lists.linux.dev \
--cc=robin.murphy@arm.com \
--cc=shameerali.kolothum.thodi@huawei.com \
--cc=smostafa@google.com \
--cc=will@kernel.org \
/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.