From patchwork Sun Feb 16 19:32:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13976707 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 5A56743166; Sun, 16 Feb 2025 19:33:16 +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=1739734399; cv=none; b=iGmPt95QRGuWEWS8jdrKdSPaG4fpXRdAoBdPuapc+4NFzCiN2TXOAjuHl2/NkYAqThRSb0xTMhH9z6Y7mFo9dmAUmt+sC5FV8n8Ii8akVSoXMGQ5gwr6KFve4IPPh5chcW9QYmQTa0WO9FS4/OajJ9NbAs/+kxj1MpdKPp6ZHVg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739734399; c=relaxed/simple; bh=bY9wGJAHHKJfi5+faI192PpB74uBuDOL4lP2cm/vKCs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=UiBTIuXDtmSkCs7XrvMvtmlOVFZfsBrVrN9aZBsW6x7tdDMuJgozexbF8GfQPMoon8NWwDyL+At40EbM/8vGHLcEsYWiG1jbqeBUmmkrbQG8Mma2VknRXXk3wmkJLVrLVHl8lXhtaxd7d6ByYz4oOPvZanjswXgrqWP7pXYL5M8= 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=a8YbtLqL; 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="a8YbtLqL" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1739734379; x=1740339179; i=w_armin@gmx.de; bh=mM2EQkLQYCZVlwJp2GMGxpCWqqXp/hAG0cIERHbUn/s=; 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=a8YbtLqL6i+1C5PcwHa5GebcEwOULxrl71rlDnpYp2K8rpy7RfQcVHXq0AAkRDp9 EYrQ65Jod6PZcRefo3xOYPbKzR5gshPnOHum/fDxhBpqwp8wHvsfNjoAnBtfA7CEL iSxYPtNmSz15iILXvH0JSSSN56pxWMMrHHcufE6iIVytFeVe4s4+NqU72kxpSJ51Y PIzXC7r4jcSlASwr74JjMfKiQb8vAAdQeLITy3zFKFNcFERSbiTB9MoT60xVHjOHG nAykRyGuQp1Pc0LjjBTHFigy6PW5ydNckADCsh8tZFyD3KNe/b83Q0wy8GTI1Qzkz qtOjSd7ki4gj4CChPg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from mx-amd-b650.fritz.box ([87.177.78.219]) by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MOzOw-1u0Hhf0WSK-00K8gK; Sun, 16 Feb 2025 20:32:59 +0100 From: Armin Wolf To: james@equiv.tech, markpearson@lenovo.com, jorge.lopez2@hp.com Cc: jdelvare@suse.com, linux@roeck-us.net, linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org, hdegoede@redhat.com, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, corbet@lwn.net, linux-doc@vger.kernel.org Subject: [PATCH v2 1/8] hwmon: (hp-wmi-sensors) Use the WMI bus API when accessing sensors Date: Sun, 16 Feb 2025 20:32:44 +0100 Message-Id: <20250216193251.866125-2-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250216193251.866125-1-W_Armin@gmx.de> References: <20250216193251.866125-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: platform-driver-x86@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:Kci9+d/nK9nZ7kslj4gKHXclO1R0iKB9O3BgiKYatv7zbOAcECO 3wD8C7DPfxcLEakjPkpn3hox+k5YvWkHjMNvZoZ/WuArD3pT1oJxXkwbkiD5OwZNiUr05lj I0Bqj/AQu7e+CgymGFTY+tUE6Gxbj8cCXJi5H2AFlii16BrE05WsoaB2loclpl1SVcCm9I1 3d14vciUE0uHhqq3Wx9ew== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:SkSnWk2fMaA=;qcUOHmLyfPHbpjMeIxxnMoYqZHE 5J7vw2risTVkmrzfqMa3gV/gEMNxFUMsnBoCijrF9Humm81gOgSo+X8/le0efE0tvfaTOa0FT LUzsZKUt88PbmT4ZRbCqv0dilheo15adhuKF6bcliKnWqeLPPza5GOAinvy+N1P1nDY4v8aQj VlctrsOG0U9xsfrmVyiRlELNJJATJuZxzq2LfcBCD1MLCWxgxGpPnxENFwtyvSYgqCGmhuarI f8jTH/wkW1qkmsl4Wb3ZkirXxf3FIl0JepEYzGle5H3ksfQVVJXxzyc/cDwAAnDDrbatjUbxC e1B6MuBTgtwdFd3quVkwwoOiLycOWXHQsK9ljUkGru8csz0E7Ow0ridGGAoOFCjtcm4WQelvc 5kUgGXs1UN2ECqJNLiHQZ75VNy0pfq2Gj3exfpp2XguePzgKoulYiRWuJrdUpGRRDnmdbO/yZ VaZzJL9WLp69uk8RtRlhHTta2E4K32No6r01JmH2dZepzrbkXIbp6Lfwd41dg83nVV9jUuEaW a+qgkVdkjOw7rCxFCdC4hAboDOnSXdAAcEsmTGaMW/SfJ7DwsKgHhlqu1ngaXk7C+QL3XY0TP epz1xSwWbqJPJ16JLao+Hdx5MMq6ftbg7Um+o4tT7XsxGus/GOb15nGtdaramvI2xnDODAk9e 3OKKp/o2GTIXRRKvFE4SqXGCk9pwKVWeFBZ7RD9g+9HJWoTnx1rz71DziHDz3+6p01Hz1kIQU CeESjbNC7CFajAW7cmvv2d9eBD14IG40pI0iQRrXnxE6vRxC7JRfI4+xLiug3VMYK5k8SJUKK nlnYePoO6Rh0vEo9bKL7mNSDunqVBUacdDOTWHPm8K6lQBFaWAHct6RS0hdEpPKAqsKDuWuA4 yiMuhqlDLVZNX1Rd8c8Gy2tSfIabJv6t9Ya756dgPmwHXWVOELRgqp9L1hi05LITvBNvJ9A04 v2+IxoIcl7ZEjttwbxHcIo89DGey7U2DzEAxusA0rGrhbpy/HXDqsZbN8JxJ9cWIxh+Qi6Ljs Z8bgSnHo3Mwa3FkoAmJjzSnGzA+kaDFf4A+yEkHA9z5DGb7GcPK3GKFiWNkOpqesYvYacC0oC +pbofvYA5HxvmZb5CmIN9XZV8HdcqZiIUhk//iLJutGgiGFMcNVSALzfYcpfM3YlhpbmJ9LTn YNDUi6QockjyRfflIjowKsjxFqRPQcjnzdcuHyN5y8mQ+dZEbLFvCR5oVSNaTPdz0rcierJr9 8coOUGd0nmhucCfrxNo3/PBDVIQNQ0eJs5mHHVuYvEpqrgRtC1VDInVOge6cv6Y3IzMzfPjc6 znAr8QlOVwM5q+r+AzZO0m/P74j4fX8nH78X+8+OEPq7cgpj1KuMAwNXx+dro9x2slpkyxYSn I8cLwFtrvJzydrrl9Fx8dLcbDtno18klRen5V38EC/lCcSZFdbAfWDOtZd Since the driver already binds to HP_WMI_NUMERIC_SENSOR_GUID, using wmidev_block_query() allows for faster sensor access. Acked-by: Guenter Roeck Tested-by: James Seo Reviewed-by: James Seo Signed-off-by: Armin Wolf --- drivers/hwmon/hp-wmi-sensors.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- 2.39.5 diff --git a/drivers/hwmon/hp-wmi-sensors.c b/drivers/hwmon/hp-wmi-sensors.c index d6bdad26feb1..03c684ba83bd 100644 --- a/drivers/hwmon/hp-wmi-sensors.c +++ b/drivers/hwmon/hp-wmi-sensors.c @@ -1197,7 +1197,7 @@ static int hp_wmi_update_info(struct hp_wmi_sensors *state, if (time_after(jiffies, info->last_updated + HZ)) { mutex_lock(&state->lock); - wobj = hp_wmi_get_wobj(HP_WMI_NUMERIC_SENSOR_GUID, instance); + wobj = wmidev_block_query(state->wdev, instance); if (!wobj) { ret = -EIO; goto out_unlock; @@ -1745,7 +1745,7 @@ static int init_numeric_sensors(struct hp_wmi_sensors *state, return -ENOMEM; for (i = 0, info = info_arr; i < icount; i++, info++) { - wobj = hp_wmi_get_wobj(HP_WMI_NUMERIC_SENSOR_GUID, i); + wobj = wmidev_block_query(state->wdev, i); if (!wobj) return -EIO; From patchwork Sun Feb 16 19:32:45 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13976710 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 EA4FE1442F4; Sun, 16 Feb 2025 19:33:27 +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=1739734410; cv=none; b=GH6+ueoVtr9p+MWx77ra+rzR+EFlknY97YUhaiPeZgS5pDfCZs6kwkrhuxaxGzLXcJo60Upm7a85rKj2bVrqy7apgdwMrl+w5P9mndbotmXchpwQJjwO3u6QBRE8Nsv+2PejGUuOONFAmSLCLjySFAWrH9Wt3VNNjpw9hP73jOE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739734410; c=relaxed/simple; bh=yMjiz646ZJvCb1m2zwAwWL8ybidlrk4U2RBujeYWMdI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=VNcl8sz0R8kkNWl9sTe8qYOP8cAVzfFVs19DFkqvLnBBpDx1ZkUJ+RENjlTFYsZlX2JG5RB0rLvmhWUnMeb1qUvRpAmOGxQUVIEQ10VZ2ZbFvN7JcOZC0u+d/fvQ3icqleAcvEcVvRuNeXZbOI97EZzDSf9Y2shBFfyg+ZVQdv4= 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=nBiTgIaP; 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="nBiTgIaP" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1739734385; x=1740339185; i=w_armin@gmx.de; bh=7jyOAlVRB2LWS/oqgP3F/K1neWhMeaYSgJQHNRFX1fE=; 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=nBiTgIaPEYqBE2U9Su9v+czEg1rVh/YlZ7uhRkpaSKZxynoiXU4Zs9xO5COBva0T Ubunb4qs40HKZIZvue4Q7Zd7uvDZnn88MIAho8ZHBj4YgU+LcmCh53rQGcay2uTPa t6OvMbf3BD84lSNDmwpkY1ellj3sNVhkKELXYsPPInnBdE/OJUSCwgL316vfT7kzG aaIf8xRzdliQ8/iMRz9Z5xfuEyb9eaNxWtiloDnHXk63LDqSeHkdTkgRTgXSxGj3Q WZ9NDoDrzLzNzlxka0MipaDK61l4WKWHL19RLSUmIT540sX3eykJ7pRRb6btx7ZFN IW4Ew5EDnKjTGDs9+g== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from mx-amd-b650.fritz.box ([87.177.78.219]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MiJVG-1t6onX1vNe-00mXWL; Sun, 16 Feb 2025 20:33:05 +0100 From: Armin Wolf To: james@equiv.tech, markpearson@lenovo.com, jorge.lopez2@hp.com Cc: jdelvare@suse.com, linux@roeck-us.net, linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org, hdegoede@redhat.com, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, corbet@lwn.net, linux-doc@vger.kernel.org Subject: [PATCH v2 2/8] platform/x86: think-lmi: Use ACPI object when extracting strings Date: Sun, 16 Feb 2025 20:32:45 +0100 Message-Id: <20250216193251.866125-3-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250216193251.866125-1-W_Armin@gmx.de> References: <20250216193251.866125-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: platform-driver-x86@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:kvuCTzUm6FD2pC4C6wZx2zJIpdrQjAHy2hoZAk8DFKAj/ITrjMy JiRYDocLgpFjwvsMCMlitMFQi2B2AwkePI1BPTclVJeyOEG+XQ5Omf7SfBiVPX1rRIz5jU7 cLHnlZVJDk7uohwI+5AZrEu+f7428shoHv6SqXNxisWC0u25oPSYcwpKHFwF5oZf/8yyh+L LwOlkzwfE7uwefR/iTTKA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:2V3eQl82Db0=;BTYUK2JOTIeDEW2PmW+NjizJYyL SnhPwCz+cWrlXPpzA9vDNV/RlrOyXa+SkktJMhRlT8dX6u93+yiaT6SJH0lvyFANHCWj+sNqS pcC9bk3jmxVfVCbdFFd+8pYMOVKayTEC1O391eTRENGu/4wUQ6YxNGxN3u+mij4eLK3+j3AdO 3lBcSeAh+9WLUsBQxDmwAzhQQxVinD7utduXSmoYhxp9pt2gx3HzeihJK+ysSl0j7ZLu28wkB ObnQnxCfLX4Bgxr9W35EIKnjFlnf3kJhy1JT6U4OaA2tllN/F2XwpFSATvN2jBkTz17Aefv9J wqvNx2VQ//IxE4lptkl1xralDU4IyHPuTzioxUF8/Q7RPmx/YsXEzpG4Fm0BRFlZRPO/YcQ35 F5jS7qtBNlWqn7BL9UoOvV4H0LK4slS8BQ0ZhyaXEXDMdNuiETMaVic1wOWMf4hjA95Lrt1aM B1nyb16A0BWtIbBL4GXhPzEOZUjC391T8wZI5618uU4Zquq5CxerToGeArpz+hBfbBc9IQsYX wzBSMi6dbxkXosIanzB5KywU3oWErAWHd3PFg917DxQ6GcLdlp2Yyh2yykSrrz2QIqukRZBoF OoOn/QkLm04oyJf3Zf6CEPJ78MfetpUtO7IqaU9SHOT2KtGf4nzXnzZnwYA823KbSiy6o26M0 eTt0xYQOWEeu0A6QO0azSFG4rIB78LwQRTHdbgl64/dwZFKlKq5AILT7fJmI1DOUixVsJEIA7 SmY4mnsJSilKdZTPbsKT8hplriXDcS38FHINBvEFYDST/xKxclDpfEKcWMlrEqcuwV1sI5/qu +yyZLNpMZFstS7ieRXCDjfVOdiBMy54VHSPrL4K9pNRwCxRZ/wKLsU0WmcPMaknHsTIzyfqP6 KroT5NH4l+KzcSD2o4MA9iVzHkSP2p1FjnqmMdK6nozv/aLWv5Uc1zV2Q4npIrFJN68Iqwh43 ffiVNerqGgRnZ/NcyWZQJUVeYRnqL6ioo/JMnk5JzNxvImCs8GIQETW7Ri0DN9hIX5CkE6+9T z2/cLT1vvEG+2g+Nvsh2KS5X0x9svC89X+8YD1qjQrTcwnitR845PUIsXvC+fyOBLmImIIpEj D3gVaz+hzifFWpkuGtfUVfJ0C46l3M6lPZ7xtYv+2t2TpEwktjpyZXQTh5wf/v0uBZpJO5aOc J0cVUYb4ZfH7peGta+N7W39fR0orWgEOvlV/epWgNkfzIm6epLYtoIJBKJIABpHSZ7MRdHkms obi8Ee8eVR3L0fiUzImttpY2+NvxAc8bUB57bqNnOeJgiVy/qdd2T22coNSZfTiity5Skv4s6 BQxAg8TRMOfszc2vpdQ4ONgQy+p463E2bWbW1ek4pGjUEGmIjIBhd60/krXWm0RWtyDUNrjv8 XkBOBAI49NyiR4d9P08MJrD4NlNk3YUE4BfwAoVOh+w74Jh5yAhBu7kLwI Move the ACPI buffer handling out of tlmi_extract_output_string() and instead pass the unpacked ACPI object to prepare for future changes. Reviewed-by: Mark Pearson Signed-off-by: Armin Wolf --- drivers/platform/x86/think-lmi.c | 38 +++++++++++++++++--------------- 1 file changed, 20 insertions(+), 18 deletions(-) -- 2.39.5 diff --git a/drivers/platform/x86/think-lmi.c b/drivers/platform/x86/think-lmi.c index 323316ac6783..2c94a4af9a1d 100644 --- a/drivers/platform/x86/think-lmi.c +++ b/drivers/platform/x86/think-lmi.c @@ -262,16 +262,11 @@ static int tlmi_simple_call(const char *guid, const char *arg) return 0; } -/* Extract output string from WMI return buffer */ -static int tlmi_extract_output_string(const struct acpi_buffer *output, - char **string) +/* Extract output string from WMI return value */ +static int tlmi_extract_output_string(union acpi_object *obj, char **string) { - const union acpi_object *obj; char *s; - obj = output->pointer; - if (!obj) - return -ENOMEM; if (obj->type != ACPI_TYPE_STRING || !obj->string.pointer) return -EIO; @@ -352,17 +347,21 @@ static int tlmi_opcode_setting(char *setting, const char *value) static int tlmi_setting(int item, char **value, const char *guid_string) { struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL }; + union acpi_object *obj; acpi_status status; int ret; status = wmi_query_block(guid_string, item, &output); - if (ACPI_FAILURE(status)) { - kfree(output.pointer); + if (ACPI_FAILURE(status)) return -EIO; - } - ret = tlmi_extract_output_string(&output, value); - kfree(output.pointer); + obj = output.pointer; + if (!obj) + return -ENODATA; + + ret = tlmi_extract_output_string(obj, value); + kfree(obj); + return ret; } @@ -370,19 +369,22 @@ static int tlmi_get_bios_selections(const char *item, char **value) { const struct acpi_buffer input = { strlen(item), (char *)item }; struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL }; + union acpi_object *obj; acpi_status status; int ret; status = wmi_evaluate_method(LENOVO_GET_BIOS_SELECTIONS_GUID, 0, 0, &input, &output); - - if (ACPI_FAILURE(status)) { - kfree(output.pointer); + if (ACPI_FAILURE(status)) return -EIO; - } - ret = tlmi_extract_output_string(&output, value); - kfree(output.pointer); + obj = output.pointer; + if (!obj) + return -ENODATA; + + ret = tlmi_extract_output_string(obj, value); + kfree(obj); + return ret; } From patchwork Sun Feb 16 19:32:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13976706 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 6F9AC42AB4; Sun, 16 Feb 2025 19:33:15 +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=1739734399; cv=none; b=L7sszvmBCAsB/+7g5F/vNSQ2IvOc+CFmD//YVqJ23cRMYuwVjJ/DvD7kZdTqhF+ygaFGG47IscDrX9OQAVLzk+C8WsWlxMYwT7NK5cx5lzvMhL612a3K5DbGGPs13W4yVQbkeNBfaQrDnFfbyHvQSD3oGZ24jFc8v6sR0qlp1RQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739734399; c=relaxed/simple; bh=4zFvPourB8H8dcn2mIjlbEat5V6fdoA0xfssgADHt8o=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Yf0gBCTTkegWXlqSZCGi3rQr0r9oO576R4YnHdbz0aBsaMLv310UEp20iwzgVQCVRSqGvaDC4pYKEZl9Vi01DmF7h1SQjMw+f+djL1IkZcRPXMRail2ujoMtuSjS2cgBwFLSOI6ZVEQsvS5syCprTPgfAFtAjeJf6ZpLLhuAxag= 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=FukaASuM; 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="FukaASuM" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1739734388; x=1740339188; i=w_armin@gmx.de; bh=LGy+YSCR5EXvi4r55nuFgMVSm/uxFYtiz967rCHqBWY=; 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=FukaASuMPulkd5/llRPinx6CGBQrHgDRlh5W25yb4FXINVbp9un9GXNwQzFWNPBe J8UQcXzzyrVdGPyyk6aQaAeWlzcFDgJAv4evIvqN5iky4sC99lbFRuTgtbUWNMknt UCVBouGBUaaCvZn6yCv31Bj1VIPqFrznGlNxgkr6HKrp6paQU65B7CedS23CyQUmo imwkxnDV0m2hiaSKp/Knt7XjiWxyWZXOiiR4TICF9EDO8c4ngkixshLJEYQnba6Ww 7214awmFX561Z4gbuPqjW4d4blrKXLykqJ/UTZFv79/1fqBkl4/TbspMHNKQ4lx6q cSt6DZc7R+3vFBNpIw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from mx-amd-b650.fritz.box ([87.177.78.219]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MBDj4-1tdeVZ3Pag-002GLc; Sun, 16 Feb 2025 20:33:07 +0100 From: Armin Wolf To: james@equiv.tech, markpearson@lenovo.com, jorge.lopez2@hp.com Cc: jdelvare@suse.com, linux@roeck-us.net, linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org, hdegoede@redhat.com, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, corbet@lwn.net, linux-doc@vger.kernel.org Subject: [PATCH v2 3/8] platform/x86: think-lmi: Use WMI bus API when accessing BIOS settings Date: Sun, 16 Feb 2025 20:32:46 +0100 Message-Id: <20250216193251.866125-4-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250216193251.866125-1-W_Armin@gmx.de> References: <20250216193251.866125-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: platform-driver-x86@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:OYDecztJG0YqpsI7jHjqnFqVJkOdsPHa+jTcw42NzfmhRMiw+ZL y6++CTXgYmhvIW8xZiKhzHc1zCpR8SeCd3k1pa7mTrQCbaCe4iK58o6ZpJ1jM+aRMv/V2Jt RTKeNU2KMH9uB84Di2cld9FLOze3MGjdIzpQN9huKh4hu1I4ucvUT9JfdxkJNh6FWDoQMrD ZXIRbmot3VtUKxDnP7/iw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:eQY/Orl/C+k=;KyES0va4qGRw69QoCFrMtPlrTkf w1MKr0w0CGfv41ognV7ap8aiQCxIUMuwMUtPW6c8kEDHuy11GXvAOKmmz6lO45HUG4S5JLdAU KhFAB349yycK2mV31QUmJ6H4P5bAS4LRSoHBcLqOybHl+iFTD+92wRMvjZOwelaXEHcxtWgO7 TsCAL0ZAmSnTWcXIEEXdeYYiso4ML4I+xAdM19QqSvIZ8h3T8W8KL3Dh07uktA9PJ+PS20uu/ XvL3YGzBKlF/Add5rx2ozy+9OU1kxuGfnj6WcVbAEVAB8cqLP3MhZrERfkr2P62tqOmdFi4vw FKYrjiD1RryYBmqid9cez0w7uHaV92Z5znAKhHRRzEQJMOYq9wnf1cwMr/sPN+KFbtBeRkQfb p2VG0HJ1JoNphY5ue6kZQegZmjiwUF0xrgymySAjflfEMtHFRzvP66dfujBTe8uY+QLKbpfa6 GgGIRt27SvsQFdVxVBFor7CHaOy+qpeizry6tbBktTs40OiEaBXG7hcFs5yKUNPEntjJYaToJ r0E2P2gd00cOY6+YqW4pr1txbUfc8GoA0Lrz89iaLEQPqDioe/yv61YsxczGTKyzMl+SwbW2q zFIlzQ/YrscinaRfvHkAkWB+jYGYMQa6tnoxD5wc9EPxOndpTcyNDBw7656qz29nuhNiyHIOQ r5uYhX4+LME1UdMkB8hTd57/+7JC8QzKZ4VdpDHfYbjC/bu28TZOiuhAO161+K9j89BFmpbim qJ11A36WQxqVdwZgeOXRh8QT1fJmRnkQ/4KyjIswlbFciC0Uy3wOyjmgkniY09q1tPgTa+TM6 UDFzzpQuPqhHSrNJtZ9I8etfWKGKU0RNEj/vMcWfEPSOowpGw8gFL/u+4R65ynUNUjqhV8br4 rrMb3tLa2gNfmMQlGli1PrA/Ywzii7SiZwSyBGbScLg7/xc4OjhHJVyhkeEE5oHTteGg5D/lA 1pL5s6jJaZFAwLUPww3rZNR/Nu/us2a5XTLTCJDfl6wA4X7/KePbNPPida9T+dcCf2Q1X8fUB Yg/X12gwB9UsLGdByDR0grfRGNWHxT4hKOLvT3T/cPde+hggi45X17srpaw1sYtWjQ92I3JM1 2it48hmaS7PexKRuHTG3rmZrgW306Jhmz8XbF1Ug4ZoTtbafoZr6lgSFKH09D78mPEe/aQ4e+ ElSQf18IRzDZibSH7ldxGpwTTO7Tzsb+e2BHpKhsgiGFEm7ePezh6wrXJabNGWkYztUi8O2IY cQJUhoHgqPmYOUAVGVIjSKAxgWuxNUUx03PYidhEMT7J6NAkDsfw/SZZW5iE6D4V9Q3W6+KdY hpnk9ah7B2iV3yIPxp5GdelYh3ZMUIGp/AbVXh9HEIs0YiQMn5XDFRT3vx5sB5/fgoKm46pKN g5E5HGQeB1qs5BZ8Q+MZT0yo2X3lN0aLIkchx66AXZtoC9zleky3P2WfBT Since the driver already binds to LENOVO_BIOS_SETTING_GUID, using wmidev_block_query() inside tlmi_setting() allows for faster access to BIOS settings. Reviewed-by: Mark Pearson Signed-off-by: Armin Wolf --- drivers/platform/x86/think-lmi.c | 23 +++++++++-------------- drivers/platform/x86/think-lmi.h | 2 ++ 2 files changed, 11 insertions(+), 14 deletions(-) -- 2.39.5 diff --git a/drivers/platform/x86/think-lmi.c b/drivers/platform/x86/think-lmi.c index 2c94a4af9a1d..0fc275e461be 100644 --- a/drivers/platform/x86/think-lmi.c +++ b/drivers/platform/x86/think-lmi.c @@ -344,20 +344,14 @@ static int tlmi_opcode_setting(char *setting, const char *value) return ret; } -static int tlmi_setting(int item, char **value, const char *guid_string) +static int tlmi_setting(struct wmi_device *wdev, int item, char **value) { - struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL }; union acpi_object *obj; - acpi_status status; int ret; - status = wmi_query_block(guid_string, item, &output); - if (ACPI_FAILURE(status)) - return -EIO; - - obj = output.pointer; + obj = wmidev_block_query(wdev, item); if (!obj) - return -ENODATA; + return -EIO; ret = tlmi_extract_output_string(obj, value); kfree(obj); @@ -995,7 +989,7 @@ static ssize_t current_value_show(struct kobject *kobj, struct kobj_attribute *a char *item, *value; int ret; - ret = tlmi_setting(setting->index, &item, LENOVO_BIOS_SETTING_GUID); + ret = tlmi_setting(setting->wdev, setting->index, &item); if (ret) return ret; @@ -1588,7 +1582,7 @@ static struct tlmi_pwd_setting *tlmi_create_auth(const char *pwd_type, return new_pwd; } -static int tlmi_analyze(void) +static int tlmi_analyze(struct wmi_device *wdev) { int i, ret; @@ -1625,7 +1619,7 @@ static int tlmi_analyze(void) char *item = NULL; tlmi_priv.setting[i] = NULL; - ret = tlmi_setting(i, &item, LENOVO_BIOS_SETTING_GUID); + ret = tlmi_setting(wdev, i, &item); if (ret) break; if (!item) @@ -1648,6 +1642,7 @@ static int tlmi_analyze(void) kfree(item); goto fail_clear_attr; } + setting->wdev = wdev; setting->index = i; strscpy(setting->display_name, item); /* If BIOS selections supported, load those */ @@ -1666,7 +1661,7 @@ static int tlmi_analyze(void) */ char *optitem, *optstart, *optend; - if (!tlmi_setting(setting->index, &optitem, LENOVO_BIOS_SETTING_GUID)) { + if (!tlmi_setting(setting->wdev, setting->index, &optitem)) { optstart = strstr(optitem, "[Optional:"); if (optstart) { optstart += strlen("[Optional:"); @@ -1791,7 +1786,7 @@ static int tlmi_probe(struct wmi_device *wdev, const void *context) { int ret; - ret = tlmi_analyze(); + ret = tlmi_analyze(wdev); if (ret) return ret; diff --git a/drivers/platform/x86/think-lmi.h b/drivers/platform/x86/think-lmi.h index f267d8b46957..a80452482227 100644 --- a/drivers/platform/x86/think-lmi.h +++ b/drivers/platform/x86/think-lmi.h @@ -4,6 +4,7 @@ #define _THINK_LMI_H_ #include +#include #define TLMI_SETTINGS_COUNT 256 #define TLMI_SETTINGS_MAXLEN 512 @@ -87,6 +88,7 @@ struct tlmi_pwd_setting { /* Attribute setting details */ struct tlmi_attr_setting { struct kobject kobj; + struct wmi_device *wdev; int index; char display_name[TLMI_SETTINGS_MAXLEN]; char *possible_values; From patchwork Sun Feb 16 19:32:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13976711 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 40C0914AD0D; Sun, 16 Feb 2025 19:33: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=1739734410; cv=none; b=Hhp3QCa6GcOOd8wKDcKo9rh2LAeuAF5c3zrkrkRHlHyAFpxh7jBYtLUJf3tCmzAZX8T2Sy9Lmdx7vCv54mTJK9wR44S8CMZ6S5Q9YilFAIF5EiUxQ9u4AIiMMiRl4qLQXLOy/6wCSn2dTbiNEoXmeCnTsTQINuEzrmHbVGJ4bFo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739734410; c=relaxed/simple; bh=Ca4htyzMV4BbSbS57tRGc2+Cc0LiM6cUtsp4GcmvYPE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=qZq7zkqGgWw97fDQqjVeC16VcZxxaYukEGa3SHIo+a+V87cvksu9VbF832NpMMDpIa1UuQ31tOR8ULlR+9BN4ATW9WK/KpjqAtYNM6Qd6mpWVHWBS0qJXt8FnwwQIc4j9ntKEABLfxXjDI01xL4sSdug8cNoQ3pA/2Ji1+G1BfY= 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=toO+fCLo; 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="toO+fCLo" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1739734392; x=1740339192; i=w_armin@gmx.de; bh=486rwmOb89mmDx+Ffk5gLFZ3t0a1l6qw1EFvtUtqR4M=; 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=toO+fCLoIP+SF3uiXqZTWkDYKgGcK6H3kNXovGDdi39bPNFea0CKHDk6bvjj4pk6 QZ1433SrcOlKU70dYTPcT8dzkBb0xWV0AuXlDCEOIxo2Mv17AGYkH4JIOBPPMoat4 CJDfLO7qPXa3nwYko1ArlCi4QPbOXv7WL/Ki51Pza4vb3h2NTqRJjQ37JGLvuS3Es AvjEE3FrjKbL92020/p7NBTiSE+z7vGcae/l23kxd9BnMLeGKc+xMNmHuiNyg9plg qYBNEMCg8IfTR8Hxnu9YaCHV8ZQrdbE0LVeFdt4KwZWCQ86WH80EsFTzSwRvLdiQv cTf0CybquYGqHdGEpQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from mx-amd-b650.fritz.box ([87.177.78.219]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Mkpap-1t4rmq3onX-00hkfU; Sun, 16 Feb 2025 20:33:12 +0100 From: Armin Wolf To: james@equiv.tech, markpearson@lenovo.com, jorge.lopez2@hp.com Cc: jdelvare@suse.com, linux@roeck-us.net, linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org, hdegoede@redhat.com, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, corbet@lwn.net, linux-doc@vger.kernel.org Subject: [PATCH v2 4/8] platform/x86: hp-bioscfg: Use wmi_instance_count() Date: Sun, 16 Feb 2025 20:32:47 +0100 Message-Id: <20250216193251.866125-5-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250216193251.866125-1-W_Armin@gmx.de> References: <20250216193251.866125-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: platform-driver-x86@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:XkQe/A6H4OjVacgqzzAFK4m6QQUH+OhJO/tL5ttc+HP02Vb9vCV LxFJn0uFX1ZFQWtfCoMl80/2D5IUsCRk+7V+odJBqQWx6+JbIX+kVaBtIIkbUQl0Li0tCD5 ml/ex6m16uLG3fMwbuKXAbPVTAM5hIyWTqdTVlT4LSk2/onjyc0RwYu+mGTmXa8KZA4xmE4 v1huKG3PxqulVXw7XB2kg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:Q5A0Wm4+rl4=;8oTH8q/LU6hRLiUVS6oJ0qWmPKg g1GkdyG9pQ4nvAuR6plRr2rNqY683xubIpfNFchy9fs3/bdwxe9O51jIOwZFUPNcYnzouwuuc 0PRMy26Us8+p+0f7ge8ZCx+i01n8KH58QH2HBKutJrCzF13FUxtGMFt9hE0D2q+K1x9wODFi+ rLq1RMcmxyd9A0LgXZN754l7UKNXp8bnoEUiOkr9q5VPu0E8VzIqWR/zGS5tAGOIC4n+x3Izp oWuhxl9WBJfk1zSaqozHgjBjxE+MN4xpBxQ2HRK+xI6pWSoTk87irbHfyOquw219Axs7xRjI8 k3ttZZ85mP7o9K2TPc+8ocw1Z/iy16i1laghJ7CjRuYhyNeV2ei2jG/htNrulMVT6pQ/+PAzQ qe1YTDKRx/8igqTEYP1upJsFOOEwlZpCCBripaZGF2W63Z2frMbG54W8bSRfD+ZPXY726HTqk w+JHiRKhbLxRMlY/zkwBvv7DT0W6BINTEIqIg/+fYlN0rJtbKHTVSSjMkKuHlzObyzoL3RZyZ +mmpUUFcL0bQu7/IRLxq6oAx76CDGi7trHHsrRr7qvIX/Sa6mkqhd5T1hZJFWtOaPDUdf5cZr UAyAUWKjkVg9/uiqY1D/xdo9myZ6D0LEZVZ/deUDBVgMzdFFbR15LINb48srOadjhnVYxIbyP 8TI0GXIG/eNetFJdcn3INZo09317MZaGfeu1yPYoUxMN61KekTru3ZtOx2lalyarRlEI2+Dcz oVgEJ2Eu1Hkb1TvsBesuoNKlX9yrn+eex/ilUQieqxL3jK1Mp2C9vxEe21Ohn0ns3wDHii91K CZh46Cx8slfiLc5J8pvJPimWmlrLjWYVVAw9MP5yZtx6uZm2RVJPWeiyWM1QI4wRUUXAHLsDi Jqm5Rhn+QEia6+rAzPxxUo5+uPk5wgnP5/G5MSoD/mrcz+21aLOADRA2twfy8xHG7+owY3zo/ FiX/B2to54HWdsEX+7EUJPnoNQErLFZf1G7Jh903k8o7ynGXq682iTj7RwncQBK+tXAmOHksW YKUH0mYUh0MUV5iYYHil0RQOHDi6ngpcfQhJsyDpHi5ZcoLKqSuNfz4WmOHD9fSIFadSu/EcC R/7gzOkwcX937WfRqF6ACnb9fbBSY2PDYQ2lQElh5aSwlab+i/DZ/xY3mE4P+TktlFGTkYM74 szWXEVnZ8zmR6FKCMdR4GZeyV55b1zDVmoDAGvmxSlwX5A5jfw6cBwu3b8FhYrKzhH/7R46Ai niJUfea8AXaXmDoGKdVcXU0VLyAF7085YYPlPUujdqqnfvzguRMOurhwWV8D56yc2U2bcppoV DbyWny+z2TJkZ++TwXoROXB0Mf4tjFaVZyNkpt+w8WSWtKmM6zyqSC99bLbe/SpBlXPwkJ+zQ DNMEP9udgNvDx/2pM2jVlTVdCaHss3Q2XbbWUicubgvgtLb9vtkbn9VBN3++gvVueELuIE+rR yctORLg== The WMI core already knows the instance count of a WMI guid. Use this information instead of querying all possible instances which is slow and might be unreliable. Signed-off-by: Armin Wolf --- drivers/platform/x86/hp/hp-bioscfg/bioscfg.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) -- 2.39.5 diff --git a/drivers/platform/x86/hp/hp-bioscfg/bioscfg.c b/drivers/platform/x86/hp/hp-bioscfg/bioscfg.c index 0b277b7e37dd..63c78b4d8258 100644 --- a/drivers/platform/x86/hp/hp-bioscfg/bioscfg.c +++ b/drivers/platform/x86/hp/hp-bioscfg/bioscfg.c @@ -388,16 +388,13 @@ union acpi_object *hp_get_wmiobj_pointer(int instance_id, const char *guid_strin */ int hp_get_instance_count(const char *guid_string) { - union acpi_object *wmi_obj = NULL; - int i = 0; + int ret; - do { - kfree(wmi_obj); - wmi_obj = hp_get_wmiobj_pointer(i, guid_string); - i++; - } while (wmi_obj); + ret = wmi_instance_count(guid_string); + if (ret < 0) + return 0; - return i - 1; + return ret; } /** From patchwork Sun Feb 16 19:32:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13976713 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 94D3E1A3155; Sun, 16 Feb 2025 19:33:45 +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=1739734428; cv=none; b=RulNUgUf9z8tS3iUBswz/8HOtHjfZQ1UEM6KEZ1O6+955ekuhRqInXd/BlCwW/4tYTvoPdvLyYADp6Ud+iiXhgmIPv/8ZmLuG846m82zDyDbYp46LN2dV9M3DwUDy2Fut6IX2SvGvmAtkBNv2REOeTeJpbMEZT0gcS0avkh76mQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739734428; c=relaxed/simple; bh=yy/egALJlGg2nyNQfr1nfCTmkXionDmd0uyxqFsuSmw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=rH5s2JxX9xkgpD2KEnPtSDpQ3pHRt/vg2VxBCN/dyIsFVkawamIZZN41kSqlCysCLiOVxqNU8cFty06XxKw363RKyHj35VdX6Jx9rn9Qd4NNoP3/VU0JaC4arTRn7b5/0JXYvvWpyMfZrijeSVnS1eRDct0koo21ZgrTMLV3JNo= 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=MlXfy2YM; 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="MlXfy2YM" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1739734394; x=1740339194; i=w_armin@gmx.de; bh=rgLcWVwAD5AFEDNUDNUW1/ig/txcNSoRp3vKvht8+6c=; 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=MlXfy2YMw51CWV0Zo2Gqgl4/ACoFJbFrL5rbKjCyR3DWfmZxgCPFPVJwAn7ssWzY kexh6Gordz64gW7PdUexJ5bP5e8RtakiRK+BIJOtxU0H68hq6jXFafBx+JxTvsBbm BFrL/6PeK0CZMMYghHHabXhMl+Oozj7d8TKisiUd6SacYdZDkE2PwwuiBXKcUgGsX RdSWrI4j9C0hoY8jguGF7EmDXAL0zOUbJv9qARMcgoPcmpoujezoaDWSnTjm+tvbs 9gTI6upRsdaKXgx81he7GJAHbcTq0jLjcT15ebP5fLbdDtG6EwQQzT4A4DMpxeLW9 VUah9qQV+KFtyV86dA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from mx-amd-b650.fritz.box ([87.177.78.219]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N1Obb-1tLREP2Ohn-00udkZ; Sun, 16 Feb 2025 20:33:14 +0100 From: Armin Wolf To: james@equiv.tech, markpearson@lenovo.com, jorge.lopez2@hp.com Cc: jdelvare@suse.com, linux@roeck-us.net, linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org, hdegoede@redhat.com, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, corbet@lwn.net, linux-doc@vger.kernel.org Subject: [PATCH v2 5/8] platform/x86: wmi: Use devres to disable the WMI device Date: Sun, 16 Feb 2025 20:32:48 +0100 Message-Id: <20250216193251.866125-6-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250216193251.866125-1-W_Armin@gmx.de> References: <20250216193251.866125-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: platform-driver-x86@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:foQTVB0Ul4JZlTR+BQrhH2jsmqcpefP37lV069chqlusmHSXOcS gqqr09+JTAio3a9t3Azm7EKYzNMWCqTizTQNU2nBvTbQIw9TLTRg9Df8FbZk5nvgnKDIgJ8 TEkl0J0pIDzAW2wTrAICol/rCkIokpOiC5Jod0SXbGOCw0pLwgIx0bejPpe/AbCaOKDq0YB x88hrVfKd0cRH80SFJYjA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:3w6imBrrSFs=;5j8/Aa5e/ratfIs67vS9q5hEJR9 jNdTitAKmbP2R9fobzsRZ60Dm/Nc+s8jpu03TXtioHJ3nga4Obs++baMUn4uEVaC26o3fGONG NP+qiM2CRtJGnMxLkGiuAaoOzhPej0iPIpvRXTtXkiOicXuIHMGKc5KVOluqv/KYVoZo9EUyI K2CQaNqJaMHxhPZNZkfYtFDQaCrsBCmpw5E1ElYcQuHIVTNnGdc9llrh8/h2wWwJGmU4KfIsr U8cF1caFVzLA781/BSAYXfv0icfKFOvW2CQ7ra2TBH/7rACZlgETFc5s3IdCW8llENGIAWyPs G55kSVLK4vo8UZJkk6P5McNbQ9eSMZ15yAvhEGJ74lK7QZtIEX+SDEgiuanGyQJT7XsdkJr+X z/V/5Ny+OLuSPo7Bkw2kixBO4AsdCKECAsYaG/rtxKft0QLs2PsGR2ThKFGL80dFV2LeDC7My FXeO6RBqjM+qdHZRSlstg9Ga2C+vp4gfURR3PmYRksU/mxaKtLb0po/VrHoXgsnNpn99l/vGV DoVJNKWlIAMX1bV1WuiZH8SZYnXgUh8Kx2OPKmqDBlLt7QOQSoviIG3uke16JvnqZZA+RVk+m /Suw37lHoR6IFrX9Q/28q7/NimimZQqRLrina8arUsmHDC8Ft6JxBaJQmT23SPafjYaL5jK50 JvA+Sca9zP974VHVg9c+r02TcvFw0KsrFErRK5fyvWyoz60knwK9voBH2ORjQatNAkxNc/kJm OGxyDvSJpqzXLOiUuQwKaorKlTrWrWXLflgtm/cwceCyd3uNY5g1vPBCllJDm3Jq7W7qIyCGt 0yWBSHUzS6mflt/SVRIDh4/bKGOuh05QK+zMM28dGJAO8+F1oDYvSlnjpCGcOPz+WbrrO9eUl +IJN5vRIBTehny1UTJdS3/p0k7lKKd84VaA4wUfECK6/9n5TyMPL2OghJKpw980z5kCgBwWH0 WARalYGHnasMav0Dg5fKNyDnrD44VxkcFLw8idgvfp0MCM82+XnEoFam0pHefBCxwmd5IQbsR TkfKWMyrcLuU6VekDn6sgju51Uu8l+wpOT941/V+Zx5LuYkvO1ayhsET6tbp2pxqy3TC+ez/B Cs1IMWEyDfUtZm1TxCO1MBfiuDj6utK15jiTIXi1HtwXOpSPPtoefiSXU4m6/c0h2bzxR6RbN 3thcvuCt6+R66AT82OSLnY5QwRq1sMZyIQSbDVlqyYKOYdUCPzZP5re/5CQ5P9shnjU0r11Mo aE6RVaGHGS9joqWKLNeacaZfw6GDCTt1Tz0sOWNU7TgmtrgmOZhtoRcXJpAT6KDh1l06RLKc5 ag89Nm79HMGv28dy+7B+q206NzdsLqjZLPfPPOSIhazRwziNRXp/vHDRawiBdCPiHUNjfKrfA ncqitgGwzlRpnmjAMHjpgM6YnjRp9BzKplOBgCa8AmGECSmhQFNFZvOB4q Use devm_add_action_or_reset() to disable the WMI device instead of manually calling wmi_method_enable() to prepare for future changes inside the WMI data block handlign code. The reason for this is that we have to make sure that all devres-managed resources are released first because some might still want to access the underlying WMI device. Because devres-managed resources are not released during shutdown we still have to manually disable the WMI device in this case. Signed-off-by: Armin Wolf --- drivers/platform/x86/wmi.c | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) -- 2.39.5 diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c index 646370bd6b03..7cb36a71e9ea 100644 --- a/drivers/platform/x86/wmi.c +++ b/drivers/platform/x86/wmi.c @@ -821,11 +821,19 @@ static int wmi_dev_match(struct device *dev, const struct device_driver *driver) return 0; } +static void wmi_dev_disable(void *data) +{ + struct wmi_block *wblock = data; + + if (ACPI_FAILURE(wmi_method_enable(wblock, false))) + dev_warn(&wblock->dev.dev, "Failed to disable device\n"); +} + static int wmi_dev_probe(struct device *dev) { struct wmi_block *wblock = dev_to_wblock(dev); struct wmi_driver *wdriver = to_wmi_driver(dev->driver); - int ret = 0; + int ret; /* Some older WMI drivers will break if instantiated multiple times, * so they are blocked from probing WMI devices with a duplicated GUID. @@ -847,15 +855,19 @@ static int wmi_dev_probe(struct device *dev) if (ACPI_FAILURE(wmi_method_enable(wblock, true))) dev_warn(dev, "failed to enable device -- probing anyway\n"); + /* + * We have to make sure that all devres-managed resources are released first because + * some might still want to access the underlying WMI device. + */ + ret = devm_add_action_or_reset(dev, wmi_dev_disable, wblock); + if (ret < 0) + return ret; + if (wdriver->probe) { ret = wdriver->probe(to_wmi_device(dev), find_guid_context(wblock, wdriver)); - if (ret) { - if (ACPI_FAILURE(wmi_method_enable(wblock, false))) - dev_warn(dev, "Failed to disable device\n"); - + if (ret) return ret; - } } down_write(&wblock->notify_lock); @@ -876,9 +888,6 @@ static void wmi_dev_remove(struct device *dev) if (wdriver->remove) wdriver->remove(to_wmi_device(dev)); - - if (ACPI_FAILURE(wmi_method_enable(wblock, false))) - dev_warn(dev, "failed to disable device\n"); } static void wmi_dev_shutdown(struct device *dev) @@ -902,6 +911,10 @@ static void wmi_dev_shutdown(struct device *dev) if (wdriver->shutdown) wdriver->shutdown(to_wmi_device(dev)); + /* + * We still need to disable the WMI device here since devres-managed resources + * like wmi_dev_disable() will not be release during shutdown. + */ if (ACPI_FAILURE(wmi_method_enable(wblock, false))) dev_warn(dev, "Failed to disable device\n"); } From patchwork Sun Feb 16 19:32:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13976708 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 E56B01442F4; Sun, 16 Feb 2025 19:33:18 +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=1739734401; cv=none; b=jdCa1Tehv/HYBFM/SrAlpgvZj5lcxhmAwD9hFkn03hEPxdIraCP0ujyghxK2q23bjf5InLSYyVCPdvrwo9tXJi0RF2kg6TGKuOWaGj47uoi4ilL4AV5sLxXd9xUrWJP7elITg8HVi7ETt7UhXgl4tMEpHnCWoYcOFDhMt7OxRpo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739734401; c=relaxed/simple; bh=MrfZ4f0ixgqBmbr6b+tZ8nXuoCrWVbwwBuBbnLY9zO0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=idVi3MKgYhgmcLXSg5c4DG4Hf39lpc1ei2PBkpIgShSZHhNEaBHCQOuAUb+b8R1bp8JTSRrSLfR5q4ltpF4JQKW16TUs0lHUbIX1rQShYKd820AhLgMFXjm+DndozzRDeXaiAa6OsfrlzvaxKVvQEJFfBGnIr2slDiP3OqzKZlI= 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=j0N5OScx; 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="j0N5OScx" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1739734397; x=1740339197; i=w_armin@gmx.de; bh=RfBOHIfH8DCdsKRfj+Ybg/Cue8cCReCmHYRkGqlvgPA=; 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=j0N5OScxOjF2LMY/htLMR9mti427TdEgFT8YCyPf91knhnxl3hmGBWrUT6j+Pe/O /6sMbjEWCJX4X3f0oC+Svue/elZBhjyPUhRGfqlhhPjbo4ydCGKC3WUgdPx7CQZoL 1lyvqJqzTZsbNNCzDY9lty8y7BX9nZxKe1j43GOSyl4QOWDWKWBkoSGYz21lCvQpT DT5lLV9tuAtcmCV8OVMqIj5fb19ixZSmrOJSE8npsr84+i7pJhuLHNGKsq3phF9PP Q+v9+YX2zgZN0ovO+jeAHn6zOjCV93k3p7ftJ4+UfMzHkUVXgYLRrterSmM7wapMv yKJ0Dy4RBSXMpgHJPw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from mx-amd-b650.fritz.box ([87.177.78.219]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MD9XF-1tbBfR3vgf-001ygY; Sun, 16 Feb 2025 20:33:17 +0100 From: Armin Wolf To: james@equiv.tech, markpearson@lenovo.com, jorge.lopez2@hp.com Cc: jdelvare@suse.com, linux@roeck-us.net, linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org, hdegoede@redhat.com, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, corbet@lwn.net, linux-doc@vger.kernel.org Subject: [PATCH v2 6/8] platform/x86: wmi: Rework WCxx/WExx ACPI method handling Date: Sun, 16 Feb 2025 20:32:49 +0100 Message-Id: <20250216193251.866125-7-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250216193251.866125-1-W_Armin@gmx.de> References: <20250216193251.866125-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: platform-driver-x86@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:0P9QMJU5AH0jT3Z6Bp1YuLyM8hZGN8kYikhhK6uquLHpH8lr+FK X0bEzSScBFpkYvvFcZ1uQrmpts2wJ0FSs/OImw/rvK5PTc1DUJ9MkV+9cwfk8b0ZXlEnRB8 0fVBXIQHqO1ZBXv40NpElYwQRamItMe0AtGvnx8flnUwCxNFNyiamL2u4LjnxkHY1KdvUVl mogiwPkxYg3N6XMnH6O9w== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:s4KPpRLx5Ms=;9L9wkEpJgQAjpopQ7DiKR4j2Alj VhOdeW9nu++wEI688sJx474lhlCeMD+hg/CalGbMp1TXB+2wQJpqp17XqXepGWlWHCpzzSF/5 Luw9UPR/hoQ/vmvE8mobuutw9HktpYXWHT4R/lOFVhybn86hOe2dNT6OomwWsbDQ4oT/4iHo2 BCYYmO7pHStn0UW6g8S6oJ9hiawPAIoKgFvdxjke5di4Rs+ai+9xO4fyoiQVQ5Ri3vy9wJtJ5 gIiNk1Tsc2QRa7X5z1/6ZZz4P0wE47L3CRxRcz9q676KwkEIXFWt8kkDS6xE38m3Hc09QeHGT kxfUQ67gAfLqZNzBqHcO05g/+Hf120n9wpKvCGs3w+f3uyUpfDCylC9VXydD0gOTU6YUt1G/d jTIFSyVmmDgb1VoQp63zsnVQTRtHyv/s8F6jAZ7oVPNcJLuJ2RLiTKDcmfeD9gkekNmfldASQ EVq1clLSzEFYt0Te/hMzOP1CtX1zwNFo1EMrFf12Kjmzjugtr1haaxlpuUGoiI+SCmiJRKRlx MJFDY+p1ntC9LvSpuK1xltbLhNS1jKndzyk3QYDj6qLsjIoZjNZrGO5s6phs69JdpOb2FAlXk 4qKSXp+JkiSI2+iW4Xe0R2rFRfnWjyQLr3wFb/1hPIlf053t4Phyy1pcoB7geYCzVXSQO3RIZ pw0p+8Ee5DzlEjRg1zcJaxR7LtErpAW+zW2w2b7n8kCaKVYJXfZpzASmY0jaLOoclNF6eabmc 9rQWjHa4BvixMHKSgYJfrzzcNAIFSAwz1fW8wpD1ed8RTj+6g74BXx9I6RP9FZdLkWUGIVu1Z W67HQOAKQyIRrEHpxZIqzvqArnj6tBIvgchQ4Nf6i7CkiDDdcnoO1eNpHY9JjNZacqCj7Cos3 m/MFbO+YJHEEfM+jBsv0+vDmqyPuVUVsBpqR0svEOevWj3QOpx2vRSLFVhH+mAsNQBnMXxwjO 9/i0qGpAw6KGr4fwsZTLVc8xCZyCZsE1ZBR383CQ7FTeU0lq+HvBYvvJrq9nHd5HOGBcYg4d2 f5AdDhGMlPsLmTVpYs1R5GtEVjhT4frcccEQgEaj6myJfqHNXzOdBVakSeXeF9MX0AIhoHN1g O153vTMMYArbzF8HKyQQSs9a1pIIgEmyn0CbeWbWqG/u9oa+TGVgyx6jgHXcxhxI++WCMQRIA EGkOjbTO6Ismhgj5ZT1Zc58sP/kezP6DPAY9iA2Z7h+5JAhVYvbFpdq1SrzktufVn3aaoVeZV pi2cKLerofqPMrXjR4g+5eOhbOTRzpOs7Ha+Uyo7XLgMGyOO7Jf2v3TjbQtMWJp6EzsdmhfOa OziQ64AMFyTnBK/QS3SyBHAq8paI/Q1a0pQiaKk3xI9J12IGd7MfV95pZN3YSkHt4FbIu0M8h ut09ulWJ2/hHqNu8RUiYtlKpoaqmIkrnw4vAzMQMxpCWf3pj4DqyXJebKq The handling of the WExx ACPI methods used for enabling and disabling WMI events has multiple flaws: - the ACPI methods are called even when the WMI device has not been marked as expensive. - WExx ACPI methods might be called for inappropriate WMI devices. - the error code AE_NOT_FOUND is treated as success. The handling of the WCxx ACPI methods used for enabling and disabling WMI data blocks is also flawed: - WMI data blocks are enabled and disabled for every single "query" operation. This is racy and inefficient. Unify the handling of both ACPI methods by introducing a common helper function for enabling and disabling WMI devices. Also enable/disable WMI data blocks during probe/remove and shutdown to match the handling of WMI events. Legacy GUID-based functions still have to enable/disable the WMI device manually and thus still suffer from a potential race condition. Since those functions are deprecated and suffer from various other flaws this issue is purposefully not fixed. Signed-off-by: Armin Wolf --- drivers/platform/x86/wmi.c | 112 +++++++++++++++++-------------------- 1 file changed, 52 insertions(+), 60 deletions(-) -- 2.39.5 diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c index 7cb36a71e9ea..97c4a161799e 100644 --- a/drivers/platform/x86/wmi.c +++ b/drivers/platform/x86/wmi.c @@ -123,24 +123,6 @@ static const void *find_guid_context(struct wmi_block *wblock, return NULL; } -static acpi_status wmi_method_enable(struct wmi_block *wblock, bool enable) -{ - struct guid_block *block; - char method[5]; - acpi_status status; - acpi_handle handle; - - block = &wblock->gblock; - handle = wblock->acpi_device->handle; - - snprintf(method, 5, "WE%02X", block->notify_id); - status = acpi_execute_simple_method(handle, method, enable); - if (status == AE_NOT_FOUND) - return AE_OK; - - return status; -} - #define WMI_ACPI_METHOD_NAME_SIZE 5 static inline void get_acpi_method_name(const struct wmi_block *wblock, @@ -184,6 +166,42 @@ static int wmidev_match_guid(struct device *dev, const void *data) static const struct bus_type wmi_bus_type; +static const struct device_type wmi_type_event; + +static const struct device_type wmi_type_method; + +static int wmi_device_enable(struct wmi_device *wdev, bool enable) +{ + struct wmi_block *wblock = container_of(wdev, struct wmi_block, dev); + char method[WMI_ACPI_METHOD_NAME_SIZE]; + acpi_handle handle; + acpi_status status; + + if (!(wblock->gblock.flags & ACPI_WMI_EXPENSIVE)) + return 0; + + if (wblock->dev.dev.type == &wmi_type_method) + return 0; + + if (wblock->dev.dev.type == &wmi_type_event) + snprintf(method, sizeof(method), "WE%02X", wblock->gblock.notify_id); + else + get_acpi_method_name(wblock, 'C', method); + + /* Not all WMI devices marked as expensive actually implement the necessary ACPI method. + * Ignore this missing ACPI method to match the behaviour of the Windows driver. + */ + status = acpi_get_handle(wblock->acpi_device->handle, method, &handle); + if (ACPI_FAILURE(status)) + return 0; + + status = acpi_execute_simple_method(handle, NULL, enable); + if (ACPI_FAILURE(status)) + return -EIO; + + return 0; +} + static struct wmi_device *wmi_find_device_by_guid(const char *guid_string) { struct device *dev; @@ -337,10 +355,8 @@ static acpi_status __query_block(struct wmi_block *wblock, u8 instance, { struct guid_block *block; acpi_handle handle; - acpi_status status, wc_status = AE_ERROR; struct acpi_object_list input; union acpi_object wq_params[1]; - char wc_method[WMI_ACPI_METHOD_NAME_SIZE]; char method[WMI_ACPI_METHOD_NAME_SIZE]; if (!out) @@ -364,40 +380,9 @@ static acpi_status __query_block(struct wmi_block *wblock, u8 instance, if (instance == 0 && test_bit(WMI_READ_TAKES_NO_ARGS, &wblock->flags)) input.count = 0; - /* - * If ACPI_WMI_EXPENSIVE, call the relevant WCxx method first to - * enable collection. - */ - if (block->flags & ACPI_WMI_EXPENSIVE) { - get_acpi_method_name(wblock, 'C', wc_method); - - /* - * Some GUIDs break the specification by declaring themselves - * expensive, but have no corresponding WCxx method. So we - * should not fail if this happens. - */ - wc_status = acpi_execute_simple_method(handle, wc_method, 1); - } - get_acpi_method_name(wblock, 'Q', method); - status = acpi_evaluate_object(handle, method, &input, out); - /* - * If ACPI_WMI_EXPENSIVE, call the relevant WCxx method, even if - * the WQxx method failed - we should disable collection anyway. - */ - if ((block->flags & ACPI_WMI_EXPENSIVE) && ACPI_SUCCESS(wc_status)) { - /* - * Ignore whether this WCxx call succeeds or not since - * the previously executed WQxx method call might have - * succeeded, and returning the failing status code - * of this call would throw away the result of the WQxx - * call, potentially leaking memory. - */ - acpi_execute_simple_method(handle, wc_method, 0); - } - - return status; + return acpi_evaluate_object(handle, method, &input, out); } /** @@ -421,9 +406,15 @@ acpi_status wmi_query_block(const char *guid_string, u8 instance, if (IS_ERR(wdev)) return AE_ERROR; + if (wmi_device_enable(wdev, true) < 0) + dev_warn(&wdev->dev, "Failed to enable device\n"); + wblock = container_of(wdev, struct wmi_block, dev); status = __query_block(wblock, instance, out); + if (wmi_device_enable(wdev, false) < 0) + dev_warn(&wdev->dev, "Failed to disable device\n"); + wmi_device_put(wdev); return status; @@ -471,6 +462,7 @@ acpi_status wmi_set_block(const char *guid_string, u8 instance, const struct acp return AE_ERROR; status = wmidev_block_set(wdev, instance, in); + wmi_device_put(wdev); return status; @@ -551,7 +543,7 @@ acpi_status wmi_install_notify_handler(const char *guid, wblock->handler = handler; wblock->handler_data = data; - if (ACPI_FAILURE(wmi_method_enable(wblock, true))) + if (wmi_device_enable(wdev, true) < 0) dev_warn(&wblock->dev.dev, "Failed to enable device\n"); status = AE_OK; @@ -588,7 +580,7 @@ acpi_status wmi_remove_notify_handler(const char *guid) if (!wblock->handler) { status = AE_NULL_ENTRY; } else { - if (ACPI_FAILURE(wmi_method_enable(wblock, false))) + if (wmi_device_enable(wdev, false) < 0) dev_warn(&wblock->dev.dev, "Failed to disable device\n"); wblock->handler = NULL; @@ -823,10 +815,10 @@ static int wmi_dev_match(struct device *dev, const struct device_driver *driver) static void wmi_dev_disable(void *data) { - struct wmi_block *wblock = data; + struct device *dev = data; - if (ACPI_FAILURE(wmi_method_enable(wblock, false))) - dev_warn(&wblock->dev.dev, "Failed to disable device\n"); + if (wmi_device_enable(to_wmi_device(dev), false) < 0) + dev_warn(dev, "Failed to disable device\n"); } static int wmi_dev_probe(struct device *dev) @@ -852,14 +844,14 @@ static int wmi_dev_probe(struct device *dev) return -ENODEV; } - if (ACPI_FAILURE(wmi_method_enable(wblock, true))) + if (wmi_device_enable(to_wmi_device(dev), true) < 0) dev_warn(dev, "failed to enable device -- probing anyway\n"); /* * We have to make sure that all devres-managed resources are released first because * some might still want to access the underlying WMI device. */ - ret = devm_add_action_or_reset(dev, wmi_dev_disable, wblock); + ret = devm_add_action_or_reset(dev, wmi_dev_disable, dev); if (ret < 0) return ret; @@ -915,7 +907,7 @@ static void wmi_dev_shutdown(struct device *dev) * We still need to disable the WMI device here since devres-managed resources * like wmi_dev_disable() will not be release during shutdown. */ - if (ACPI_FAILURE(wmi_method_enable(wblock, false))) + if (wmi_device_enable(to_wmi_device(dev), false) < 0) dev_warn(dev, "Failed to disable device\n"); } } From patchwork Sun Feb 16 19:32:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13976714 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 6F31E1A3161; Sun, 16 Feb 2025 19:33:45 +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=1739734428; cv=none; b=Pfur9P8mwUPIgow+1zBdCDQszPjeFbyZvTCmT6V3iA4VQmjPEf/TLGQIuEquLnl/Czu+3VAUjayzzfOUngavma6dd6nsBBWwLm6stExe7fDknF1ZGVtc9mqRwyfOPGIX4xX1e5PkODYdCuFqonUY/6HkcHtHLxwhCbIR6p6Lkjw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739734428; c=relaxed/simple; bh=kVzMWrgel67Mo9Ygay0IYNyhWBOB4SrG6RdEbD8Pw0c=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=gIVszBOcxmMAPHP2N7/Lu0pOQFck94/ZJOv1S4988Or8dnVOFNfZxe7982ZAYGlzZe9I3NwRNUJkzYaZ9ieaf62Xotr0a/RW9+DDg6dnLUACIX6NWE+Kbrm9rsrIBUNKu6sDPS8mwMwCOPEsu/QykV+BHlLyF+v/JPYepQSPqQM= 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=Uv6mBTab; 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="Uv6mBTab" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1739734400; x=1740339200; i=w_armin@gmx.de; bh=l76DFXanPHoGvanPZenEdjlmcNhNLDXwwR/QizhaJBg=; 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=Uv6mBTabls2fFkqDWs4kLofxEpUx7RPag9xb7eZe82qsTf3HpGqpRMlzVri1j1G+ X8OfueEl4eQaFHNC8RqCdp69XbeqiZOhpl3FZFSibhP3Rxd1TrB8xpJTuu3VfiFb8 2U70BBXUC4HN2uGZRQJbi33uVEYrAXwUtgM7Wjzf9ng1Mtk7Quo6uW0rsTPcY2LIq QQoOXg/SYw86Ag7hAc8coKJkafzfHHIlUPBMd91qIYEP91FBQe/Uj63zKfWo9sQsK BxnlN4FwmYeMkZS/Gjd1P74xtj06OhODmLDw+RJI3GZNSivCGKk7moy74WWcH2J5e 5ndNqPahg6sazgO8aA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from mx-amd-b650.fritz.box ([87.177.78.219]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N1wll-1tLzCI22vZ-00xljU; Sun, 16 Feb 2025 20:33:19 +0100 From: Armin Wolf To: james@equiv.tech, markpearson@lenovo.com, jorge.lopez2@hp.com Cc: jdelvare@suse.com, linux@roeck-us.net, linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org, hdegoede@redhat.com, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, corbet@lwn.net, linux-doc@vger.kernel.org Subject: [PATCH v2 7/8] platform/x86: wmi: Call WCxx methods when setting data blocks Date: Sun, 16 Feb 2025 20:32:50 +0100 Message-Id: <20250216193251.866125-8-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250216193251.866125-1-W_Armin@gmx.de> References: <20250216193251.866125-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: platform-driver-x86@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:F57wgiORwOAZmkbtP4YoHkBZ301swdj6njSKsDQY9TMzbVvrezU lGMd+twSMeydRysUd3Lqf2gMqEgKNjgX2mRBEEGCKiXcrLm+0OKqMjwn4xYyKrL80P7MHfS CJM/22Oe6VkPSo2maorrwvSSXIsI9ZK77ylcmqRgFfhu8XI64jqKa6tcGdBhxlRKsXhywRw GCere+19zcITPMIsLJuhQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:gHvqS0MJtWk=;xYyimcpvjFI+5keTpMX50YmnS0a vRn/imuk4PUnKFcOIcoZ0McjtXn8Zjyd8kGvKOGyMkKfUBqmDeCbUhbNbdAQM9h+3e+1753zs bZfq91c0qeZ+JfODfKmLtFafY5Ss7VHxQ3xtxbFMGVRhBAemNvKGF58fAuX1Zz8NjLNrkpOt4 XDUOphwsaKbDUwQ6xtLye53qLRc5EHYlE9FsRnrGZY4TdjcrDYaiIK/Fojl12vQ9SVNo9UVYG zVaskswE+nWJCwbSr3D8fmx0XEHNOjtO7gceT3hB+k1e2hKny42PO+NfI5Q/bfaRM6IrCQSOY 0ghpQ1KI0iIrWAd1nxRUSIZV7+QJnFI84aviFM5bWl1SqagO5ZJUZGXlNbfM7VSh27O7JtAzy pG4Kye691RN6BCv0HoCHX5WEEuP/afOJ8yDm0DkRVfpkm3vTAc8Vb1JZOOWXRvXctls+1by2p b1QkGGGbUfORPHtVUdM++D04HQrGdFsD6yo7ESjq2Ueuuoxs8kY9CAUjo0/fTgRSC+tEdB7re AGR+Myl/n+tkmIhdtc1tusEXTHjX1CTRoqcBcw6vJJWYKloQbpvffo5I2Sid8mJXAXsj8+nLm erUg6fqkqyihB6ens9lDaSdSffqyEcxxzM3RWQnSrnrpAXSFTc/bqH/MZmS5irNm5oRpekabC 2QDyJVwAOUYhT6gwoSrpn7tQcp/MKmhPBQDnEuGCQywLX5ZIaAi8H6wlmy6IKJWyin2A9mIev tnlfXmVSgDHOPRa81cSP+T3LwllEajcEd8t3nyAXOSiCrbVfbX3ZPzzhL0ROJsMqGkhirUmSp pKo86QlNEGw44xuV9p4ATvr8KAGE/WChHE8jYN2nxBvvAaPx3qhfo/OSvg7LSu5kNjyIgw0iJ 4LZ5KzVRcCk9fg4tYJl3jknsO+Jfuj6J/2E7TZn8pGggwmmALDvGqPrYI404XlQkq+VMkQj4t oRQRVmndBjmDSBcw+ciZeQlZlb+bNFqMfaOAVQ/p9vmGQgPbN8SuEWJ0O2mlNRvzUpLS78a/m bjq3fOOl1W6xBCU8rA2SA1wGEa1hZ0Uc5LjyjhFfMVU7Uc2cx+9cgdFbu4rKSC8mjroVzGcnx 7+z4Lms+BlA6tdagtC5GEXT3G9n0s8zxAUdAs28ez6yBb9Q5kEOc+qoFezdWktVcqnws87obC /nDlxat+ZlwAoy5h2XiL5WUpaqZnJCrBo3ZYImy1sZXDANziGs0On5G4U/undSws7DhgOWqHy IeoSftF4QtwWYWVrN9fqyJvrDzyp7Bi16ahC1ivGRJoIzw0EEasQRRmH7YXOdbA9qaRIiEXdU u2zmcqxlsnpOUVrND+WyxqzW7YWY2YVoVSPmFjlO13ozgXvPrHaIgXsqOPaTsoBKIdxMC/lI0 27INI+NvPJ54rIz9lgDitiiqlgWUPDgv5QK6EL2eEHmX8CQKYUdmQUClfPtAJ7ZtbU1X9Unr3 mbJfX+zclVK5l2dhF/DDltzMW2Bzs9z92wa+fDj6FWRhKWuS3 After performing some tests with a custom SSDT table available at https://github.com/Wer-Wolf/acpi-wmi-ssdt i found out that Windows also enables data block collection even when the data block is being set. Emulate this behaviour to avoid confusing the ACPI firmware. The bus-based API already implements this behaviour, so only the legacy GUID-based API needs to be changed. Signed-off-by: Armin Wolf --- Documentation/wmi/acpi-interface.rst | 3 +++ drivers/platform/x86/wmi.c | 6 ++++++ 2 files changed, 9 insertions(+) -- 2.39.5 diff --git a/Documentation/wmi/acpi-interface.rst b/Documentation/wmi/acpi-interface.rst index 06fb7fcf4413..f1b28835d23c 100644 --- a/Documentation/wmi/acpi-interface.rst +++ b/Documentation/wmi/acpi-interface.rst @@ -89,6 +89,9 @@ Similar to the ``WExx`` ACPI methods, except that it controls data collection instead of events and thus the last two characters of the ACPI method name are the method ID of the data block to enable/disable. +Those ACPI methods are also called before setting data blocks to match the +behaviour of the Windows driver. + _WED ACPI method ---------------- diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c index 97c4a161799e..db76c5bc6e12 100644 --- a/drivers/platform/x86/wmi.c +++ b/drivers/platform/x86/wmi.c @@ -461,8 +461,14 @@ acpi_status wmi_set_block(const char *guid_string, u8 instance, const struct acp if (IS_ERR(wdev)) return AE_ERROR; + if (wmi_device_enable(wdev, true) < 0) + dev_warn(&wdev->dev, "Failed to enable device\n"); + status = wmidev_block_set(wdev, instance, in); + if (wmi_device_enable(wdev, false) < 0) + dev_warn(&wdev->dev, "Failed to disable device\n"); + wmi_device_put(wdev); return status; From patchwork Sun Feb 16 19:32:51 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13976712 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 78B191442F4; Sun, 16 Feb 2025 19:33: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=1739734416; cv=none; b=l0ZIm2DwL/+aP+CSKABQ62w6pvdNnHbE5WxYdhwOmtpYVYc2nbaPar2+ZFybKbwWxDc63TA0xPPGYoSHFh2isVqYdYtRaVXMIZhpmvY4JMZnWeA0usAvQYc588wDpZq75xctMosUm08Bi9TyoUdQF/E0gJTNr8qJ/iwr7ak1+Z4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739734416; c=relaxed/simple; bh=ID+lTHjLVqPJ/7xdhI9bJLFn9teO4+JhdZK9zVjbwuc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=a2mj0F8Wy2b8WxQC5VZ5tojosZmjZcX4rW9fG13TDf7OKbTMrUrUL+ETdKk+OyfhLK30gV1w/hCrtJy1JtGHCV+s77eGlxiH5aY+hstIn+0BmbidAu6pRoB+oz2t6uEq48ICiHH8tETXWbbVs8VZ5o69yfOwxxOEOudlOLXqcsY= 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=YofqQONP; 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="YofqQONP" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1739734402; x=1740339202; i=w_armin@gmx.de; bh=RuoP/0xYYt9z3bJOrdWbm40zFLkGkpfWsyjNl2p49Lk=; 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=YofqQONPxkGF4mtz3bgvN9Z6scS4u6nIMlN84xIgZhvl7oFm/grcrAJAaT0Vh7Zp ElVzIsr8LYJDk7DW5hghn3QcnZghUH4mJfuBNgZg8LGxJAJ0uk9bpjZIP3xmFZ3AT AxxEgg426ujptIlghdvrsfbeV1O2q4y/IY+5SEz+ZTk33joGBwt4PwE1KifCN4s0J rcMD+JuNl0LuATfNqI59CVMaFPU8/0q1dPc3D6iHkGhjOmt+5ek2NZoJwCcDrhPJ9 yHS/jvtq+ZDP2OuctWX+o6IGTuciKWltBk0KJInAeKDT0VzRy6iOUvVCueTdAEBoK X8x+Mdxw9YsvV85l2A== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from mx-amd-b650.fritz.box ([87.177.78.219]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1M89L1-1tf3Z30C3f-00EZn7; Sun, 16 Feb 2025 20:33:22 +0100 From: Armin Wolf To: james@equiv.tech, markpearson@lenovo.com, jorge.lopez2@hp.com Cc: jdelvare@suse.com, linux@roeck-us.net, linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org, hdegoede@redhat.com, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, corbet@lwn.net, linux-doc@vger.kernel.org Subject: [PATCH v2 8/8] platform/x86: wmi: Update documentation regarding the GUID-based API Date: Sun, 16 Feb 2025 20:32:51 +0100 Message-Id: <20250216193251.866125-9-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250216193251.866125-1-W_Armin@gmx.de> References: <20250216193251.866125-1-W_Armin@gmx.de> Precedence: bulk X-Mailing-List: platform-driver-x86@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Provags-ID: V03:K1:unI5ci7/U0jgo6xrp2Iof2EdkjfoF+u7bew6UozWBxMoO0QG1zv Dz1J2CiXVy9iS4ngz4eN/f1rHLYCgOLZJJQg3jvzL2zgSnWhzwRQJYvGVsg9AbljWV5p7VR Vgd0veZj6PKMsrC0Vrr9LE98hZGhE4HugjH6bVKr1Nys+FghONDc4R6t6RyJ3yEM1Cgs6R/ EPEDxptMriX8ZmRlbSP8g== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:zAsFx4RIdlg=;5gtkmqYph3E3jIVY4WKohVAAftX 24bLG9z7I0K0O9d44CS17M65bLznB6lLCQclU4oINLun0YoqIxiKLE/zA5uod56STGWQQpdiP wZPmDxZVKd3KQ/oZdPXs+++wm+I+bAmM0yxUe4lIN/QXoXVP5n4Fy7OO8LjjTP554oWDf762K gYTbBVFNVv5onqQBnDESJvejKvzeQtzdEwlbb5PKN8eWG43ookylgKlj81rjLEBcqh/0jqawa VnOxz1vp1wMCLBp9ldUHpQEKRnhxIvALHVrKPtVWLfGOBWpjeVNCfsp5H3I/Oo2hQLqYwDkp1 u872kRg5AyBfwBgvuqXEM3ze8aMXxYyUtYhFwsTOerFgcPuBvJABNFStoIroubAztzPG5iipH uuJKPj91QjouYgjjDXbMBRkY7V7hEJNFm8rnVmC/6OkqUrS3uDkzdWWgF8/en677aDtI8DnW7 oi2r7rfDtF3y2gLIaMf3UJmZRyKqNxHJ9QUod01uLHbSAJd/i0kE400MnjjkX8bgxI/ly1N/r 6nc/pjpnW/cgb/DvjMYHPeCTc03ESCM3b+i9SjvkeGRxAKaaMrLQVnQGqr68ahbbnbNE7xgq9 7qnCTdF/Ne9/cGv42XmGA6XUpbFeY3QF1lfZD+1enad9gJT2+9ODxRo5r0n4MirVthObbgRSr zBiAjsOXjqi+v8gukmvzHwT3zQyDoIn42bz93D3LvqB7HulKmyXpLiozhNXq8SeZ+lR0j9pfm cpz3GvhF/ktHTKfTRuTd+UFPG5a2T30YljsNy91dyZMzvzrHaDGLIOX8fZUk4JfG/21i58rE1 O9ab4kLcrQbCSGPX35v9hODDn6jXyI1HaJ3/g+UXYUOOqx+trilI5VoXoMmsrx37qscB6ewd0 JyP+zTo+3x3d0YNey3AEhoG9JVttwhHP935gIfRdbl9bCjqFak36Ye2W/iuMl9vzhJ0JEbOoE zGEOY5nsU+XS1cY9ial28hZzcR8MhUt8IzO2VidhPZ1RIhnmLs5G4M1WcYikPXuiERV41B6Kz MJaLYNkf/XszAO44x6sqyWRKE49uDMyxck1DDLwxYYjMfztcLNyJ86H3ZW+J4opZHAP7d/9G4 /UN8MlaY78d5xRCcxSw+PljjlGJlZKSneiehN0bKR+pnlXUsbjvDm8zqWL2lRS53V0Gh8+qLI +lJusQl8Fq9XkrLnQ1Jv6rAP6Bxo2lTyNwQkL5krcDs37vNTksjQWTGBSTlTFhwCBo1zAe7km JqQFekdZ+5lU9Ncjoykh0DqYku2SBBrCfPjgqmy/mNcECkY02+EKJCwkPoKFTOXoTxTsvkjTq 46Qj8LCrrbLgcY6EpET3Ch5qe82AfkMPWks7/6Z322flJroiE5bDqoP+EO2eVc40Lr1L//Gms +QQz5mi3mdX60beRbtI+e/IRkzP1PMFbzy73fHUFZ7erekAgAmdO06hwL5 Warn WMI driver developers to not use GUID-based and non-GUID-based functions for querying WMI data blocks and handling WMI events simultaneously on the same device, as this will corrupt the WMI device state and might thus lead to erratic behaviour. Signed-off-by: Armin Wolf --- Documentation/wmi/driver-development-guide.rst | 4 ++++ 1 file changed, 4 insertions(+) -- 2.39.5 diff --git a/Documentation/wmi/driver-development-guide.rst b/Documentation/wmi/driver-development-guide.rst index f7e1089a0559..99ef21fc1c1e 100644 --- a/Documentation/wmi/driver-development-guide.rst +++ b/Documentation/wmi/driver-development-guide.rst @@ -96,6 +96,10 @@ on a given machine. Because of this, WMI drivers should use the state container design pattern as described in Documentation/driver-api/driver-model/design-patterns.rst. +.. warning:: Using both GUID-based and non-GUID-based functions for querying WMI data blocks and + handling WMI events simultaneously on the same device is guaranteed to corrupt the + WMI device state and might lead to erratic behaviour. + WMI method drivers ------------------