From nobody Mon Jun 8 05:27:35 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 2BFE3280325; Fri, 5 Jun 2026 21:00:07 +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=1780693210; cv=none; b=r4mwY6oBrdGMdd7I3F1sAO4NZnH+hIzAyvJYIDRqtRjJAC7jkHasFlOjGxrQwKIQAAPt5TVQWuWuF2ez5R/osNUr30nbXRYiV5n/T+bfL2r7uxhxo56CRaOvq8jlOfC23mBKBsXGl9YtbCm86CteeFv5EOvqOj9vD57Nb1/rUdg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780693210; c=relaxed/simple; bh=WVvy32zQZCu29tWBe7oWk1T/1Icxju/+39bH/b4nMDc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ZgjfZLjZOGuExcXidXYmWhqBNJcf+yFQmu78JMlhqODqxilTzjHR7Ve6My/vh1ax6bC0wljxR78k9n/jWF3DTGxBSzYjlHrkjp3TcyqGMA1oDeSmc9JEQ9r62Xp9nXdFD0IDg2yF26e5n5gzonB8bYtv4mGSDOF/H4Ek+xqlhM0= 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=VCInFR0k; 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="VCInFR0k" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1780693183; x=1781297983; i=w_armin@gmx.de; bh=N0sTMSjuIl9x+7pr9CNOAk0smnVmQCW0xWoSviEepFs=; 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=VCInFR0kX/wCRFoBIwFyqmPcruBh0wH/TjFhlAwSOxJCkfqYQSCJY50xap8jl8Ab cF6Kf/MrYsV6s0owYhV9t+Bn6JMbslqXeymJA8IBweDQj1HfYZ1c3re5cJHtfQAat WjVSHuRbnC5TK32iiRyF9FJYio23kJNloi9Z1n1twBV7D2VQVQEI/UDeWbUnN0VGH JdqN0+o81aBtcUIVF9hEvIZzyDWgxYwXQobYy5HOdy/RGX24FgPw78/4KV4ORp4j5 wxKs6jIPAbmRyk2OtooYM+NZWw0Ss4VWy4ks3kyWHu6wupukBnxKzp8TkNebQzFGS 8XmElD7aAxThipGwtQ== 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 1MxDp4-1xTBN137mq-00sX3M; Fri, 05 Jun 2026 22:59:43 +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 v5 1/9] platform/x86: dell-descriptor: Use new buffer-based WMI API Date: Fri, 5 Jun 2026 22:59:29 +0200 Message-Id: <20260605205937.530897-2-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260605205937.530897-1-W_Armin@gmx.de> References: <20260605205937.530897-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:VIpAYSVDhiI0lFMBbccvJQWzU7t9qfPez30lb0eg9XR5KDSofYt 8jpYf20Q+Dkn/RHCNADnGQcEnpW7TY47vRNJx/98EhZWChUCDC+gO2k7aL5x67pdlOr1oP3 VfAz7kPDkSBCeqy1B3fxcL0sZoUdvfiWdcMK/EvxqhJxFf5bwUgFUgdGl5Gzhe6YePUiecs gAj7nKT1bCGsCFLnmOP/g== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:n9cKsh1BOb8=;mz/GiZ7lpIS2LsgWK+mxZcS647u 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 ZqY4K9cUawQaxN2yVM= 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..5f5e9f38988e 100644 --- a/drivers/platform/x86/dell/dell-wmi-descriptor.c +++ b/drivers/platform/x86/dell/dell-wmi-descriptor.c @@ -7,14 +7,34 @@ =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 { + 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,77 +108,47 @@ 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 *desc __free(kfree) =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(*desc)); + 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; - } + desc =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 Mon Jun 8 05:27:35 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 149443CFF49; Fri, 5 Jun 2026 20:59:52 +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=1780693194; cv=none; b=Gf+IjaFT0fXWSg2pT+M1FKo9JvFX1PfVMJbwU/gCAZHRbJHpu9mMQJlt3zX2ZOa9buzeg0T6D7YlRypqhf3urii4y5+Rq7tfvburhUvZGUaWYcjJvAu0juIgsyEokKbKSmTWU6KAPbp6JY+7SPJc1XfPQTWzgCx0a01GOftkxXw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780693194; c=relaxed/simple; bh=gnbU5Ilb+yduUOyOT2fsPrx/iMgmPn7saMoQHwrSEeE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=PnjXoQL4/U28ZSXnDBgY9Reid85NVGl9MRrazBzD1CmLenDJw8qZNrPqBVwyDuQ6W4ynzJuBOtBmKJDUIvBhAqWk5CC7WRFCIKX2H7MMrcRSXxG+w6F99FD3Q5JTsL8EvYZCk7iaE9eAl4WP4zYNEbinYPqWenjsCG2+Ozq7qac= 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=TXbFUxik; 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="TXbFUxik" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1780693184; x=1781297984; i=w_armin@gmx.de; bh=N7rpZGky13GHZDyEkDi0LgjTZgpTVhYyiqjgI3mJIMY=; 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=TXbFUxikSSE/VkXLM4MuaCNicygokRQmEEU3h4Y9RDrF2bDTuaWugyuL4fQ1kiRV o6EXkwL23X0upTwnXM+8Ma76AH2yC39QHnVw6vWaZlGzg/OThGEMqhqMhxL2lPNtt YiFZRBOMsd8QrtP6sN9BnCthVhSqwlWCXHeLJ5QMyasNnKso9REXRw6Dahozgkgpp 6CbMvs0cYfpOS6A2ZwXGy+BNj0n0p8kLU8FjEDCU6nnJc6HWGIne0qgsRtDsHM6Gi r7+6QaCpgXXpV8D2mCf1hvq78vLwf4s9Z2oPwEz9SMsA8QtlWFoXyqrY/L/CSTSNQ rlmriYEZGXJomCyz4g== 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 1N1fn0-1xFxwO2vTE-015lNU; Fri, 05 Jun 2026 22:59:44 +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 v5 2/9] platform/x86: dell-privacy: Use new buffer-based WMI API Date: Fri, 5 Jun 2026 22:59:30 +0200 Message-Id: <20260605205937.530897-3-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260605205937.530897-1-W_Armin@gmx.de> References: <20260605205937.530897-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:JKwpRMgFTo929SzWTTPjzOO7TMF1sG3NwQGin/i3W1xeK2JlvRt finbay8yPhz1fcqwmbYJNbFCxrJwGng6gZs7rOZlrMnrX3AD+oNJpJAP0+LhmRMvIay28Tx BuRiVNoIz4KF9Jzq4T3D/wyrfmfE9pdXUbER++ua2WSTci0qHc7nlDs5yDyMjT0KtdOk69f tEsdph1sAucNi3hcFNl1Q== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:p7yfYvl+KvA=;wybd0l0oHli0OQ5ooj0F4/LWIyp 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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 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..7bc1bae3a196 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 device_state *state __free(kfree) =3D NULL; + 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(*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]; + state =3D buffer.data; + priv->features_present =3D le32_to_cpu(state->devices_supported); + priv->last_status =3D le32_to_cpu(state->current_state); =20 -obj_free: - kfree(obj_present); - return ret; + return 0; } =20 static int dell_privacy_micmute_led_set(struct led_classdev *led_cdev, --=20 2.39.5 From nobody Mon Jun 8 05:27:35 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 1D4BF26F2A0; Fri, 5 Jun 2026 21:00:07 +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=1780693210; cv=none; b=QIPyXwxpry4re34TVtJFDanr2dXeVSlCTyitm0CJWrnoEtc1jEvyIJNi7Fe37V4sBbixoWgqqQg5za1aN/rbi3snaeNuzCKqyJwVcBNhdy1bApKhhWiZ++F3mBipnjy2c8zMx/ECA0ZjT/U1zAGcFI66yiXe3V2b6kGeoxSuKPE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780693210; c=relaxed/simple; bh=W3THHfIlBw4EfhGFn4fMDV4RYz4Xqd76fqVyB+3Ly20=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=dsvwHFmfLcRGH/AHQPOpORGufx+kxU3YRW/TuddxIocQxHsTzXEOoCS0Vf0xFC8NKrIxCQRv2obrYh4vvfLG8B+SF5zmDab8rSHsq8ilVguba5Il8iv0BPbfsx5CxPsApjhsYgMR/0iVJpsg+62Q+tU8T4XXxUmKV4+TyX7Zf0Q= 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=UUjoNIra; 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="UUjoNIra" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1780693186; x=1781297986; 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=UUjoNIra4rET0wIy14v2n6UUJw0B+ivcBTu8ottnCKgOqz5TQYW4FFgh0kHbykXL Q4nja3c28wEG41Z4oqHX115c3VwTLLufouA7jHJjieyH0pR3tHbF2usNzfyKM4j5b QXS7dyePLYQQ6l87q6dMKFRMP2WoDPJ/9sqj9B9/dz3SMHix1OfSVIhweg5NKVxlR Wf4H8cp3zIivDuGBcITQBgu65zlEpu4qf3/lw9fR7Sx75iN9LnoIDuvuj11+FvdcY FAIJVIU7VwqSPk3/5aphY4YXp0gDec0IHWIGfuKiSH9K36tsh/aftL9Q6ISKXio9s yY9a3rVwWflsgKNbLQ== 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 1MpDJd-1x2xnq3obP-00iKIi; Fri, 05 Jun 2026 22:59:46 +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 v5 3/9] platform/x86: dell-smbios-wmi: Use new buffer-based WMI API Date: Fri, 5 Jun 2026 22:59:31 +0200 Message-Id: <20260605205937.530897-4-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260605205937.530897-1-W_Armin@gmx.de> References: <20260605205937.530897-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:OEtbwefhvUGbllclEc3okh18UM5/iyDbAnKhx+giBirF61Ww612 idcLgZtsAtPLyBLPyby0v6XhKfxe2wYcoRtBSJ4gX3T9QDs3dPL9NBankKUwsSyIZyCRNrf xHid5fzKCFRRSmFqwAohsgpbbFOKVnt/lV+oCAzyK/1XeyhPl3UT2V4vNAG0JIBPADRUVJW K/mgD6JMvP1rD3PrK9XfQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:iNpI5kEAtqY=;t/AYYNM2zim7o1I9Yk5Ztg/qzSy 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 h7GLtiJq+P2WGAqELANuwuoSC5M= 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 Mon Jun 8 05:27:35 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 DC11A3CCA1D; Fri, 5 Jun 2026 20:59:51 +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=1780693193; cv=none; b=If0P/JFu4khP+pW42S52OnXqwf/3/3Osmxe9hr2vGVIcWFp2efO1pTWiFlP/SYjd9S6yjZMo7sKjswxGt1Ah+N/G/B500qvdz9Mr704n/qRh8eaYJZDAqAczS6grL6ZAHADIjSLOu3YltFMBU1ixCffTTVkrHhiAYqw2vYwFTSk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780693193; c=relaxed/simple; bh=EVBbej8Iq9BR0HeCBJejx9a8VyQIX0Fp7xI0QQIiHxk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=QFUgmSNZOQXTCi78Q4Oa+8+YA9St23HCUt/lj0lFr2Pjh0QQVP0QjSlwG0iOMyzmqwqOxtQT3dPkuuti9P3DKrqotrE1mMy3WUoU4wHQ0XS5b8cS8XY3hTdaynalofA4RIUWXTfnMSozw2zgeL0y/dj2IjwLWBO6pC7/2GJs0yQ= 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=mzaSRQcq; 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="mzaSRQcq" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1780693187; x=1781297987; i=w_armin@gmx.de; bh=5DFmaNPGwgIZpM5YAFvuQe/ki93+zYJZXvag9YoTJjY=; 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=mzaSRQcq5A6qa3UhNJ6ZvpFKz2H7rsqFjVbQThB+WUFfsMYl9d8apxv0zhQPqROh 2w8l6W3rc2CsSEa+Kib0lH5h3N703HmsPnSUYf3tBhLNniO5dxiqA5UWYxd+awynY FPdKvc5WrgOwcrPVwsktLMlSWGbGojyg3R8L3/gcq6mYyGwZXhIhLyv8YBWFB4XK+ NQVZYIMkWLOOW5Q4BIfPWrnidSVN9CRn6v+tU1Bsf3sQF4PNPp9Vj2MYR6UwYWumL InwST5sUd+ogDZnfbL6zlBwTBYIEyY2kYAT3hfwCyelfk/6brtf5A5841lN6+vERW 1aYoyd/c9Y2LhULPSA== 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 1MbAcs-1x78Fn21VI-00fQIF; Fri, 05 Jun 2026 22:59:47 +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 v5 4/9] platform/x86: dell-wmi-base: Use new buffer-based WMI API Date: Fri, 5 Jun 2026 22:59:32 +0200 Message-Id: <20260605205937.530897-5-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260605205937.530897-1-W_Armin@gmx.de> References: <20260605205937.530897-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:S6FdFOFdErpY+NEnVdeZPMriHfV5kWJsi39N69Z50Bf5M2U+ZZ8 oy7mILLGKG9YqeqJR00ke1mmTQEQDBGZO0dFzrO1NdN3iz8DHOjpOQxVJdKmUblzoIrUGAR WP7CHC7Fx+3mixsd8IC16+25tDMes51YveRC4bStqm+6x39wDW4MQ65VUm8Z5mIcDeQpPT2 CQEsYkQubCyyaG9ZMSySQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:44Pn1/ajoL0=;CidzXLITzDRlCWG3IslbOQ0DfHL rCw5WFTBk/og81/IFE42Kpw4U4zI+2mVypyJlydR0DYjnphTCaK9FM7Ir62wtQbeJidBd0tHp VAP5F5z+71zlMVoBK0LwbiU9UsipojSDF6MDWWh599TciCNaWo/v7Ils6ba+7/i3YvVk8KHjw s73y9fawKB/tjE0BXfSdnSO0KCVmW6c88KRLdiMwstQG79Z1PcWyGrG3QXnA1pEEC9ppIZOXZ nfWAz2cLc3wmvSp6dHp8KHiN3L4Wqznh3BmoFzeSmXho61/RaNHOaEZa2Kc9yN6245LmsOIan pkpZufPItd40S8ipVkFEaflsX1GN/kvZzdaHrK18PrnLbKwCUPfLbGFHqPYJ94gPJKwZMU8T2 yCbpc36oRuKhOtIIQMAs28s2Mmse+/PV+e5gCPJiEMQSQnf64NlPrHIlzv1E88pJQUkRUozK2 5lc4SyhQL7hPz7JqjW0pEXJ042ikxAPROCR5e9yrDo9QkQ1oEl6nACbh4FXZ4uqJGkoWMKTYr 3nZaTAYf35oJzJft+S3cZjq8nn7LZoT34vbWSCBH/Cz/j+rAaKPkI1zGNQtcs7d8jqvpLiOzh qFcnmPaA3j5rFNjrNhntr6FiJ2f5wYTht35ZLoF/za5olGtkO0N2EPFx108onUsroJRWCbVzT ODRqaSDs/wfE651elkeHhYmg8l8Y4rhVKZMLfawamYr7F62N6AzzFP+iM0lDzL6s2b2cNTAi+ ubzD1VEfsH9uTOXto+djrMC5l5VbvKyjs2UBKj6X21ZLmMMn5I27XUF0jz0KvG8MW/mGo3v4R QNtq7YBVIAYohAfIusQ3U6MOZQDKGP6E1BR24cnOIzOmtX8ytggVcBILe2TyQ2cCgq9xw4n+E yQig6XoHeW1CN3c+qGbpnjQx7A3bjRVRWhib0AexzL0OnecHzhuhCv7GonWpMTyE/Skl57uue REd2coNbWV5ScV/Um0L+bcAMqMukVQPhNELXxisEyaG6Uqef2KTxd7K7KjED+IuoaSKYAVMhd CCz3MDRuiGzy077Qq0rsf6KSuVSoM3NLOKDKOGE7ggtoUBlNYVG2H579ZejVQ/0hcnmvtjc4g iQbVdPclgdfSuljEF+qfYRWXghaQGY/V2bCsr2j0/j0nSYH+Gm8FAmQSKqedXWuvTwkn/5M06 AF4BmkVQfhjkK253KhTb8tP3A1bVPsaTphzxxVzVhdvwAJiMF8DxT5cs0tcslNFKx0tL0EjvL P4t4q7R5zPWUbdmCECk2QGAOyppFrn64dgeXMaFYWDnJok0Qgafci0AwNwjHs454m9Fc8qVwH i9/S3yjY5oQdVjOtCdQWm8Ls1CDGa6qh39ejAWklLClw/GdUjFegzjfyJQ8+V6Vmdw+OwODOF fdsZgxfclU00ZKZ+v3nsXICmEugf1NvB+Z1L2gRpMjPPFBkm+DAIvID2P9BEDVrJ2KSWP6MZG TJNNozkbvBxkxbDzvkk/HGV1QDQUQJBo0LgDrHHWEl9I7qgQBb4eH5CGI1ccGxfFa59U4EWp8 7Yr/YxPKHy9BvLgDC23nE78/s3gGeowUdkamOQ0p36z+AEBYMyi7Y2hG3zWHNJqVmr3mMx2Gf /w9MOgKL8nd9qtqHiJy42xr++tvA139T1xVWJBUqiAkReToUD039r4kCSjhr9SrVHw/XJJNez 8k3d/5vtOXZFFqn9j1wIfyzWixIWg85EvB83V4xuQ3vnRZKKtSwrAQ92n+7m+TVeY2NWsf3sB RPoVnyZ18EJnTtgQdK67j0zCRa59Ttgcs/VBOS4fs84ZM/19rXNZFjhjgB1Bmaz4xo7XimJ7I d/RoGoPQMHVSWWSLguatCcGdnkJB/sZ2kU5I25Gj7tRT4XS/Uzgd/HuaenH7IhaqBoe6psVHB UuaxCIfDqu7H+3UWHEeMdC9WxJ2nGFqmsulo8Pl8Q1IpfjIG5yyYDOSFNS1S0IH26F013zT10 CcH+7g6+643Xl/p5TP2OR4ktq31JNENcoIx2+vHs6FeeZw/m5GzG6aqpakaflbdRkBv0A4JpR b0exypaDKzyrZ6uscsfvnd4LGN7qedIhjOxNmueYn5xgObeTTNWhNaOGtSBDdmo9llNSoJE4+ IV65pTBFaAI/SseDGv/EK1o+qP/WgejQUjO0bYxrUuwQlM3AlKE2RvjPG3jbiS0ogpANz8+z+ rFFA3jTzQQ4059RY4geApMvPpBMQVIDuq+TnwR2atEvPoB4sRCHe+Trq4sBsHPzT7zB2aelea JwyjkjV8PL9HjKEB6xtIX53fk/3XNe6Y6Oq+YRNzl9zXn9AQeM7ymAjwzrUc6jY8mkAgF91vR hYQsrgQMp/zPsbJ9fmzbZ6EigTb2cp49h8GvJEYFiXZtWbw36q3NgVQ32HseOADkl7oxJ8VH7 FkRNHRpFo4CAnaMHHujlC7v3/E/ZG5LVCyOwg/RcRp0riwAKd/FuzZ/XyUlCWgSi6eSYycKiK hJ0HimtcByHJB6sd8K764a/8EHyOdJck764IKI+nu8lYf8pxmbP8NkCJ6fCjwAomcGLpjYYgI 4pjltpZINyALJm1YFIwgH2Q/7UnZNALKSDA7soLnWvfg0tcDFfMCR/ExYFD785Xs9MOH1Tt1Y D7oCHM35iyp3RWyh0hknVGyiBIB71HY3+v4hVdVmYLhpCY2vv7rZ54YCl5RxP+ynvcf/r/X7L QBN0P+ZAXozQZSrVeUGQqPkY5ry8gN6Wvb2uxO50+e/+QkTaxsiAdqVlkulXIsMIIHTDQHiiX zw988HbYdvv/96zX8fVV00EE4rUG35nEIElnuFd+tYPkEJLJnxv994vSNuV0+pJa5xe8N/A/U f5fzvb2ccQ5MQrEwBpa+O/kiI2GdqSQPBUDCQFfmsCjw4WC0LbgCKcF5Tc8+Db5vrFuVaQMrF sCUZjO9ttug+Ud97zWO1RSyZ8m30QZllLl3WANbL/gsFw1SDlkvgttW+jSmjXf+BMoruszcmM zEtGjudJtYjQa8se7BgbqIun36rE2B7mHNbuxK1NHO9pCFvWvyUGVx9kajgoQ4bXjpKzsu5qx cXbRO7vOjm0SRJXsVnvhdT384HRcZR3xJjVnDPnbOxl5jbgeXZogpl/+fidu12OY76GW1OZul gszaC9LIsjcrGlB+56usjCpUZFctZKZJWyIot1NdBVIRY61Y0AXbaMYgMIyDtpBWH8ArgsU4S LMyLhE51RA5DGklbPcs7HETB6FP/R7OBLBYlEOrtfKJYz9wiqY2PRbiP/CEFxfWCnHV97T/X9 0JQE0mQd/q2shAyHiKLelZJoMWCLRS7Owc4RzG6udhH2DKp6C3f1pdVTWMLQH2Buy4KsDThGc bumTdy67wfgqaIgTomLV/DNKfvXlsaJluMHZqX/4iTunWt8HSpLP/VaLAgtjSpMxZAT5xVa8f PJxKVorrVfA+9q6BFqzY+nhrp9cFYJqwqddLp2R7Exz2xRa+U2MwsIat6MdgAju4IJPmzJ2cN VeGLl/pepAARI0kgKwjY+m69FBBaeAWUF2XWm5DWx/x1GhFuXY0q+cUXj4JSklbKPlk+J4gY4 ERfZBK16zlMJMniPXy+eM4bOrghpdQo8MInO357ABtOKk4Z0eS9CpYixB8paiUzHoDvVGQUgB anUFrDnWWTt81Wd4uazaqiIFvYwR+xyS7AOkYfxC9ZsX0l9GUSkkG1lEUjWO/p5VmSaTiboSv p1F1yAjSNEweiZm83XcfN0CjroAcS8GPgBo+Be6DdaT1IYNIolM2MY9CBNJJnqUvZYJvB+PAS AO2CN4jzN01Pvl93sxSuF26xD0LnbVTju6x2aKW9wG5oOYElUi3Nazd19wcEoW+2svH+9xlzy GFLnlzZAJCYlsf6hNM6EtoXBNivhnp2wEZliVDyU0YM4dcA5rLTUCeB88MhC9Gc090GqEut5J bWvLvpSZ4Fyt7jBsRhSCBO6eEFCvo/rStKAP4fzjtQFsto3EUyM+egNL7d7rgsbkvUjPE1lcj IqHnNMRZ7A5LO4SjV2ktJHapgNmToXHv/fWMTQei8x05WV4c9nTk/Io9kBpzzF7+6f7Oa0/FW 3jPBoUyh+4xXAbuBNmRl5/FcH0THNLGQEBUxMIpEpveeRRHhsjTu6DxrbT/cfDKIPqpn0puw9 vp5zOljuBMFuPBAGYcNmAEw00JlMGeXnjc/xozF+obn0Dlw6nv2V2Ob5mRI/xvEcrVlklZN16 hevcHVJJnI+nVlwaGvrP67JU+ZnFJpDf5ehK0FWv3NC3pUxXThX0ZhGJbV4u/9gyo1bb89RT3 l+Arpmp6H1lyYPC+zbLF1wBXFsHAq+kv+Kd06Dc7OSg0uloeMn1BlE14YaXWiXsqK5xHa7GDm UuHYzr50ebxrv5JZYZsNy4K8l4Kh10iTp0jjPB7o0fVM+HxYqUuRpiPfxccMQUBcJ9gUJTo9H zVn9aEDWhGXr3M8aRoqyn3MOPX9I70WpCsZI8LmrJE3gJBELy3ixe9keKGG6l+PB4uRyOwlPI MS5cW06b0B78SC3MtIJnsatg6LJrM+bhwA2UcuSNXyxRmbArkxJobfR3hemzTj4jSTiKv8b33 FfrkUfRJYVqdTq4ikuEpOcEhIhPeNuiuZMPmxbYB981qk9xmSw0JNyxkN24YrLe1SFhnNGozP /8ImPg3yGP67ypN/vmYE+fciuYqVWDr+00lo07h0hw28H2mCkbSjNF7z2zumou+ttGyVpSXr1 HQecMUfmAjmZ1oYZugNHrDY2xl5/CYjuFgfGo35DvrjIW0Kj0aUfDU7odSfCUAsb6M/VeTFsI 5UOhnvL74UUm64DxMwVRlV/Ga58vFfnrcsrtK4jextMdzokUZu4HlUZKbYzW9wKJyA+hFrEhV ejbRIzPy20IGA7Kv85tcBRuLmQtdpQV3d56qwtyOeJUeIE2xchlztHx7gi5EumazpL7ZmD9cb KY0gTYW3ajFG19Qi7arOXd2RT2Dcui4PGcos5zx2K3avDB31xLulJmMpEvgJ8WTCkgNK13wim yR0bYsNm1jwLPh0i22CZG1/3kWsoa0xSixOcJVIkSFxHNN//1i/dQQ7FN6uA1HVMrA7hl3wCm Htu11arUqIlhZQ1YMT1JZ9Tq4kXznJVav20n1X/8/zv5Mk9LGHbZgy94mruLtt4w8PDc5GzbR wwuKpxkgehq6EMfAYn6534gk3M9IhESg/cK4Xhp4IBQst8w2XcYHDauGtq5n7QXkdpuUWzcQJ NluXWzQ9IURxNX+4oCkyicPwcRzco2vnlo/bOpmMZP+0SKlKJT0wqrwCuIcYBnFgXIZXP4tL2 Vu82aFfvIjxxSY/QzuoBZEe9bjqiPgmMbKqDzz5cAmPMX62qJrpbhuuEPyWFLlywYCp+vT6OA BFhI1ENQ9hjAZxXZrM8vJTLPKGWkqbsWJTV13LYsUDZYa6Dtnib5aVOwOAb4UNkhWx5xujQsF SpiXkWobshT1AdIv5ZD6XVA+13+50F4QxYyxuf5aHha7yEx7f1C5fRUsjJE+oL01zUs2n98V7 W+WalcUIEQG0mhtWYyUOxl8zw3gpIiKFdjcTAQN6gVL7ItvDzf/l1PQX9BqM0N/IzSYTCgFTp 4HHtSxIsOm/vdQtmfclSWT+iaArbRrZ2/Ks8S5MHHHs/VHpt5Bs9cOo43Fag+cKcBTMaIyb9A f00FIrDxwVX0yEjKVErxf8irKyguhEMTjPw3hl7 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 | 70 ++++++++++++----------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/drivers/platform/x86/dell/dell-wmi-base.c b/drivers/platform/x= 86/dell/dell-wmi-base.c index 2a5804efd3ea..1070df065807 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", (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 /* @@ -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,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 @@ -825,10 +827,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 Mon Jun 8 05:27:35 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 C481B34166B; Fri, 5 Jun 2026 21:00:05 +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=1780693208; cv=none; b=IL/rwwcbseF0KexwqeeJKU7fwfKLWggSbV4eD2eR9N4hPzUr64pK+z1BdNOwlUooofju+zRsf/I6hs5PyesMj9N2hLUa6RPZe1jyiUImWEnopDW0FSSfeHNtAAYOiIkr+KHJGjv0YiEIT8umYbPAt5TsJxPHdmgXKzKuKi2q8DA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780693208; c=relaxed/simple; bh=3/YzKk5yd5e1YsG8VVvxYHpW6mg8qMfhG9Pzjjt2+Ns=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Z2G+/PHW91CDvAMkBDnWhoxD7bft1lkfIwm1ZHp/0qLHWodT6dzUnYSlFM6khGsqhol4fTrMtqZgYNmu8gLkTLW4EBSoUVNGrgCycHuCtDW289bbHRcpFxCsxHFMkKGoqA/F5dsACUQ6OVLtAjHlHD+UUVcGH2Vt4ux8PpwXWtY= 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=BS6Oyszu; 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="BS6Oyszu" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1780693188; x=1781297988; i=w_armin@gmx.de; bh=/VEsNeFCmDb3E2D6re555W182LKIUUc5SgS8t8OYxeg=; 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=BS6OyszuXwIkq5rGZ6DyAVrbA3xtW8xjI3XFrxNhxEfCjP7WiTLLYtu5+n3K+l8A QGFXtcWsRI5v+Bi5txqf3VkIKw7PdcQalKRDwm5mYT0eWc5PpWCctBO3REW75HYkp sej5xI6GIUHP0G9yXoGXOBJjxD06yJinVLd7IopWEyttoaTHn7QIl8sv/fPkkMRZi SfxVU+5Dnk5wo1iKg3r/XWDGylhuu0by2c3sTmQbQs1zGskDNYlbXSRmVRJ+IApBH IECWT2zOh8PL9wwUaMfD7aCqtWq4LP6XLhRtZNjqcNO1f8oR1pDBtr2x0J/GWc49R njzS3arNOhRN+N5pFg== 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 1M59C2-1wWi6S2548-007C3q; Fri, 05 Jun 2026 22:59:48 +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 v5 5/9] platform/x86: dell-ddv: Use new buffer-based WMI API Date: Fri, 5 Jun 2026 22:59:33 +0200 Message-Id: <20260605205937.530897-6-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260605205937.530897-1-W_Armin@gmx.de> References: <20260605205937.530897-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:7GFOBkZ+1raQkmiQRfq3XF1DrTBASftA5a3x0zBNLMMNqNX7oWp S+HNfbpaNrukkUzTTx9uHzdZXnhQFXw/Gup0qxtM9JmnuULZaLOEyvFlmP6NhRpQ0jHVHFg MnEl9SJohyPo/gW6jg5urp4xYSa6uKRbPtH0JZKMzFxmwaDdKqGLTig8m+5EPob2E9WVYvk VO6w4mpupN3rDcFJRFKlg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:ZDsYPYMkOJM=;xnjsKse1/Iwo7aspvGuMHPwxLQI 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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 | 181 +++++++++++------------ 1 file changed, 86 insertions(+), 95 deletions(-) diff --git a/drivers/platform/x86/dell/dell-wmi-ddv.c b/drivers/platform/x8= 6/dell/dell-wmi-ddv.c index 62e3d060f038..c2120d8ae298 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; + __le32 *argr __free(kfree) =3D NULL; + 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(*argr)); if (ret < 0) return ret; =20 - if (obj->integer.value <=3D U32_MAX) - *res =3D (u32)obj->integer.value; - else - ret =3D -ERANGE; - - kfree(obj); + argr =3D output.data; + *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_string *str __free(kfree) =3D NULL; + struct wmi_buffer output; + size_t str_size; + int ret; + + ret =3D dell_wmi_ddv_query(wdev, method, arg, &output, sizeof(*str)); + if (ret < 0) + return ret; + + 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); + 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 Mon Jun 8 05:27:35 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 EBBF425392C; Fri, 5 Jun 2026 21:00:08 +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=1780693211; cv=none; b=I36fkosnMK30+497MZfNS7LKoxbg96FdsCIF7tIaM/5aBwtCfvQTR4xQHKHGM0j2cnUlefwgUEUmeVrTKmLWILP2DIMp+mmLn9tNbOYkhSQ6YKj9SgvTVANf/b2Ee4rVzyepNKnaijCFRZTKPrlAi8ajlaubtP8E8lABSZDQszQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780693211; c=relaxed/simple; bh=R6jhKSw7Ls4wRvv6hDd9DjiWqFzo3e+NJRmJOli2NOA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=kA6k/NrBFIvtZl/ABkMJTmktya+naXB6H+yxgOhMgWBolmrD/j7XHiOqJlaxmNKTn/HGI7g8Mm8P1TfcjHAh/J+cVermVfjw5bvzBDdkqB7CPFiwPevVCHfoOJ2FGkMR35DeBLwqLhcVMVIJaQOpdymg9GSt8GTyQ5r3HHTNDXg= 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=fIAKuoF+; 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="fIAKuoF+" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1780693189; x=1781297989; i=w_armin@gmx.de; bh=JtHTJa+SmQgI1Ow1Wew6FmetXK04z+gNCABL0Ss/1BU=; 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=fIAKuoF+71kmKoVq5M2/yjluqOUBADBo2WPCA1IHGWg1uzlyw55qp4qL0HtXz1wS MF9gFWkqB78Yvp9gY36C8iPpHbJiXYQYM9ZMtgd0FgA5Vp6Vyo9/K7uDaMUyB1TGL zHSVt/4odHuiKXsLez+c5iKWKZypc4HMODXitEmzly7DCQ7GM9GQ8Y1D+W4XcDdsK rPsuPK37tb1ALbCXxCKYWxTGzPYccyJ+kP7dB1ClO581+ROR3QK/SHbW5w7DSMizx 50nDYHpMyUkxnv1otHlD2Qj1+gYHLteDWLGMH4IuMxn/G8Cjuh9lb5i/jmWtPbiMU 2Agj7le4BgWHiahR4Q== 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 1MOzT4-1wux3p1nNE-00INMx; Fri, 05 Jun 2026 22:59:49 +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 v5 6/9] hwmon: (dell-smm) Use new buffer-based WMI API Date: Fri, 5 Jun 2026 22:59:34 +0200 Message-Id: <20260605205937.530897-7-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260605205937.530897-1-W_Armin@gmx.de> References: <20260605205937.530897-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:MB4zCz/R0Kbqx5ZfoWDVr7/Ncg2e2i0nScv2NGrMOC3y3LgWsj9 dh+zRm1XVoEfuv7SN+Uz9lEelowl5uuIlJ3YUscHcqqKXDT+e4SFKO4QQR7ucTVyJJ9oG3x OOTgWHMFfy4HkmZUSzGJNPY8/MiabJOSELX5DLV8O/1DB7WgEHQPZOtM0mmR32+zI+UrHDs rXSlZYDidpzkZWwbvlybQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:2ld5O7hCihg=;4h7bfzeNrrcXapKxnlzPknJnOwq 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 5vgBPdfx/vyzkHmDzk= 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 | 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..0dbee562220b 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, sizeof(__le32)); + 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 Mon Jun 8 05:27:35 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 E5DC233F586; Fri, 5 Jun 2026 21:00:01 +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=1780693203; cv=none; b=kSijwnKhEwhQMubPgJc/gsPu5osLEZ6xODYYU79MrzM4mZMz+3jNLBYM42/8jBFB3NMrOC/P1DaNpKHjpDcLay5LDPGUcJiX/IbumfUBoRKAL4WK1hYNTu+9WgzT9ZWBmMlru8N88cxWfghyRRRNwyrNbT9ztsaDLWIzcpCuRxI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780693203; c=relaxed/simple; bh=nLtcvkhpSXkEvlXiy2pD63CXTukW1mVtLyB3M5nFgUw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=bsmnBqDSRK5Z8xsb+qC/Dbq224Y/O+UdxJSuf/3UKlXa9INOJCJFSnmDdbkJEDLRrxy5pFqOGx5JC/x3KY8Y2h/N+pmgzvcX3laUmu+HXz2LzAv0zoBsWNQWy2u8Df/bliQ1lx7EKK2MNJ9o8hiupk7ZdqnwXTJ3mt0v1Jxc1Fg= 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=cfORgQJG; 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="cfORgQJG" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1780693191; x=1781297991; i=w_armin@gmx.de; bh=fdOoZ8WmHvqJCglSFIUvvsAHkg44uZt705ch+vDqRiM=; 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=cfORgQJGi32QOo99kZYqoJgRVWOVuzMM/FX9itmZTWVanmdHK5WKoYowVwQtnLLx ETTZFsXB6cLVlxc+sNoIhH7mrOdVwj+QpKMK8u14E7HVvpMYlFmRTlDu1UinVaeE3 Vf11RcJkozJhZJXSW3J6yZvL3AbHSrw7usHuuXbBxML3CJ/reiBHU2aZNUuRvSxUy dFHqTjc5nanX9AbWDawF7zXbn4Jb5p8QbK9ZPE7a/cc8VwYzfVW1A2xV68HqP2Lk3 p59E/z3h/w2aF0bWt82w39KKKbSVnv8vI3JoJBR8lR9dhxc6E5AQMuOOHlcAv9kyU QkyLxD7UyTAbczWg4A== 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 1MC30Z-1wPnIJ2r9x-00ECWA; Fri, 05 Jun 2026 22:59:50 +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 v5 7/9] platform/wmi: Make wmi_bus_class const Date: Fri, 5 Jun 2026 22:59:35 +0200 Message-Id: <20260605205937.530897-8-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260605205937.530897-1-W_Armin@gmx.de> References: <20260605205937.530897-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:y0xj0cZsp4fsHY22Hq6JgePJw7bg5YTgFLIyqtMPzc17C1UnCeh QW8MC8AN2RoaQp/+YTxZObTiNjitJxRTagriF/EBTGm/T2kqZ83ObWpvRQXjmmQwltHVsHR ZgWvo9fEXCkkAcSsNa97oGjn1R1LJFwwRC0vUErj61+EM6ar1cWUJy24Z5GVAalAna8dmXw 6vkCuPF/PLeTvQo20f9fw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:/nkRZH9/WHI=;/h++0cm8wFdxxqAcJ+sRFJ1a+yp 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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 --- 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 Mon Jun 8 05:27:35 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 2F69D30F81A; Fri, 5 Jun 2026 21:00:17 +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=1780693219; cv=none; b=CrJY6FBRu/bPX4FkJk6NXnk4WACivapDcwx23lhC4vff7HoKyL1vbYaX5YplYC31arQLvVZD0HPTBnG7P9/DJLDxlU3lWYNRXn+tNlhJKSTYje526C/qcVwEoGJInWLvWQ5bLOpfjCgMiiKZzjpZE3lmKoaACqh6lofG8FOPcHs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780693219; c=relaxed/simple; bh=sfhyhAr6Z1fCYegaDc1uMzq6JQrVDvMEKBIFYmzuNlo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=QrIli6p1wIYwIyDhF1p02hNuK6vwcY4vmlRxbb8Oag5L0ANEri1jcrV68XKEIsZ4Mf5VM0zD/nSxKNcQh1epXwZVF9TPHjdzmMRPN6UNqGe0EM5908HTd1RqvhVVbsO1rr6IN83+pX9Nla4dMirWnVMw+SIXgItXJpPpMtW6+Rs= 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=e/0KxA0u; 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="e/0KxA0u" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1780693192; x=1781297992; i=w_armin@gmx.de; bh=rlTaw9B3AUeB15wt1JCDtmJ4GEA7e5Z/Mss93u9vxvs=; 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=e/0KxA0uOMiJM7pAMWo8x+Tha91qI3VGMOnsS1v7GLAiBrIcJYCBr27zdXDF+Zc2 XoANaiqHMskgqBVv5IJ5KmGbec2NhJU3B3UQkEISiKpp68CL0p5kXunaLyHGY0DzH tdbEd9SeUIymZM7a0Ck/Wu/AKpR1BmGot0BAdPiCMAj/Du6LvkdZgT/3yzqoxgEqt uCUrwdlHjehMaYCzr+i9t1AvtVUMQwCXpK4qgMnIygHSJiwPLhfupD9heSAUcfQ/s tcPRMv19zu7ILnl22tW5At0m5a4bkhlqXkCIUn4EYeakpycMK2V3eg1qCXZWzP9eH 453/PcXN49zHrgRRTw== 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 1MkHQh-1wy1a509If-00oSjI; Fri, 05 Jun 2026 22:59:52 +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 v5 8/9] platform/wmi: Make sysfs attributes const Date: Fri, 5 Jun 2026 22:59:36 +0200 Message-Id: <20260605205937.530897-9-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260605205937.530897-1-W_Armin@gmx.de> References: <20260605205937.530897-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:KKa9WSaxJjPCnN9SJAYurVkGZDjTOZ/bOlY6i88P1YOz6k/ZEEL ZTWeD7GK9ElK+uERSSi2sp+tyvefNfi7XgvRQtViLVdx4j51YpDVwurlljrQ8UVwKE6F9f4 VSnWkVSbNSn9V+lWHxSoxS3yJJQ6KFT+9vycPQ9Zho/NMlmTfnJVcEeEPvZzq0jvHMhbVUv KIaEh1p56X3Rrjck18dFg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:VonALydp2b0=;Rc6d52uZQkoJPOsVGeZ20qAln2x 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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 --- 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 Mon Jun 8 05:27:35 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 615163A7F4B; Fri, 5 Jun 2026 20:59:58 +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=1780693202; cv=none; b=ftXtPtX+zK5QwUa7w2QnrpkLCpo6ys8WfkOlhnS5q0KhlRZ8ang1Ldi7yzr3KCECvbgt1Fs5l94Ul8oQv7pR9hQYhTVGoZhfZ+5LIY1EHl+eTLs+o4BYn+LE37FzPWYZ3UiJdCZdkSNlxWf64SSeWpuDFGMcgwZkN9KRcPDfezk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780693202; c=relaxed/simple; bh=xiMMiR9DQf/tWBjhVfGlftQFfGRRAKBqYvFODTT4jA8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=jx02NBMfgjbQLuUY8+uf9eriwB+0PowPly/3KQVrxE85aAQEAilHAtiK+IDkQ/c1Ztn/o3kU5t+ZH6os5kfgJtA0xGWRlWqaZAJhUsaDqs1mvkV1TmIZYuzTxtNEYvf7Fmka31RABYGT7dZ9OCLP6I4tjyRhVql0NPfDf98ewTY= 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=aiyqszqR; 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="aiyqszqR" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1780693193; x=1781297993; 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=aiyqszqR4VhDFKnPNcFCsUIeYGUOR286bk0TpOK0CDvmrwnjjPi11dVQBEeQdLg/ fNsFTkDUY6SULSj9bWrOcJ8/Vm8Zd7WoIrVxt6I+PZ8EydrwZMJU7YI9jwJLQvgYB UOXtOlLv6I9HB6pViNDRSIXDV37CPhO+o3MueiR65OrEpRXOV5Hx6vV+To7ynNZ6B jNrzCAWXHDBOX1UkZUhL+WSpjCIlSnbWxQykcnGFtMy6izyQ5ROIyceyQ9PQMWJkp jnTGEB7OsNiuPTddEzopdyA2Rdz6UgFee/DetmNMoeGxqp1p5IJWblWsmId1AeH+o LpLILfaYZBPjiGyLkQ== 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 1ML9yS-1wmj3T0zkg-00PVyx; Fri, 05 Jun 2026 22:59:53 +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 v5 9/9] modpost: Handle malformed WMI GUID strings Date: Fri, 5 Jun 2026 22:59:37 +0200 Message-Id: <20260605205937.530897-10-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260605205937.530897-1-W_Armin@gmx.de> References: <20260605205937.530897-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:KGTwj0aObUe6FsyEc4rODcmjr3RtxqCLeIrdHI/HKa6oqnwXS65 lVXeEidFwsR4J7PHr47PsJmSBpdMICXqZhXtOwgOKVhkyFNdfImmu5Jh/hPbq32DNtZSNvI zzG3Z25Dl3iDMDpzfT99gQZJCJas/oaE4Z1cLjFPzizL3f0bSCwT6aYKxSB6WVgxlxSFXJr +Ef1ZcZSiJfOfU4caKZJA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:W7bJcUJVZaA=;H95Ie+NsI2bTYQpIbZzdR6b7e4m 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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