From nobody Tue Apr 7 07:34:16 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 11953330B11; Sat, 14 Mar 2026 17:53:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773510812; cv=none; b=Z7TidTRDH7fFZ/ZSViYCev+51dx4CfTeEyF931EAFUDEU6em0ZAdUVXisi04ge/Sfjj1tOIWcybfvEpikNDXH6l/Gj9G20KW2F3LLkZqO8rsjt5GlWLTvIia8+ftvk32ObZ7J9fWI8j5sNqNVvFtkUtn51nfZxuwQcpQOA5mDhk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773510812; c=relaxed/simple; bh=iOXEKFGxozfYT2NUFiHJmC8VWdHm8VnpsygnNb8YSLY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=iDA6qKs5xNCeq/iKN42+zUldgvrjsgV4UqFIWv6l2/mVGMCyjCrJGu4ZJ8jJHHJQZ2RAYRwWWQUsuBGNcHubLywkIHj9+X9nHJNzl3QR6UIzFqH/YmcNVA8ujKG18ixnvvfa1E+mQYYDCW02Ab6mfE0M3EFYQ1K3yHx1OPyTb+w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=OGrs7H7g; arc=none smtp.client-ip=212.227.15.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="OGrs7H7g" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1773510782; x=1774115582; i=w_armin@gmx.de; bh=oKFk8CoolvYHEzEuBDkKVucdbFD7sGZSY8c4spG/500=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=OGrs7H7gcyZuTxCI00kuhJVrr+vgf34/Y0YEflvbrtI16KMpHq5l0I8EoRzJOT1H +nENBeo7ef8lCeB1T/N1g97Ht5FdVuytEQY/HlD3ByE0pWjq8Yy3JBlRN0FNLyGVh YFJgx0LbpCzSsGbdkRG+NcFPCp0ipw+okLfC0Ib6/YqUjfddr4dlQLojHhxDdpNbB tCwToIUDhTupmNzldY1+401g4F5UVqPT885/KYIeU5nSZ4zKFh5OHsFm3A0aXYMmP HnkrQgGwbtpN90Rg+0CpcYsmbrHhey53wFW1WzuALCi4zoejTI/E/ogmJNQTT7rvt Ey6ZqabHHzRQ/002ow== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1Mr9Bk-1vENIG1BZO-00n9xS; Sat, 14 Mar 2026 18:53:02 +0100 From: Armin Wolf To: Dell.Client.Kernel@dell.com, pali@kernel.org, mjg59@srcf.ucam.org Cc: soyer@irl.hu, hansg@kernel.org, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, linux@roeck-us.net, linux-hwmon@vger.kernel.org, mario.limonciello@amd.com Subject: [PATCH v3 1/9] platform/x86: dell-descriptor: Use new buffer-based WMI API Date: Sat, 14 Mar 2026 18:52:41 +0100 Message-Id: <20260314175249.16040-2-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260314175249.16040-1-W_Armin@gmx.de> References: <20260314175249.16040-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:BtnbhIqX/A1IB6Bj8FV6VgsISu1pM2y3jqYjDxgFVTaEIuJFgJz hLfsKdxl5x4X5b69RZQNtN137MCFUgQf3bn9vM2/GUBozCmBPGUdpN6o5Fu0Fe9B8xYfato 94nU6jOmq24vDvR4mPQ5DlQnFva1/w0ho+H4vSHTczFwMnNTFLfNQhYG/ODMx5aYlQwUHrN RgwP1CEN91XHDd6ro5kzg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:6vZmgC2htaY=;ezm9QUUjB80zRv0+kGgCNICJ73t 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 BQkKBjwg5/X Content-Type: text/plain; charset="utf-8" Use the new buffer-based WMI API to also support ACPI firmware implementations that do not use ACPI buffers for the descriptor. Signed-off-by: Armin Wolf Reviewed-by: Mario Limonciello --- .../platform/x86/dell/dell-wmi-descriptor.c | 94 +++++++++---------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/drivers/platform/x86/dell/dell-wmi-descriptor.c b/drivers/plat= form/x86/dell/dell-wmi-descriptor.c index c2a180202719..fe42eb8bbd79 100644 --- a/drivers/platform/x86/dell/dell-wmi-descriptor.c +++ b/drivers/platform/x86/dell/dell-wmi-descriptor.c @@ -7,7 +7,7 @@ =20 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt =20 -#include +#include #include #include #include @@ -15,6 +15,24 @@ =20 #define DELL_WMI_DESCRIPTOR_GUID "8D9DDCBC-A997-11DA-B012-B622A1EF5492" =20 +/* + * Descriptor buffer is 128 byte long and contains: + * + * Name Offset Length Value + * Vendor Signature 0 4 "DELL" + * Object Signature 4 4 " WMI" + * WMI Interface Version 8 4 + * WMI buffer length 12 4 + * WMI hotfix number 16 4 + */ +struct descriptor { + char vendor_signature[4]; + char object_signature[4]; + __le32 interface_version; + __le32 buffer_length; + __le32 hotfix_number; +} __packed; + struct descriptor_priv { struct list_head list; u32 interface_version; @@ -88,76 +106,58 @@ bool dell_wmi_get_hotfix(u32 *hotfix) } EXPORT_SYMBOL_GPL(dell_wmi_get_hotfix); =20 -/* - * Descriptor buffer is 128 byte long and contains: - * - * Name Offset Length Value - * Vendor Signature 0 4 "DELL" - * Object Signature 4 4 " WMI" - * WMI Interface Version 8 4 - * WMI buffer length 12 4 - * WMI hotfix number 16 4 - */ -static int dell_wmi_descriptor_probe(struct wmi_device *wdev, - const void *context) +static int dell_wmi_descriptor_probe(struct wmi_device *wdev, const void *= context) { - union acpi_object *obj =3D NULL; struct descriptor_priv *priv; - u32 *buffer; + struct wmi_buffer buffer; + struct descriptor *desc; int ret; =20 - obj =3D wmidev_block_query(wdev, 0); - if (!obj) { - dev_err(&wdev->dev, "failed to read Dell WMI descriptor\n"); - ret =3D -EIO; - goto out; - } + ret =3D wmidev_query_block(wdev, 0, &buffer); + if (ret < 0) + return ret; =20 - if (obj->type !=3D ACPI_TYPE_BUFFER) { - dev_err(&wdev->dev, "Dell descriptor has wrong type\n"); + if (buffer.length < sizeof(*desc)) { + dev_err(&wdev->dev, + "Dell descriptor buffer contains not enough data (%zu)\n", + buffer.length); ret =3D -EINVAL; descriptor_valid =3D ret; goto out; } =20 - /* Although it's not technically a failure, this would lead to - * unexpected behavior - */ - if (obj->buffer.length !=3D 128) { - dev_err(&wdev->dev, - "Dell descriptor buffer has unexpected length (%d)\n", - obj->buffer.length); - ret =3D -EINVAL; + desc =3D buffer.data; + + if (strncmp(desc->vendor_signature, "DELL", sizeof(desc->vendor_signature= ))) { + dev_err(&wdev->dev, "Dell descriptor buffer has invalid vendor signature= (%4ph)\n", + desc->vendor_signature); + ret =3D -ENOMSG; descriptor_valid =3D ret; goto out; } =20 - buffer =3D (u32 *)obj->buffer.pointer; - - if (strncmp(obj->string.pointer, "DELL WMI", 8) !=3D 0) { - dev_err(&wdev->dev, "Dell descriptor buffer has invalid signature (%8ph)= \n", - buffer); - ret =3D -EINVAL; + if (strncmp(desc->object_signature, " WMI", sizeof(desc->vendor_signature= ))) { + dev_err(&wdev->dev, "Dell descriptor buffer has invalid object signature= (%4ph)\n", + desc->object_signature); + ret =3D -ENOMSG; descriptor_valid =3D ret; goto out; } descriptor_valid =3D 0; =20 - if (buffer[2] !=3D 0 && buffer[2] !=3D 1) - dev_warn(&wdev->dev, "Dell descriptor buffer has unknown version (%lu)\n= ", - (unsigned long) buffer[2]); - - priv =3D devm_kzalloc(&wdev->dev, sizeof(struct descriptor_priv), - GFP_KERNEL); + if (le32_to_cpu(desc->interface_version) > 2) + dev_warn(&wdev->dev, "Dell descriptor buffer has unknown version (%u)\n", + le32_to_cpu(desc->interface_version)); =20 + priv =3D devm_kzalloc(&wdev->dev, sizeof(*priv), GFP_KERNEL); if (!priv) { ret =3D -ENOMEM; goto out; } =20 - priv->interface_version =3D buffer[2]; - priv->size =3D buffer[3]; - priv->hotfix =3D buffer[4]; + priv->interface_version =3D le32_to_cpu(desc->interface_version); + priv->size =3D le32_to_cpu(desc->buffer_length); + priv->hotfix =3D le32_to_cpu(desc->hotfix_number); ret =3D 0; dev_set_drvdata(&wdev->dev, priv); mutex_lock(&list_mutex); @@ -170,7 +170,7 @@ static int dell_wmi_descriptor_probe(struct wmi_device = *wdev, (unsigned long) priv->hotfix); =20 out: - kfree(obj); + kfree(buffer.data); return ret; } =20 --=20 2.39.5 From nobody Tue Apr 7 07:34:16 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E6E381FCF41; Sat, 14 Mar 2026 17:53:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773510808; cv=none; b=mB/UPeo/cQTghNJbYPr4Yw78pGHLFBOXKOBRcOGPdWmKtZEDrhrbV+62v6lDk5zL/lS4yv+17l1trOMMlgqkQwK7Kx5SrHu9NM6z1qewczXXxvR+UPMoWAkMH30bzx2pceF/JtFzAGBY75LL1eL5KOkaUlarplMgxnKPQGg18qM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773510808; c=relaxed/simple; bh=4qQeuO95GLSeEuCW0l4UelYobqF6TLscPNjWun3HviI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=PCSEca4LzW0jLf8LjoXeHOQZyVC90cGrGWce2dCtdHMxfGTb4nmwzzAhsn9V8X7ap2DVtCzYJB29bb5WHVDmKXmDCPb9GbqP7qveKYQv26QNDgw6GPYyrW28fdEBdrLX3SrdLz9AUA+UaNF7gNMECpHCZlhkkh6t4mV7Ap08lco= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=pb6GncjW; arc=none smtp.client-ip=212.227.15.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="pb6GncjW" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1773510784; x=1774115584; i=w_armin@gmx.de; bh=9IkgDUTGUrN88laQfkUAHjuJjQ2/fB5RAdk3lh9Co/I=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=pb6GncjWFwbDyDBHj3iXURbTfJ7Ry00WhsAN6Fp6CdcQ06+LBfhBrCVdzpo8domf wYfwjR96J8c9Y5aDPiRFf0R9NcU8hX9l0N6VwUv/Ob1rJlHMtQ0cleyvbx7kslSRj 84pLpB2OW9feJetehKf9UejE2CHhJ7XC2joI6EZKzYHlcSep/tELl/2euHes+9ddp zaiJGwX+yTXv1gzU5hjPeRxZi63eWQVhmnoKSK0YMV4uPm96nTIsIuJrDTZmaqnJ5 rP7bQk9r0J6heerDRW1H+Im88WA/7irtiuNtIJ5ObMD97e8kV/YENH8XACRFTfzxG 7AJ+I8Q1c5DeDm2xwQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MdvmO-1vRaek0Wrm-00a0jM; Sat, 14 Mar 2026 18:53:04 +0100 From: Armin Wolf To: Dell.Client.Kernel@dell.com, pali@kernel.org, mjg59@srcf.ucam.org Cc: soyer@irl.hu, hansg@kernel.org, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, linux@roeck-us.net, linux-hwmon@vger.kernel.org, mario.limonciello@amd.com Subject: [PATCH v3 2/9] platform/x86: dell-privacy: Use new buffer-based WMI API Date: Sat, 14 Mar 2026 18:52:42 +0100 Message-Id: <20260314175249.16040-3-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260314175249.16040-1-W_Armin@gmx.de> References: <20260314175249.16040-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:vB+Vl0o38j/Y0M7AeTwwzKFRKZpSPubNkSluVNr5wUmoFOFq26C 3TzUfAmEg5IKgSQ7On98/vCOAGBzKgVxvaHGJj5MWLHXQZjqy1ckmhQW5pvp8/egdpPsSLb Ou6Wz8zzq2lEYxHq8OMot7qqjnc4l+yfHZj2RBNsly/TCiMGVJ2EVJIsTJRbqFRqnyeXTFh OT+JUwZigWzHVAO6XPfyQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:b1RegSRgHlk=;VZYa83uSaRO+Z4eFHVrIodOSR7f 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 u8gd2LJEUHKN3pIcOwK7bmGz8C+flQCXQ== Content-Type: text/plain; charset="utf-8" Use the new buffer-based WMI API to also support ACPI firmware implementations that do not use ACPI buffers for the device state. Signed-off-by: Armin Wolf Reviewed-by: Mario Limonciello --- drivers/platform/x86/dell/dell-wmi-privacy.c | 78 ++++++++++---------- 1 file changed, 38 insertions(+), 40 deletions(-) diff --git a/drivers/platform/x86/dell/dell-wmi-privacy.c b/drivers/platfor= m/x86/dell/dell-wmi-privacy.c index ed099a431ea4..470273cc2fd2 100644 --- a/drivers/platform/x86/dell/dell-wmi-privacy.c +++ b/drivers/platform/x86/dell/dell-wmi-privacy.c @@ -9,6 +9,7 @@ =20 #include #include +#include #include #include #include @@ -25,6 +26,26 @@ #define DELL_PRIVACY_CAMERA_EVENT 0x2 #define led_to_priv(c) container_of(c, struct privacy_wmi_data, cdev) =20 +/* + * Describes the Device State class exposed by BIOS which can be consumed = by + * various applications interested in knowing the Privacy feature capabili= ties. + * class DeviceState + * { + * [key, read] string InstanceName; + * [read] boolean ReadOnly; + * + * [WmiDataId(1), read] uint32 DevicesSupported; + * 0 - None; 0x1 - Microphone; 0x2 - Camera; 0x4 - ePrivacy Screen + * + * [WmiDataId(2), read] uint32 CurrentState; + * 0 - Off; 1 - On; Bit0 - Microphone; Bit1 - Camera; Bit2 - ePrivacyScr= een + * }; + */ +struct device_state { + __le32 devices_supported; + __le32 current_state; +} __packed; + /* * The wmi_list is used to store the privacy_priv struct with mutex protec= ting */ @@ -185,59 +206,36 @@ static struct attribute *privacy_attrs[] =3D { }; ATTRIBUTE_GROUPS(privacy); =20 -/* - * Describes the Device State class exposed by BIOS which can be consumed = by - * various applications interested in knowing the Privacy feature capabili= ties. - * class DeviceState - * { - * [key, read] string InstanceName; - * [read] boolean ReadOnly; - * - * [WmiDataId(1), read] uint32 DevicesSupported; - * 0 - None; 0x1 - Microphone; 0x2 - Camera; 0x4 - ePrivacy Screen - * - * [WmiDataId(2), read] uint32 CurrentState; - * 0 - Off; 1 - On; Bit0 - Microphone; Bit1 - Camera; Bit2 - ePrivacyScr= een - * }; - */ static int get_current_status(struct wmi_device *wdev) { struct privacy_wmi_data *priv =3D dev_get_drvdata(&wdev->dev); - union acpi_object *obj_present; - u32 *buffer; - int ret =3D 0; + struct device_state *state; + struct wmi_buffer buffer; + int ret; =20 if (!priv) { dev_err(&wdev->dev, "dell privacy priv is NULL\n"); return -EINVAL; } + /* check privacy support features and device states */ - obj_present =3D wmidev_block_query(wdev, 0); - if (!obj_present) { - dev_err(&wdev->dev, "failed to read Binary MOF\n"); - return -EIO; - } + ret =3D wmidev_query_block(wdev, 0, &buffer); + if (ret < 0) + return ret; =20 - if (obj_present->type !=3D ACPI_TYPE_BUFFER) { - dev_err(&wdev->dev, "Binary MOF is not a buffer!\n"); - ret =3D -EIO; - goto obj_free; - } - /* Although it's not technically a failure, this would lead to - * unexpected behavior - */ - if (obj_present->buffer.length !=3D 8) { - dev_err(&wdev->dev, "Dell privacy buffer has unexpected length (%d)!\n", - obj_present->buffer.length); + if (buffer.length < sizeof(*state)) { + dev_err(&wdev->dev, "Dell privacy buffer contains not enough data (%zu)!= \n", + buffer.length); ret =3D -EINVAL; - goto obj_free; + goto buffer_free; } - buffer =3D (u32 *)obj_present->buffer.pointer; - priv->features_present =3D buffer[0]; - priv->last_status =3D buffer[1]; =20 -obj_free: - kfree(obj_present); + state =3D buffer.data; + priv->features_present =3D le32_to_cpu(state->devices_supported); + priv->last_status =3D le32_to_cpu(state->current_state); + +buffer_free: + kfree(buffer.data); return ret; } =20 --=20 2.39.5 From nobody Tue Apr 7 07:34:16 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.15.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B0C103370E4; Sat, 14 Mar 2026 17:53:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.19 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773510814; cv=none; b=M4vFleFbNGOQShLZ+OPaZSuGRnpVFPoSkAxRBWIxSB1NgfIei5ZogvxiXLWECJA/p2OvMXmM2+hxkUG4Fe5mqny08yK/IQ8jM+A1CAE6BObhXnfNBwYD0Im9h0xkPrtqKHmU4u0sDcX1epysNtulSi8j3OsuZmk7jWiOAuOn9dk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773510814; c=relaxed/simple; bh=TToQ5G2JbDg75a+KCJJlKmBnsO4vGxsRL5MZn+NQ6sY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=iMxINVfO+RJORI++NLtILu5DQC1onyc5apE+dvN1yyu9GkV0GNYqRrqmRz7ffxQa973xYBy7eUHwtXThhqB8CJEQZOYJZr91O/fSeNbzOkOOMKLbHkoUO6BFUC8/A2/IasKGtjKLbeS6+LUrm0wzAbuf5oBkFFxIvfgBtKIU8SU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=CWNI9a4u; arc=none smtp.client-ip=212.227.15.19 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="CWNI9a4u" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1773510788; x=1774115588; i=w_armin@gmx.de; bh=AN0T9f/KPWLXr5kVN8lNJyu+JTV3P5IvPZoYHnG15Zo=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=CWNI9a4u5GxDXbQDXAe1dnDBStC1C22Pj7n+jkD0aY4mc9h+cjYrcDtfXK8Pe3hD XuUc6zurokBJyWtKFYpHWhskHoC3rQmyAIGVOG9+bAwWN1tsYfHMwJaVtVslEJBwI DA89PuNP8O/8rqeSDyfOYunTe2oRMWz56k+nq1xMK3nGlXYZl3q1dFoU+Kp3JklOi IPiZdpfsfJWMjyDYCwY6seoQCYHT0kSmOMQKkdXPJNrFnytTOdw6JZ4KQoF1jOJsG myWi5rjZNSfvfZByIABl2idBopyEbB06uI1mx2s6l6pnMcryqCl55zaNM2WqbE91/ NUR3GpumJvKyavO1YA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M1psI-1w3g673okq-0036fL; Sat, 14 Mar 2026 18:53:07 +0100 From: Armin Wolf To: Dell.Client.Kernel@dell.com, pali@kernel.org, mjg59@srcf.ucam.org Cc: soyer@irl.hu, hansg@kernel.org, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, linux@roeck-us.net, linux-hwmon@vger.kernel.org, mario.limonciello@amd.com Subject: [PATCH v3 3/9] platform/x86: dell-smbios-wmi: Use new buffer-based WMI API Date: Sat, 14 Mar 2026 18:52:43 +0100 Message-Id: <20260314175249.16040-4-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260314175249.16040-1-W_Armin@gmx.de> References: <20260314175249.16040-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:M+EE9+d9UPwBRioz5YteoSniUkWdiYOpaWRHu4CLsv+vHF0rE1+ sVV1gAxOds07W4n0op7W7roJ9wMPnyyk7vN5bYhznH9L4sG+nKn4pvMHDVENh/m0SU1NCpa 0zNxUQtGv7vhiaonIjnVkz+BGWf3rdc9AoC+yTyOx/3Pap8J5yw4V5FEvPfR9tdn7hk7xW6 QWriaDWZGor6SMcVBGUGw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:NDHqVn01dM0=;dCAzQojki87VzRP1l+zjCrsymAR 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 vdH85ig9/Iy Content-Type: text/plain; charset="utf-8" Use the new buffer-based WMI API to also support ACPI firmware implementations that do not use ACPI buffers for returning the results of a SMBIOS call. Signed-off-by: Armin Wolf Reviewed-by: Mario Limonciello --- drivers/platform/x86/dell/dell-smbios-wmi.c | 46 +++++++++++---------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/drivers/platform/x86/dell/dell-smbios-wmi.c b/drivers/platform= /x86/dell/dell-smbios-wmi.c index a7dca8c59d60..3c05b48354b3 100644 --- a/drivers/platform/x86/dell/dell-smbios-wmi.c +++ b/drivers/platform/x86/dell/dell-smbios-wmi.c @@ -50,38 +50,42 @@ static inline struct wmi_smbios_priv *get_first_smbios_= priv(void) =20 static int run_smbios_call(struct wmi_device *wdev) { - struct acpi_buffer output =3D {ACPI_ALLOCATE_BUFFER, NULL}; - struct wmi_smbios_priv *priv; - struct acpi_buffer input; - union acpi_object *obj; - acpi_status status; - - priv =3D dev_get_drvdata(&wdev->dev); - input.length =3D priv->req_buf_size - sizeof(u64); - input.pointer =3D &priv->buf->std; + struct wmi_smbios_priv *priv =3D dev_get_drvdata(&wdev->dev); + const struct wmi_buffer input =3D { + .length =3D priv->req_buf_size - sizeof(u64), + .data =3D &priv->buf->std, + }; + struct wmi_buffer output; + int ret; =20 dev_dbg(&wdev->dev, "evaluating: %u/%u [%x,%x,%x,%x]\n", priv->buf->std.cmd_class, priv->buf->std.cmd_select, priv->buf->std.input[0], priv->buf->std.input[1], priv->buf->std.input[2], priv->buf->std.input[3]); =20 - status =3D wmidev_evaluate_method(wdev, 0, 1, &input, &output); - if (ACPI_FAILURE(status)) - return -EIO; - obj =3D (union acpi_object *)output.pointer; - if (obj->type !=3D ACPI_TYPE_BUFFER) { - dev_dbg(&wdev->dev, "received type: %d\n", obj->type); - if (obj->type =3D=3D ACPI_TYPE_INTEGER) - dev_dbg(&wdev->dev, "SMBIOS call failed: %llu\n", - obj->integer.value); - kfree(output.pointer); + ret =3D wmidev_invoke_method(wdev, 0, 1, &input, &output); + if (ret < 0) + return ret; + + /* + * The output buffer returned by the WMI method should have at least the = size + * of the input buffer. Because the Windows WMI implementation ignores an= y surplus + * data returned by a WMI method call we emulate this behavior here. + * + * Additionally the ACPI firmware might return buffers with not enough da= ta to + * signal an error, so we only print a debug message here. + */ + if (output.length < input.length) { + dev_dbg(&wdev->dev, "SMBIOS call returned not enough data (%zu)\n", outp= ut.length); + kfree(output.data); return -EIO; } - memcpy(input.pointer, obj->buffer.pointer, obj->buffer.length); + + memcpy(input.data, output.data, input.length); dev_dbg(&wdev->dev, "result: [%08x,%08x,%08x,%08x]\n", priv->buf->std.output[0], priv->buf->std.output[1], priv->buf->std.output[2], priv->buf->std.output[3]); - kfree(output.pointer); + kfree(output.data); =20 return 0; } --=20 2.39.5 From nobody Tue Apr 7 07:34:16 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.15.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E7D8E3043DE; Sat, 14 Mar 2026 17:53:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.19 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773510818; cv=none; b=K7HU+E5tpbpS8tpRDRVQt+lpplLrh9NGFq8JXvuqsYx94feoheSmYnhDZDeG3H6uX+Z0IKvZYCTQFdUKSG+brC6TTIsufhn98ZqNL//FSgygIIAu6m72y3dInOS0rF/5gHHgceyhaHoSTtHJDfDuK2I/kFHNWtwZoTQdamGB8Pg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773510818; c=relaxed/simple; bh=hX8yCnYWnHj0i6qWj2AAinoE9jeXb6HnLZTNJmXhByk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=TWhuslSKgU1x27gf8hSr88jBkIOC4E+XCNj81fhuXj2DB7OWkBx38TmqQlXzhNW26zkCq8TenLF5RUUSeOZ2hrkX+njuC6uJhczv+GTMnlx3GTvzJ9nQ9aMRlpa4KeyohNhYYFe2TKIU6QfvZuKZHnNI9nElOTDjsZFtW+g03Og= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=CwfCEJjl; arc=none smtp.client-ip=212.227.15.19 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="CwfCEJjl" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1773510788; x=1774115588; i=w_armin@gmx.de; bh=tU5WSuU6lQeUEGa2DbWvnOAy24Q+kkPjDW6mof+dCxw=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=CwfCEJjlTRrpZo3M8O6CwtR6IpKqTR+L7qxGwXeMc0YA3UD9EqeqHArE6TrtfwYk 0Q1bKwKaKOphrHZGtjyFDrTi9Phck9F3Y51gkdNmqtEYM1cfiu8MAZOWXppqY7H9M 3+dw/HYutUDwJSQFkq3NzyXYIf1g9z4QtjnvuXvSCs7FexN0mxxR59a4AQr54ZaDt 1o7hEPfcXdEOfGS+/WLJ4RMj37uxX/tPg8sKroJrPxkkw9Ie9nzAiDcahlayrf9tE aTbhnlaNSAkc/0tEH9J3C851bSCwEhKcumsgdlBSv+aei8jnnR+8qxx81oRfiMbqe RETHiYUwfT/4GHyFZQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MKbkM-1wKFZo33t6-00LjaM; Sat, 14 Mar 2026 18:53:08 +0100 From: Armin Wolf To: Dell.Client.Kernel@dell.com, pali@kernel.org, mjg59@srcf.ucam.org Cc: soyer@irl.hu, hansg@kernel.org, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, linux@roeck-us.net, linux-hwmon@vger.kernel.org, mario.limonciello@amd.com Subject: [PATCH v3 4/9] platform/x86: dell-wmi-base: Use new buffer-based WMI API Date: Sat, 14 Mar 2026 18:52:44 +0100 Message-Id: <20260314175249.16040-5-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260314175249.16040-1-W_Armin@gmx.de> References: <20260314175249.16040-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:6migSiWGo3v9rlydFT0S7gnCl6ouULgpH/5UrbeIpZlFxtSNoN4 p0gZB94uWZ6nZ/jXba3yotBlJZCsj59kiDKk4dC0xxw0trUbfVZjoQ2usZblXaQRUS+nTKX iSSoHi2F+jju2qLgBuBnVACOnGLmGR8TtQwM/5j/JY7GaCg65SF4YuMk7VF45NwW9WLXHQN FA6J/338eyLUlQY81CKYw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:OHwSTWwKvTw=;wvMM0D1vi8JKrYPYb+yXXRJhQxD +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 8PDIR4V8Ay9smiCp2hgR6oxpogLg80OEQ== Content-Type: text/plain; charset="utf-8" Use the new buffer-based WMI API to also support ACPI firmware implementations that do not use ACPI buffers for the event data. Signed-off-by: Armin Wolf Reviewed-by: Mario Limonciello --- drivers/platform/x86/dell/dell-wmi-base.c | 68 ++++++++++++----------- 1 file changed, 35 insertions(+), 33 deletions(-) diff --git a/drivers/platform/x86/dell/dell-wmi-base.c b/drivers/platform/x= 86/dell/dell-wmi-base.c index 4eefbade2f5e..4a7ab9fb3f81 100644 --- a/drivers/platform/x86/dell/dell-wmi-base.c +++ b/drivers/platform/x86/dell/dell-wmi-base.c @@ -13,6 +13,7 @@ =20 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt =20 +#include #include #include #include @@ -408,7 +409,8 @@ static void dell_wmi_switch_event(struct input_dev **su= bdev, input_sync(*subdev); } =20 -static int dell_wmi_process_key(struct wmi_device *wdev, int type, int cod= e, u16 *buffer, int remaining) +static int dell_wmi_process_key(struct wmi_device *wdev, int type, int cod= e, __le16 *buffer, + int remaining) { struct dell_wmi_priv *priv =3D dev_get_drvdata(&wdev->dev); const struct key_entry *key; @@ -440,15 +442,15 @@ static int dell_wmi_process_key(struct wmi_device *wd= ev, int type, int code, u16 } else if (type =3D=3D 0x0011 && code =3D=3D 0xe070 && remaining > 0) { dell_wmi_switch_event(&priv->tabletswitch_dev, "Dell tablet mode switch", - SW_TABLET_MODE, !buffer[0]); + SW_TABLET_MODE, !le16_to_cpu(buffer[0])); return 1; } else if (type =3D=3D 0x0012 && code =3D=3D 0x000c && remaining > 0) { /* Eprivacy toggle, switch to "on" key entry for on events */ - if (buffer[0] =3D=3D 2) + if (le16_to_cpu(buffer[0]) =3D=3D 2) key++; used =3D 1; } else if (type =3D=3D 0x0012 && code =3D=3D 0x000d && remaining > 0) { - value =3D (buffer[2] =3D=3D 2); + value =3D (le16_to_cpu(buffer[2]) =3D=3D 2); used =3D 1; } =20 @@ -457,24 +459,17 @@ static int dell_wmi_process_key(struct wmi_device *wd= ev, int type, int code, u16 return used; } =20 -static void dell_wmi_notify(struct wmi_device *wdev, - union acpi_object *obj) +static void dell_wmi_notify(struct wmi_device *wdev, const struct wmi_buff= er *buffer) { struct dell_wmi_priv *priv =3D dev_get_drvdata(&wdev->dev); - u16 *buffer_entry, *buffer_end; - acpi_size buffer_size; + __le16 *buffer_entry, *buffer_end; + size_t buffer_size; int len, i; =20 - if (obj->type !=3D ACPI_TYPE_BUFFER) { - pr_warn("bad response type %x\n", obj->type); - return; - } + pr_debug("Received WMI event (%*ph)\n", (int)buffer->length, buffer->data= ); =20 - pr_debug("Received WMI event (%*ph)\n", - obj->buffer.length, obj->buffer.pointer); - - buffer_entry =3D (u16 *)obj->buffer.pointer; - buffer_size =3D obj->buffer.length/2; + buffer_entry =3D buffer->data; + buffer_size =3D buffer->length / 2; buffer_end =3D buffer_entry + buffer_size; =20 /* @@ -490,12 +485,12 @@ static void dell_wmi_notify(struct wmi_device *wdev, * one event on devices with WMI interface version 0. */ if (priv->interface_version =3D=3D 0 && buffer_entry < buffer_end) - if (buffer_end > buffer_entry + buffer_entry[0] + 1) - buffer_end =3D buffer_entry + buffer_entry[0] + 1; + if (buffer_end > buffer_entry + le16_to_cpu(buffer_entry[0]) + 1) + buffer_end =3D buffer_entry + le16_to_cpu(buffer_entry[0]) + 1; =20 while (buffer_entry < buffer_end) { =20 - len =3D buffer_entry[0]; + len =3D le16_to_cpu(buffer_entry[0]); if (len =3D=3D 0) break; =20 @@ -508,11 +503,11 @@ static void dell_wmi_notify(struct wmi_device *wdev, =20 pr_debug("Process buffer (%*ph)\n", len*2, buffer_entry); =20 - switch (buffer_entry[1]) { + switch (le16_to_cpu(buffer_entry[1])) { case 0x0000: /* One key pressed or event occurred */ if (len > 2) - dell_wmi_process_key(wdev, buffer_entry[1], - buffer_entry[2], + dell_wmi_process_key(wdev, le16_to_cpu(buffer_entry[1]), + le16_to_cpu(buffer_entry[2]), buffer_entry + 3, len - 3); /* Extended data is currently ignored */ @@ -520,22 +515,29 @@ static void dell_wmi_notify(struct wmi_device *wdev, case 0x0010: /* Sequence of keys pressed */ case 0x0011: /* Sequence of events occurred */ for (i =3D 2; i < len; ++i) - i +=3D dell_wmi_process_key(wdev, buffer_entry[1], - buffer_entry[i], + i +=3D dell_wmi_process_key(wdev, le16_to_cpu(buffer_entry[1]), + le16_to_cpu(buffer_entry[i]), buffer_entry + i, len - i - 1); break; case 0x0012: - if ((len > 4) && dell_privacy_process_event(buffer_entry[1], buffer_ent= ry[3], - buffer_entry[4])) - /* dell_privacy_process_event has handled the event */; - else if (len > 2) - dell_wmi_process_key(wdev, buffer_entry[1], buffer_entry[2], + if (len > 4) { + if (dell_privacy_process_event(le16_to_cpu(buffer_entry[1]), + le16_to_cpu(buffer_entry[3]), + le16_to_cpu(buffer_entry[4]))) + break; + } + + /* dell_privacy_process_event has not handled the event */ + + if (len > 2) + dell_wmi_process_key(wdev, le16_to_cpu(buffer_entry[1]), + le16_to_cpu(buffer_entry[2]), buffer_entry + 3, len - 3); + break; default: /* Unknown event */ - pr_info("Unknown WMI event type 0x%x\n", - (int)buffer_entry[1]); + pr_info("Unknown WMI event type 0x%x\n", le16_to_cpu(buffer_entry[1])); break; } =20 @@ -821,7 +823,7 @@ static struct wmi_driver dell_wmi_driver =3D { .id_table =3D dell_wmi_id_table, .probe =3D dell_wmi_probe, .remove =3D dell_wmi_remove, - .notify =3D dell_wmi_notify, + .notify_new =3D dell_wmi_notify, }; =20 static int __init dell_wmi_init(void) --=20 2.39.5 From nobody Tue Apr 7 07:34:16 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.15.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 47A2B339861; Sat, 14 Mar 2026 17:53:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.19 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773510817; cv=none; b=pRc+AlMBEGNBCbYNMXrXCHS4rIb2lDWM+nJpo2nMhu1Zz06aS8URLrTh89VIa+VMoIZmPEZ8lbNGLEaL/jYE21O5f6cBKuyxyxgNsIxJqtxBa8SF3iaOeyXLc9bjn3XsO6+lXFFhDVMCJcKX50d+eeGHFlcRIH5iMC5VYDMDbhM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773510817; c=relaxed/simple; bh=iPCUkxzT1pgRAs55EHDRcdwaaj7ZNbWDMLDA1ox4Qpk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=e7bDdF3G/BKjCNmfcOnRjFmjEuoGFyGGg5iW6WnwQOh2Pok+HSW582fDQ2eVUj+3Yu13mNB00M/uGmMiZMLylWSOhHiJR4LcDx0p/9LDFiVanyUTm86yFRQcUXRBa9oUT7iPe6P4GzZQPiSQHpnlNEDPB8r990rR3QZDmINIv8s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=arolTl+4; arc=none smtp.client-ip=212.227.15.19 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="arolTl+4" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1773510789; x=1774115589; i=w_armin@gmx.de; bh=9yYEAN8R/q+eJ/epVkmHeoIfIOY6a1BOEdI7zdNvdbE=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=arolTl+4QoHs88kl8kzDBQLH0A8mQf74SJT5Lb7N++0uX1xVORwMnxwgwOzGYxxo lgMn2CiqERYgHqvD/YR0S3kpklnjxoU65DD3FczlHuoqzQjBLdovP4qw0C4CbrwU5 KnpEZujqBbHCp2wu8vlEz9rHLyTUAuHQs+Ae4+69DR3cw65EJIs0SbDsvV07vkyWy KjzD53ijN3jD8XcgZsnSi0BUuHO1B0kJ6r/K+DREWvopyoy0Iqc6km7c2X09ivv79 +pXSd6/iNSnwPfwZsoPOj/CpyPmWG1T7QK9xvGN4OYfR4zp/LzzlF8W4O5MzkRwvP qFg7hZGxCAewu9EhEQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MuDXz-1vkdmC2b9R-00une9; Sat, 14 Mar 2026 18:53:09 +0100 From: Armin Wolf To: Dell.Client.Kernel@dell.com, pali@kernel.org, mjg59@srcf.ucam.org Cc: soyer@irl.hu, hansg@kernel.org, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, linux@roeck-us.net, linux-hwmon@vger.kernel.org, mario.limonciello@amd.com Subject: [PATCH v3 5/9] platform/x86: dell-ddv: Use new buffer-based WMI API Date: Sat, 14 Mar 2026 18:52:45 +0100 Message-Id: <20260314175249.16040-6-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260314175249.16040-1-W_Armin@gmx.de> References: <20260314175249.16040-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:1p4i88IXXa4BCSXE+dfW/ErJS2nRzJcPAIlEVBJ8aD8R5Nhi+u/ YjILrTkl5VNvhDn6QoahjEchbN0C9c2OH0fvbOMYTb2uW60SqYEV2JB44yrrZAh0Rc0KJTA EBVA6bUXqsbAtxUE5iRbm2hNgGGFYL8WqbLNEL3NOhYIArSt2wp//TbG56JBVSNn8dwUqg9 32YTjC2WLDRCk/gvPerlg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:zxtLAzgIzfE=;DGbdRO96syyauDGHTmGdev+TyUU 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 nz Content-Type: text/plain; charset="utf-8" Use the new buffer-based WMI API to also support ACPI firmware implementations that do not use ACPI intergers/strings/packages for exchanging data. Signed-off-by: Armin Wolf Reviewed-by: Mario Limonciello --- drivers/platform/x86/dell/dell-wmi-ddv.c | 194 ++++++++++++----------- 1 file changed, 105 insertions(+), 89 deletions(-) diff --git a/drivers/platform/x86/dell/dell-wmi-ddv.c b/drivers/platform/x8= 6/dell/dell-wmi-ddv.c index 62e3d060f038..a744fd21b8af 100644 --- a/drivers/platform/x86/dell/dell-wmi-ddv.c +++ b/drivers/platform/x86/dell/dell-wmi-ddv.c @@ -7,8 +7,8 @@ =20 #define pr_format(fmt) KBUILD_MODNAME ": " fmt =20 -#include #include +#include #include #include #include @@ -99,6 +99,11 @@ enum dell_ddv_method { DELL_DDV_THERMAL_SENSOR_INFORMATION =3D 0x22, }; =20 +struct dell_wmi_buffer { + __le32 raw_size; + u8 raw_data[]; +} __packed; + struct fan_sensor_entry { u8 type; __le16 rpm; @@ -126,7 +131,7 @@ struct dell_wmi_ddv_sensors { bool active; struct mutex lock; /* protect caching */ unsigned long timestamp; - union acpi_object *obj; + struct dell_wmi_buffer *buffer; u64 entries; }; =20 @@ -158,105 +163,122 @@ static const char * const fan_dock_labels[] =3D { "Docking Chipset Fan", }; =20 -static int dell_wmi_ddv_query_type(struct wmi_device *wdev, enum dell_ddv_= method method, u32 arg, - union acpi_object **result, acpi_object_type type) +static int dell_wmi_ddv_query(struct wmi_device *wdev, enum dell_ddv_metho= d method, u32 arg, + struct wmi_buffer *output) { - struct acpi_buffer out =3D { ACPI_ALLOCATE_BUFFER, NULL }; - const struct acpi_buffer in =3D { - .length =3D sizeof(arg), - .pointer =3D &arg, + __le32 arg2 =3D cpu_to_le32(arg); + const struct wmi_buffer input =3D { + .length =3D sizeof(arg2), + .data =3D &arg2, }; - union acpi_object *obj; - acpi_status ret; - - ret =3D wmidev_evaluate_method(wdev, 0x0, method, &in, &out); - if (ACPI_FAILURE(ret)) - return -EIO; - - obj =3D out.pointer; - if (!obj) - return -ENODATA; =20 - if (obj->type !=3D type) { - kfree(obj); - return -ENOMSG; - } - - *result =3D obj; - - return 0; + return wmidev_invoke_method(wdev, 0x0, method, &input, output); } =20 static int dell_wmi_ddv_query_integer(struct wmi_device *wdev, enum dell_d= dv_method method, u32 arg, u32 *res) { - union acpi_object *obj; + struct wmi_buffer output; + __le32 *argr; int ret; =20 - ret =3D dell_wmi_ddv_query_type(wdev, method, arg, &obj, ACPI_TYPE_INTEGE= R); + ret =3D dell_wmi_ddv_query(wdev, method, arg, &output); if (ret < 0) return ret; =20 - if (obj->integer.value <=3D U32_MAX) - *res =3D (u32)obj->integer.value; - else - ret =3D -ERANGE; + if (output.length >=3D sizeof(*argr)) { + argr =3D output.data; + *res =3D le32_to_cpu(*argr); + } else { + ret =3D -EIO; + } =20 - kfree(obj); + kfree(output.data); =20 return ret; } =20 static int dell_wmi_ddv_query_buffer(struct wmi_device *wdev, enum dell_dd= v_method method, - u32 arg, union acpi_object **result) + u32 arg, struct dell_wmi_buffer **result) { - union acpi_object *obj; - u64 buffer_size; + struct dell_wmi_buffer *buffer; + struct wmi_buffer output; + size_t buffer_size; int ret; =20 - ret =3D dell_wmi_ddv_query_type(wdev, method, arg, &obj, ACPI_TYPE_PACKAG= E); + ret =3D dell_wmi_ddv_query(wdev, method, arg, &output); if (ret < 0) return ret; =20 - if (obj->package.count !=3D 2 || - obj->package.elements[0].type !=3D ACPI_TYPE_INTEGER || - obj->package.elements[1].type !=3D ACPI_TYPE_BUFFER) { - ret =3D -ENOMSG; + if (output.length < sizeof(*buffer)) { + ret =3D -EIO; =20 goto err_free; } =20 - buffer_size =3D obj->package.elements[0].integer.value; - - if (!buffer_size) { + buffer =3D output.data; + if (!le32_to_cpu(buffer->raw_size)) { ret =3D -ENODATA; =20 goto err_free; } =20 - if (buffer_size > obj->package.elements[1].buffer.length) { + buffer_size =3D struct_size(buffer, raw_data, le32_to_cpu(buffer->raw_siz= e)); + if (buffer_size > output.length) { dev_warn(&wdev->dev, - FW_WARN "WMI buffer size (%llu) exceeds ACPI buffer size (%d)\n", - buffer_size, obj->package.elements[1].buffer.length); + FW_WARN "Dell WMI buffer size (%zu) exceeds WMI buffer size (%zu)\n", + buffer_size, output.length); ret =3D -EMSGSIZE; =20 goto err_free; } =20 - *result =3D obj; + *result =3D buffer; =20 return 0; =20 err_free: - kfree(obj); + kfree(output.data); =20 return ret; } =20 -static int dell_wmi_ddv_query_string(struct wmi_device *wdev, enum dell_dd= v_method method, - u32 arg, union acpi_object **result) +static ssize_t dell_wmi_ddv_query_string(struct wmi_device *wdev, enum del= l_ddv_method method, + u32 arg, char *buf, size_t length) { - return dell_wmi_ddv_query_type(wdev, method, arg, result, ACPI_TYPE_STRIN= G); + struct wmi_buffer output; + struct wmi_string *str; + size_t str_size; + ssize_t count; + int ret; + + ret =3D dell_wmi_ddv_query(wdev, method, arg, &output); + if (ret < 0) + return ret; + + if (output.length < sizeof(*str)) { + count =3D -EIO; + + goto err_free; + } + + str =3D output.data; + str_size =3D sizeof(*str) + le16_to_cpu(str->length); + if (str_size > output.length) { + dev_warn(&wdev->dev, + FW_WARN "WMI string size (%zu) exceeds WMI buffer size (%zu)\n", + str_size, output.length); + count =3D -EMSGSIZE; + + goto err_free; + } + + count =3D wmi_string_to_utf8s(str, buf, length); + +err_free: + kfree(output.data); + + return count; } =20 /* @@ -265,28 +287,26 @@ static int dell_wmi_ddv_query_string(struct wmi_devic= e *wdev, enum dell_ddv_meth static int dell_wmi_ddv_update_sensors(struct wmi_device *wdev, enum dell_= ddv_method method, struct dell_wmi_ddv_sensors *sensors, size_t entry_size) { + struct dell_wmi_buffer *buffer; u64 buffer_size, rem, entries; - union acpi_object *obj; - u8 *buffer; int ret; =20 - if (sensors->obj) { + if (sensors->buffer) { if (time_before(jiffies, sensors->timestamp + HZ)) return 0; =20 - kfree(sensors->obj); - sensors->obj =3D NULL; + kfree(sensors->buffer); + sensors->buffer =3D NULL; } =20 - ret =3D dell_wmi_ddv_query_buffer(wdev, method, 0, &obj); + ret =3D dell_wmi_ddv_query_buffer(wdev, method, 0, &buffer); if (ret < 0) return ret; =20 /* buffer format sanity check */ - buffer_size =3D obj->package.elements[0].integer.value; - buffer =3D obj->package.elements[1].buffer.pointer; + buffer_size =3D le32_to_cpu(buffer->raw_size); entries =3D div64_u64_rem(buffer_size, entry_size, &rem); - if (rem !=3D 1 || buffer[buffer_size - 1] !=3D 0xff) { + if (rem !=3D 1 || buffer->raw_data[buffer_size - 1] !=3D 0xff) { ret =3D -ENOMSG; goto err_free; } @@ -296,14 +316,14 @@ static int dell_wmi_ddv_update_sensors(struct wmi_dev= ice *wdev, enum dell_ddv_me goto err_free; } =20 - sensors->obj =3D obj; + sensors->buffer =3D buffer; sensors->entries =3D entries; sensors->timestamp =3D jiffies; =20 return 0; =20 err_free: - kfree(obj); + kfree(buffer); =20 return ret; } @@ -328,7 +348,7 @@ static int dell_wmi_ddv_fan_read_channel(struct dell_wm= i_ddv_data *data, u32 att if (channel >=3D data->fans.entries) return -ENXIO; =20 - entry =3D (struct fan_sensor_entry *)data->fans.obj->package.elements[1].= buffer.pointer; + entry =3D (struct fan_sensor_entry *)data->fans.buffer->raw_data; switch (attr) { case hwmon_fan_input: *val =3D get_unaligned_le16(&entry[channel].rpm); @@ -354,7 +374,7 @@ static int dell_wmi_ddv_temp_read_channel(struct dell_w= mi_ddv_data *data, u32 at if (channel >=3D data->temps.entries) return -ENXIO; =20 - entry =3D (struct thermal_sensor_entry *)data->temps.obj->package.element= s[1].buffer.pointer; + entry =3D (struct thermal_sensor_entry *)data->temps.buffer->raw_data; switch (attr) { case hwmon_temp_input: *val =3D entry[channel].now * 1000; @@ -411,7 +431,7 @@ static int dell_wmi_ddv_fan_read_string(struct dell_wmi= _ddv_data *data, int chan if (channel >=3D data->fans.entries) return -ENXIO; =20 - entry =3D (struct fan_sensor_entry *)data->fans.obj->package.elements[1].= buffer.pointer; + entry =3D (struct fan_sensor_entry *)data->fans.buffer->raw_data; type =3D entry[channel].type; switch (type) { case 0x00 ... 0x07: @@ -442,7 +462,7 @@ static int dell_wmi_ddv_temp_read_string(struct dell_wm= i_ddv_data *data, int cha if (channel >=3D data->temps.entries) return -ENXIO; =20 - entry =3D (struct thermal_sensor_entry *)data->temps.obj->package.element= s[1].buffer.pointer; + entry =3D (struct thermal_sensor_entry *)data->temps.buffer->raw_data; switch (entry[channel].type) { case 0x00: *str =3D "CPU"; @@ -553,8 +573,8 @@ static void dell_wmi_ddv_hwmon_cache_invalidate(struct = dell_wmi_ddv_sensors *sen return; =20 mutex_lock(&sensors->lock); - kfree(sensors->obj); - sensors->obj =3D NULL; + kfree(sensors->buffer); + sensors->buffer =3D NULL; mutex_unlock(&sensors->lock); } =20 @@ -564,7 +584,7 @@ static void dell_wmi_ddv_hwmon_cache_destroy(void *data) =20 sensors->active =3D false; mutex_destroy(&sensors->lock); - kfree(sensors->obj); + kfree(sensors->buffer); } =20 static struct hwmon_channel_info *dell_wmi_ddv_channel_init(struct wmi_dev= ice *wdev, @@ -750,7 +770,7 @@ static void dell_wmi_battery_invalidate(struct dell_wmi= _ddv_data *data, static ssize_t eppid_show(struct device *dev, struct device_attribute *att= r, char *buf) { struct dell_wmi_ddv_data *data =3D container_of(attr, struct dell_wmi_ddv= _data, eppid_attr); - union acpi_object *obj; + ssize_t count; u32 index; int ret; =20 @@ -758,19 +778,19 @@ static ssize_t eppid_show(struct device *dev, struct = device_attribute *attr, cha if (ret < 0) return ret; =20 - ret =3D dell_wmi_ddv_query_string(data->wdev, DELL_DDV_BATTERY_EPPID, ind= ex, &obj); - if (ret < 0) - return ret; - - if (obj->string.length !=3D DELL_EPPID_LENGTH && obj->string.length !=3D = DELL_EPPID_EXT_LENGTH) - dev_info_once(&data->wdev->dev, FW_INFO "Suspicious ePPID length (%d)\n", - obj->string.length); + count =3D dell_wmi_ddv_query_string(data->wdev, DELL_DDV_BATTERY_EPPID, i= ndex, buf, + PAGE_SIZE); + if (count < 0) + return count; =20 - ret =3D sysfs_emit(buf, "%s\n", obj->string.pointer); + if (count !=3D DELL_EPPID_LENGTH && count !=3D DELL_EPPID_EXT_LENGTH) + dev_info_once(&data->wdev->dev, FW_INFO "Suspicious ePPID length (%zd)\n= ", count); =20 - kfree(obj); + ret =3D sysfs_emit_at(buf, count, "\n"); + if (ret < 0) + return ret; =20 - return ret; + return count + ret; } =20 static int dell_wmi_ddv_get_health(struct dell_wmi_ddv_data *data, u32 ind= ex, @@ -994,19 +1014,15 @@ static int dell_wmi_ddv_buffer_read(struct seq_file = *seq, enum dell_ddv_method m { struct device *dev =3D seq->private; struct dell_wmi_ddv_data *data =3D dev_get_drvdata(dev); - union acpi_object *obj; - u64 size; - u8 *buf; + struct dell_wmi_buffer *buffer; int ret; =20 - ret =3D dell_wmi_ddv_query_buffer(data->wdev, method, 0, &obj); + ret =3D dell_wmi_ddv_query_buffer(data->wdev, method, 0, &buffer); if (ret < 0) return ret; =20 - size =3D obj->package.elements[0].integer.value; - buf =3D obj->package.elements[1].buffer.pointer; - ret =3D seq_write(seq, buf, size); - kfree(obj); + ret =3D seq_write(seq, buffer->raw_data, le32_to_cpu(buffer->raw_size)); + kfree(buffer); =20 return ret; } --=20 2.39.5 From nobody Tue Apr 7 07:34:16 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 68E23315772; Sat, 14 Mar 2026 17:53:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.15 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773510808; cv=none; b=YhTjuLXWWNR12Y8AqgKxvfS8sSnLTfyW5SPc/sBJLp9oL2wOkh2wdBZsdl9wx4qiORWwUNJm9G4K99Dj+d+gZvggn9RGHJlz95s6RBb6ujEyU+YAxSIfOihdmO6l8MvbQwdEZKuZbkMTka9+iL50IYfrJ0OOqnSklCjjtWjOi4c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773510808; c=relaxed/simple; bh=SqweSPMsH4HqXOsd2sZD7/Hh3IJrjXIlGqhuz/auuWA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=q6/YavX1zQuFVN1EWdkt2N/VCo36LnAIPFzeAwHRbslukYSp0puFauqWA/zhHsLPMg2v0B1s1TnO4T4gS/5YjPuz69A3Tg82OwxoAkELLgub1eFyETjuiZJv2H9i+ll5/iUe1RD90EUhRX81jkrqR4aooOenuo8jlcd5nIuooko= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=TcWectYO; arc=none smtp.client-ip=212.227.15.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="TcWectYO" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1773510791; x=1774115591; i=w_armin@gmx.de; bh=P+64dvjHEeZmIFdFCc5sY8gYzpmwfYyJEuPr4PRmg2A=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=TcWectYOBpu/M3y4xN6aYHXgpxDKya8em8t+0fBNfF7mb2cllIPwSOBNWOS2SEuR YXwpKE03YgqqAsx8jpnG9y10HsQxiX4BgMdzqJBLW+pbbAe0ZW97QQz3NU2WkKzqv JkWwxN+bGfbgl7jvLz10O1De/iBnRZm7JTIyPtY9C87rgqOw/W67wOtG2BwESRvv1 ZVzEh1TUKLOVSEimL3wHCRNJ6xEt2vikscr+TI//DNwFwqMPd3RCAadsfHtW2w9kn 8zq+n9rSyEqxRTDeMLVRvsQQNGct78TYnHIgqrnFA5tPqrDDFpop3IeeHjUvkZos1 ufwOUOsiwVfBhVN3GA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MZktZ-1w56Uz3RLD-00VcsQ; Sat, 14 Mar 2026 18:53:10 +0100 From: Armin Wolf To: Dell.Client.Kernel@dell.com, pali@kernel.org, mjg59@srcf.ucam.org Cc: soyer@irl.hu, hansg@kernel.org, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, linux@roeck-us.net, linux-hwmon@vger.kernel.org, mario.limonciello@amd.com Subject: [PATCH v3 6/9] hwmon: (dell-smm) Use new buffer-based WMI API Date: Sat, 14 Mar 2026 18:52:46 +0100 Message-Id: <20260314175249.16040-7-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260314175249.16040-1-W_Armin@gmx.de> References: <20260314175249.16040-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:MIO2FobxPhivj4BXVgrMjeMqs9nomb9yLyIiuGNHVNXJAQisTCl r6ExW4IA/VWU12qxUUzBqNtl7Gk1SkwR6NFR6Z3hA4Yx2p99Qclnff4mo+6sFk/DCYlg/Fe dKy8Iv+sMkfCRrYSqF1AlhlcnmL04UU6D53g4ZB9bPnlbF57mjfQYFmMHuKKwUjRgEXSp02 45UR9wbZ9lILw830JF3HQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:SP9DLMvCoCM=;81s3DBdIgZFtgWwdG7uyrxQ7PGa ob8exyS2GKeP59p+VASUJavzC08tlneev9v5fkbgQVgP+kwV8ToLkxxf03sDL6RPmrLg6Jsqq kwj04FFUow8eSKD5r6fEoirsoG/bK6QplsR8vUuCJzn2j5JvntPHRde9leaZ5g/qjn71Aznjw Ex02snqxuykfOaqDjMFkjqAMSjYNX1Os4NjeWGiHM75rFnsC3vVYVzMJiz2FkrhGViANP6ySp 6BrMywS9Ln/zKlbIPn1U064d99ezU+VzuLHabdQEA+IsSjP7yJOboSa+VyyGcXAsyQZhxx5qY xvX6ULE7UHUq9izd5KhLADpAYRuoP15qcSFL4Xmi85wgc4Pu8IjP6YrV7cqcISW9Vxp1xiRkC g1zlwA0GXhCiDgQRuKCZzM/YAxDq4ZfNYK1jWBv6UkDjHF2eW7HBMMTKVrkzRb3hBNynqsfV5 55I37ZndsyGL3ygHDX22lUik+z5soKNHYiVUWZML0h/dq78X5hZNxrNPOpPfnndtE/cE9f2GA GkiDBw51TVouVyO11f5kGo96k80kkQL6Frkk6BSSO6fwFH1z+GYSU5RcMFkkg5GlUKFqUUg7s DIyRYl2e+4Mkv3BmGBZI5KFK31oxeZjbv5rxrlyPNAK9vfmCHKV2b5YrqAbmqwTJC4THfECz3 WUivBKHH8/FEDgN99mlngmIAZmIUy4xSteLsAEfzXlvST27ARWcXMwxVTSmCe/duEH+AdzZRn +YtY/FLESAJh8aX24l3ZlcjKioegrUrw4B00wbYJsPbWqSd19zATcfQiz+NCstp4zn2LNt8om bIw8+Ny/4UtIcsacSbtP4k6Y/WnteoIJY2Tyrd0bhOaE6F88krbIP3rK1Q4uIfXTt+q6NWBAX 4oFYFnzvxx6IylS39P5rFidqDYzITEKl1Gp0mozem/ShDwX3yL6WeFpZeYCDLxT4JEC7yWpuu m1UBTuEz6qVTPztVhCQzR8rlJ5hAXmbgbnjxVksmwEJyzxbNDJrmC7cxqwX6yQkm23BmCLljk TmOUzvI1bFFrfiQ6XwTf4V4cExIiQX4TUTmIQ7JXM8fg824wPdDUey+Gn5dsQ5P0oVOkJB2Vt o5jr9pQ/qyrSTDYBZDAn1N0D+/Kzv3y1FcX2ihANTz/dK1M+TA4v97lmWNKGvw9tf2jomzjrZ 8NVxvJpFhvGtc69OzYd4C+jBs15An46ezpHF3XRyQz2A6FwOcoQSFpUtPxYQgtWYlH7g81pSQ FuHgk523X7R3VIv7ZHdzM5TR4diYpGzQfT5fCOQTAimm3G4unGAGe7uX33BttShcxiVB7ToS3 rQTtsYsPItylGZ0/mr2YEYK1FFn0bnRR5vK2YjlH3Ujff1fCMu/1uiCUeaOa+eDgU4/Gi7YYd VJSmFMthA8J9N+11m/u5lhyycm20zzXjmvXmEcRHV93MQdlw2iiBr7Gm9+ngpoGsifPxuhtNA K5v6BEioYUjg4/7JMfeT27gy02QvnOr4zgC+haVjZoQUjYvpXT+XBm6WWSd0tJ/C2WF/hcG2P HrlRkOx/Osf3EvYLY2iN8L539S5KweGA0kgTnPhbC5B1GOBGtpGZ6/PiJNl3m5j2Ft+0YWrlD 5ONmcl18ggPwbc0ttvr7h+ddUS+5G8+Y0wlv774CEDjT2/GKvHPR1j2VcDJhMahxp8CfMnLU0 qk5/uvWIF0WfjZ0WCtjPS4wNO0pU2ibmp6iLB1BSrgjNUC2U4Qlncygmxhf71MmYpR+v1FGpL LNaRN+Dg/2kcYYCw/xXQ8SVbjMY+TwMr1c5kG3PsBfVkXkBG2gUv2BJJLX3PZ53JfU7Y3NWzI DO9ld+yi92C2Lw8THuU5hhVSkAGxjkXV2esSKiBnBEo/PbuY9xMPD4/Yk+w7Le0m4QUdj0kuC ZnUQybg5iHPffKPgcAHKB1MVimJ1oYrabFEcMuWxWF5W6IBd0pnPaQcjmeta/MtbRlO0daxrz fm8fCWwGYqVpgIIAo/CPf91o8XsRDLjkWG0a98F5TqfmFFAuXLCBd+dY/Wd18r9qN7A5HjXcg f2upuSi1ox54ccEQlAZpVv8Crt6BUhJPJ9sKBy5n40YkHD2mWzNo4tZHZ7AE8KCSLf8KqIlE1 ndKVs4xhT9uEUAKbKqhYMgNrv5KE97m5Ym0b+C99o6ai/LLVkW3U0J1IsfCJ9on6QS8Lnw8hi B7G/J9vsgNh5XnXfwBpshh0ipzGSOS5PdMSWW/HMzjG8cnOL/vWfTQsIN+g5tptbtYbFu7q4d Df/GFsUjI3n4tiqlnRAMEnzcS4n3bWjQ3BkwgqLQmsbU+iDXGKfFHpNyuwD8jnyvB3P0dGm5v U9SFYyv9AqqkT/PY7hjK0BG2MOjSQI8YbFKNrQKDjHxJcpcDiSNTzFOHEkx9euMbk1xyBPSeF Zy/ptAp63AY455FwOaE+KejoA/Ec9iu/uCWYh8tovxed0Im74yXQHRbEA2bTWtBJ7DdMZjcYO g6Rp9Apazc2leSk+8QhndqYTFocToDHi2WmVuGkVnTnijYukiRpvlLYCvV5WGrsxQQfZdzDdO Z9GCSYIvvJMVt+lU1P6C3Dl+7iYfu7YGdpG7nnbRMAsabggPuLgo2ImmBgbR5Tpm07+L0kjGb ZR5MO5GEmPASQ0NfdWgJV7BgSYtkaLy/3LhXHlzksSLaCEb+T/iMKANme4KYwuboDT46Bi+PL yTeTSurO5K9Go/A4+Djb7b5oca5KF+m9R4+ujbJX3PmhvtLqBbboSqita8Jg+WWyaue8m/7Up ZHrV7M/9Z7dAcojvTP3/Ldhc1/+yvBsBZ9MdK8s8lMcFlT0+y4zsuTE6rJV8TDO0PIuX0Jc1y ZNIyqBZne5MfszjrrUvODFsy3aZAE3NhN9ieWnx4NyQts/TvC4fbHa+Y2sW7Hf4OcMLtPUl5j ntS7aqO7+x6pUp775DM37rULf0AmFnK0Pb/Ez9A7Ea0jijR2KlG33OANH4TYJLNdmSryfyrIM GtqtzxXG2yKY6BODZGx8jcRU2p1Nhl1F9od9h7TzjynKD0J/ea/qSgItMsDXQczHUpOH71RgB hShNEs18XC1Gk3aXbFN0iBeK1EWzkpa7PilNO7qUFwpv3Y2Y9qkxOOEpZnybGKcGWn618EtYE OJVGBQretFRkxwXL56xx/W2UX5ObmdJEfFBkZ2TTYiCLYAAyeH2mmsFsDNy41TbF49L5IYMvk Ujy0PlNmBwLUFtP7+I9d1Y269fCFezu492qaBCn6yMPcp5+CcqHybS0ftpOxXJr/LQmF0JBip pdWrCPwS6O+ctbXXDxqtgcWJHwz3SzeVEnE7TIRIpnHjK9okfo27CJ6oyI/Y1e4veAl1s2R+a sAgikRGfRfixD9jGTzozDwAfKJC47NA7YIO79YmrOq77wBF843sgM6SHQtOu55MHZ5V53B68F +wOkpL1TIdOIFCzCZQ8kofTt7cGRnacuYieGMxV6/Cz7+tXPiQv4A3aMCzJh2ZfVGF8wj+ZCZ XKrDDTL5dn+DOIYyDbLMWVUSZz/ydHitcSgkvTr7uQriHl6YEf1RedKsD+TdtM6n3QVcGsC4A S9R75q6jtsq1jawBOCYo+B68MCe8EYnZ1D5tqflCDYCnV+J2FCAoB4AOm8Ik0m9lZ7c/iv7Ti D4LOjP3iVGWN4r66PThVqxosMn+pINBC48wsA1yiEpnQdlfs28NZsF2woXoCtlPG8ub+MZ7at vF0H2lP8mWVJWRvC46eE+PN+Rdt8rfc0YXyk27om1dV89aVlqFInXXJnop2qkG/+WA1syRqk+ upYxRAbrTcVFGcZAGtMz801523rYVMGyiiU4EDhg7m6mXwrgDCL8PprtPEejI/spKcELAi3QT K7WejmX0A9RsU+ylzE3IXa0erPWIhBL3c6I9dW8FdpMCzgbTFNdQ+IBsin0NRslAJYS76vJl7 1wC9O9bvIbVqEvDV/HIuXSJYrcYp89IbtgNjIxHwAG1JizVRsFVAuZ7FWa+w1f5TVLtBxHIe2 lgLVWxuTozTKwmnPPMNWdaiyabijukzLggyKuOBpb6Blx3GIIj7sMPm50BoYt6IePRZUK6sys tK92HR63oBej+Ql91tOFrxMZIP4WA0uLvXrlFg6F3OCKvkHenGsLgWzSjbkyujyvoNzlxG/T5 ZiU+M9gbZxLBFLMmMOwu7/3/dv9Zgovm+tjtxnLFPO7oZhB47coK2/QSCu86ovZtVruzGqN02 e8njKz4BCeEG0hTZPasGcU+Nbm5Fg2XXt5NlE1iihkceYm5noWCq6fORAf3mmQY2tpiDQe73c oVGXwF51InczMlfhnNK1HK9U/aY2fvCf7o4ql0YAEGwJ9uzOmm/TqrmwsvhV+7eqpSTz4u5tB dl6jrH7wj0qlsnSRPCWCYoFerieCLTOXYwHUFezi+VELSSaG5cVHgb+TxjzM1k5Df0Kh3u2mN miwg5noFkJFj6nPYN8w9juedk1qCNZaI/lEoIEJE7KusOuguNhAjfNH9Kz2bMV6WdLJt04sEH oXuFZVGnPHkGDwnJUPzvXAZZ9ukRDZZNja5VcjNua7hbGdRk3K3KGMGj2AmK8Wjw+ZP3dZ/tS +aqfyxQDRntFGCBbZhHW2QlOyWonL7Hzh9tqv+/+4uxRwdTXzapoiMFdRMMrvPDS1LEbR/ASI bAZ6Elw5kT9djs3bZPXbNLPigRxDdSHKz/7muXFAZLIxiYeiKReN6AYUQctMhQRjCcIzygdnm Wpn77fYgJM2dYTKZ0aA0o8J/RzL2LnMhPhB6rQ5wBQ+B8KF2/ntvZvsfmSCM2RYOu8TiADXXt Nh1yDoXYZxvRxYQzG6b4suLBOxUxdyCOscZlLKm18cd6yGmUqd61fC+qjaiAJU3Dqt5vz42V8 2SwNuGSDbBBeclqxtV5RrzUrOSnEkWfu/B0zOJsWHNU+bW2BWlDfLCb3mWkt6aQ15tQCfFk7h xWaMn3c0Yj6DdqaiHFTExTBQa1D46iY/QHbEbJMszb6B0f4mGa5Z66J1DwvxlL2MtARUBMIty oBbwhQppO3IENWhwT0W3k2DbQsBYpgK49ampLWvjgkmnNA9hBhrjGDwT66JjaJDrOSkiMR9eP tT5TRNbRq350/mLLF/LNaSwuDAKT43CHF7Eq/3zhH1CO1RDZjLMMjwA3JZMYs0ipxWD695Z3A e4y5WyDA4YHWEZ0lS/ISe9AL7U3hvf7g7XRSaKThG9x+8xbBpTJLzGajmpRL5MT+Kn94B+CQ4 +6ShZDXYhD7vU+uuwUOI0wLATcbzJ5cO1eb3Z6Jxhp/KAMc3Ku+sljrD16JSKFAeOiYVZc5h0 rxK5PjmNJDisZoNyQjBw+IOxExKLm4nuL8Ay+xqBCOq14GkwHY1NMcgvI79zIZwmai08a/fcW pX95So3UUCZA/UcIBG+PA/hDINbe4NyiFo2tyn0rdM+gqGsh1N98bk= Content-Type: text/plain; charset="utf-8" Use the new buffer-based WMI API to also support ACPI firmware implementations that do not use ACPI buffers for returning the results of a SMM call. Acked-by: Guenter Roeck Signed-off-by: Armin Wolf Reviewed-by: Mario Limonciello --- drivers/hwmon/dell-smm-hwmon.c | 47 ++++++++++++---------------------- 1 file changed, 16 insertions(+), 31 deletions(-) diff --git a/drivers/hwmon/dell-smm-hwmon.c b/drivers/hwmon/dell-smm-hwmon.c index 038edffc1ac7..82aa626fc4b8 100644 --- a/drivers/hwmon/dell-smm-hwmon.c +++ b/drivers/hwmon/dell-smm-hwmon.c @@ -12,8 +12,9 @@ =20 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt =20 -#include +#include #include +#include #include #include #include @@ -36,10 +37,10 @@ #include #include #include +#include #include =20 #include -#include =20 #define I8K_SMM_FN_STATUS 0x0025 #define I8K_SMM_POWER_STATUS 0x0069 @@ -232,7 +233,7 @@ static const struct dell_smm_ops i8k_smm_ops =3D { /* * Call the System Management Mode BIOS over WMI. */ -static ssize_t wmi_parse_register(u8 *buffer, u32 length, unsigned int *re= g) +static ssize_t wmi_parse_register(u8 *buffer, size_t length, unsigned int = *reg) { __le32 value; u32 reg_size; @@ -253,7 +254,7 @@ static ssize_t wmi_parse_register(u8 *buffer, u32 lengt= h, unsigned int *reg) return reg_size + sizeof(reg_size); } =20 -static int wmi_parse_response(u8 *buffer, u32 length, struct smm_regs *reg= s) +static int wmi_parse_response(u8 *buffer, size_t length, struct smm_regs *= regs) { unsigned int *registers[] =3D { ®s->eax, @@ -261,7 +262,7 @@ static int wmi_parse_response(u8 *buffer, u32 length, s= truct smm_regs *regs) ®s->ecx, ®s->edx }; - u32 offset =3D 0; + size_t offset =3D 0; ssize_t ret; int i; =20 @@ -273,19 +274,16 @@ static int wmi_parse_response(u8 *buffer, u32 length,= struct smm_regs *regs) if (ret < 0) return ret; =20 - offset +=3D ret; + /* WMI aligns u32 integers on a 4 byte boundary */ + offset =3D ALIGN(offset + ret, 4); } =20 - if (offset !=3D length) - return -ENOMSG; - return 0; } =20 static int wmi_smm_call(struct device *dev, struct smm_regs *regs) { struct wmi_device *wdev =3D container_of(dev, struct wmi_device, dev); - struct acpi_buffer out =3D { ACPI_ALLOCATE_BUFFER, NULL }; u32 wmi_payload[] =3D { sizeof(regs->eax), regs->eax, @@ -296,32 +294,19 @@ static int wmi_smm_call(struct device *dev, struct sm= m_regs *regs) sizeof(regs->edx), regs->edx }; - const struct acpi_buffer in =3D { + const struct wmi_buffer in =3D { .length =3D sizeof(wmi_payload), - .pointer =3D &wmi_payload, + .data =3D &wmi_payload, }; - union acpi_object *obj; - acpi_status status; + struct wmi_buffer out; int ret; =20 - status =3D wmidev_evaluate_method(wdev, 0x0, DELL_SMM_LEGACY_EXECUTE, &in= , &out); - if (ACPI_FAILURE(status)) - return -EIO; - - obj =3D out.pointer; - if (!obj) - return -ENODATA; - - if (obj->type !=3D ACPI_TYPE_BUFFER) { - ret =3D -ENOMSG; - - goto err_free; - } - - ret =3D wmi_parse_response(obj->buffer.pointer, obj->buffer.length, regs); + ret =3D wmidev_invoke_method(wdev, 0x0, DELL_SMM_LEGACY_EXECUTE, &in, &ou= t); + if (ret < 0) + return ret; =20 -err_free: - kfree(obj); + ret =3D wmi_parse_response(out.data, out.length, regs); + kfree(out.data); =20 return ret; } --=20 2.39.5 From nobody Tue Apr 7 07:34:16 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.15.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5D9B33043DE; Sat, 14 Mar 2026 17:53:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773510796; cv=none; b=IKf2xUlqPNai6jAKm51MNjKqmyA34s6C4FWKZsA2xjY73uEtP62YNu18FHV/8zkno9ekriNa5K+bN4JFrRRhstZmTNhi5HpUQaGPl7QEoBSsiG24GivC0QF53WZPHztwHMy0Zs6nr52yzkWEb5CoqHewXzx2ZnzAJaj9s9pIzq4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773510796; c=relaxed/simple; bh=XkCMJ7ozZ5TIFut03c48XQ8wVAkXKSmOEqRVO85lZyc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=fTAT5osgJPtX2vEt8NGfElnWpo4z2LeG2khcmsM8vC85fIOL7RZkELDpIxRQj+0hj47Qv3IN0+3j/stCgOLOiChlgleuoQobFjswiAYEB+l0d68p/D2lR8xfJQsYiDg3uWT5/pM8piOBsB/RN3V5mkvdqLRJZW57qqTZ7Sa2UqA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=lfN+Ue/v; arc=none smtp.client-ip=212.227.15.18 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="lfN+Ue/v" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1773510792; x=1774115592; i=w_armin@gmx.de; bh=U70qC46D3P6sJ9E78bZU/zkNQ2aG3Rvvw/Di3Z3vUrQ=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=lfN+Ue/vZww7sF/Pw4wMeyjeCTinqAZCB5SkSy/vFu6D85W66yl5sWqAilKTLMF0 luhL2CR32VrhFvHGNubcaWjy0OI6bI2EjL7KDuvl7xy1433LRCEaxYcVn/UrV/BTD yJZAhcnp3581ChquJv7MKpL4QMlILzuM9kyo6Gn6fCnBbahs0CHwldKFC5oMPIuzy OqDPeAqQrUEh0rRffsCqA5VoGWxdSwFAOpTQZI4/ha4vB6Kr1gzhQ+dQDQdFBloMU 1Hla/Ehd72WA7ktGGjiNfTJcL14N4125nGUMTyJAbM+uFip9CyertlA7ezrx5UAPq JSQgerzrTUjsC+L9PQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M59GA-1w0NFE1lUC-002031; Sat, 14 Mar 2026 18:53:12 +0100 From: Armin Wolf To: Dell.Client.Kernel@dell.com, pali@kernel.org, mjg59@srcf.ucam.org Cc: soyer@irl.hu, hansg@kernel.org, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, linux@roeck-us.net, linux-hwmon@vger.kernel.org, mario.limonciello@amd.com Subject: [PATCH v3 7/9] platform/wmi: Make wmi_bus_class const Date: Sat, 14 Mar 2026 18:52:47 +0100 Message-Id: <20260314175249.16040-8-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260314175249.16040-1-W_Armin@gmx.de> References: <20260314175249.16040-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:JZhp8kcfJEa+871GAAGz9p7vxWkk15gRa/FeNioIlzH7TfEEDJv dzgtIDsIcjgZqTemsoQK6oT54M9Jxzs9F5FYUMNvoZeZrgSIkV6o4iSkbiAgzLb1P+5f+JY ij4ofx5pMd70p4/bj0sCYY62dLxvWmJapNSRbL+bo5op0Q0ktUeH9HEkMYI8cUFuCMCUDrp Jvwa6usKOz8H7jZ0tPYBg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:HZKP00NpQmM=;arTL0cbueFNhXGVkiWrs/BVq/0v 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 Content-Type: text/plain; charset="utf-8" The functions class_register()/_unregister() and device_create() both support taking a const pointer to the class struct. Use this to mark wmi_bus_class as const so that it can be placed into read-only memory for better security. Signed-off-by: Armin Wolf Reviewed-by: Mario Limonciello --- drivers/platform/wmi/core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/platform/wmi/core.c b/drivers/platform/wmi/core.c index b8e6b9a421c6..082c85625878 100644 --- a/drivers/platform/wmi/core.c +++ b/drivers/platform/wmi/core.c @@ -1069,7 +1069,7 @@ static void wmi_dev_shutdown(struct device *dev) } } =20 -static struct class wmi_bus_class =3D { +static const struct class wmi_bus_class =3D { .name =3D "wmi_bus", }; =20 --=20 2.39.5 From nobody Tue Apr 7 07:34:16 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 323611A275; Sat, 14 Mar 2026 17:53:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.15 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773510797; cv=none; b=WWcoT5ItxGFM5jxK/82UXEmfZhL0gQ52zvS8ZF0tHS9jqS7M7keNc9X7FbqqX568FklQZ+7TOtGEddfB4+cKjOqSIlb8MpqAlNVoSN33KNP3KTJmi72ig+2mva7WCnJnG9HHZTM74EvMbA1MnoOk5xTIupR1WZ2bkbyjL6sG7mk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773510797; c=relaxed/simple; bh=/eGwD4fhg8LTJnCVSRrW0gkeOJMBW8xCMHNlNZwM9Oc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=OT6QUufMbxbs8fH89w1fTelGBoW1+avA3zyXC8Gh+jwl8I0cum/Emv5SFtsQ9qpYN8xbsq8/RXi1yeZl6wwGzU+1C63GPH9U71YpMwqmIE4M0LOWX7dZgoBVQeK8lMnCQ1dKrXALgkl5y/QvlNRfzqjoaP3AL7t4wyovuwLwf5U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=OzOq3hgR; arc=none smtp.client-ip=212.227.15.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="OzOq3hgR" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1773510794; x=1774115594; i=w_armin@gmx.de; bh=X0M69zc2AGnZp/wYLbrO9ROF+xDzTXntMd5s3xSM94k=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=OzOq3hgR2e4KO8BlfE6p4HM80NLvPwcjzhp56TdPm9VIggSgqgx+8Rjou0uhQvJI 3Dt+XvBxZvV5rx1KI7TBAY2FbhvdWUY7sST99MZvHdDvSx+IWOCQo/lUsLpy430UE EBn4ruU6LvEVzSr/2Q2qXuMGVY1GsQyFwP14cjDTkMjqzyESKKX7+uysiIIQgIP4f heAW1eksINhpyAqB+iuNwa/dRalI7A0uAXIK5/Hs0yuBQrq3XuNWATl2n5NxHrP64 3GBfoWW1Brt26rlG+LtpQ6L3dHQcYSuFAuLdOa+LXJrgLBW0sz/Dtmi89Pu+kwMu6 UR5CxZ3dFZ/F4U+kHQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1N5VHM-1vZLW7414U-016gJ4; Sat, 14 Mar 2026 18:53:14 +0100 From: Armin Wolf To: Dell.Client.Kernel@dell.com, pali@kernel.org, mjg59@srcf.ucam.org Cc: soyer@irl.hu, hansg@kernel.org, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, linux@roeck-us.net, linux-hwmon@vger.kernel.org, mario.limonciello@amd.com Subject: [PATCH v3 8/9] platform/wmi: Make sysfs attributes const Date: Sat, 14 Mar 2026 18:52:48 +0100 Message-Id: <20260314175249.16040-9-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260314175249.16040-1-W_Armin@gmx.de> References: <20260314175249.16040-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:Gy1O+c5MFsh/4p8f0RnweWUdWOxAFrICgeVpNJA577lQZjF98JB A0tM0kVJ6fm2h9JogTcjsGLXAD1sDRjVfvHA0RtoyaJeN+RntM5U77YoBDRuYqZSAZKex4n RAaIhJ+p8i0t8leUA4JWnpIWcAAXHSxPIWYa34w0RJE48acxU9fmj0eRbxinExar17Kpxwe hCujlIFyx1eYI1joTwj6A== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:/WGLbBBs4L8=;cGENNMSNCx5PmInOYKksDJ8Jin9 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 Content-Type: text/plain; charset="utf-8" The sysfs core supports const attributes. Use this to mark all sysfs attributes as const so that they can be placed into read-only memory for better security. Signed-off-by: Armin Wolf Reviewed-by: Mario Limonciello --- drivers/platform/wmi/core.c | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/drivers/platform/wmi/core.c b/drivers/platform/wmi/core.c index 082c85625878..1b5bb3410252 100644 --- a/drivers/platform/wmi/core.c +++ b/drivers/platform/wmi/core.c @@ -812,7 +812,8 @@ static ssize_t modalias_show(struct device *dev, struct= device_attribute *attr, =20 return sysfs_emit(buf, "wmi:%pUL\n", &wblock->gblock.guid); } -static DEVICE_ATTR_RO(modalias); + +static const DEVICE_ATTR_RO(modalias); =20 static ssize_t guid_show(struct device *dev, struct device_attribute *attr, char *buf) @@ -821,7 +822,8 @@ static ssize_t guid_show(struct device *dev, struct dev= ice_attribute *attr, =20 return sysfs_emit(buf, "%pUL\n", &wblock->gblock.guid); } -static DEVICE_ATTR_RO(guid); + +static const DEVICE_ATTR_RO(guid); =20 static ssize_t instance_count_show(struct device *dev, struct device_attribute *attr, char *buf) @@ -830,7 +832,8 @@ static ssize_t instance_count_show(struct device *dev, =20 return sysfs_emit(buf, "%d\n", (int)wblock->gblock.instance_count); } -static DEVICE_ATTR_RO(instance_count); + +static const DEVICE_ATTR_RO(instance_count); =20 static ssize_t expensive_show(struct device *dev, struct device_attribute *attr, char *buf) @@ -840,7 +843,8 @@ static ssize_t expensive_show(struct device *dev, return sysfs_emit(buf, "%d\n", (wblock->gblock.flags & ACPI_WMI_EXPENSIVE) !=3D 0); } -static DEVICE_ATTR_RO(expensive); + +static const DEVICE_ATTR_RO(expensive); =20 static ssize_t driver_override_show(struct device *dev, struct device_attr= ibute *attr, char *buf) @@ -867,9 +871,10 @@ static ssize_t driver_override_store(struct device *de= v, struct device_attribute =20 return count; } -static DEVICE_ATTR_RW(driver_override); =20 -static struct attribute *wmi_attrs[] =3D { +static const DEVICE_ATTR_RW(driver_override); + +static const struct attribute * const wmi_attrs[] =3D { &dev_attr_modalias.attr, &dev_attr_guid.attr, &dev_attr_instance_count.attr, @@ -886,9 +891,10 @@ static ssize_t notify_id_show(struct device *dev, stru= ct device_attribute *attr, =20 return sysfs_emit(buf, "%02X\n", (unsigned int)wblock->gblock.notify_id); } -static DEVICE_ATTR_RO(notify_id); =20 -static struct attribute *wmi_event_attrs[] =3D { +static const DEVICE_ATTR_RO(notify_id); + +static const struct attribute * const wmi_event_attrs[] =3D { &dev_attr_notify_id.attr, NULL }; @@ -902,7 +908,8 @@ static ssize_t object_id_show(struct device *dev, struc= t device_attribute *attr, return sysfs_emit(buf, "%c%c\n", wblock->gblock.object_id[0], wblock->gblock.object_id[1]); } -static DEVICE_ATTR_RO(object_id); + +static const DEVICE_ATTR_RO(object_id); =20 static ssize_t setable_show(struct device *dev, struct device_attribute *a= ttr, char *buf) @@ -911,16 +918,17 @@ static ssize_t setable_show(struct device *dev, struc= t device_attribute *attr, =20 return sysfs_emit(buf, "%d\n", (int)wdev->setable); } -static DEVICE_ATTR_RO(setable); =20 -static struct attribute *wmi_data_attrs[] =3D { +static const DEVICE_ATTR_RO(setable); + +static const struct attribute * const wmi_data_attrs[] =3D { &dev_attr_object_id.attr, &dev_attr_setable.attr, NULL }; ATTRIBUTE_GROUPS(wmi_data); =20 -static struct attribute *wmi_method_attrs[] =3D { +static const struct attribute * const wmi_method_attrs[] =3D { &dev_attr_object_id.attr, NULL }; --=20 2.39.5 From nobody Tue Apr 7 07:34:16 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 46B43328B61; Sat, 14 Mar 2026 17:53:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.15.15 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773510799; cv=none; b=jGXq79fTj5/rrZxxLygewmXzuR+gjP7rwI0QkrhIh5bxZ2N7KRwOySBPmeBsG+a2CzwBFxmaseOstFr77POp2jlSSZyCVasfh8uzZj9ppUUCzBlqvO13LIkj7LWXwJ5GKind0DgAxWUlfwiRpH9wW+XArNgb8eXYOxtcPG7mxOM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773510799; c=relaxed/simple; bh=EIEAIMAWlivOEsKWrFH805avfGEQHpaDoGyT6YNUhJI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=TgCm0EficI3EbgEdPYjzwFdCyH14mcGsJ4jn2VcEt0giLLDN+GqEI3YEIqC2iuGDOCERmvih8Z5hY3czNxTXAMqbet4OmL0H+MgFih+4YJG4JVl3V3dQ1bbxrD6My5chQV7ZyRYpqwQTWN/ZhPt/U90GIhDv3vNXnu+oXgki/f8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de; spf=pass smtp.mailfrom=gmx.de; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b=NUbFn5t0; arc=none smtp.client-ip=212.227.15.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gmx.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmx.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmx.de header.i=w_armin@gmx.de header.b="NUbFn5t0" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1773510795; x=1774115595; i=w_armin@gmx.de; bh=6sk9cZuhnKYi0MkbTnCeftlMbOwsXCX+l4ak3dLD9wk=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=NUbFn5t0Ckmo8X1SQwCjDg9/9Ya8M4V+MMZGy4z5FaWBkrjJyKOn7/2/wRpDKGYQ +AP+ENtFktgllzQrHdl5H47pHEPt5QQIvEVKx+29MncQqaTlJBoQK2SRJ3VjbI+oC rLPKATZSuuRvtDyYjGHVdAEqodg1Wyn6YoI+m6T4DLH0cEygMki1MTcC96BsQipqE rXeJpqRtP8nUA5RpE0qsbs/Hfk1EUNFOTJFX8wtJfaQL9yt+4QBwAYGrqWfW7d6N4 HFUaJRmQcVjL5memXx9zVWvFlYkiMwgnIncyUjgXYL05HV60lM64WLBf7xp7hepPf byGWmta72Bd2R9Ie4A== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M6lpM-1vykgX1dle-0080g1; Sat, 14 Mar 2026 18:53:15 +0100 From: Armin Wolf To: Dell.Client.Kernel@dell.com, pali@kernel.org, mjg59@srcf.ucam.org Cc: soyer@irl.hu, hansg@kernel.org, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, linux@roeck-us.net, linux-hwmon@vger.kernel.org, mario.limonciello@amd.com Subject: [PATCH v3 9/9] modpost: Handle malformed WMI GUID strings Date: Sat, 14 Mar 2026 18:52:49 +0100 Message-Id: <20260314175249.16040-10-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260314175249.16040-1-W_Armin@gmx.de> References: <20260314175249.16040-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:2xx2wJcvi3s1lxOZEc7+pXvWEsyO+01kDe1RAh9kNtuf1vtQmhl WZasNiMjHqWn2ufl9RNOGsSqUtgU5YQ/KfORtYlhsAmhvur+au9vYi5ZKSB+qdD3+oG7+Wq tBGu5cYEr3pnVNlECjQ4oCVCMiJ56buzelrZe/XWhGI9W4a0YhhJSMQhSithjdQD0NjCY+7 Eu1ZAq3QhS7GniYQT/vjw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:6qdx5rtP2co=;xtIOQg/LgjrP8e0ZrgVwZ8CDSI0 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 zpKq6uWEzSw Content-Type: text/plain; charset="utf-8" Some WMI GUIDs found inside binary MOF files contain both uppercase and lowercase characters. Blindly copying such GUIDs will prevent the associated WMI driver from loading automatically because the WMI GUID found inside WMI device ids always contains uppercase characters. Avoid this issue by always converting WMI GUID strings to uppercase. Also verify that the WMI GUID string actually looks like a valid GUID. Signed-off-by: Armin Wolf Reviewed-by: Mario Limonciello --- .../wmi/driver-development-guide.rst | 2 +- scripts/mod/file2alias.c | 28 ++++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/Documentation/wmi/driver-development-guide.rst b/Documentation= /wmi/driver-development-guide.rst index fbc2d9b12fe9..74bb156ad9cc 100644 --- a/Documentation/wmi/driver-development-guide.rst +++ b/Documentation/wmi/driver-development-guide.rst @@ -54,7 +54,7 @@ to matching WMI devices using a struct wmi_device_id tabl= e: :: =20 static const struct wmi_device_id foo_id_table[] =3D { - /* Only use uppercase letters! */ + /* Using only uppercase letters is recommended */ { "936DA01F-9ABD-4D9D-80C7-02AF85C822A8", NULL }, { } }; diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c index 4e99393a35f1..20e542a888c4 100644 --- a/scripts/mod/file2alias.c +++ b/scripts/mod/file2alias.c @@ -1253,6 +1253,8 @@ static void do_tee_entry(struct module *mod, void *sy= mval) static void do_wmi_entry(struct module *mod, void *symval) { DEF_FIELD_ADDR(symval, wmi_device_id, guid_string); + char result[sizeof(*guid_string)]; + int i; =20 if (strlen(*guid_string) !=3D UUID_STRING_LEN) { warn("Invalid WMI device id 'wmi:%s' in '%s'\n", @@ -1260,7 +1262,31 @@ static void do_wmi_entry(struct module *mod, void *s= ymval) return; } =20 - module_alias_printf(mod, false, WMI_MODULE_PREFIX "%s", *guid_string); + for (i =3D 0; i < UUID_STRING_LEN; i++) { + char value =3D (*guid_string)[i]; + bool valid =3D false; + + if (i =3D=3D 8 || i =3D=3D 13 || i =3D=3D 18 || i =3D=3D 23) { + if (value =3D=3D '-') + valid =3D true; + } else { + if (isxdigit(value)) + valid =3D true; + } + + if (!valid) { + warn("Invalid character %c inside WMI GUID string '%s' in '%s'\n", + value, *guid_string, mod->name); + return; + } + + /* Some GUIDs from BMOF definitions contain lowercase characters */ + result[i] =3D toupper(value); + } + + result[i] =3D '\0'; + + module_alias_printf(mod, false, WMI_MODULE_PREFIX "%s", result); } =20 /* Looks like: mhi:S */ --=20 2.39.5