[PATCH] iommu/arm-smmu-v3: Add unit tests for arm_smmu_write_entry

Michael Shavit mshavit at google.com
Tue Jan 16 01:23:02 PST 2024


On Sat, Jan 13, 2024 at 12:36 AM Jason Gunthorpe <jgg at nvidia.com> wrote:
>
> On Sat, Jan 06, 2024 at 04:36:16PM +0800, Michael Shavit wrote:
> > diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c
> > new file mode 100644
> > index 0000000000000..59ffcafb575fb
> > --- /dev/null
> > +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c
> > @@ -0,0 +1,329 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +#include <kunit/test.h>
>
> I added
>
> * Copyright 2024 Google LLC.
>
> Here, let me know if it should be something else

Thanks!

>
> > +     arm_smmu_get_ste_used(ops, ste->data, used_bits.data);
> > +     pr_debug("STE used bits: ");
> > +     print_hex_dump_debug(
> > +             "    ", DUMP_PREFIX_NONE, 16, 8, used_bits.data,
> > +             ARRAY_SIZE(used_bits.data) * sizeof(*used_bits.data), false);
>
> I fixed up alot of these weird sizeof things all over the three patches
>
> sizeof(struct arm_smmu_ste) is the correct way to get the size of the
> HW structure, no need to peek into data. This is because we use the
> struct as the pointer to an array so the whole struct must be
> correctly sized.
>
> ARRAY_SIZE(x.data)*(sizeof(*x.data)) == sizeof(x)
>
> Sadly there is no ARRAY_SIZE_FIELD()

Makes sense.


>
> I also made some hacky patches so smmuv3 would compile on x86 and ran
> this kunit on x86 - looks fine to me
>
> I'm going to put it in part 3, just because it is new and doesn't have
> any RB/TB tags like the rest of part 1.
>
> Thanks,
> Jason



More information about the linux-arm-kernel mailing list