From nobody Sat Jun 13 16:24:16 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) (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 49658394EAD; Wed, 10 Jun 2026 20:35:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781123708; cv=none; b=cM0K9kA7KmH/3DSlGhh55oTepe4tDs/xuVl/Ujy4XiDBMgCca2nYGKWrL/s4Nnr1e7xIf4Me5yZ/m2s1dFykdo2H/IfGluH8S3BXPLjgCMoY9nXb7luI+M5iL5DXOJi/dfHZwZqrtUHfl7VXAwhMuJCY5U//6zS88Js3fK6GJeU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781123708; c=relaxed/simple; bh=1wldWsdwzfXwTayxJ5NMFKk4EU15CJd92ekBwbNpGdM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=WWyY0KwedHvJzKorgWX2Ocr6VgNrycybby33NUr5h/RCwEqNWkro7hcGOJ3ZgrHQI2KQInulgtF7BndTYUogf2d8FDlcH2ZILgyaJPzNc1YhB8XCfWuhHQI+oAyq1OKAX9qSq94pBRObN4FolCLhlvgKlIJU6igdQ9AoA2StDbI= 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=e6JBO0Nn; arc=none smtp.client-ip=212.227.17.21 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="e6JBO0Nn" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1781123703; x=1781728503; i=w_armin@gmx.de; bh=4H7/H6FlzWYmgYTJ79L8PeMItgp93BN6vJTDVhVZoK4=; 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=e6JBO0Nnb9prH4clK/+VGDXsRKSotAbXE1OnFTeKosRHobcR4vqagW10j5W4IZAB MGWyOx9hw+LF6Fdr48Wh2cZqflceENNpmnKeK0EuUszaQAV47hr8hSLs/736qviWk Se+A1vKSHUU9GwAKYpy8y1iqqLEbG68NPCclC/4HOWJlEQRjXUkJAA0FT6IHeghLd /MKGkWucfQnKjzgqknxh6I75w//RYSqvrJ06KKCihbPOSBH83RBWWlhCI3O+TrwmW IwDfEtl9V0UpnCwre/+Wg1NFfkzEC2pveRQ61PUGsbtNX3Ri3j7KsPu0g0oEFSXGi TKgsZBBpLEAc2tX3Gg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N2E1G-1xEgJt0FuY-00ruY5; Wed, 10 Jun 2026 22:35:03 +0200 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 v6 1/9] platform/x86: dell-descriptor: Use new buffer-based WMI API Date: Wed, 10 Jun 2026 22:34:45 +0200 Message-Id: <20260610203453.816254-2-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260610203453.816254-1-W_Armin@gmx.de> References: <20260610203453.816254-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:UiLlY1ScIstR7BfnLNhnqr3F9+JOe+UwvPiJ6oLich1wkb9Hej4 aEnOequ9VASeYw1HYe0/WrfdshzY4hNSvn1j428w9NNthIjZa752eZKgzQNR07eaZW0QGbv NZANv3Vp61NU/eCE1Q8MErgkU7PcDO+RcBOXh9xAKzhzPBdW/CVFYCKtm0/D3ShfO9G406Y vNd+aG2JIfgifvz/PF+jw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:qa/6S1xWRjg=;hVUBZjrBND+SNwx/ABAEYl18hDi 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 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 --- .../platform/x86/dell/dell-wmi-descriptor.c | 108 ++++++++---------- 1 file changed, 48 insertions(+), 60 deletions(-) diff --git a/drivers/platform/x86/dell/dell-wmi-descriptor.c b/drivers/plat= form/x86/dell/dell-wmi-descriptor.c index c2a180202719..179d5678b3ad 100644 --- a/drivers/platform/x86/dell/dell-wmi-descriptor.c +++ b/drivers/platform/x86/dell/dell-wmi-descriptor.c @@ -7,14 +7,35 @@ =20 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt =20 -#include +#include +#include #include #include +#include #include #include "dell-wmi-descriptor.h" =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 { + /* Both fields are NOT null-terminated */ + char vendor_signature[4] __nonstring; + char object_signature[4] __nonstring; + __le32 interface_version; + __le32 buffer_length; + __le32 hotfix_number; +} __packed; + struct descriptor_priv { struct list_head list; u32 interface_version; @@ -88,77 +109,46 @@ 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; 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; - } - - if (obj->type !=3D ACPI_TYPE_BUFFER) { - dev_err(&wdev->dev, "Dell descriptor has wrong type\n"); - ret =3D -EINVAL; + ret =3D wmidev_query_block(wdev, 0, &buffer, sizeof(struct descriptor)); + if (ret < 0) { descriptor_valid =3D ret; - goto out; + return ret; } =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; - descriptor_valid =3D ret; - goto out; - } + struct descriptor *desc __free(kfree) =3D buffer.data; =20 - buffer =3D (u32 *)obj->buffer.pointer; + 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); + descriptor_valid =3D -ENOMSG; + return -ENOMSG; + } =20 - 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; - descriptor_valid =3D ret; - goto out; + if (strncmp(desc->object_signature, " WMI", sizeof(desc->object_signature= ))) { + dev_err(&wdev->dev, "Dell descriptor buffer has invalid object signature= (%4ph)\n", + desc->object_signature); + descriptor_valid =3D -ENOMSG; + return -ENOMSG; } 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) > 1) + dev_warn(&wdev->dev, "Dell descriptor buffer has unknown version (%u)\n", + le32_to_cpu(desc->interface_version)); =20 - if (!priv) { - ret =3D -ENOMEM; - goto out; - } + priv =3D devm_kzalloc(&wdev->dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; =20 - priv->interface_version =3D buffer[2]; - priv->size =3D buffer[3]; - priv->hotfix =3D buffer[4]; - ret =3D 0; + 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); dev_set_drvdata(&wdev->dev, priv); mutex_lock(&list_mutex); list_add_tail(&priv->list, &wmi_list); @@ -169,8 +159,6 @@ static int dell_wmi_descriptor_probe(struct wmi_device = *wdev, (unsigned long) priv->size, (unsigned long) priv->hotfix); =20 -out: - kfree(obj); return ret; } =20 --=20 2.39.5 From nobody Sat Jun 13 16:24:16 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (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 B377B39FCB1; Wed, 10 Jun 2026 20:35:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.20 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781123710; cv=none; b=pHCPNJ9s683flQ3LAoqDP3nPaP/hZEZn3ajhAcVRRB/c9Dbaluej1ftT2e5s4koJPH3EmYUZJsIok4YkokgcOIhLMLsa1clNYuUNhjjpXzVoNeImH8n5IuJmAAt6mu3ZdTj2juj39CTiFpQF0nPVi2BsxyTiU6s/wAyOJ0P4md4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781123710; c=relaxed/simple; bh=N/XpJanW6kdMhy90J3p0xWRi74pum/5mkXVP+XR0JoI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ht1kAhkD4a411jq1r4Y56CeOqGIxuMXImeXUjDfESzTn94U2lTK3QeZbCU3S74GnIPro4g60H1O6wNg25hqGQPtKZtn3WJxXMizzViz2QO8RT8o3etiNt5rXacBQmgj8/UKXNEAoi5NJRcMGA4pTQqAx3l2DTjzwTPw69BGsjQI= 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=k5hlu2n4; arc=none smtp.client-ip=212.227.17.20 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="k5hlu2n4" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1781123706; x=1781728506; i=w_armin@gmx.de; bh=SyjF3q6uimCcjuVZt4NVxbsdRhXpVdXmBYAAcc/YDXE=; 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=k5hlu2n4/ebXnqp5CXhywp1StZWfjyaS58UzR6h2WMuPsPKuG9a+5bQhBn9xkeoG 6sd9+SJzYDYmPh+7MEJHp+5A4jbV9Pnu4HOgIsOQGVxKwyWEcdAAdxo7pnG3TjuaX 6mqbv0Fc+tdF0aBQZ5dF5/VGw84hrR8s8u8NGgbkYgUwTzECUe66kB0IV1VOQ+SgB axLwHOHULKlwEw7b5+0NPNnkGEuLI8rgej4uMtLC5lQ4NA1CEGrAGDyyu0itYkmRa iqntV4BYgZMXPwxwAa7QqPRibTAXOFV+CSw34oi6BxqCQr8NXFIdBTwKVi0Yv4XNU bo5fne5eeaOnO57rhQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Mi2Jt-1xAcGm3qSH-00pXlq; Wed, 10 Jun 2026 22:35:06 +0200 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 v6 2/9] platform/x86: dell-privacy: Use new buffer-based WMI API Date: Wed, 10 Jun 2026 22:34:46 +0200 Message-Id: <20260610203453.816254-3-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260610203453.816254-1-W_Armin@gmx.de> References: <20260610203453.816254-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:pwiiqwwyVG00F8midS/o9yUbGtXe1N5stxucXY/3m0aNtMujoAg veoEFEeq85P+ynPR3lsjdXvtoafqlLGunWkPdZmcyvD/x0BV9gd6zIZKQhsu+IIWvwJrncx xXtRA0nwFExuz2f4lutPFcUJ+7b3SyCaC70hIqG13QIeJyIFFYI0kcWu2AaYQ0AU3Uu0mD5 nXQnHLrkNss/271MPTAFA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:964Ibzu6rpg=;miFGJYOGyVzGaN9OgEOBjy/9EYD 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 q2GxpVDRI= 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 --- drivers/platform/x86/dell/dell-wmi-privacy.c | 77 +++++++++----------- 1 file changed, 34 insertions(+), 43 deletions(-) diff --git a/drivers/platform/x86/dell/dell-wmi-privacy.c b/drivers/platfor= m/x86/dell/dell-wmi-privacy.c index ed099a431ea4..f9d275b2f900 100644 --- a/drivers/platform/x86/dell/dell-wmi-privacy.c +++ b/drivers/platform/x86/dell/dell-wmi-privacy.c @@ -9,11 +9,14 @@ =20 #include #include +#include +#include #include #include #include #include #include +#include #include =20 #include "dell-wmi-privacy.h" @@ -25,6 +28,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,60 +208,28 @@ 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 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, sizeof(struct device_state)); + 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); - ret =3D -EINVAL; - goto obj_free; - } - buffer =3D (u32 *)obj_present->buffer.pointer; - priv->features_present =3D buffer[0]; - priv->last_status =3D buffer[1]; + struct device_state *state __free(kfree) =3D buffer.data; =20 -obj_free: - kfree(obj_present); - return ret; + priv->features_present =3D le32_to_cpu(state->devices_supported); + priv->last_status =3D le32_to_cpu(state->current_state); + + return 0; } =20 static int dell_privacy_micmute_led_set(struct led_classdev *led_cdev, --=20 2.39.5 From nobody Sat Jun 13 16:24:16 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) (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 CC358481FC0; Wed, 10 Jun 2026 20:35:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781123719; cv=none; b=jFIhCmHaRMRGry8PsCau3R5CeqPdrLgwQ8uYKKkifwAQQ0vZfImkiJaDgRfA7Nxidr6D0YXNZRBeuxfRfo5SxFpxf7/Ds83vbyAjk49bNFJQ6i86SOqMtzB2+GDU6YzDRqdsupXXMS/l8O48g1D5fZ25T3T9q2tQWJYVPWbmfHc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781123719; c=relaxed/simple; bh=W3THHfIlBw4EfhGFn4fMDV4RYz4Xqd76fqVyB+3Ly20=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=K09Jzyd4I6eIj4Z6XGt8QcM3K7rWD2hwM6KINe2ecQx6PqdSb9j3obTvyMzNNhNgZStpNpPio3XB2j7pJaE/4FdI2Hb6nZT4kyE0MIasaza+MLHb3376s3rSWfX8DsbP4qB3QKZ0gDC2pwvF0dzatg+8b31ZRz+BP9m5rc6aap0= 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=aaz+g2zR; arc=none smtp.client-ip=212.227.17.21 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="aaz+g2zR" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1781123709; x=1781728509; i=w_armin@gmx.de; bh=SsErBAw2a9ir3sxsOtEpGKYSPmBucPxoQbrhZs990pw=; 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=aaz+g2zRUZVmdFJxq0TBOACzNMQ9evdI6f0XuGMUPTsa5cJNSv0u97AorCdA6gXY HKB0p620aLDZA/fmP2Fw5vm3yMSy9hoUlc1Q1dm0Gbi5Q5PIAxX1t/tWevSLMvNUz LoqiSKnwvf9e64RSExn1y04Wuc/Q1j0rf/UxFoOl2nBcKD7GCNbteX9SAdQCRPYkc YT7b+DyIi6YZfii8C6OX4CLJNF1pzHGY6d1Mg8xALwtR5gajUOd5a3ZupfN1TqPWc Xyp7VcTt5U5xufEJz4CaDDNZ3BSvLSR/YXKVjDc4iVbukHQsdRXqybkBna/YPO7XT qsAKvQXQluvsTYKzsA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MbivG-1x5uuQ1bGY-00jDKC; Wed, 10 Jun 2026 22:35:08 +0200 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 v6 3/9] platform/x86: dell-smbios-wmi: Use new buffer-based WMI API Date: Wed, 10 Jun 2026 22:34:47 +0200 Message-Id: <20260610203453.816254-4-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260610203453.816254-1-W_Armin@gmx.de> References: <20260610203453.816254-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:16Gr0/yJmTYHI2S+PGN/8ujRNC/rwnWEF0ZtdOt8VwiNdcmsSLs ZeBsRN/kSkhtdJVy/+nrLkrRM+/wWbuXfME4y562uwtcxwZWgoAXv4P62MWBCL4ZLWCPCof QwpLABXgxbQT+592ZZlNJbqaLitoPYcT/2Jkjid1PsJfNMaSci0V0JM0PAlF+3nJ0utGDY3 rRx9ntHKkpFjfLt3WB5sw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:Ob0S8nvSiz4=;yZ0vbpgGD3TcEw1DXu8+PyuMqaV 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 G4cxWJSAWYirZ3G3WNxgZF/Jh/8= 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 --- drivers/platform/x86/dell/dell-smbios-wmi.c | 40 +++++++++------------ 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/drivers/platform/x86/dell/dell-smbios-wmi.c b/drivers/platform= /x86/dell/dell-smbios-wmi.c index a7dca8c59d60..64d0871b706e 100644 --- a/drivers/platform/x86/dell/dell-smbios-wmi.c +++ b/drivers/platform/x86/dell/dell-smbios-wmi.c @@ -50,38 +50,32 @@ 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); - return -EIO; - } - memcpy(input.pointer, obj->buffer.pointer, obj->buffer.length); + /* + * The output buffer returned by the WMI method should have at least the = size + * of the input buffer. + */ + ret =3D wmidev_invoke_method(wdev, 0, 1, &input, &output, input.length); + if (ret < 0) + return ret; + + memcpy(input.data, output.data, input.length); + kfree(output.data); 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); =20 return 0; } --=20 2.39.5 From nobody Sat Jun 13 16:24:16 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (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 1316548096D; Wed, 10 Jun 2026 20:35:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.20 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781123722; cv=none; b=EpW2Nnfv1j9PiuF6ijTgrE+M6LckRxN3py51tAuLkEvLH7XAR9q4KPA4nKbzfqvb2ryEQZmPS3qZTeMRzb0sfsf+QkXkkrTb3fOPRuY5f8AKL1ZqJD2edqRieTXObFA30ItIH8FZhphQXm9Vrq0AFNB8Re9MEtAEf2W4QAJyHdY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781123722; c=relaxed/simple; bh=j0PO9IflLIIXC7A8kekh9PUEz5VGJBA2E902jRf6Ies=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=USHPUdGdCk+0+8LTppyox7Qds16Z3RwxhjL4iFVncGmUFve0oPioHJCZn9JAosYZb61/6SpIOmAvH2uOj5WQ5r/tbabCzy/FuoClmLLauUN1pIOm/XYGNo73oCeS6KpbjH2A46XW0jjwGPz8LJom/IyTqHQupsIqIX9SbGPeEWU= 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=R/4AG2/N; arc=none smtp.client-ip=212.227.17.20 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="R/4AG2/N" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1781123711; x=1781728511; i=w_armin@gmx.de; bh=mIb0K5eiIj66Ex90JWnPJ/XCD8JwIiGtYbewjEqgh0A=; 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=R/4AG2/NsPvpXboJah6PioUQllUVlGBQfyIQUvNfX4X7hLRnFQQZ6GoF7zZ0D+Y7 6CBvkiFWoLA95eMi93Ldz78pg0UCzHTzZnyLSMNPr0rHB+W9NZr+UQcZ7tXuA9Apw FrxR4eCp76fHyH7aFxkypNHF401SAzBdEs2lWzbWMmHpWeo4RKICovN+LKmdgPZTx P+6apfCwfz0A0TAH1NcSlH0NFvmKiNDIhLZr7vrEuqIQbUrd/lL96R+WtO5k4lFNh TuVmNi/SRpmLooxyvm//IESKjJSmaRRgJRNiMfsHqfw3fP1WiYJmfi7J9+NHpZ75X 08tuDu7O8x3Xx4Z+Dw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MNt0C-1wr9PS34Dw-00VY7w; Wed, 10 Jun 2026 22:35:11 +0200 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 v6 4/9] platform/x86: dell-wmi-base: Use new buffer-based WMI API Date: Wed, 10 Jun 2026 22:34:48 +0200 Message-Id: <20260610203453.816254-5-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260610203453.816254-1-W_Armin@gmx.de> References: <20260610203453.816254-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:DY+l2w7ogwdNxG76UArET1Ri1zr40pGP4+dboJTueRO2qMu29aN /Khse+sSULnrwwFHq/gyOupSLU1v2VQ+GTZjY5qc31rao1oLBUxquWUBcQCdCL5FPxHm/Wa a9rQmm0QOxlGO0cH9OyjNFiIFH8mBWNeGx35Vt1xMkjACNed9YZZRf4+q0KJfPklCh9rRD3 7IY+T1uGShFr4eMYeLW2g== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:CZbl5+iqjr8=;GNW3kKZcyWwQCNzkXpffcCbNT0M 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 /O+spEf6Q45f2Ejs3g= 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 --- drivers/platform/x86/dell/dell-wmi-base.c | 60 +++++++++++------------ 1 file changed, 28 insertions(+), 32 deletions(-) diff --git a/drivers/platform/x86/dell/dell-wmi-base.c b/drivers/platform/x= 86/dell/dell-wmi-base.c index 2a5804efd3ea..997383ba1846 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 @@ -414,7 +415,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; @@ -446,15 +448,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 @@ -463,24 +465,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", - obj->buffer.length, obj->buffer.pointer); + pr_debug("Received WMI event (%*ph)\n", (int)buffer->length, buffer->data= ); =20 - 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 /* @@ -496,12 +491,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 @@ -514,11 +509,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 */ @@ -526,22 +521,23 @@ 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])) + if ((len > 4) && dell_privacy_process_event(le16_to_cpu(buffer_entry[1]= ), + le16_to_cpu(buffer_entry[3]), + le16_to_cpu(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], + 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 @@ -825,10 +821,10 @@ static struct wmi_driver dell_wmi_driver =3D { .name =3D "dell-wmi", }, .id_table =3D dell_wmi_id_table, - .min_event_size =3D sizeof(u16), + .min_event_size =3D sizeof(__le16), .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 Sat Jun 13 16:24:16 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (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 B6AD14963C8; Wed, 10 Jun 2026 20:35:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.20 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781123726; cv=none; b=kD6IZJmT3O5gWQxJj9vE3qtRoTgGzjcZHeoyAuC+hcmJ/psRbSdvlpBsrBMz2nXqIdMIl/IIZ9vU4q4UuVyNvLWFXlT4qsziibfFWMxYv3/oiNApFWGFpj1tA1vxV0L1tDOqL6PTOBe1MoSuyvCSWgd9Z3+62EexH354+nx4sQI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781123726; c=relaxed/simple; bh=lSfyny9lqGUZXFvJHHE6gDoSsP2vV4TYziD4LBU+HTM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=jnYMNBoPC+UeYTyc/ZEgT4SLCurUn6tEAuP+WUo4KFLzybwunxbBQE+rFBJhN2JFg5J6bCFeBz1GdOiTHTKFcB3ejtCmy881fb/i9u766hN3o8hysY17vy3P0qwbd/eCxj/lENdbZ6jlXpTBVElYxlfkMdVGSoWs5+QCyaqfaTA= 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=KQap/i+Q; arc=none smtp.client-ip=212.227.17.20 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="KQap/i+Q" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1781123714; x=1781728514; i=w_armin@gmx.de; bh=MQ9Qr/M35n4h84/MiKljzSNSosLd4qG/u6tyG3fiD0o=; 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=KQap/i+QUWT/0Jg804NMzoiO8xzaNtpxeeUv9u7bSji3BV6X1p4eRf1J9z1ElFze zKN3BNQH5Hj/UWHmxX4cpboZcdp//IUCWsEivwmgnfHVplhVhNRnrUWGu6oEsLTGA esTeoh0QVW+i3cK0ckvAgnN7NN9MowsOVv+lEsyMMaF/YhiXT2aOhNcnc/FZCV7Wu ho7jFA4dhrbzb5HL86eVDR80jmE1cVHADkmU66dccTS756zhDyQoLg+uDUleCAc2Q 5ZF9pnW95WDh0oLJ8Y0B/9Xzq6m0pVx9jbs3+ztIj82VkD1E+W66DTK9+EZ7ulFYy RDP8fjRWZCgLBjL1JA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1M6lpG-1wbH031uHe-00EZZ6; Wed, 10 Jun 2026 22:35:14 +0200 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 v6 5/9] platform/x86: dell-ddv: Use new buffer-based WMI API Date: Wed, 10 Jun 2026 22:34:49 +0200 Message-Id: <20260610203453.816254-6-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260610203453.816254-1-W_Armin@gmx.de> References: <20260610203453.816254-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:T2CmUh85JfJvvLhKBPxXdxcRp8MEwEqhRmVgouHT0tavLjD+k6x mltfSQtPvOYbkBvvVpP7xYnUVog5pZb5XF76Nzc4rOKN/i6xZxHZya1Zsd3h6Z0EPUcDTFb FwiARjVYuuqw6urkss2Zm7TrNnW+X7v2c30K220T6+SwHDshBQz7QJ1GABqhejtDMGw9Oo/ 7SooxpJsfhGNkEyQQwJyw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:UsbNBXrUqik=;98yBdOdJInjQ6k2XFtAXIqaVLU1 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 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 --- drivers/platform/x86/dell/dell-wmi-ddv.c | 179 +++++++++++------------ 1 file changed, 85 insertions(+), 94 deletions(-) diff --git a/drivers/platform/x86/dell/dell-wmi-ddv.c b/drivers/platform/x8= 6/dell/dell-wmi-ddv.c index 62e3d060f038..736d9b1fdcfb 100644 --- a/drivers/platform/x86/dell/dell-wmi-ddv.c +++ b/drivers/platform/x86/dell/dell-wmi-ddv.c @@ -7,8 +7,9 @@ =20 #define pr_format(fmt) KBUILD_MODNAME ": " fmt =20 -#include #include +#include +#include #include #include #include @@ -99,6 +100,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 +132,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 +164,96 @@ 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, size_t min_size) { - 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; - - if (obj->type !=3D type) { - kfree(obj); - return -ENOMSG; - } - - *result =3D obj; =20 - return 0; + return wmidev_invoke_method(wdev, 0x0, method, &input, output, min_size); } =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; 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, sizeof(__le32)); if (ret < 0) return ret; =20 - if (obj->integer.value <=3D U32_MAX) - *res =3D (u32)obj->integer.value; - else - ret =3D -ERANGE; + __le32 *argr __free(kfree) =3D output.data; =20 - kfree(obj); + *res =3D le32_to_cpu(*argr); =20 - return ret; + return 0; } =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, sizeof(*buffer)); 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; - - goto err_free; - } - - 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; + size_t str_size; + int ret; + + ret =3D dell_wmi_ddv_query(wdev, method, arg, &output, sizeof(struct wmi_= string)); + if (ret < 0) + return ret; + + struct wmi_string *str __free(kfree) =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); + return -EMSGSIZE; + } + + return wmi_string_to_utf8s(str, buf, length); } =20 /* @@ -265,28 +262,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 +291,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 +323,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 +349,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 +406,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 +437,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 +548,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 +559,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 +745,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 +753,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 +989,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 Sat Jun 13 16:24:16 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) (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 667B74A3406; Wed, 10 Jun 2026 20:35:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.22 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781123736; cv=none; b=a/gEOBs+2cww8PhoLXg7BNNmLzYfLbLMEyTyR5JciXkNGHftyjaZ+BvZt6Shy9WteMytT7lNBWwPw6FS5k87iAk4XF+5TQQUrlzG2lAC3YOjWXwYlkMM37PJ9oTugVxQ+lc+lTpF6Z1mEy/fvoMZbvtBLYOfLAEXAtj2o6iyZA0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781123736; c=relaxed/simple; bh=CwpFc8ofkuBtMSQhBSp3A5YzYsTxM/yyxXC7UowxCKs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=f1FL3ybgDGgpmbYm39AcTfZTktlYS/e99TE7O6igrQS7DOIQX8oW620VSDXsHcttEoqcH9aYg1UlwgkZdks8VpgHoYwjIGNuiwDxSB4DhfthgCM6m5pi/LeTlL1mPGbE3CsMOdLETFrImocr98xZHa/fpt9KHSF3bp7aizeqV5Y= 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=OmQRHJjv; arc=none smtp.client-ip=212.227.17.22 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="OmQRHJjv" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1781123717; x=1781728517; i=w_armin@gmx.de; bh=Hm9PPaH0FNXPEVhPlKD0RFq6+VkeQVkoeJjUxjB9wao=; 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=OmQRHJjv93uo+YlBUfhdarHgxIIEYfKCt73kWhBIW1V9kv2VeFrf7Ytvcf9E+U7y kutvcMRSwCEuU+YvIzvQ1aG17rOOif82gJkitgX6GVQ1Cvf+DUI1TZBmom8WCoKO2 Jpgt0zCA2z30gUrME1djJ7FbjwLuO3IwRoaLrJiMLDoMuxSoIdA/FkQGLfWBiFobC P5m3B+8C4HImSCzWBgR59o9hfe52S54ouJcV/MaOuvfNEb9NGPGz8xu7S2zsnoLrA 9FMyln/ekm5yHDLgbIqQXx9+/aXTqeCX07BS5kNBYychHFALN91NgWFGmF46Hblnp tqPnM5GXxGM/VdGagA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MvsEx-1xPNfn1tCB-013D0S; Wed, 10 Jun 2026 22:35:17 +0200 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 v6 6/9] hwmon: (dell-smm) Use new buffer-based WMI API Date: Wed, 10 Jun 2026 22:34:50 +0200 Message-Id: <20260610203453.816254-7-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260610203453.816254-1-W_Armin@gmx.de> References: <20260610203453.816254-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:6+buFilE1DUX4wbTbUfFh7A96fUY8R9Bxs9zq2SdC/iPb78jq8k r5spSRMybgBDroLL1TOtHrj137XwzQVGTyiC5sadgYOp6UAK0rm02I9SgM5NIft1ztMDZ+q Tbnt9qg4XYX3pPQZrpyB6r6kB9Wa0PR3klu+ZFFRLtg43pZGFCzObMe1Qz1QVheSHsxuHSk DFH8CpE8qAknfrg2woH+A== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:8k/dXh25p5k=;nOPRBrtA/2q7I5SDlKnk8TVAsnR 6Iiym0Dpte5fhJtWhuRReSUWRzFUDOV+74im3VOSCXo41MJok4c2GSGec0pdjrKp7FI2Vw0dk FdtHWfljUGCLoa7JbAjQDLwA4Q6OWsWONef9cIXCOF2YEif5GyWVnFMq5OBjFG3/Vl1yygEv+ 3grLkErsPjgdPaYnKi4Z5W4GiZ0l3vLnlQZYp433gJjklFlmt0SvVsu2KVOEg6Em5sw5WtR2f Rr4XHmJi3OP/fVJTUCJbX6gH29q8U7v4R9r+bULaeCks4Z44p/JViQtSSMnJP7m/fyhlDq3+T Zfu/+S1WPJoe/xRLYrpZe/heEpmpLJqv2XeDwCpc5+udYpFsSiplPtjj3fTjge26e1eVNs1zP pmbsFbqvDMvZjYbdmDVoTxhdgpLXRRJqg7R0eVyvpHEFkfQwSB+tRnmv/meZwSes/7+/bfyDs CyeSgQExqBe3012XxX9VKLs0sELc4EUzeWW9ft+ctp53j0MHb3NrlXmX70gjK1Lq69Pf7mLuI s+SxA/8xj2JvW19c1paauDZoWEQ4Tl+94KehzwCcajIJTm1KS0jxVyxKkkVGcG/xguHuiXXEf Bn92Gdm5dUcy1M7QAq26bGZYvmqrBVsKP5PO+LR5qlNPj7F31BW/IMCyc3OpaCzcWAl/1kjuk Ug26M5KI6m4UIUZIhQFHqfRNPKmwNc4+2mYBSpwrCzr/o61HyxKLwATh/6oazp0O9/cGnCV3s CrSOsFTWrRtSBj/0h8aScJ5XGy4mP6qr1Yet2yc1+Ohluc3ffxnQHpjmJMhATH92LVJmVKrj2 /eAi6y6oAHDcwG2t1ycdd7nPQk1ReogKPJfvUW3QshTO5q15oro5709qnl6d9rk4Hzg+FctxR 7GYyBtJUDmka5g+2+qFEN2GW2RjO3HWpUDDgGZ/5Q7qmndYFQmssWxL9H6OC3mlI40BG6MPe+ FHYSiubcBYK5ldiTRL1sjCJs/MMPp12+GFjLbBuB7LaSoxz3CrJACHv5Qk4c8z2J2Sl+ZkkiF I/8msjR62tMQAYasLRmJEFOQKQYzM2dEU9+TPf0W0U417v0N0NYaxMcZXsNLrzNODAodPYK1s xhZs4ZQK/9xfvXj7GyKzqdTsvrhhkQRC3ckouvWEMmywnmfrpRvJBPb+19jEiL7TdyaceNgsk 52jEywHIHoFg+LBlhdOrEvU/L85h04n/Nh+wBi9MG7ZCNqLQLyQ40duIgfITVQquFVk2TrngY el213kttbXODapqdtqq+WprAjKcsNYT27OR0+5uJuYAmh/t/HZL+PywSQGKXIvNk+zeAZaXou ovltwwFOgS2sjWEucyRR3avoz67otWRPcayIi5mHz0PDW4JHmXLq2q4MA4eufMHl16zr7h/kd fhEUm21vO6qpunFcdkDW9+YBFdILOAvFMTGA4Ya8z+6DvNkmr+E9dQqd5bOei/8bXOYJyFTZG 0QTA2XPDwAQ6hJ2RMKWp8dFgagUTR6aKV6xTYH6WJVl8QjL8bwwvMSBclZzUoE50edEYltOrl FKUREGKEP08V/Z/pixI7NBCS5wQUHv3WpcI5QhWZDyO+8DfQw6iWYPUwC+5d65unZHRogegCI cs69WX+xMaygS/CukRlhc3MLcM4fjg6olt/rL7xfFwOPwZDTfut7cXTKf5OmPONl1C7V9M4tM yyyyG6bOaftZ1+EdJF5ye8jQYO2pUoZXW7BMJJA2Y9b+MUtWuh8F9JHWIo40dyJPHjUOmTw9M cpd0U/ekGYyd0NmCmPD54dDphMJyAoFMUIpKQXyzdXG1YMZQ+XcvCh3ir8ydR6FILYEb2SA53 mNaYqkvzAsTkHQ+PKDd6RhqNzkxBEtKdA6yxqVvKSqjs0UcS0fBBt2YW/T3IJ7QyLfDREhrzH UAaK+EBC7Z69+d/9gFajwIPe6xzwcMJuNgCYnoVfo8irUBfZ/Q5FuD5k/4D1HZd201IWJ+jct 3aviN0eSjVV/5PbPsJt56nGNo9rnQFVxFg9Zvt+wXzVljkK0DaUqss+99ao0Rj3QlJLmRep6i AAIj5iLH5mcolqIlR2ieZ1i5V5Jx0RAq76vS98lQIJgouLv5IOhz0tVbKwCzjdmQttQJi8QwX OBH3WcKohSgCeITWR5pJFpnIvZw3QZveWOTVYMQVzge1EftFp4NNwz8tpvs1wqbVxGmMD3Uo3 Q3D1RG+Ca6l3LumY/5yOxIoWs6314bGxF2acIJorsGZPgTA/NteaezKZQ/C+q5cMFEYBAbF0e vZxpJYAwwbJ1qft+2p+rTawtpzACmbjXTEo63fnZ7VUTR/gUUeqizw0+g74j3IUO0DAtzgtCm n1ZKXUzsu5BWyv/3J31sd6sGuRvhc+X87plUhXBAu5Cc5vW4rkGljT/m6frkM+G/0W+iutvzB eNb+MY+DFlv5/ge6+/WDMAKKqCspcEAEIlAZAJlvqe33e6X4VFGX/BWtWvAwlexfsPFLKbHuw j6q1xAenBeNpfR/VnQ7OATuqqHNbNSNtEJwRvWPUYWIjWhk/71d3QwaR4u8WSKzxGAvf7HLPl iUN3k+z89DFGbn+dBpfB4lQyKMs7CnReCmN+PRXKDQKo69l/vk3t4TVq5TObQEmDXYC9/axIG zyJ3GlzfoYh/fGmrtaxwFVHYejfK8zqbnE75LkIZQHJ3SciEc5+FvEZkaEgDF+DrxZW+er3DO fepxehhtOs6w8mPellQa4x1lO47tz5oYF75vR+6HHlqKeMyaDdunAdlECc6s964r6kuCa7+um loq/Kf5oacpyUtlhYo3H/8V1B1QHwAKsdvGBeRXmWRqowIutxLFgU0yhv4wBeIO8w/PtKUC59 dpCfe3RgEyD8olk1wJxKmEx/eiYCiqkhclPZdzzlcKFstEOxpocsE0Mi4m/UVl0lW6SJhguq9 HijyUpOvL5k+mzFdtKJzDHaB7VjPqFWeH2FWaN4Ne7vJPhJrTPpWoR/bwAp2AHrIiXK999Rqs HLlAY1Ji573Cn9+d5Vhvtoi/M/WrWE9AalMgay+fUlhsKd5hz5P/e/l/CxMCZsTR/GEmUrA3a xHVV/Z5e5diqrTw9FdVAcnDC6vSXc1hMZaesK0H0tmV273ki6VQAu6wBdvFvvHu77Fx0IU26L AcPaJQXJjnRXjDsyqwYDs2LgF0q62zHJ04dzuHW4YRw/tvCq4StO+/6QHF11lixHM/AXhklMf 86NJQOKmRZFvCo7JDu9Ct2zxCAIKrxivgmvolXiNcLy65e4dEhQIdiOTSvErCNKbVynFrBXAd Nk/KmoblqujhL8ZyxIcOknnuPt0y/jhpE1DKGJUg8/EhDm3Rltf8e2VdZxX++KyapjFYiVnIh MdYljddlWPl+gOXnsGj8fSyqz1hIARjZkXZWJBdjkxvzCnxlIgilHCeYZnrh38rVMX4oNygZz 62eD2xI5E8pvJLI1TwtFUIzKLORq2LxyPXzXuImuhmrZ7txP8mmQzHYU054N2uD6x6Dq4sx1S gCjHFkX+oqNkaHbcHQy9NsN+q8bcJUIuZ2hbP/x8347H5wVrBU/SnDKK+9QsjHHPsPuv9tprY H+mm6BfDq/IDjTvRbN0wrSzYEZlHkh+ktA9Ruf0pDWqhX2ImzLHJvo2iUUSdhuxt1x52OCtN0 evX1/BtXWKaLXVwqDup6fu0w4yULPSv0/89OxlJKy7wurXJqUAi3na4u7U5rox8bpM3B1erp5 ktzfbKnaccQx6/clqsdv4ghIqU1vwJHIJq84KUP92dQ7wA1KRMEAw7eMeu8FwhLaEeBvNlsj/ 6n+QZ95+9Ux2gV9nJWWwFo3F1iEXJ+K6jFzs9TACus1peXqSN8c0L01rB3sdwFtQfOdL9lEGt cBY74JwI0Q3CA9ZM7i1f/OdBWhm9Q/conEQbMihYbf0p//fP3l3d+gufdpHu+zUjw5JjAFpXz VgdgDYlpfd9oVcJvSYGc61Y5QyznXJ6mnD/fDHM20DidNF4hbQ5QnYIk3H9MihpF6eHmwNlMu 6ivakADMacK94cHEWVY44fSz4VMuOQAaXDpMcwBmZXLg9IMlHYTcsNeOXM19gytTOwRI0zDD4 hSzo4OLTeHoeQx7v6SpDBk2cTXsSbjIsFif6tDZHjQLARDAjnBjPVBpsiqd1yebI+dCXp54vs qyZrSV9lvrN1aZFDuykv3ddn+TIxWcqnam5FO8wkfVje+V3mOIQvHyrzL+zjZ0SQa8XuOQIRx Ksmbivs9j97Lxj5mdTq9ZrmnBISsTtSXKWCvHeOr80LwtkYk3t9ckO3hDoMW6t6PXKjRjhqxl 5D4nyc2lUfaKOuyjlSlgFDDjNHU4lxa64ZXTjYnsl0L5pP6jSv9D8Gti5AknF5AJ2wofziEpX sR3fL9DicFxrh3BmMUxXRNSnPLsny7GE25gKhjQhK3i6ui4z/IFsiKF7pQX2mi/M8RKBu3Nm7 WkravkoTdH2uhsl0IvUROP2oL0Mz/75UvhfAK4V8Lf/+ZnyraMgUBjbeyMk/z8zfbdY2Iw1Qp vqBUsEzmRN7XLAOWLeHN4YYFJakRCHUxmzURGhUrVouchhHjoKlidZnaFVhqV1oULz6LoWFvS IeNSTnWkmaYvPA6ZtS2KjWR12Hy1lGlrCH5QtoYQnBqW/bixEsogvn8VZyYGD1h1htzX8TRIK BS+8tvey7jTXh1FlneYWRRv2galha7yifL7qwlUxBi2FN+RQVrybjN+2JNEA9eV1OYRx6xG8k GULNFgmVQWmh0udPySNi2VZ0fMbBTL8UkQCSWwMAL6KsEtrKcA9pYuPQlWayk5Ad+AbObHnMJ 74X+OteaaKWSoYCbaPecmabtSiava7gd76Rqa7uJ1jm3X9zEQhBw0TRfvoAEnoDV3rMpMx4Yo U7fpCTEzCNGCpftJuR5dRUYeJfYslwzwAvjhvMxlzID+01YRBPaAIVai42pbPg3c4TcWVngD/ qNSPONZk3OXOsxV7OIcpjA7FjbaG11uk7SClSQi7X3P7luuuOTjIT85xFQbVA93N5f/OSblGG FPGu8ezaRW+G86MbKU1vEH8694F5w/cvU0AsABT/zha62B4vI7NBAQhP3Doe62s/WuRFrbHN8 Q7vPwy2UjhEfnakuprThHhQjRPMEro3fxLKHv+8z71BIbL88wtJDi+Ij/w03/TeOvR475qHoU LOKl6tRrx8h24qJptYwpwL5IXw1LDod/gSyQWBi77behal2+uXppKldfx8CO6T42tXhEyLBQl cVIdbjnU1Nepr7NvvaflrfrfRUxNpIY9Txxsa1sninmOI3yrf0dOHhM7nmnqI9N6uS13WKIkF BGv7THxG+VHndJAA229qg9NrifIqUTOJEBI+mBbSm327wPcSjPZIz70CywhXCc5M/sexAclG8 bENkeL9dHaGmOH015kz532D5QUehITop6tg9xSP+ns7hsw4liqKf7TXn9NCC101VwegVeIqJN KDhjbbGZTl95Gq+hxXPfpApuwDTNKg3Cba03MKWO+ZQlbQ18sonnUlBMcSVxJ7tu3SQRwxUOf WGvj7Bt4llza+Am/mPJeprwPaz6tt53VT935JHuaCIfz4r6r3AnYVgg3XlNEy1r3hjDjN05QU 3iI21Lda+CkTIi4Fdym0+LfTYeM30rJ4lvv1a3z+f/Z9VffVbxPpXFbH13r6018ofROd4g== 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 --- drivers/hwmon/dell-smm-hwmon.c | 49 ++++++++++++---------------------- 1 file changed, 17 insertions(+), 32 deletions(-) diff --git a/drivers/hwmon/dell-smm-hwmon.c b/drivers/hwmon/dell-smm-hwmon.c index 038edffc1ac7..6ca2ea4bfe7d 100644 --- a/drivers/hwmon/dell-smm-hwmon.c +++ b/drivers/hwmon/dell-smm-hwmon.c @@ -12,8 +12,10 @@ =20 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt =20 -#include +#include #include +#include +#include #include #include #include @@ -36,10 +38,10 @@ #include #include #include +#include #include =20 #include -#include =20 #define I8K_SMM_FN_STATUS 0x0025 #define I8K_SMM_POWER_STATUS 0x0069 @@ -232,7 +234,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 +255,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 +263,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 +275,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,34 +295,20 @@ 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, sizeof(__le32)); + if (ret < 0) + return ret; =20 -err_free: - kfree(obj); + u8 *response __free(kfree) =3D out.data; =20 - return ret; + return wmi_parse_response(response, out.length, regs); } =20 static int dell_smm_call(const struct dell_smm_ops *ops, struct smm_regs *= regs) --=20 2.39.5 From nobody Sat Jun 13 16:24:16 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (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 D720B48C3F8; Wed, 10 Jun 2026 20:35:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.20 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781123746; cv=none; b=E1P6UMRbdVh791lU6FJGXofDjtftnc9Bf1gdXcND/tLp575PBs6CKeBo9ct1Jseh0TIb7iOPatffRcc5BIttXIED3V51GCeA/gXw8UEOKq99b8nX5azM3Q320SfGkn2rKDs6LCI9oB6C2bXbMo5+IRr9Qitt6E1M8KwvTEergdI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781123746; c=relaxed/simple; bh=gnkQm+P8HS/I/ewWBcTErhvRyavdmzX4Vx5xmBZykpA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=jZ0XsRf7Za15A/mhoISM14GzSIuHtLNlnCLTEip4OBZJrjQPq/DgK7C8paZU+668/fpze6qYLkV8bhn2mIsdTIESRH4G8Jd2syE0Pke5hWxjIIPzvwbZ+vbVup5g/arF4kiKkslZhKowyplGWMFc6LLTEE6d5XOG8tYjNuBTlQE= 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=cEAWlN1j; arc=none smtp.client-ip=212.227.17.20 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="cEAWlN1j" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1781123720; x=1781728520; i=w_armin@gmx.de; bh=/Wu/SGJTFJsZ86bic/V+We8bgTC0/Fz5FZwe+gXPcxk=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Type:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=cEAWlN1jlFR/AMDU9pwccwlfs9+jAm5vN5SP/L9OS6xkMneVyyiSLzN/PpRNwkKJ nvYrGFPFRdEJ9X/NEA/ogJGEEeHj4SnkjTgDkrAmTZ6ltNWZd+POkdC6AMo4Ezac6 t0XIhVUbwq6vSP0CBECK/j/50i8Oxx9Ie51ylsMuQKGDvOOYpsWCGYNaZ7LA7A+to FqGF9mkx98KvqP9G2warQ5DKyGIWU2bzGfGIc/lZPY/Xt720mmw6+5SDFDWJr2uwE m131chNNpEjBqc7zmPQC+ktfZc+CwxFFENMa1w9ewucgwh2PpOVp7HMNVcfjCsKeP Y+7Ptgbo1ZmT8qLBwQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MRmjq-1weW8z1PCc-00HkdW; Wed, 10 Jun 2026 22:35:19 +0200 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 v6 7/9] platform/wmi: Make wmi_bus_class const Date: Wed, 10 Jun 2026 22:34:51 +0200 Message-Id: <20260610203453.816254-8-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260610203453.816254-1-W_Armin@gmx.de> References: <20260610203453.816254-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:2ZN1vvPXPjfgCZnGbtURP/EQnzINSoRQg0h0QBrfb8rOIuaaUaz WGggKnW5EQaED2kQOWKYK9cqUzOrm1UfPyPhx/vByEv5w57DB2EB0mGM8OzuHl0lZueJnPn e6A9f487BHfEp9HH+6iR0SBsl1yOQgYCy5vjpdH60LI0IHDN0etpjPOcCbckhYTz2VW/DtM fgIPsBAWMZs1ozmk9onfw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:wBkd3WCw2oA=;kQbotIqHY5QJYCT8eNyKrQSCZ8Y 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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. Reviewed-by: Ilpo J=C3=A4rvinen Signed-off-by: Armin Wolf --- 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 5a2ffcbab6af..0782ebc33c00 100644 --- a/drivers/platform/wmi/core.c +++ b/drivers/platform/wmi/core.c @@ -1088,7 +1088,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 Sat Jun 13 16:24:16 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) (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 667814A3408; Wed, 10 Jun 2026 20:35:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781123751; cv=none; b=oJH9++FbuWMLGX/+ZsNK1FrKmvfVH3s+j7qJ7M+0pR1qweRFEsGG8U+eKUuRr7rVFUsnTIkiuRC7ysIgBrVXG8DjyeOG4DahdXS3AnSCjqkHxW5ItgQayzcOQb0IRN4EbNmlXukWNUARoZoHf83nPkLkL1XTXYSbGn2KECMVAiY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781123751; c=relaxed/simple; bh=d/IOYNxIlo1LWsz7aRqw83vBTwWl+u8A9zvyqzGvu6c=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=n16jaPCN7AiYVKMBBVCYknx1QSO3tvxg6QQ6Zh72RFDnAM0j0sTlkdmZn8RfWFUdjDasJSOm2lqU4wVYgKQAcP115N4ghgWj44vMVpdBBQCX8ws08Hd28xLo1GoesFdhslKmvQw4AhNQ7a0UZJcaR++DJWrm5tmRRNk5FExEkKs= 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=NjXsPRSn; arc=none smtp.client-ip=212.227.17.21 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="NjXsPRSn" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1781123722; x=1781728522; i=w_armin@gmx.de; bh=y6l6/Ju0nABAtnlCYb81NgYQM4++QeKmo8eRBorIrW8=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:Message-Id:In-Reply-To: References:MIME-Version:Content-Type:Content-Transfer-Encoding:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=NjXsPRSnItlJhQxAtdQSdEYFQux3GEUz4jd2z4ypvp0sF1WTcdkycv9ByQRthXLI E+6JQjhCDkBqO9RS51TAItTX53+VZiZbod0JIZiW/oHIEw2b2uAGeu1l57lUsvzFJ 60BnpiugI+Xf94KZhgqJKjBPT00jYp4NON5YQHXfNUh/3CpoCrFprqr/GIiDvvw+W KwFYxx3nxFTutMm0kxccPHGnfj1rbD2iulZM1bfyXZmHpFdYp7OEJypQBXhb5lqPe kHYrW6+NJx6ZO97HIpMepOEfw7xO2ADYchVpyuUt118z8RZVip0Am3GWE36xLpEGh 3eAKEiFfq4YgYyMx2w== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MqJmF-1x2Oks4AVf-00gBk8; Wed, 10 Jun 2026 22:35:22 +0200 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 v6 8/9] platform/wmi: Make sysfs attributes const Date: Wed, 10 Jun 2026 22:34:52 +0200 Message-Id: <20260610203453.816254-9-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260610203453.816254-1-W_Armin@gmx.de> References: <20260610203453.816254-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:J4etl/HkjOLof/T4EoJimiVyRX621s8E1V6B/FFb/PLYzbuh5yH yGheo31brMNpm9qw1M+AVZMBpEBkhFWqOHgqrJMSKGXUYZIQd1AS49aHBaZbL9mUIB1fdbA PgWZztQNIsn/zefx6P248jCbob1BsM4Sw+78GV4aORT0iZvyeSC4rVuCEbTjVhcKDhS3sYP dWnhBgBa3fkwxh3k84jqQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:lX3+Sl5CVTY=;tM9It95qvWc/wxTZNsgv+WH24OG 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 A8q71q08vYv4pGASfQvW9cqCUXw= 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. Reviewed-by: Ilpo J=C3=A4rvinen Signed-off-by: Armin Wolf --- drivers/platform/wmi/core.c | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/drivers/platform/wmi/core.c b/drivers/platform/wmi/core.c index 0782ebc33c00..529825dcfbfe 100644 --- a/drivers/platform/wmi/core.c +++ b/drivers/platform/wmi/core.c @@ -858,7 +858,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) @@ -867,7 +868,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) @@ -876,7 +878,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) @@ -886,9 +889,10 @@ 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); =20 -static struct attribute *wmi_attrs[] =3D { +static const DEVICE_ATTR_RO(expensive); + +static const struct attribute * const wmi_attrs[] =3D { &dev_attr_modalias.attr, &dev_attr_guid.attr, &dev_attr_instance_count.attr, @@ -904,9 +908,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 }; @@ -920,7 +925,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) @@ -929,16 +935,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 Sat Jun 13 16:24:16 2026 Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (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 60D484A33E9; Wed, 10 Jun 2026 20:35:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=212.227.17.20 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781123731; cv=none; b=s8yW7+r2a/o3SkrP5H6sDW/EnPazzYYVhlKwsJrtHc1XjiP+DUqTFHzcjUdHkriMtdr3dD92N7MNQ04XCvK4SMajnkB64WPFP3m5LB6QIJoq324MXjnENMYBjLGAViEKvyaDuk0XIpD6iotDM9Sq4RDkvi4rivcxYMa2yf8/u1g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781123731; c=relaxed/simple; bh=xiMMiR9DQf/tWBjhVfGlftQFfGRRAKBqYvFODTT4jA8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=lId6dqMUmcK/ICTlhIOaIyNT3aIq5cRdghBkJk4m3i09xCp2/p4445Zn0Rk2iq47768fi1+V3Mba6Rne1rHJMRkrfF6+hqFHPsbUaJbNLyMi+D1V2+jQzUMR3DTFQWRYAXM5HkR9hzBDsRPwzxJYqHLhRXQyi1dYnh/l9hDL07I= 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=U5PgMaZz; arc=none smtp.client-ip=212.227.17.20 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="U5PgMaZz" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1781123724; x=1781728524; i=w_armin@gmx.de; bh=YfeRLIATGWvAfNsgyiHcEHpJ2mxRTbC9ci0nIWnnk90=; 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=U5PgMaZzfo50mD6vJMWUVl90MQXZpV40Kn8qOLgXf+RG6eJ8FiXHBw7K7xWWV5Pg pk3anU2/a8rjJc92EGAsU99BLez7p6ODospNpPnkcuexGTgQzwISnzHHEs8y8DJwG 3TPM3ogczUtcxm9sFR3rpnht694cpnkoEzhVYz+JenxinUGl/qbwL03DyPMk6pSC/ VNa1Bt7S4rK/TErsfjmPOEp2K9FDCZ3w+MOpdzJzoFDxhqZBClmt2hth5gQmixDwU m41Ma2HD657+OqlO0Ze8hht937JyeoUK468TfwQ1WTm386LZoQYFAuTMJe+p6HIJq OJvP9YiHJmvyO4lUFg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N2Dx8-1xEgJ013Wg-00u7pa; Wed, 10 Jun 2026 22:35:24 +0200 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 v6 9/9] modpost: Handle malformed WMI GUID strings Date: Wed, 10 Jun 2026 22:34:53 +0200 Message-Id: <20260610203453.816254-10-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260610203453.816254-1-W_Armin@gmx.de> References: <20260610203453.816254-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:lQVC8LxkO3Lo5eWw9HCrXuByDZaD7DrebASYK5HaZJijGeaNQZU bZSBvcsaJV1UlHznkyodwvutq68RqsQ39Rl6v9Br7tWOaS/AbCUULU1B82QwWNIZQBVfv8H mg6RcKxR+OQyKIKKLSjpI/fao5Ka7wxeSWHpdQ/DyoJfxUEmVNicX/r4RO+vuoF2Bw7omJX TcycBtTWAIvBjxmE5qo+Q== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:kO2jdMcJQb8=;QFBhYtXarMEDpCfkZFPJiZWIldD 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 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 --- .../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 387f508d57ad..6290c448f5e7 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