[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <0edb4c4a-5177-c535-dd7f-f7062797d86d@linux.intel.com>
Date: Mon, 12 Jan 2026 20:11:15 +0200 (EET)
From: Ilpo Järvinen <ilpo.jarvinen@...ux.intel.com>
To: Armin Wolf <W_Armin@....de>
cc: Hans de Goede <hansg@...nel.org>, platform-driver-x86@...r.kernel.org,
LKML <linux-kernel@...r.kernel.org>, linux@...ssschuh.net,
Dell.Client.Kernel@...l.com, corbet@....net, linux-doc@...r.kernel.org
Subject: Re: [PATCH v3 4/9] platform/wmi: Add kunit test for the string
conversion code
On Mon, 12 Jan 2026, Armin Wolf wrote:
> Am 12.01.26 um 17:34 schrieb Ilpo Järvinen:
>
> > On Fri, 9 Jan 2026, Armin Wolf wrote:
> >
> > > The string conversion frunctions provided by the WMI driver core
> > > have no dependencies on the remaining WMI API, making them suitable
> > > for unit tests.
> > >
> > > Implement such a unit test using kunit. Those unit tests verify that
> > > converting between WMI strings and UTF8 strings works as expected.
> > > They also verify that edge cases are handled correctly.
> > >
> > > Signed-off-by: Armin Wolf <W_Armin@....de>
> > > ---
> > > drivers/platform/wmi/tests/Kconfig | 11 +
> > > drivers/platform/wmi/tests/Makefile | 3 +
> > > drivers/platform/wmi/tests/string_kunit.c | 278 ++++++++++++++++++++++
> > > 3 files changed, 292 insertions(+)
> > > create mode 100644 drivers/platform/wmi/tests/string_kunit.c
> > >
> > > diff --git a/drivers/platform/wmi/tests/Kconfig
> > > b/drivers/platform/wmi/tests/Kconfig
> > > index efcbcb51c251..f7f0f3c540f5 100644
> > > --- a/drivers/platform/wmi/tests/Kconfig
> > > +++ b/drivers/platform/wmi/tests/Kconfig
> > > @@ -14,3 +14,14 @@ config ACPI_WMI_MARSHALLING_KUNIT_TEST
> > > to the KUnit documentation in Documentation/dev-tools/kunit/.
> > > If unsure, say N.
> > > +
> > > +config ACPI_WMI_STRING_KUNIT_TEST
> > > + tristate "KUnit Test for ACPI-WMI string conversion" if
> > > !KUNIT_ALL_TESTS
> > > + depends on KUNIT
> > > + default KUNIT_ALL_TESTS
> > > + help
> > > + This builds unit tests for the ACPI-WMI string conversion code.
> > > + For more information on KUnit and unit tests in general, please
> > > refer
> > > + to the KUnit documentation in Documentation/dev-tools/kunit/.
> > > +
> > > + If unsure, say N.
> > > diff --git a/drivers/platform/wmi/tests/Makefile
> > > b/drivers/platform/wmi/tests/Makefile
> > > index 252c3125353a..62c438e26259 100644
> > > --- a/drivers/platform/wmi/tests/Makefile
> > > +++ b/drivers/platform/wmi/tests/Makefile
> > > @@ -6,3 +6,6 @@
> > > wmi_marshalling_kunit-y := marshalling_kunit.o
> > > obj-$(CONFIG_ACPI_WMI_MARSHALLING_KUNIT_TEST) +=
> > > wmi_marshalling_kunit.o
> > > +
> > > +wmi_string_kunit-y := string_kunit.o
> > > +obj-$(CONFIG_ACPI_WMI_STRING_KUNIT_TEST) += wmi_string_kunit.o
> > > diff --git a/drivers/platform/wmi/tests/string_kunit.c
> > > b/drivers/platform/wmi/tests/string_kunit.c
> > > new file mode 100644
> > > index 000000000000..9aa3ffa85090
> > > --- /dev/null
> > > +++ b/drivers/platform/wmi/tests/string_kunit.c
> > > @@ -0,0 +1,278 @@
> > > +// SPDX-License-Identifier: GPL-2.0-or-later
> > > +/*
> > > + * KUnit test for the ACPI-WMI string conversion code.
> > > + *
> > > + * Copyright (C) 2025 Armin Wolf <W_Armin@....de>
> > > + */
> > > +
> > > +#include <linux/module.h>
> > > +#include <linux/slab.h>
> > > +#include <linux/string.h>
> > > +#include <linux/wmi.h>
> > > +
> > > +#include <kunit/resource.h>
> > > +#include <kunit/test.h>
> > > +
> > > +#include <asm/byteorder.h>
> > > +
> > > +struct wmi_string_param {
> > > + const char *name;
> > > + const struct wmi_string *wmi_string;
> > > + /*
> > > + * Remember that using sizeof() on a struct wmi_string will
> > > + * always return a size of two bytes due to the flexible
> > > + * array member!
> > > + */
> > > + size_t wmi_string_length;
> > > + const u8 *utf8_string;
> > > + size_t utf8_string_length;
> > > +};
> > > +
> > > +#define TEST_WMI_STRING_LENGTH 12
> > > +
> > > +static const struct wmi_string test_wmi_string = {
> > > + .length = cpu_to_le16(10),
> > > + .chars = {
> > > + cpu_to_le16(u'T'),
> > I've applied this to for-next and intend to keep these there but FYI these
> > trigger sparse errors. I don't know if they're fixable or not with
> > reasonable effort on kernel side.
>
> To me it seems that sparse ignores the u-prefix signaling that the character
> constant
> has a length of 16-bits, but good catch.
>
> If this really is a problem then gcc would issue a warning anyway (happened
> when i was
> using the 🐧 character which does not fit into a 16-bit character constant).
I guess I'll have to add another filter to my build-test.sh for this file.
I already -v -e 'error: bad constant expression' filter in use. Sadly
sparse seems to be rotting.
--
i.
Powered by blists - more mailing lists