From patchwork Mon Dec 18 19:55:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13497539 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 6E3E072047; Mon, 18 Dec 2023 19:55:43 +0000 (UTC) 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="iNRPOsmh" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1702929336; x=1703534136; i=w_armin@gmx.de; bh=wmxJqeTy+krnPbLSF9jAqQ4wf8RAiD4RO8JEKBF3GIA=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To: References; b=iNRPOsmh3J8BtjQRO2c252AFsWhTLmK0WDPXDHCqvt3eANCNERGs7VY9HltO/z0c C6+9SEBc4inM2In8cE4sQlcZxmZNAzZZgM++8D24Jw2lY74cmGi2GGK5UPUiflW7v 9F7NHeY6w/T30u4QITQ8YqaNknhMyEZNxNEirVGKrxYwkLpkHhs1VMxEvO+6+M8B/ qHtwKXGLUFbe02CcZ5p8hhibXm4X1YGYo75pyFP8d9AUQZ3UDL6MwO3csCX7QxSLo js3f4h3MwlwmChaDKMOn7T4rtSxWFwQ0zbiast5AMvw/3gyIFGlRynOpBBiJ5BHeA qnIbb5ipcpKbpBregA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from mx-amd-b650.users.agdsn.de ([141.30.226.129]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MqJqN-1qtz6x1sah-00nRLD; Mon, 18 Dec 2023 20:55:36 +0100 From: Armin Wolf To: hdegoede@redhat.com, ilpo.jarvinen@linux.intel.com Cc: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 1/6] platform/x86: wmi: Remove unused variable in address space handler Date: Mon, 18 Dec 2023 20:55:26 +0100 Message-Id: <20231218195531.311179-2-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231218195531.311179-1-W_Armin@gmx.de> References: <20231218195531.311179-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:ZO3U5lnlbvYxWiXNhEPqtIOjdgx1aqSDxx9NyU/Sbu5lAT8a3po 4Mgzwtqvh7tJnxwZ50a6rt75tu3j2/FY4LxPh3Bnpp5ONpz1Fd8uWHAiCB7amYpZ8dkCsdb 7FXGIL/303+tOJtHHCRoTCKMPGLbSNEJ0L7OdOA4IIfhi2cqzZv7QCWhSDlACPxylfqKOlU QNWBHmIW9ivDlBtBb1SPw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:3nf4PywuDDA=;4aONr/iPKEDv53uMqpDBS2wqTJ/ XHTH5zR4SxW6YyA7AN4KY8uFFQ2k/R9RdXrmuPa0IPNBxq4ezE4yDYwA3ARXQAcnFuJUMkrlg PI+evrPJZXJ1EFKhw0dhAJv3JozUMpXmBTpX/6f+zNtzS7oQ3qMw8xu8m3NQO49mCATCj5419 FwUR3evpvUODhw6w8zRo5QSQWe4EmyduVAtJQTxW3S6IEiUAjwLjo9sorHbgaygsY9ZTIFINv WMHihLG/frJLUPaGncnFBlkaEWW6meH4pF3NMOke1kcdH7Y1ROATnJJbDgVeOe4cDQk2AHPQN i/xMxkCKDDaF0pALh7oGkq4rnkoek7+2S7bvrUDRVS6kXuLgIEwGJlYPVj8fSlC36/0fw1HMV yc3w/ePkKULLhGiDmI8NORWf0CKqpvIf3ILH8xVqWufevkhJLViEqhkdNMLDfu4b/q07jkpyF ZAJSIZQ+sBPUNT3DDKrPxP3l6FPvRKfkb72Jo+jHbpRUYxTLxtooP+n5L9ze2ybaChN3UVKKl w6Vj22Nd0uZyRg0hLSmTxfT2khnN+aCRgjCibq5wDLf8ri7oMj+Alr27pmEe10MoiMRmMHuNB VScNYn+k/QwrOXnpx9pVzB7Zo6sYDXqjg4da3KRxE4YRjF7BBQdLwot2ovecsL8US49GIiWP/ QAumlG4zLx6SbLGYD26wJXLMoHjuoaaNFfBRdUAp6xtg4sRqCwZOkDCSKMFMYu8b7dsMSVwxA PTklAZEYiEtgd2Qi07lEDrTVOcgz8PZ+FlwTtH2jE0r/BNV6l5BW6kboZHLkDWZtzxF1UjWY0 K9/pTA5lMe+Xk0m6G6bKMq8jHAL4rvttEo5z6pVl9N5KRaGBAfFsPLRnD9IXXF3Z5FWKykLus ZTjdY6f8TURmfHHk2UKicX1c5F3WH98GC9tvUfsOtsLXGmr7EkAJ/PyGJusofYMSnnnDTgQAc 3OmNQPS/rYC8dukiIN44wsrv+f8= The variable "i" is always zero and only used in shift operations. Remove it to make the code more readable. Reviewed-by: Ilpo Järvinen Reviewed-by: Hans de Goede Signed-off-by: Armin Wolf --- drivers/platform/x86/wmi.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) -- 2.39.2 diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c index 7303702290e5..906d3a2831ae 100644 --- a/drivers/platform/x86/wmi.c +++ b/drivers/platform/x86/wmi.c @@ -1144,7 +1144,7 @@ acpi_wmi_ec_space_handler(u32 function, acpi_physical_address address, u32 bits, u64 *value, void *handler_context, void *region_context) { - int result = 0, i = 0; + int result = 0; u8 temp = 0; if ((address > 0xFF) || !value) @@ -1158,9 +1158,9 @@ acpi_wmi_ec_space_handler(u32 function, acpi_physical_address address, if (function == ACPI_READ) { result = ec_read(address, &temp); - (*value) |= ((u64)temp) << i; + *value = temp; } else { - temp = 0xff & ((*value) >> i); + temp = 0xff & *value; result = ec_write(address, temp); } From patchwork Mon Dec 18 19:55:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13497540 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 B80497204B; Mon, 18 Dec 2023 19:55:44 +0000 (UTC) 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="kr1BfU1e" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1702929337; x=1703534137; i=w_armin@gmx.de; bh=Gv/3KB2nhnzbj6OabYsWChzNP4Kil+PLOJoDKQOnE44=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To: References; b=kr1BfU1e5QwdCrsIKQxt8ifB3LOarI+FVBbBBe60A3gFSTyySAiRByyuxZhqbG2F RN2FZxijKl/sU3V/w/18GRVqixNBY17cIIp2nycB0ylnVjytxnEFCvX2cznC84Zv1 rluf29wmd4VmrPlVq2i++2kmKyeLEYXix5chfuAiMx8rMHzq15t6bbIJL1RDj3CIg UcV5VutLycAwAPJxcYeabEsXSDjVmNpgB2707R8CDO63KZYb2/ktVBvv+7Kz/rFqU W0hrtt4B5pEikbc9vjj2priHjlLJGJxJquT6BU50BW+lPfvsKikQXnBZfyVfzrYOm LFDCWPao+QxccfU2Hg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from mx-amd-b650.users.agdsn.de ([141.30.226.129]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MMobU-1rY5aH32M0-00Im6V; Mon, 18 Dec 2023 20:55:37 +0100 From: Armin Wolf To: hdegoede@redhat.com, ilpo.jarvinen@linux.intel.com Cc: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 2/6] platform/x86: wmi: Remove ACPI handlers after WMI devices Date: Mon, 18 Dec 2023 20:55:27 +0100 Message-Id: <20231218195531.311179-3-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231218195531.311179-1-W_Armin@gmx.de> References: <20231218195531.311179-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:aeKtvZ4V2lj3I0tEnb7InzU3Z34FsD8fgWF57Z0yT3t+dlDqYsZ z51xStBTs32mG+RI2X3a7x8x3LJ9++1C6gC7ooqQJjlbQ58wwBXYTIvtdaq1TvtMy9LGv5J IcI/AEW80KBp3FdK/dtXRHsllM0iBVWXoYg6+LiUvpF/MLIVZhHZjGjZuNs3MfCkmxS8qz+ MLnroa3MlIqRYVEPLQYrA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:vbZRc5hIZb4=;AmxXZ3DRZnAeljagOPAQiu3ggDY TAZu9Js+Zo/F5sr5dqfzGCHBGQ1tFYDjDuW79RJj0UTnRgWCU1TTzmWfhjjzG4e+Yiegq9gCi oe6adJWB/Nen+LRNKpAi7C53raB3Il+cPba3Wc4tlhmo7zPrVerr5SzItOL09ObJ4xgFLgXGp VC0GFea5WX5Tl3nC4bY/f7LeFBI1v80PWsIfjiSJRpvS8GZZiY2DEkjvouDfRPGYjyKLQR6do +DQrwi1qeoXuKO6hSGjKTF7g6hTwBeep9rYZzHml4TkTx6H6vnZuPqUUg9tIUU8bJg6pRk05k nqO6QLP/l6NwMmjaE8yVJuvjZuqnD7A/oBM+ShmbJfd0BJAKtn08h/fTAZy1S4IHVEt65TBgI vWVIdzzbY437qjQknVrnnVAp62g62rcuK0ePVA2nB/L/2wFuAAroLluK503QjayMVWDjrzziG 3qA/4GOCktXpYfV8mX+onFePr0iQsVkCLzWepQws+gxvQ6ViwOjrwklPwIzoKO0i9AsR1SiLp GfAdv+45KnA9gc+0jWaBWAQyM9ovIhno/FIwwzaWdalTkHhVE5HReMXAnI0DXHz239DBmGoO/ XO+BlfR73ySHpk4D17JKjNccoJhIp5a8syO8VjlsO1YWbQyxEh2WtTrITy+GLY5ygUMo29kCZ Wd9s+pk1cJ3tfQ2kTV1l1mQOogHND7KB2gJP5qh4ge9ZPcqELBAbocH4RSALgxbCcKeQYRU2U 8U0KyDMmE7RfUjNVAcCh1Cf0jwZgTiK6ymnAbjoarLGAoCtusP0bvrrvFM+WHwcneLGDVxDVF hCZX8t31mwtGG5OqxnMnIcWq1u8d+Nqy7DvfSK6N4fKiYOoBbciIC/fIPZg1sdCt7fCzV//Q8 mBzl442sSnYvu9n+h9DxaMHL+k8azgGy2fj6mvYe+gTsQb7zEZZs7tHnMegVWHGvZD8UKMDCC fa0T8CS+d59bKpDzsxZTJ/2W1fw= When removing the ACPI notify/address space handlers, the WMI devices are still active and might still depend on ACPI EC access or WMI events. Fix this by removing the ACPI handlers after all WMI devices associated with an ACPI device have been removed. Reviewed-by: Hans de Goede Signed-off-by: Armin Wolf --- drivers/platform/x86/wmi.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) -- 2.39.2 diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c index 906d3a2831ae..2120c13e1676 100644 --- a/drivers/platform/x86/wmi.c +++ b/drivers/platform/x86/wmi.c @@ -1239,13 +1239,12 @@ static void acpi_wmi_remove(struct platform_device *device) struct acpi_device *acpi_device = ACPI_COMPANION(&device->dev); struct device *wmi_bus_device = dev_get_drvdata(&device->dev); - acpi_remove_notify_handler(acpi_device->handle, ACPI_ALL_NOTIFY, - acpi_wmi_notify_handler); - acpi_remove_address_space_handler(acpi_device->handle, - ACPI_ADR_SPACE_EC, &acpi_wmi_ec_space_handler); - device_for_each_child_reverse(wmi_bus_device, NULL, wmi_remove_device); device_unregister(wmi_bus_device); + + acpi_remove_notify_handler(acpi_device->handle, ACPI_ALL_NOTIFY, acpi_wmi_notify_handler); + acpi_remove_address_space_handler(acpi_device->handle, ACPI_ADR_SPACE_EC, + &acpi_wmi_ec_space_handler); } static int acpi_wmi_probe(struct platform_device *device) From patchwork Mon Dec 18 19:55:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13497541 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 9D3827207B; Mon, 18 Dec 2023 19:55:46 +0000 (UTC) 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="GbXw383v" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1702929340; x=1703534140; i=w_armin@gmx.de; bh=lZGk8ts+L3vDhJqdfupckAWAlO/09kRoQ2kBWorNNa8=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To: References; b=GbXw383v+gfWWJcmKqB+o2nVUNURvUMhA5LlA4vL/+0J2QnlUld4S2HKWBW1zbup BTmDyhXBGoUhL9vQ/aQ1pTZvZptyfnPCex2nfN7Gwvpupw7zDK+A2617xi+mC2wQ6 02Nnq+8tZHU9WPuG5gZBuhQI8alI/iYlgKyaSoZzrSiig1UcGgYkroN1Jpcv3iXA4 TO7SFzxPgnoC4OGBF4H84sCA9GnmHx7yW9dV9xcOcT0OprCBDbBltZS0IELOYKm0b rsU9Om9eqARp1FfIbm8+XVhNKo98TiMYDtkVEfQ5JmljpCdeH10k5pD8c95Ra6Bpx qdWvwkJwSwWuum8zFw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from mx-amd-b650.users.agdsn.de ([141.30.226.129]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MBUm7-1rSDTA3d2l-00CxHT; Mon, 18 Dec 2023 20:55:39 +0100 From: Armin Wolf To: hdegoede@redhat.com, ilpo.jarvinen@linux.intel.com Cc: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 3/6] platform/x86: wmi: Use devres for resource handling Date: Mon, 18 Dec 2023 20:55:28 +0100 Message-Id: <20231218195531.311179-4-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231218195531.311179-1-W_Armin@gmx.de> References: <20231218195531.311179-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:8gzBHyBAQmRhJ+RI77889ysmATwtQjlPNOz6eVC9CVGHRdyZylP CHows3iCQX+oltbvnvJXUzSV0SjgCjnoO6HudoEuk38etAin6qGNyc+smi1P+oHAP1qGFL0 4SZZrYteyIVWbf5wusS+mqAGloxCMkDdSKuA0S1JZUs768D3lfHr7cq4aGghX+nhcBnnbR2 EK8nUFtCRaekIIIeeuAsg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:iEtNoDAEJOQ=;OMXNhHulCy0nx/c28axhZYl96YS 1YzQEU0CtXRBlV4P/yI7hUB1evOdC3CoKwcSbz4Qtjhu/hydkQ8JBr6F3ERrWW44qhUp+Yw2V vE4+UF0pVOtvMMjPcJ53ola28Kz0529B3+ypaUGWUAHHOv83YR7yUL4F23Vv2qh8+gbjq9hFT BkMSaeMTvVfrz5McXQoPtFmlq4M6FY8FsVUaHvZw+j5hCYdwAjTK8SslzRiLijQR2zxrKvVDU rVkD1LVgwt04ut+B/Hgc9UiQy2LlbuV0Px71sykeVoSCQuU7tOVdaSQ7zjlK3p+MlL3ICu66J ey+FIW9j9HZPzYIMUploZUu1aW82ytAoLgKzhdC0CKip+bXs8p6OyV+1AExW87YiPoULzzQKo oqVX7OLvS/qhkSVnthwgHVGZWan/i4/4NYhyrxPQOrNuyNwMP03ly+CjN3TbyDmve7p4SAZVU yo4BB8dpxxJUMzAEB+KaOrqgySrXnl9GogRQKkSc9O6wa52MyHWbn8i+Cfa8JKj0slzAEKYpu ucO6bV/EJwu59rj2ozLl3rLNG1UKzzsLsFWmLtMhQl8Y+fyxgnXo50Tg9hZ3GKHf4qgIsTBrP 3qDJVp/4TaEdbJkZqYX+xs2Z0AfsoDugZYUOKXl0RjP0biXguH3FNoQPwI3aPBSCcmWl+Vw5+ QYSufJpaFd5eLDF3WQkqajW/DAoHSv3hqnn/v4HtZFr87l4jN23N8Yyx3nxT1HaKB1jo34lfx q2z3efvJ049z0jGehwlbkd3/rUXO2kqQin0SXWzGGjtyaP5OJi4x9JixoDu5kJDqPhzrmErUv TwDLTxw8N+C8cRsHNLQTSpsLBRYWcfpeYELimHdCGuPPfbtoZqL90n4XolxY2klip3QA6i74P DiXcAKt4Tzg/gX9gb5Tk0Uta50O+OMR50Huxl+IP5XegqoJkiP3+B1TO0z8nOhTeVqSQMM9// HDAB0hlDvoZzD4uvqwmFWLo9Uy0= Use devres for cleaning up the ACPI handlers and the WMI bus device to simplify the error handling. Reviewed-by: Hans de Goede Signed-off-by: Armin Wolf --- drivers/platform/x86/wmi.c | 58 +++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 23 deletions(-) -- 2.39.2 diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c index 2120c13e1676..4bc5da70c1b0 100644 --- a/drivers/platform/x86/wmi.c +++ b/drivers/platform/x86/wmi.c @@ -1236,17 +1236,33 @@ static int wmi_remove_device(struct device *dev, void *data) static void acpi_wmi_remove(struct platform_device *device) { - struct acpi_device *acpi_device = ACPI_COMPANION(&device->dev); struct device *wmi_bus_device = dev_get_drvdata(&device->dev); device_for_each_child_reverse(wmi_bus_device, NULL, wmi_remove_device); - device_unregister(wmi_bus_device); +} + +static void acpi_wmi_remove_notify_handler(void *data) +{ + struct acpi_device *acpi_device = data; acpi_remove_notify_handler(acpi_device->handle, ACPI_ALL_NOTIFY, acpi_wmi_notify_handler); +} + +static void acpi_wmi_remove_address_space_handler(void *data) +{ + struct acpi_device *acpi_device = data; + acpi_remove_address_space_handler(acpi_device->handle, ACPI_ADR_SPACE_EC, &acpi_wmi_ec_space_handler); } +static void acpi_wmi_remove_bus_device(void *data) +{ + struct device *wmi_bus_dev = data; + + device_unregister(wmi_bus_dev); +} + static int acpi_wmi_probe(struct platform_device *device) { struct acpi_device *acpi_device; @@ -1268,6 +1284,10 @@ static int acpi_wmi_probe(struct platform_device *device) dev_err(&device->dev, "Error installing EC region handler\n"); return -ENODEV; } + error = devm_add_action_or_reset(&device->dev, acpi_wmi_remove_address_space_handler, + acpi_device); + if (error < 0) + return error; status = acpi_install_notify_handler(acpi_device->handle, ACPI_ALL_NOTIFY, @@ -1275,39 +1295,31 @@ static int acpi_wmi_probe(struct platform_device *device) NULL); if (ACPI_FAILURE(status)) { dev_err(&device->dev, "Error installing notify handler\n"); - error = -ENODEV; - goto err_remove_ec_handler; + return -ENODEV; } + error = devm_add_action_or_reset(&device->dev, acpi_wmi_remove_notify_handler, + acpi_device); + if (error < 0) + return error; wmi_bus_dev = device_create(&wmi_bus_class, &device->dev, MKDEV(0, 0), NULL, "wmi_bus-%s", dev_name(&device->dev)); - if (IS_ERR(wmi_bus_dev)) { - error = PTR_ERR(wmi_bus_dev); - goto err_remove_notify_handler; - } + if (IS_ERR(wmi_bus_dev)) + return PTR_ERR(wmi_bus_dev); + + error = devm_add_action_or_reset(&device->dev, acpi_wmi_remove_bus_device, wmi_bus_dev); + if (error < 0) + return error; + dev_set_drvdata(&device->dev, wmi_bus_dev); error = parse_wdg(wmi_bus_dev, device); if (error) { pr_err("Failed to parse WDG method\n"); - goto err_remove_busdev; + return error; } return 0; - -err_remove_busdev: - device_unregister(wmi_bus_dev); - -err_remove_notify_handler: - acpi_remove_notify_handler(acpi_device->handle, ACPI_ALL_NOTIFY, - acpi_wmi_notify_handler); - -err_remove_ec_handler: - acpi_remove_address_space_handler(acpi_device->handle, - ACPI_ADR_SPACE_EC, - &acpi_wmi_ec_space_handler); - - return error; } int __must_check __wmi_driver_register(struct wmi_driver *driver, From patchwork Mon Dec 18 19:55:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13497542 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 828D273477; Mon, 18 Dec 2023 19:55:47 +0000 (UTC) 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="GUUNUgNB" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1702929341; x=1703534141; i=w_armin@gmx.de; bh=yBaISgjLgSkrk947Vjw+ExCxzpblr64RVT6udQOT+ys=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To: References; b=GUUNUgNBZQyRX9s0ru/T9lvrpz0GgONRLBc1F10PsQky5vDog40lDIcvBXkXIBHu 0o4kpwQanyg5yQpsOKwo6XdUG4GsSeN/qWyDYfcyuxr0Q/nMEPO679t8/gaIXbFZf XBCloq91WUeP10U/E9wNXFFe8/pNqHTrxGPwu8/PscWVolNeB99YMsE0zTITt1rqY fbSpd/oc0RTtFElspRfhdmVr91LJwL644T24rXtkn4Rj5BsbsdYu69uMqVrHVTujs FNnY+FyEUvG4YmxIv7VHQbbm6OAc5bzJMc8jdLeqFaqqNzuM/7ULs6LOOkcSW1ulj +7kC43zKBISzSF2fMA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from mx-amd-b650.users.agdsn.de ([141.30.226.129]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N79yG-1rE8xN0mY0-017W3H; Mon, 18 Dec 2023 20:55:41 +0100 From: Armin Wolf To: hdegoede@redhat.com, ilpo.jarvinen@linux.intel.com Cc: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 4/6] platform/x86: wmi: Create WMI bus device first Date: Mon, 18 Dec 2023 20:55:29 +0100 Message-Id: <20231218195531.311179-5-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231218195531.311179-1-W_Armin@gmx.de> References: <20231218195531.311179-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:cpLPpmkqL1pTP3W9ifc7hlAXoPsmtbOyiZPB94n16UHvQY8wmvW c3kJ4nkZow3x6FUEpvItt8eHzSltA9kud8H8NF+tOoa2qouAMLKovQbDopP0lSza1CLjfNF kyT7Z0nUIOcQTCoFOmJc/eeebyF+Wg+1cGmZcH0v05HqG4NSvTbrozkMOFJESOEkFzEEt1s qRwDG+s95yyrhj0lac3VQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:j1oDhK+hKtw=;SBIKcjvr6Kj2CcbuoUCV/5paOc0 4U7sPlU/EiH77hznYkNBssPlLfibkBbWZpi/nGBeQoEPsAvxM3wBoNQhQo6PMhwTMNi736NHW dEG4E1U8dPAuOcJDHY0YvfcB6dwgBLUQtFotpKe0ufMQhSFMnQUB3J1/NJOsy+Klfhp8IKyfL jlrxnZ8na6OzhfWyztdz6aPYm08HalPtWNO/lXZpI/Oo5K42PLQZVgFGTrb33t6W+Rig2NJz3 yDyrbbhcTQlwRHXPZwtpd5Mg/OQdaNthtuMIo97fiSZaA5k8rnFD5xV4aC6Gvt5krKSwQUs9x j2E8lEaYVLYHTJtq+0OTw45BrdVYNHG+tAB8q3WEVl/qx4gFQDnM/w+5HdW/S/e26412L9K1s 9atTH2H22T8gWtAvd3T5sVwFmngQeCsNGrIk1ZGpmyWfvTAzDtnz2/XnCrGGp5Mew4GRsTWfY iBjdLxB05ZpA30O4+PRWwLrphj1nBSPqjT1N9cl7wnu92QrvNyKlOjTlwzrQDFahb3u2ckpqz TMRtUYr0wPTVTlRajS0uZqj2yEYAMstKLBl1T2+7bv20rxWFeL7LlZ2Aya9nFn/9OodawLAPJ 5HU46nMtdYi2ciCPapP2a9ux2c9ORxNMY8ELlo4tYvcWLX3kKDYmVH+7PpsAwQh1r/DzHUqls 2KNnh0FsZFqpLfyVHziaeDHYdIzpvAVg5jBtIT00u/V4c+M6yK1aqmgcLkKFR4cHK4CDQbBD6 hbqp2EANjCaNxt2aq7z57oTgZLQlcVihopbIeV+Uqn/NpDSb4AMEsZ701gh7hBTeG8fznlWe+ mkPkAmPRYQHExMNWcJJ+aaVkg/oyOBeodmWmEk6HbLfp+c2oif82OlLowMllh1guS4g9bEcma S/AHtS56mSi+AERYDgnPz96LLCVQrPDLPPvrDra/wN71Y8Y4ntGyEFvBVUbxnFGSdTtRVQMix iIvWzHdv2CjGsc/hKszN727DKnk= Create the WMI bus device first so that it can be used by the ACPI handlers. Reviewed-by: Hans de Goede Signed-off-by: Armin Wolf --- drivers/platform/x86/wmi.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) -- 2.39.2 diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c index 4bc5da70c1b0..e2bfdc61c4ce 100644 --- a/drivers/platform/x86/wmi.c +++ b/drivers/platform/x86/wmi.c @@ -1276,6 +1276,17 @@ static int acpi_wmi_probe(struct platform_device *device) return -ENODEV; } + wmi_bus_dev = device_create(&wmi_bus_class, &device->dev, MKDEV(0, 0), NULL, "wmi_bus-%s", + dev_name(&device->dev)); + if (IS_ERR(wmi_bus_dev)) + return PTR_ERR(wmi_bus_dev); + + error = devm_add_action_or_reset(&device->dev, acpi_wmi_remove_bus_device, wmi_bus_dev); + if (error < 0) + return error; + + dev_set_drvdata(&device->dev, wmi_bus_dev); + status = acpi_install_address_space_handler(acpi_device->handle, ACPI_ADR_SPACE_EC, &acpi_wmi_ec_space_handler, @@ -1302,17 +1313,6 @@ static int acpi_wmi_probe(struct platform_device *device) if (error < 0) return error; - wmi_bus_dev = device_create(&wmi_bus_class, &device->dev, MKDEV(0, 0), - NULL, "wmi_bus-%s", dev_name(&device->dev)); - if (IS_ERR(wmi_bus_dev)) - return PTR_ERR(wmi_bus_dev); - - error = devm_add_action_or_reset(&device->dev, acpi_wmi_remove_bus_device, wmi_bus_dev); - if (error < 0) - return error; - - dev_set_drvdata(&device->dev, wmi_bus_dev); - error = parse_wdg(wmi_bus_dev, device); if (error) { pr_err("Failed to parse WDG method\n"); From patchwork Mon Dec 18 19:55:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13497544 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 7E5827348C; Mon, 18 Dec 2023 19:55:48 +0000 (UTC) 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="GBpWaHJ+" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1702929342; x=1703534142; i=w_armin@gmx.de; bh=vd+n3ykeVoDXsg6HoG9Wxn2uSy55W8TbILg2TIyowI0=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To: References; b=GBpWaHJ+bH5EaIkMJV0ZUU/NADA8IaXiCKIZM7TyssG0Hi220AiK757e0C6EaR6K vgpP4HFYOREhSGXAtM+Ir/8xKL4csXVuoAbHrqcNOAn+b/ep13PyhG993Bd4YcmdY mkh8s1LWQVXR+1e5+9Way8hebsWfPngAhjyFEUWaUfArCYIvGvt0em2vsKTEuPBZk 5D3Az1oC0zkYt0wy6RYjWHEY5J31MGIaCnvMxjkXiN2cdY/N2uvcaNdhD/Co/SdgH 5jTvltWTD30nbjWYVxUbrHWLN+wRyYGvnMaZLnfBpN9roOkYxbmaZ4uDpt7YfEx5+ 6nckeaZt0ojOsqckoA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from mx-amd-b650.users.agdsn.de ([141.30.226.129]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MsHru-1r0PBs1vf0-00toXW; Mon, 18 Dec 2023 20:55:42 +0100 From: Armin Wolf To: hdegoede@redhat.com, ilpo.jarvinen@linux.intel.com Cc: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 5/6] platform/x86: wmi: Decouple ACPI notify handler from wmi_block_list Date: Mon, 18 Dec 2023 20:55:30 +0100 Message-Id: <20231218195531.311179-6-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231218195531.311179-1-W_Armin@gmx.de> References: <20231218195531.311179-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:y7okMXky5VNG+iTpPst6EOYsDtodFCWhYyJabz/08NN0B4xOJ65 lTHMz42MEtRdxm/qqg5MQo3O0MTmwSztN0OvnJrDKy4QVQ7J9q56IMYOAjKQb2b4zmMqtG0 6VaHlziYN857J8mplne5pi43L1UMHCaYkC4DcNN39ZRCLKnBbp65+UoSPlTl0FlSxYGUos5 Yd/7wedmc4/7H5uUOJ25A== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:7lcsT6aLjgU=;YWnRXlfrHzr0DEmhBo88e4+Vhq5 VDx/rZHS83z8zmAOkBDM6Sts+lGILyZVOmnobRjv+tacJ8aAk5/Ic6osqV4N7MJ/N3HQenUxY e/rPfjZsb8hnF0PHOOZT5BFTMaUsvDR6KNDMSUuJI7UCPc0vUO3yGTgckB5+5Vmb/9QCfJmyH pznXPyn9e5nnWtfoFKtKNLax7V4QTdr3FDLN0rZzQbEFHsRJl5IwQB3n9Urk9jTA+CYhL1aoN zk6XWewzXUm/uPsAugCu5s6I6EdrEF9Zs6WdBTGMatQAuUkzq75VYtXQbM8r/glYZWT2qXV23 dav7jeihK71FD8XkydjhF6wRQCZ6VGVPedBSuy2XhCZZzts/DaA3nU20G/GB9aPHHM6rNjlT6 eVjWKdbxZ/5K/9fKDKuqXlOjR27RmXWCA9Wd4vSC8acleZ7g3UxmvP7T5WDOwMWcW1GF0uGtC KYX1/9pY8OnHS5JnBiBnP1ZS7OGc2QOGNWiwY5UtBa5VKQg+z1Bxl2SPk+SY1M1+gXTasdMWb SOeXGUZ7Amo5w3UvNZHb4Oq57KknwVeooR5/WbqBwXYx74AwPeWg/0T9qVfr9iC2sR73dJA1y vDikphC2GZBcaS8aCYjOMF0tN5gqbYmb2v29MMDLDxOkqwvo9wy2ANbRl3oucGBO8OGCfgH6k fWyCcI4vvMW4g00J5OhWW8ajBHN5vo+hN/XBATHxQ+DWCgnd+BW1nGuPEnXBrQu77STTyQzf0 +dlGtBmABJsz2oKjUhy1PNnYX3/L835Ro7Rf3rgiXAxabqx+wM/tf079cOl+AbkA1Ygm+sh2i QoC6djbnLh8J1eECGaJVKJSEi7kKFkXM023P7Y7HKqtIVIWz9xN8XoimBPX1wZ9eTQR/66wul Eh0QKhSxpMoVBjY6f+twBd7anYlIzYr5fFW1PuApCMXRhXFXjr7hYUZ7trKaL8RNeitnbVMWS 7+x2q9ciifVNZ0OeCaMhHI5UJQg= Currently, the ACPI notify handler searches all WMI devices for a matching WMI event device. This is inefficient since only WMI devices associated with the notified ACPI device need to be searched. Use the WMI bus device and device_for_each_child() to search for a matching WMI event device instead. Reviewed-by: Hans de Goede Signed-off-by: Armin Wolf --- drivers/platform/x86/wmi.c | 46 +++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 26 deletions(-) -- 2.39.2 diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c index e2bfdc61c4ce..559a99ebc624 100644 --- a/drivers/platform/x86/wmi.c +++ b/drivers/platform/x86/wmi.c @@ -1176,24 +1176,13 @@ acpi_wmi_ec_space_handler(u32 function, acpi_physical_address address, } } -static void acpi_wmi_notify_handler(acpi_handle handle, u32 event, - void *context) +static int wmi_notify_device(struct device *dev, void *data) { - struct wmi_block *wblock = NULL, *iter; - - list_for_each_entry(iter, &wmi_block_list, list) { - struct guid_block *block = &iter->gblock; - - if (iter->acpi_device->handle == handle && - (block->flags & ACPI_WMI_EVENT) && - (block->notify_id == event)) { - wblock = iter; - break; - } - } + struct wmi_block *wblock = dev_to_wblock(dev); + u32 *event = data; - if (!wblock) - return; + if (!(wblock->gblock.flags & ACPI_WMI_EVENT && wblock->gblock.notify_id == *event)) + return 0; /* If a driver is bound, then notify the driver. */ if (test_bit(WMI_PROBED, &wblock->flags) && wblock->dev.dev.driver) { @@ -1205,7 +1194,7 @@ static void acpi_wmi_notify_handler(acpi_handle handle, u32 event, status = get_event_data(wblock, &evdata); if (ACPI_FAILURE(status)) { dev_warn(&wblock->dev.dev, "failed to get event data\n"); - return; + return -EIO; } } @@ -1215,13 +1204,20 @@ static void acpi_wmi_notify_handler(acpi_handle handle, u32 event, kfree(evdata.pointer); } else if (wblock->handler) { /* Legacy handler */ - wblock->handler(event, wblock->handler_data); + wblock->handler(*event, wblock->handler_data); } - acpi_bus_generate_netlink_event( - wblock->acpi_device->pnp.device_class, - dev_name(&wblock->dev.dev), - event, 0); + acpi_bus_generate_netlink_event(wblock->acpi_device->pnp.device_class, + dev_name(&wblock->dev.dev), *event, 0); + + return -EBUSY; +} + +static void acpi_wmi_notify_handler(acpi_handle handle, u32 event, void *context) +{ + struct device *wmi_bus_dev = context; + + device_for_each_child(wmi_bus_dev, &event, wmi_notify_device); } static int wmi_remove_device(struct device *dev, void *data) @@ -1300,10 +1296,8 @@ static int acpi_wmi_probe(struct platform_device *device) if (error < 0) return error; - status = acpi_install_notify_handler(acpi_device->handle, - ACPI_ALL_NOTIFY, - acpi_wmi_notify_handler, - NULL); + status = acpi_install_notify_handler(acpi_device->handle, ACPI_ALL_NOTIFY, + acpi_wmi_notify_handler, wmi_bus_dev); if (ACPI_FAILURE(status)) { dev_err(&device->dev, "Error installing notify handler\n"); return -ENODEV; From patchwork Mon Dec 18 19:55:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13497543 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 613BB740B4; Mon, 18 Dec 2023 19:55:49 +0000 (UTC) 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="jbBqZXc9" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1702929344; x=1703534144; i=w_armin@gmx.de; bh=8xcRS4toKnQj2X27ThuiST1cF613b/lRiEqma2uezJw=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To: References; b=jbBqZXc9Fm79pEyNs39kyQOUq7iV1cgb3v6jxexwGyeiTscBEi1bOcDP3UXeLJRS dY+tIHWI+ikGrZt+MmT/WjGZNC9ieOvvSmRKAbzllsQcA9ZeVEUG9NRUY1ASIxhGO V1I0Zd5yM0w4EcnEsPJgq3+qJkOoWbHa2FXPF8jwTYGD7nVt7Bsup6aiwOAynFIjW jJkEAe31nxDISQXV//XFTloO9of5DHVtTw+7FF+Ms1jrQsXOOmWPVI3RDlE0WM45n 6KuDmCzwONZPddEyvPPMis2hKnHD/DDUdeYeJjkricAU7gT2Ujo6whItjSPnW451B u3IrODDU70qziUyGpw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from mx-amd-b650.users.agdsn.de ([141.30.226.129]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MfHAH-1qnQcd12N9-00gtMg; Mon, 18 Dec 2023 20:55:44 +0100 From: Armin Wolf To: hdegoede@redhat.com, ilpo.jarvinen@linux.intel.com Cc: platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 6/6] platform/x86: wmi: Simplify get_subobj_info() Date: Mon, 18 Dec 2023 20:55:31 +0100 Message-Id: <20231218195531.311179-7-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231218195531.311179-1-W_Armin@gmx.de> References: <20231218195531.311179-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:y/Bdzz5LQ5l5DH6SFsP2N/veEnWbKrmkgn6CIDbxPduIi6hazLh UuiTS1T+DL5GydIrKi57aoR9hruokDMtH2VKiyVtJGZzIhfxul8fIbcSbt3EMbWRd/W8UVJ 5MpzSdJsCRvtaSwdi+VXG0dUbqfipewjIdfR1v9U3/U5z2u8zDn0FRWBXVh/taVRTq46L3E QgCvZlqMUvTE7Z5rLo1yg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:HbMWm1LXyxI=;ZMhIXv2exx6aSMr9mmjEsbuvd0Q oeY+A/3BgWhQ6uyTAvqYSlHnBXcouVqEz74re3YguoqtaP30RKceTuSVxoo3EPh+mROJ7XS7D /kV6OuTWMfnslAojWuQaZTg++/Pn/PmTeq1bbQhWpj22HhqxsYN/roSQQEyZpiwSqIVBb2gFz LOJbH3ow0FZ8LSOIiI+J6KGwmu1Ag5stc3Sw9iZdaHNvFZvJAzqAC8LTVMN0S8P9rJb597XQY S3z+p7vpsNxxYLEKgS1DCFDSn655zg230UAs6qaPX8vvp5mByUIV5B0b778QDSwqAtwRnTFaJ 5wROdlo3LnOHnJHDvVLIG2d27Yr+8zRrGcYzb9QB4zpbJWbE4pqvWa1TTF2Ld0FMKzw3fCvfs dPd8B8bnR6FTlkmnFRu3lBOjJE0IARP0KPB5v0aAUAoihtQ64WN9/FzpnVcShvWYQAB+eyFEM 6Px8X4Az84qDocwC/KUWGhkSMO7M9TusWS+3rsVl3B19ra0OamG35frpzD+NS00UJ+jSSLypJ L6R7VEGJJ/t+9BQsL2XNiIJGuX8rGhCiNLobV5d8zRoQPgVdzeGfjsr1ke1w7kV5PexQ/RPN4 nXwFtTw2VIsdt12UiyknyfWgir+jKKV6q3e6qBQxoK33XJnAqGKUkzKROxNgFUf43N7OGXCIh MURmClzMCbZjHjw4mqYoASC50OOJ67qnSnYE9foI20oyJm/5+eRXueVxC+eo4Wuav9jl/pCSy bEx7YH19Bx/2sZqdrOnpT+xFbmO3vjdgKVw92SJTN5E+B0wBz9WJ3yL4FoeOBSjUtpLl/2P0w IgVrfectfMbSkb3xaZw6/9QlZ2oXo0L9vZ0+uNuiL0pIIrAGj7uLVUHdWt99CoAM6cFkj7mBZ lZMM3ScpD8W6D/oY2/TSwDeGAhn1+gwqbY3xELOP8iabRJdyviJ4DaGmEOAk/m+esmc/CEknL O1pffGWm/FSARtS/pXhLyZyi6SM= All callers who call get_subobj_info() with **info being NULL should better use acpi_has_method() instead. Convert the only caller who does this to acpi_has_method() to drop the dummy info handling. Reviewed-by: Hans de Goede Signed-off-by: Armin Wolf --- drivers/platform/x86/wmi.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) -- 2.39.2 diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c index 559a99ebc624..a7cfcbf92432 100644 --- a/drivers/platform/x86/wmi.c +++ b/drivers/platform/x86/wmi.c @@ -132,23 +132,19 @@ static const void *find_guid_context(struct wmi_block *wblock, static int get_subobj_info(acpi_handle handle, const char *pathname, struct acpi_device_info **info) { - struct acpi_device_info *dummy_info, **info_ptr; acpi_handle subobj_handle; acpi_status status; - status = acpi_get_handle(handle, (char *)pathname, &subobj_handle); + status = acpi_get_handle(handle, pathname, &subobj_handle); if (status == AE_NOT_FOUND) return -ENOENT; - else if (ACPI_FAILURE(status)) - return -EIO; - info_ptr = info ? info : &dummy_info; - status = acpi_get_object_info(subobj_handle, info_ptr); if (ACPI_FAILURE(status)) return -EIO; - if (!info) - kfree(dummy_info); + status = acpi_get_object_info(subobj_handle, info); + if (ACPI_FAILURE(status)) + return -EIO; return 0; } @@ -998,9 +994,7 @@ static int wmi_create_device(struct device *wmi_bus_dev, kfree(info); get_acpi_method_name(wblock, 'S', method); - result = get_subobj_info(device->handle, method, NULL); - - if (result == 0) + if (acpi_has_method(device->handle, method)) wblock->dev.setable = true; out_init: