From patchwork Sat Dec 16 01:55:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13495315 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 1D8471363; Sat, 16 Dec 2023 01:56:21 +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="HVsiTsi4" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1702691774; x=1703296574; i=w_armin@gmx.de; bh=iRRAKbmAPwXhvUW4GeDAtHUeGHCa7UwO3y4IzMhZosU=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To: References; b=HVsiTsi4E/5xdpDXVtctRIpM2N23LOMCPUHwodHrmknycMsDGuJbRO96zdF4U0SH bjkGyFYIoCaDuckpwtR2jYWvyVF3FtRDM1b/mSVAuS3O4liD20rmhUNAk2hsjuy1R os7TlUFnATc3eYlSNH5D0APJgk38ZI0Wra1NjYNW5qXiNORVR522LHtevLTUxArqX sH9Y53KDZiAr9uNeap08HjigS3h40dFahdEcgbfQs/ODwzWWgjgXyHnY2tVT0QOGY DewFqBZHNoiL1X+PZOfCxDtedI2mRqH6gTE8WQeBVBUdarPUJ+AYRjopM6wkMj3Ub unktvxa+B4vUh5Hisw== 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 1M59GA-1rDDys1NuW-001CoP; Sat, 16 Dec 2023 02:56:14 +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 1/6] platform/x86: wmi: Remove unused variable in address space handler Date: Sat, 16 Dec 2023 02:55:56 +0100 Message-Id: <20231216015601.395118-2-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231216015601.395118-1-W_Armin@gmx.de> References: <20231216015601.395118-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:MOirfnZjqqSa7HKQZpaCjRHQzbSnjM/WT0d9T5Iambpw8kD6B9y 28m2Aow+fBqN0ma3ceR3fbZCEW/VusvoVPjx/Z61DKdNH24CTDtgsibYLUp7dQUY/fJL+Pj fyTXopPyGIIbgliOO8KCsKMzSgdfqBEOSn5PypGzVIUz0pok/I3OSZ0aM8LpldoR2rUUjqy uMR1DIPkjCn739AF6FK7g== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:g6TJpMyVtzg=;8NJD8ZkcZbvWcPGjTdnCYAfn48e rS/yojc3meuqmvJ5oso+pp5CEd9xvsTzahRVyRzmg949loKL46jyAcNCZI5ImHrGZKmXUswtv BwY23woQqcu1Uqm87Pzi8gfgrqdymGcCdNudKJxPW/+tKW02ZgfJOaFJxxCvr/ueTZuLoiKug /vuc8B7amK/VtZngUoqt+TmBDPbQ4MDc4DdsiYe2vT3oLWhJHgSCtJ176knmVXVF5kI5t75xp DGsOWLfA9XH5uDqIxO3UvN9k132jmxzQ/ZzQPwIxfPxIK18SyvCMDcle4fExUCdws3hQNY7Ze RM1+m3PLYeLm8ma7XGzx6DDcUR3XayOmfnkUIjNHU/WD00JKI7SJ3bfmypl2vST4bXYtIRd2V 8wZ+yaRLUNrMD61NIFenRs1KPdNEOxGmn+zFnvWLOYn2LAwIj9mz4u1lKHdQHfP03uE3KUbiS WyV51xWuM0POH4BOpsBcmPA2C7mzgp21VPf2NnN6cQwwK3CqSDru291Zz2qJycLe7JkLLiiiG V/LcFOZYgNLi11OPsIZ6o1+aJRPfOqkY5iGgtusibw/VmKKsJuisg8hJGAM8P9Xzso1sgdNMR BqRRuRGPE725kooFahxDm8nHFXKWkojFYTq5fGsrk4I5bvX0mzE7Cdm1/WFUYNNv+3YWObtLk T/NdslgPL8YNrH5e0s8CrIikPzu5CSj1w6yrBCOvrZpnz6nFwRdLi/Q0rSKrJ9KywJRe/5PWA Mxb3jVHaK/v8xVGN+zePFUsR8VMZ3ZZUBkO2FoOi01JbHcVEvKWM9av+63+MEI+2rJLjj179M A16yZHI969PbnXwd7DZXHVnhwACLNnCaqW5yG7/SQop7IXrouOltIQJVty4fxzYnzupUlsGJJ EFY0JmZ4OLy02346Xbz8yPUXGnPwifm3f+QAAPIslQr21+Dd1B74cTVAYJmoXxkAdB+luyOV3 Q8aXwqqSRlozaFZ4MPrQ5WXHpN8= The variable "i" is always zero and only used in shift operations. Remove it to make the code more readable. Signed-off-by: Armin Wolf Reviewed-by: Ilpo Järvinen --- 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 Sat Dec 16 01:55:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13495316 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 BE39B1379; Sat, 16 Dec 2023 01:56:22 +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="l2BBnWTl" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1702691775; x=1703296575; i=w_armin@gmx.de; bh=NSlGyVo7k0F2zHFkie2jaTuoeghUD7mw6Ct1mhxllx4=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To: References; b=l2BBnWTlaNjjVz39M3miF1IvJLmgXP99W4x1DTIvfy0CN46C2iVB2VrUeOMzGSmf kU2L1sWSZO5/G0U6zfyXAgam14gHKrzG4B9pcPKQ5M+aLMemJ90mLKrxCNRB38NAO w5r5BdqVvOBzQaGAL3R+3vaSwviuSwpw9kpaZThOBoSDxnZxG3OP+YVOIKBGLAS6y AHF6OYD1xP0ECyajBXunh5zJSOMseXKIREuF6HVy5wJ+iGN3Jw68+vzijTkWNOs8F sZjibNxjtHDWY2m7+JnZmRUK90R5ZT5bQVejRxVx1OfHYD1qhVk451uXwq3OKSu1d G4DfbYcW5eFGjFwyhA== 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 1Mf078-1rhd2r2WPS-00gVyk; Sat, 16 Dec 2023 02:56:15 +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 2/6] platform/x86: wmi: Remove ACPI handlers after WMI devices Date: Sat, 16 Dec 2023 02:55:57 +0100 Message-Id: <20231216015601.395118-3-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231216015601.395118-1-W_Armin@gmx.de> References: <20231216015601.395118-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:/MKAnEQTHuk4hj/MDg6RZQRyElif5cXt0x3NsrSoJCXP/urgeuO aDubYt5H5sMViEr50Axu+g/xJdvW5ImXDxanspJzbkhvg7rshb9U1NGvrT9bMyfW2ybS0b1 ZATWG0cH4updmQSWE2sDpRD2Ox2LtvE4WS4p0gPUNZV+omNzDKbfHzP3ihrlAusOT8h0mKl 9/IKBt9TmNVWhbEKLhZ6g== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:BJhUsHRAOvE=;SX/BCMEVCsHQApJnIu1iWpCQOGO dxVPopsTPsWNZAJ21Uxj2fhPa5LaeSgm6s7iNeOY9NHCdXbbwwoXguawNHnaaLDZbVCaSWudI Y/nxd4S22lZomMZY4I2JgOl96pQs+jehGVchTPHDPazHjoDcHDw92lPh+M1OBntRosMbUnmgJ Mx8efMVjcj0NcQqjstzeBlrRI0NF8CzEHTvyP772rhhiXlh+Uc9lzCSnudcFGb6PmkIe6h05q 2ACp94a5ZQJJwOq/Oy4VeVMNO4pYHQIRYYCNHtvKWizzn8rSVe6S2LMLQ9QIJmEy1PGscmtZT 4TVaaQbN7I4NefWqs55g5c4FmBDdOHLLhPCIw5JGngoZtojnZee2Vc1yV+fc5mJpKnvzrjGjY R8DuYjSw4sbBib4nOakOEYupPSlV/SqRUGxzKm73wEpKvMgg4AufGK1tfzUKBwNupZkOfp2BG 7PYVV0NEbdJYVKEUCOhnGXXBoPycWtQY3JoGLFuV4bBfamTg93a4cwzi9vz5jS0J2iVTviJqF IJcgJFvcOPrsh4LuAhZW6wgUsPoLsLTXxT54uYHgu8mlRPAiruUID9K4wiEC43gkjUOZREo+k cWbyshe+9zIixc0V5tCqjLBZFObwl2JS6wFWFhJIXTxX4jyfZupC/dGLsUl3oJ7ZuAXPaz5HU EODyvtdtVRzZCCl/Cs839l51GON4CGIy4l19uZRFX8eOJNarCR7qv2+CC0u5iV62rxAuYiqqO +gSJHuQGterE0yfuli4TTSC8KmcMHBKPjoSA3dCCawsHYSN+lkT9tysq1cXHeHiwMrbUavn2g FrF+vTecJMeEBL9WFpoV+v+vSI7VjvBvQOF0WgMuyfMgZ3B0RkvgRCIrSLi3WJmW/ZZ/MrFg2 E1hmoXxYc/RfHYsbPBZUDygSbNO8y2gpLQy0dqTj+WqcuQU+30T9wJr6jvnwsLLpFMtk3IlFN upzayQ== 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. 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 Sat Dec 16 01:55:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13495317 Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AF06515C6; Sat, 16 Dec 2023 01:56:23 +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="RREV3kRO" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1702691777; x=1703296577; i=w_armin@gmx.de; bh=zr7izhTjkkn0a454Oy25DTlJrb8p3VJ9H/oE0Z6Z/Wg=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To: References; b=RREV3kROqP7fP2u8f5AaGRdaI0pKoF6DDeVNKjkXPlSC9fiDdbcvjCeUNJTBP6oF Ny/CLZMAdvA5T7qXQSVLWyWtxIFHMVJfkLtmo4xJlCku3coZFTcMl1Y5NdZ55fP/F rHXAaeI4OhfGDb1mgvmZZpU9mD21Ttfx4YyzkqeFnNMIZlV+Sz5NjttPyIZYKBuSs /z3/b98JtrTE5JGc3kkJdp/Hn0f7nW55spVRFZkZbOwK91ih66li/wrPHINmBGY6U 6qEY5Y6nJDDsvzhvFtQmfO9zFFzcZU+vsGx2M8QShcgwGanBYOS8Zs3SZQ91iBI+Q HtKcUlC1W60GS7GA7Q== 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 1MrQEn-1rZgRj3ho7-00oY3T; Sat, 16 Dec 2023 02:56:16 +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 3/6] platform/x86: wmi: Use devres for resource handling Date: Sat, 16 Dec 2023 02:55:58 +0100 Message-Id: <20231216015601.395118-4-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231216015601.395118-1-W_Armin@gmx.de> References: <20231216015601.395118-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:reZqFpw7IzmzmySKV2Uusv4DGKgDFNh1o/n9TSrlGzKpYdc7pSe +AwIhLYuHqgfR/NUXW71L/Au4ajloMN9rhWvnqyOtJazH54ZNUmqgZ0dwA/O5LsziDuyCxe SBexaBXru+/YrCftclsuGd/n9HLkeX2JdoldgCvXPYnoYsol8qATUMHkT7NFRitXGDfUVGc EY2oDXIM53pN9km3YZc4A== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:w4VBgVE+Yso=;S4CjmMeLuy959kERQ+aAlAftNH/ P+gqeJYxkXAirK+iEqzlBm/9vIDRHygg0eDMkToFc9MIdwfYQO+Yx7HwZBUZqyOm8eaBhBwnH xoGSImjp9zK63scFj8ZaDRdbY3fodeUDyiLIwHnGK3eo07UvGhKKzBaYHtau3JiVlj/XIF/vX WhrMi37PQIT5FiWQLK3fI6vJTSwvcFcAC44AkrZnvjURWDeqKTDThtzxRZfCTyMJGn7jsO7V8 RUrl5fIbGBBPKxyEp3KKgg5hk9ogubAEpvguR4oZi0cu+a+ic/Nu7FfJ6tCrjmRJsjNOJA3V9 DVX+rl+zO/QOozMI4K1x3k38SXzvL0sNb6l8QWF+YYfMDNGnq2Ai/8BW8+sqgMDS3rCq6+4rf pxMxNq91AARxyOXuRT1JETB29WL2Kq/6ILuK66GumdQVdlUsZ0BFGbNvGtdd8Ikb/RHDjyDt9 icoe3eTj8dXyjYItmtImpzSSRHRcIpaok6DZL97HbHjo+iHGxSucTrIqzTPcCB5hmWKkN5ptH bu9kcp5zdc8Fyr3LH4Cd4Y0WHht6vUZLjDAjJAK4FDuWX0bFdjP47fQh6BHGux7ixaw2QR230 dNnSU4jWoBZk1/fA4Rf2c+k2thYtOK7/a37pppoE4yFReHOIfHkoJ7BibTN95dj3+voJcJOiF 0Jmj6EDzUUYMnnl6IESKAuH2MyCXvwytLIUjcHrU1o+LBNQ7f6OVpbQg/G3saKSWZVA6FLIQj ZHoKL3Oi49p1U7nE9EABMFZa/9P+jwty2nrh6ZXFYZlO28vq8wf1XUgDOFMra2JnoMJyhiJCo T8Nl0LSCbjuUqHWNzV8hOyN9Wn5397HYqFTfO7qidJ2jKikYiJG6JmutHw4rI2Rdwpx+6xlsW VN+4rCLcDokTBomnBiKfVAI87dg1nuSwpENSqROBJeU+Nhz1/mauKcSSmSxNFwZcc+NEobH7J fDVyKXDa4VTkxZxGPf2VTW0xQUo= Use devres for cleaning up the ACPI handlers and the WMI bus device to simplify the error handling. Signed-off-by: Armin Wolf --- drivers/platform/x86/wmi.c | 54 +++++++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 21 deletions(-) -- 2.39.2 diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c index 2120c13e1676..4306a5533842 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_notify_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_address_space_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; + 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 Sat Dec 16 01:55:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13495318 Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 44D6A28ED; Sat, 16 Dec 2023 01:56:24 +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="n9woXCgU" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1702691778; x=1703296578; i=w_armin@gmx.de; bh=JXqSKmcFLSyeKf7OYURl84uaiL8PV4z/6Y9EVeVg1Vc=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To: References; b=n9woXCgUk5pkpwrrsAXeVUw6f3vm7fO/k7OkfIrot7moVOsX2lDO/8zvYkVciW0s wikaqjBdVw5eITRhGlMY5wOnrn5fGzw/eQqiwfSq3HGvUlHtFJORdBBLwp/KAplLA 0fhzCn10Nv9LvWwRtqvkgxiDXygMOzGZF3jO9m0Y3VGWj9pRU/KNCxuwQfzCIF9a0 vnQjKY+iS7xNXPiXVPQldHlvuBAGTVaJ86Fxln19rBKPlhtG/2niAG/vrwfQEB8oi c4MP46+lFp03WcGDaLvi2+tEagAc5CDi8qLIBIlp4j/CsIY+fFaWKWkwD3kd2dU7W ivDh5WsaNGCOFeba4g== 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 (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1N8ob6-1rIQg02ZpW-015q1t; Sat, 16 Dec 2023 02:56:18 +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 4/6] platform/x86: wmi: Create WMI bus device first Date: Sat, 16 Dec 2023 02:55:59 +0100 Message-Id: <20231216015601.395118-5-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231216015601.395118-1-W_Armin@gmx.de> References: <20231216015601.395118-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:sWKj5sipcYAyJFmd0R5+CGzUK9Ib961ca3/LW0BsFdGMwSMvakr FbCY7Zn0fIjO3aAK0v4KmhI+6jGTbv4KFsSn3HtdaVhU5m9P4i/2ZadIvX5pL8a23uCPZTp UMoZIAX0/GwDDZtwIdJNTMPrFFUXvo+lxEwzh2ikQ2KOgcemCpnyGnf4qZYrYPfi6IeFyfO GzuaKaIaFBZHk4WAo+jzQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:XSs2184x+uQ=;IMc4kWXI1OoG3Wj4ME7//yyKABh 4u34exp+qKQJJsGJHOnon6yhF+jEmCFw0rACVzLmfI1YY+01vFB0SBl6JuGWzijPIsVS8g9Gf AVBy8lsRLIN2zWlTAZLkHAZ1GekZ6EPIsS09QkT+WcxLGr5ePIE/epe3z29yrz4kkRdTlABLs /jZ318vaPFWwJyBnLqLisewk6wepmZvSXcN7bRXI3V4kuDPNn2zZ07168K3mtzkRLW3vtUg7G VIWe1fTppSvCPdN3E8EwCo+EDaVxnt2y275QrYywdsEbuuOY5dVUhdnRdiNPi37Thyu2ADMs4 VvQaPa0wotbZOo1QAq46/VP6NT73snEa8Pz2F7YvA0uBb3E5ySpjDxPvSo4YichI2mG9I4rQp zqLam9echWLnSw4j49tlXEkbz/czZ2XoQ6AR9XN2vdDbEtVoBkHQ4nBkZNPZbT68wmPhw8R7s QnGLpcfEygLsPT0vsH8nKruRnD51Lux+5scEweYXBKQDDAAz2fzWX7X2+ds9zYOioD7Yf4oE/ P7/Ldh85yor9qa4YJbmIuPMFdXUPTHApsQ5o4vjB+7CIVP+M/cJkOJbJ6odpBUhJ5nJhl60+R JV7CxYG6I2zm7D1vz2yiWIBP6nFJ+AGQT+28QM85H3QEPXjfEQ3U1xPkQod+17H6dCdp0x0UP +TcIrWX1zXqj/PtBvJ5oIHlvWXQGZ0Cwf0ShD84n4RFUUHPodgRbePhnrqJjrGtpnc0WPtj6m rdNCszHSDSQU+RZNcYwBEe8NMxeIs58dyVd8+V9WKMYKxari5sLEYzIqgIbGKg3mw5R6NoPAo Sp+oDUuvKGXO5IcT1ENUdmul5caZ4awjQxGe0GKk8/62ynSHSaiLxfEj+3hpjFoBYhQ31NbTm pF6lYM/ctgBK4a5v/JiJnEKQIXeTAXxxyij3L/Skiffgrb2N0v9ifCt+YSZbNanBMiPuWsI4U E7L/e+CQbOyVuoWo6v5+jJQou4M= Create the WMI bus device first so that it can be used by the ACPI handlers. 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 4306a5533842..61849a43e2c2 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 Sat Dec 16 01:56:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13495319 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 1F03B5679; Sat, 16 Dec 2023 01:56:26 +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="GpprZU2K" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1702691780; x=1703296580; i=w_armin@gmx.de; bh=duHpCA4cOBrSH/Azl/sNbIHKrTis7PHVleO/ty9RZmo=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To: References; b=GpprZU2KiWMpPjwEShF4YUHcsyJpRhktiB800789WqInZUdS2rnGb6WYXkFKq5xP s1i7cJK3idleMqgCogzW2gkvqFH7wN6YbAwoHRCyw2J6zN1s5uJRps0awTHVBLp9q UceKBoEN6utTZJBc0kwNdiRpU9wNfyLJC6jPVsxq+G4omb042RuyofMpEsbKQOEyE 6qwzNt8kGIeh6xyeQ+o0Bm6F6JR/jD0xyU2RS5uRwkb/aLmtIgabNoM8uhP5XuT+z gpELwh4wh5IRMFi47FCNvkVydarFJLA0IsvEKNAXFFpzrgX8Ums/u1YUrSzLCPukB w2UlYggollzfLpcNIg== 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 1MOiDX-1qpONX21E7-00QF4D; Sat, 16 Dec 2023 02:56:20 +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 5/6] platform/x86: wmi: Decouple ACPI notify handler from wmi_block_list Date: Sat, 16 Dec 2023 02:56:00 +0100 Message-Id: <20231216015601.395118-6-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231216015601.395118-1-W_Armin@gmx.de> References: <20231216015601.395118-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:ubTPhVWqSQKfAB9dDY6lfW/JMpvW9kP1RzZke8D4rE8HeJBd6Aa vWU4xQ8tV5EmLlrjemCizNm8hWrFL8+d3aOXd1uBxJLGiasWURE6IIS3jfK0CkCCu/hXpi8 gy9qesTcXJ3YCjI340HzTLrWtJEiRqz9ClEVFwAbKgy4qDjIUJakDgMsPpL09jqDWuITRHw clW+S3F60SENi3WCeMAFQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:L5925xHDSAw=;0fc22ktMDiR52HFzvVcn3UqAvGB 5HCd1QbjUSz3jEgRNFrGvdix5tCuGbhoE5kcaHcDLv1BX2zFTkMwZuYONo7EVEua8kKiEbuQM igaRGnA4gj+TIMtIo9O5hE5tJCsZ2Vl6YSTC0O6EgZFHawPGw40+lMYuH6yzgSGwLQhmd+9iU kSS9kjO2Du2+Y1zJS+cJPrs412tQ1GWvQkAy0VqIL/+KfFoZjaQBK7JKleG57+VsuMQfFd0Sl srghbJwrDbzaZVhSTz/+GQ4Vhul3TewvQyjX0lxzHH3wSqphDzYHXkIPMPVOQ3cGoSnQCp9uN EWxR6nIfGFRV2csvV4kHmkioIisfOO9oeZHC1YiQhBL4MvULU1QnlEWLEfNFuK6HBULrXxMn5 kwVXImQ+nO9OI4eT1LuDqZH7iioGGSVYHdwRXC28N9BNFPhOSAwl+EP0/lDlL3sEEIn/teROd S/W6PcJGWz3wJxPpacDG7ziIXoSP5nfJyslKvmxDico/lGn+F+UZeMqNOFjGwlsVopyNe2aHf hvif6oDVbIwE+Fgxl7HAcWhTk3XrO5vPqsR5K4HNX3yEcoghsW/LAniXy3pB9ImN9009Af/96 8NJfQhGX2H/cOE7jezBeJxwxMR7tTfrjLlqpYjo0AXpd1Hy/p7vWLed+YwGPF1mDN2jLjxRGc wZkVsJM18x+sXFl8Nhe2DiBpZ+st7WctdgVWuPhZLbf9OYM0lTNE+WRiYFxoX8xLAf/XUYyS/ GqG7Hxoc74nlhykr7EsKzEJ0amcI79/PcVA8t3yv1pQ3S+uviS6ACvym4hGGkMN+YTKGx+PBS Lx6+BuociCs3ECWZyVt9TIdCY45mtoeIkkOchR6X1/I6UsTpur99KorwBQSSTLtLgRm2DTLHm eUR3vNwKRcMQbSOm7nG9FSr7xe9TjLDjV/rxDu3/d9LqikneRhR6ptTvkHg7LtNONWM09GoUI zyonCPnVEDtKmh+PcsEQo3QXEEg= 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. 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 61849a43e2c2..6b581c772fd1 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 Sat Dec 16 01:56:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13495320 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 092516AB5; Sat, 16 Dec 2023 01:56:27 +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="SoAz1on/" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1702691781; x=1703296581; i=w_armin@gmx.de; bh=/MhohvF8TRYvk+FPSFys0uF+3w0OFNsfZhE+kMD1eqw=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To: References; b=SoAz1on/5wOIK6SKzRJATKOm3k8y9TOldKBa8O3th40YVLFk1DHFpO5VhzpwUW0q VKXQ6HQMr9CrFaJVMQt9yRSVMWb+ISP3riBe3CGFhJ9y0FXzF5NFW+GR36V1jdlXH 0jA60i34oe6feXHX1dFqbndJc65t8XEq1gc55jmHavuSYemxpk9YMGmki7iyHobxT feRnrW9RCsqTSBv2+6eqLd2KcflSoEMsqqUH7vZRum4+5UjRkExi3RFw2YdY8yvNO YdFbzp/ec+vbDpQk7R8SW9q/9Jn/U9/KXeVKiWB8juKnhpZoGNEfhsgfCOCseVk61 Z/bVL57ozheCA1NdhQ== 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 1MNKm0-1qqlQN2918-00OoF8; Sat, 16 Dec 2023 02:56:21 +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 6/6] platform/x86: wmi: Simplify get_subobj_info() Date: Sat, 16 Dec 2023 02:56:01 +0100 Message-Id: <20231216015601.395118-7-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231216015601.395118-1-W_Armin@gmx.de> References: <20231216015601.395118-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:bWxW7rvFUAutgp583r1H0Gnsol5oonDb61FGbvLT6Bht68uZlZL LgQXYJS0p4ucDMVjEhHOpF+xglh974OEbVZrChJABiwI+WPkzGNP8eUHBeYJ29/tLTcK5kW BGIBkClepE9znGtY3yi80ur2zCBHzlRHIc3jvejIjEJpLpnIeqmdmmiTfItfpSFYkaQ+YIl V7Ns9/ymG2/AXCemZJ0Iw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:4tZSiVp8bpo=;hfdclQIFVzbEihY+PvUQUwCJW7N cpag2R3FvvCSiuogGvCdkU+b0b//3feXBDatN/iCCHyjftosuWgocwU5E4uxSU8wBULtQkong OluUt37ujakTKqKjD2Q3NhKTwx0peWzCv72Q2BrURJyGPb54UiNT5Igys4ryqzk7bU2bqFet5 lIxyQ4yk/SXXVxbsbhrSCSAYq2lJM9eWHz9+UHzUDpukbGjyjOgVRtD3k4mqQDlfG35/OtPVy kTUdOukGSPgCA117X6pEQRYAIvv25LuU7XJhgp46ocjvQ77a0KjcxccXo3R42cSYr4KPIoglA O9ZY7CZ4fqxuedDTQLkF2gyRP89C6pdq1PJhiIBMAjwCN/ctnV6WG3eW4XMYVpc6jbDIG+Ac8 uKdslPFsW8y9827QRJSgtphSZZ78f2+k5FZZUH0UMTpDmVc5I24arlqHVRtph7m1JWAWYdOG1 joFx2T/Qe6C5+JBoxlQqW+5/G8rvDfLnvlQoLmSgrCeZs51bEPFvfOMTERClafBCXlBvmuORr 5OkD3xZxxV0YT1cJdNyFcXl1MIrH6oh7wpg3/ooKGWwkQ76uJssv0zebbCeosfyTEZnJrOJhn SqEf3WbDmpWk2bMEqfA7M/6HRGPGffnlgIRrJIGdHXiYbFUYl8cdUY1eOISqxSADQbCDbH2YI ++ZpKfcAmVNfi68rA4hAgtyA2NjU2JL57QMCPULBewcUM5A7bAH/oI1BRmCDhECNona2KY6Ra ULHPtA1PYSqlP9eJXpRdjTYz5mkBHKFMkvqToyL2IQG8WhGRpCeNOZP68iZY7pMZu/JvKQ02P vKygDrkzrdChPzjBNoL9qfVY2G3FB0Qj0X3Yw9Adio1TC0rVTfQ5eb3bFtHxF6srbvZXaXFpy uDUCMIoO33x1nCf8XTvTxYcBed01PwYucATagclUlpogxBBRptuNFeaW6J4S9ByBO00IDplgd khtMtgUxli5zWImt/49nWrDCgXk= 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. 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 6b581c772fd1..73570744bc33 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: