From patchwork Mon Dec 18 20:18:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13497550 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 B37304239A; Mon, 18 Dec 2023 20:19: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="s7l6pPKv" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1702930757; x=1703535557; i=w_armin@gmx.de; bh=wmxJqeTy+krnPbLSF9jAqQ4wf8RAiD4RO8JEKBF3GIA=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To: References; b=s7l6pPKv9BuBVYZ3gIfHq/6URUUA1BHGp5n0ihUtyvfQofdNs3v+Gaa41hO2NClR WZtBlSD+ecFMyWAeF1AmWrHz2qVSQlDJK6zADyQD2WO9Vw4bKwC9BJqYccltCMmE0 9nxJRckWz6AbvZRF9lTenMhgHIeJGW67qcdyXCcthAGUin4+KUWUqoqVHOl0dAWaQ nvpX0uClpPtE9zZXJIkTovz19edAKosRTcCL9Ux8iyPwsdodyiFlFBK7Pw0rn4MA5 rOs5MBhS5LdtcSPeonEXoPpqBvryrEa2n1bX12BhoiLEKW4BbBw6nnSkBZ3qhfHGB 3tSZQnfyb40AKuiOYA== 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 1Mof9P-1qvdT21hKz-00p8HD; Mon, 18 Dec 2023 21:19:17 +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 RESEND v2 1/6] platform/x86: wmi: Remove unused variable in address space handler Date: Mon, 18 Dec 2023 21:18:41 +0100 Message-Id: <20231218201844.2860-2-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231218201844.2860-1-W_Armin@gmx.de> References: <20231218201844.2860-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:KAjm65QT9bT5nfT6XqP92X2Nm+jWQAubsvYi5HST0dK9+svm1Ge QzkiHdUHU0BhHTLqTSyMtB+9XpmXMWJ5apONpxef8YKdFGrN1MrhRyrsJnK0067bp0IQrfE IGPIoeVFhkoXehlyTAF7/mFnQW8L8hS1+vP55wjWDvPLAndWdch5OOb5LLOVb/81XQHiB2H CbndZaUtpeDVI6fxMGe4w== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:i2HjnkTolY4=;kFzDhjTZ6XZL0SJHyAXlhhP2n9+ TiU47rXnKooelB+tJAEqvPPDwDcVm50A6GXYQWwunT2ot+JqGXz5BHCn4I/Vtuf8QjYm9g2lw Ax92MbJuu1bSveqjpkCBbpVFp+blFXGps97KSXc6kMGEvfRVw6GYP54SljrExiKrBaZGhI7wh w6FaKS7VGu1NNb2AIrFnh32DIK9AMVPWpE5r4rTZT9OVfLEejiWPnOA27WI1JUNzUbowjzSFV GMZ7mAQ04n21+fkS4H+VBxFjWu5nTL9qQq+wjhl9S7jZFBdVPLvYVW1pkRIVRwmqrY08RmSpE L+dB/eHW3P611/7fL/IC/hzzB3SDDrFd468ASoCQICzmYckgvfL8KJvxatQLP00CCZ0Ht5+Lq Nk3fpkIjjOZJtw2iv68Xyy98flhw+OTP+ehHTvS5hZvttI34IsEo2HvbW9+fqSdEuRmS9pqEj l05B8edyd9R6PUTH0xckunxdG5MnI7zlsFmYYQsg1Y3AIeBDkIgA3+wZqkpluey7X1mPvkJJe exanl8jirW3UzFdr354An+75CGtd2DZWMQXct2L39UDZWhcL/ovJxs6ZEWJz5EpoKIjwh7uz1 /lQH2TCoAEdFXTZu1bXjIw56CeqIEv/XKPa5ZAGeXWaz8GRmlJxKVaB7aqlzZngaUOGsviYTT J9ftd2COVMvWx8zDQ4NztTqaCGoCPj3cZFjFV1sJ/yL6Gj9hq07OJOSsUhJK9EI+XIyZ4sfjX WI8GoIW2Aaypy5BbPbVB/Q3lGxjB+4RGZWIREJjCTbP5BZyN/692uULDsA/50t4D7a29XJEF1 DZEEKXfbR7OLonDxH97Nmxfx34wz5j5GXSZjlyRjf5cKEp4Ciuo2tMWG71cY0lq/wRAJiBKC9 6Eu+SKVetX1dQr0/vRjd+7S8rC5cc1YQaKs+VAwV3hGme0lNVPd3Ex9LmRJT4FZimnxeYwjTe /VTkzBDABKN5Jgb01ImeT740F/I= 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 20:18:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13497551 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 545CE73469; Mon, 18 Dec 2023 20:19:31 +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="mWGQtcwR" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1702930766; x=1703535566; i=w_armin@gmx.de; bh=Gv/3KB2nhnzbj6OabYsWChzNP4Kil+PLOJoDKQOnE44=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To: References; b=mWGQtcwRPhtW/JXklo9Vki7Pj8Ts0Sy5ielOVqHp+wTHpmQ97iWguYnpEJ1Jd3wA f2znaplS9RBsOOUHf3+qS3X3PlPa6a4no9+3n8XjC46I0e3j25EL+pAoKZr+oymzx vZD2+vd2MqpLknKxecemUwNRsB2RJhkgvjVLEjol+QL906DjOFgPbpXxUqXt6JKic 246nqNd9Y52BTkZUJcAXb+EKso4TDWJBc/ZnsfwOpJ5Hw2Qd7guPXnIj3hAD+zv18 QdJnn8IIyHwCE90UXdWqQDri+25LnddCazR2eynJh2XR9dp9jelaY2ZQ2uRX1pX30 sqqGuAi7gFMu+eOU9w== 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 1MOiHl-1rfWqH0uAJ-00Q9Su; Mon, 18 Dec 2023 21:19:26 +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 RESEND v2 2/6] platform/x86: wmi: Remove ACPI handlers after WMI devices Date: Mon, 18 Dec 2023 21:18:43 +0100 Message-Id: <20231218201844.2860-3-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231218201844.2860-1-W_Armin@gmx.de> References: <20231218201844.2860-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:XOdpNjhflCYKJ1a+4E2Buao2nLfPzOYhyhtIE5Yvp/hvdx3f3V3 PAz+fPMBVHAzyWVntXAdayofd/qfaQ9+aIQA/ezcPCqjFi9cxhjpu/f3b8yvDslFyEQucZe zrmOYm4iZ+8zKqQry9xVQF90v/CsE1rZ15FshNAsyvbiENrA09WBb6y4VghHZU1SeGn7Vta bLA1z3h9EyNbje1Fyjifg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:Kxsn0DJ1v4g=;jhv3lb2Pj5rrq6ZAZa6pRPVGWVE JS1tKzoUYgMYJ6MKiv/Cd/ft0+yTXxKO+TaofGzbtPkrTniIzvSclh+bBNgPSrpnrxbz92BOS pFSvlikPliddvT7DNkQJzBMUYA6AE4roZL/HKz+J3B/zSZWtDiwo4QEIA50x6qbNhnIwJSbPs YVbpQqIOLyYu/cX+oZDV6Nwbigtme8n9t1zg6V4z/Z11OUPKbjCXWhBfuO8Ha2Sa2J86XflbE 6C7jhOc1lK5lU2FR4U9VqHuGTJvcdnkvPY4Jc+VW00YDU9x0W/xB1ttmDVOZeCadMr9M7zaN0 3T7cbkhjGE2ydMLNwIOYqPBHgiFi8Aev4Q044SzDJRJFCEybdT/Kc+v/j5VySIbItQ8QiFWMB PUqGxL4NbWTyk9qfqltyHlKvkxUnAf8CKU0t2pz4HRMdXFIUf2JhFAiov5x0eI7BjbWmFyv7/ LGYsotAiQaKefymxuTKT7uENIez+xpiKidavHj83RwICOWbOBgjFOMlbxVaxR+f1PZjaPPs1w Fno1S4jrwJn30naCvtGTfL3S0SZOOx8loIXYJOmeNlFEkXhhGD01lxdYgC+MeHoLkljHTt2H3 2goZxtcBs04rhzVskLzYNmKaiCeXx4glfuXeKNaA/LWWtiOFiaQsVKdc+FjNeL0PT20xVk4M/ qNnKoYPOQf5h/dslojIdiYLth6TZWdh2CtRppPBmrpEoA0uR35xrxjVjJNivGCVRvl6g0jyrB mdD5rwuN85COPjhAJrbbbGk8EGaUM78wU+WTxWBaY/1yxG7FHKXaP397pAJKIJQ4UiiaNYKun ITAAtMwAZBUApFnGhB2McZ1LM1SpegYAu5VNrRhrVB6poAY1I2lJhUjKYA9xgZkze2kpQIndz VHcqzVpQxXYiryxXj/ywEGRETDz+WZUuR6Unv4Xud7OA88dibnD70OIAlRj6ySN1bTvkYM87Q 2kPQGQ== 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 20:18:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13497552 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 3A91272053; Mon, 18 Dec 2023 20:19:41 +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="QRji7RRl" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1702930776; x=1703535576; i=w_armin@gmx.de; bh=lZGk8ts+L3vDhJqdfupckAWAlO/09kRoQ2kBWorNNa8=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To: References; b=QRji7RRlgELufMKOtksOmPb4nV7Bi6Qe2aFP3CoKs4dXgWRROj4SWapY/0+npDk/ DPnHvzDH0kHnpF7P0Pfdly30aOw6wyI06m9iPk6OUDWQH7FFPqsHNZUVLsiWOnPGh xlgY3mnZ3keEGQTuHu2YLcTfWd1IJrXG5QBvWwFAaWHXrSqDFvFsZIFG1h9uiJuVD XEkgYXdFyR+dCkRQ0r2kUhtVVM4c1WV9ElPLT9dNoSHW4u7UHtKGAODCO7q8RUub1 alitCt47WRWlJ5TSB7VqJItlKD7ksxLgaAbzGeqCbGKNAcGV61VvbTFYONtvPMiCD mcKYcHC2csqERt5cJg== 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 1MirjS-1qlVdj3ueS-00evKR; Mon, 18 Dec 2023 21:19: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 RESEND v2 3/6] platform/x86: wmi: Use devres for resource handling Date: Mon, 18 Dec 2023 21:18:45 +0100 Message-Id: <20231218201844.2860-4-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231218201844.2860-1-W_Armin@gmx.de> References: <20231218201844.2860-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:n89GnJoBYU83A26YuUYubdU7fewU8Az77VrJA8GI/5CXOPd3JpK ih4SevgwckwPXAWhHpjQwstNpfJ4cceV6N885DnbfIS3sUOAi8oQNiLhP/4VrWnqSzTaoR8 H6KEAqmePD+SokWfwzGmzJv6a3dps056gjKeHry9kfHlwYZXXRRM563cvPEe6fzi0XeQ6c/ ouHkCOk/ymkqySb7Fs1CA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:r98CMytVYfk=;p6+kXa+I2N+7zMTN4hYDHW9/4vj jjVMRRrKuDJoIjV7bqEiNtzI2/jU2it0wMOcX3DwWivza+OkQAjQ2K8VTFy9IK44f/dXcgUxY mcG/LIQMTdm33MJPUXK+2T0Sven7DQpjWVyyEhtwL9RjY/u2fAIdLp5TWKzGkhHYQLCOkdA6g W2GlYda8OuUgwX1srQjp1aIwAAq9de/TnV++tcPCQG0k0qlDJIxUtaR/GLwYOQDJfZrzAkt9c EbuAyNq5/c1hK5byRBN6tgxLC9h5YCHkw7v5hRn/t2qkrbzml4huKGLdSu1RCr/MmXQdnYMyC RJauVH4RX+GCHDrO5WQbZN/XwxvHZLtWqcL3u6wNi95B7eIOGP16OliYfqYs9WOIIJpY+uJog SnRKaFgnT0I9U/DLx4w38NF9UBOE5wA2gvhQ8sjadDX1ZslfDusDOQrqXW+yklmOg0KE2S000 sbHt4Jvj49xmkXPwwPydEcyJPxn6rYwAcV/V6XmvsQMqUGRaajfXsmMnFp/OtewIXqhDKHZVH 4V3Pad29jk4BWHhle+coNmGtAQsyucE7mb3cUIL0B2HVrzP8q0KndyJ6moJpH2zip2EG5FI95 pQqaW1chfkXCnaAjihGR4H8M3Wv1iP/cj1FWIuAV6mJd82KVj6uCRjEY5vTnUSPb9Mu4jmnmV /GEwI7a5UyVPigDCY+XUQckGpRTCI8qIsAdkteZlxO5m5M0TEWLUfRyGdLaWn+MJ6O3M2hbC0 phnR3Y71A6T3o5oiWX2/4f1ljE8wEb4dONd4p/IQy+gF+SqteCjqi8rnR295gG6IRFEUSwqB3 tWwTHqNvY15hJhAWwGpqJrgZvPNEaQNHqpR/TwFPiMgc9MUUNxQ2AV22hErgsQo4h0LxmJsFe nM+DJIPJRTIOK2N6NpxeCNYnXHftsjDDXglRsErC7AI6WZNhHk+muMfhFSLTfFKaeSMElMxcj f3tHqWPphitpMJjPxwRro39lLyM= 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 20:18:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13497553 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 9137273480; Mon, 18 Dec 2023 20:19:52 +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="t31Iw8pY" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1702930785; x=1703535585; i=w_armin@gmx.de; bh=yBaISgjLgSkrk947Vjw+ExCxzpblr64RVT6udQOT+ys=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To: References; b=t31Iw8pYZJ6vnlRjAJZp/9LgxyXQ80Ndn1Xd9WttYKFbnnYHWtweY8npSEgf90N9 wt3o1MdDg63C2wkwJsbW+bxZsSXp5QMPkk/EDRenyoceGdlzYDmuP/d481J1lDDlD X5Fx8qx8vhr+iHxXxQUFvygmb5rckXNEAecQhNtmWI+XA5rK5qsT440h53W93CRlw +tvlMeQwCVa3K/GUlzQ2O3WSR0alEaRIVZcQCXA5O34sebYoxX/hcHLRWacLry1r7 Igkps6DImehEN0nNAtYl/s7NnKmIr6IAorefrnYmcKHVKecSu0d9mNVRNQoEejb6y opYimpdmE7ZK4v0F5w== 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 1MJE27-1ra0XS1rER-00KjWP; Mon, 18 Dec 2023 21:19:45 +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 RESEND v2 4/6] platform/x86: wmi: Create WMI bus device first Date: Mon, 18 Dec 2023 21:18:47 +0100 Message-Id: <20231218201844.2860-5-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231218201844.2860-1-W_Armin@gmx.de> References: <20231218201844.2860-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:r9JOtOHmt+f54yA49r9+97q4XohiJLYV+pW9iPD6pyNiksbWBvt qQnRvhsJx/7sBkMTBdZlGZUX5sehtCuZ4+IGGH1nKaNCYtXDJjyG5c9NgQ7/elhKsBl8+FX g3+RknUmC728xTTlsieoChtS3gxc8UXK8g9Xes2ByqMXQo5jgQbFTwzgFLgelVW8aDgxmwR Z6MkRvtALXEa5WlPFqrjA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:uJjfeoZUhpU=;K+q3QhbSQr1xYpHm6brduiy+YvI ZQgepe4fepG/9tmz9dQcVrMVhGc1l75xt8wqlgv+wJSWoBozvnTiecTmxabs5mJUAKJH1vbwf EZLct4sorJsbOZsM+ssnE7ZhqWCHaKomph6sqCtnODAdD/gUt2gQwU55YPj5ny5lA74YXcGW+ s8fXF3gK8C8p9vzxBx0gtOBdHj06tMxz6FQFnjI6bRfLtCT65Gaf0Zyja3gZM29R5qWBjSoTK Yc12mzmlSNygmZYwQw8It+twoxH4XRZEfDafalEwRBmm6q+dYlY9jmZm0azgOniOhuKAFYGXG uLaLueBLkFp5QRVtnDPyQ/vidvseCOIDtUWz0zR0BD4bjrOeF/qwrwUVaNfdQkfoXxaASEJZH Lq9pZtRxjd4EcIXHfM4dXcBuHvc7YS4xJfA5Gsh2UToHN+rsCocYrJQ30cdw9f5TYoa2Jvd9l FeBkahH1C1uciChl9Te0ZFw5PmPZ0OxuCu3Jzlk/9CZs3fFZTdYb1O2fdInhw4Ht4l7nfsPb6 08pByfGmdJp3/7NXwnkJ8XLTFk3tnQ7jtJtDajpf/bJbTkbrTDZx2MHIarqI1OOA2QP8at8bf FVn5RC1itAoXAcMZGhXRcL65KZRm++G61pSu/q7aiPbmt2Iub/+YVhDxyrEPSKtGsrtgGkzI+ 4o5DmRfhcdLhLjrCORWFppDx9AlcszdUM9TTdzg3hxeABgccDoR8koR4KDYUSVgD0ImaVw7qJ GS/7sXh51qUCaVdtsGOVj6AFGgLdKDRjzCgsg9VN4NQfj0KnwFMD72PlyWMHufugLzeT2NAcn I/lo7N3UuowFk76XbO95tiR8b49cXk6HeI6EbX5kgU3m4ra+xpMrMVjRwi6YU7adWs3BjFiqW iayOL10a8PlktGf9JHipzqbFLkCSeNO+O+5U6DZWZ7PbE6IdC/Sh9riDgUYssmp71v3+Lxpbg e/PRK9oE5yV7xXYtW5oFZXPiqBU= 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 20:18:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13497554 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 EB39A740BA; Mon, 18 Dec 2023 20:19:59 +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="WvYECGnD" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1702930793; x=1703535593; i=w_armin@gmx.de; bh=vd+n3ykeVoDXsg6HoG9Wxn2uSy55W8TbILg2TIyowI0=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To: References; b=WvYECGnDW1fv+Uz3F9LzaMiEzwCoYpg4VF+QTQoDtnt++fZpn6ICameiB00Jz15Q 6ioIKy3m8OM/0yAPNFY2NQfHn2XE/lnpLv9kLamvoDgRjMtf7FHivBwWlWUYgidJ4 MALt/32JBU812O2BdvPYkV5AiugNii4ro60E02zTxZLdqZfLItcrlHFidYw61D4U8 NH7W8vT87QVXf4+8CbcyzWhUFuQp4r/R0Ohv4dB1Lm5zhi4374Ua/YDN7gerl9uSb OccvXegf398jMiyM+KSiA0Lc2c8otc/I+zlrXhm8EdVeqIkF/Dy3IgfStKZxrPD3o M4YaMw/DF7rlHxX51Q== 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 1N4Qwg-1r84pr2BBW-011TRD; Mon, 18 Dec 2023 21:19:53 +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 RESEND v2 5/6] platform/x86: wmi: Decouple ACPI notify handler from wmi_block_list Date: Mon, 18 Dec 2023 21:18:49 +0100 Message-Id: <20231218201844.2860-6-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231218201844.2860-1-W_Armin@gmx.de> References: <20231218201844.2860-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:R3fFXk0UPoI6fhhBGUMusr6zixyck8kswZ6+1e1/Ps3v/C4QV3e N5Zf41d6+X1FGQp/4Ah8Czq7nXaZV7EvYydZx/w3thnSt5E9lzqBovMTcsGL52I/1ZqF2xj Bqd7Mhu2PeL453jvpKzdWedXxamiDQazquUCDHorh3Ew/4Q6vrBJY/jm5roWhUPMYf3neGx qWtqQxEGjVHyYQJfMCFFw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:mFeR0J8JWe4=;Wh2+kYxhQeagspai533jgcfCaKZ 7MkZNE1FcZcwy2aktttO8vpUMHG+5MsJcOeNviIvSihCqs9sUoKeL9jv4qm6lidluUnuU+LXO arufAGvzFM1MBPkxI5tWLq5NG863UvP6g90zJkC7IEsGJ3mDzwulUwiZ1d1lHCOeP8hdG3kg8 QXkIxVJX+LP1hHJDFdi0gDl/fALUjhywNMhCCp5VhLziix/wSjuHPYiFFSpACprsEgIBroWti V8a5nlVNnSgFSI5kcmhZgOkmGfXbtpniUnl5haWwaHjk7wuC3k5QDT4QyMsACdqxCo34EyEuv iESQHu/tl4LKtmK/lXPgzEl1Rl0rmucpzyjt0QRGmpjqSDCey21t41yPPuVunFtTA7vW9jPmQ AV+kT8VrUx3Nd3AwVyFriSSED6mq6uLkJ4VVLcwTrLK1lqKplBcZJivFlvC1Z2JaTxmTJxqe4 IYbODd8GmIUqxj/LU++Ifxqpg+syJ+YYStwDCKwdLO9wtqiXxPud0NSfq1nwrJe9hvpwWYNGR KogYBWR2uJfo0pJgy4C2ctjyJ/5CO3hmdyY26hx7BVP75UtTXlACr4bLdn7PDaGCV40flO2Q+ 0s6qam+MQv6YyfJMEx3BZp85sYJlwTMSnDO5Nj2HMZHUBP9kuodWmJmuYSWxCd+qXpidC9PTW P6xnW7ldgqK9Nq/hi+vLo4YVIMcbtqn+wKuhY+DZll9WNAQ/pCmOnRXrx+MhDnKubDAtjEV4G Blf75tM1f58GZvpFBuwnxu5RygE+opz5Ui38KnJcvUYeYvFJY5lTms7JLn+gdi8e8N+H/BWqx 6GFMu8G4o1owrVDR7TIY1rNEbD2zP6WsyakyASovdVMMkuf0//l5DW6PhIu+GXnK/lG9My/Xt hdd8hBfMwsFxwNoT9eXNyh6YmyxWxuWY9unLO89qyH5BoPL9t6Xz/Bu/NSINt4BVeGLvFtyrD 0vujWsddNMKDITTURmW+hNfmX4A= 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 20:18:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Armin Wolf X-Patchwork-Id: 13497555 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 3038F73498; Mon, 18 Dec 2023 20:20:08 +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="uL0peQ3U" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1702930802; x=1703535602; i=w_armin@gmx.de; bh=8xcRS4toKnQj2X27ThuiST1cF613b/lRiEqma2uezJw=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To: References; b=uL0peQ3Uqiqlqao3InO3XuoWoxUQbHmSp/eyBrfh7tFQu0MlULUwP/fk1WInLWd7 r98Hhh215lnJHNLf2LcvwJj7pAwsgXwU82cYrZ8mIcLvztUESbCGFTKQOaOcXhVOA olS5tvYqcaaqhCHgUVVlxiphEuM1u70qZN7Pqj7os2pcTYcJthSj41C1UYDddJII/ UCdi8lbF5IuH3Rw0teUdptixAT8vjJDkfzFMy7OzSat1A/FPfNSDdgYkjGxqy+Wlz oZRqCT1ayzHgwRxGm5sYZOH63MXdO6ErDNgJrpWJ39saB/ExmPxwZTCqQ1NXFuy59 tD78M1e1VmrjArQS4Q== 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 1MSKy8-1rhwks2dei-00Sh7P; Mon, 18 Dec 2023 21:20:02 +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 RESEND v2 6/6] platform/x86: wmi: Simplify get_subobj_info() Date: Mon, 18 Dec 2023 21:18:51 +0100 Message-Id: <20231218201844.2860-7-W_Armin@gmx.de> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20231218201844.2860-1-W_Armin@gmx.de> References: <20231218201844.2860-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:zs+GuJiftyA0nnelVgmKabbvQuVWX7TvoSequC+/aE+iM9ipxF2 fm/KCsrl9IPIBVmsJU5nThDQNH2x2X6uyNTdT2r7bwCfAVEaFIi2DVdWEjVI9W5uiO6uXm3 ji6cGMS0HdNj0Gw6LXSluBfUe3tj3+NouOPwHKWlL0gTpPwrLUDDTMCsvm7At6mXWvfGaDm UzBF7ehceEl+PUHbvUWHw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:ONT9f25Y4VQ=;v4Wwlg73iNkaNaCYoB8QW2jkOXn ZgVJxZnRFE4PP1PPL0ANHccqgOZRJ0ek6KZup0QiKw/aDaJ03eeo3D+my8xn++Ef1mm9S91XT DEMfmFvHAIlvR2mf8A/NeVsq0kHI+QdVeqvPGmQ71QZieVRwtTRJY6UuDzG4xf6unQekK1oHN NrY0NhzQ+EpNDiMTBQu7oqneVVcHh4yka5BJcvmWsqo1tM5/5QgL3y4lNa7KX/NFiysv0T21b pFg5iy3RFXhGgt5+K7ln92Ha4ZIi1IZ/TUr7A/lndmj5wUznkxZql8I1MRK2Yb2BzOr3IEXnU C+rebKh0+O6nggYSYIBDSrZhAWuyNnbDDfMAlqgrRwgWIkc7FOEAem4asSZxQ4ajNPPA/4aqL zY2n2QPU58haLTcLAv/govCLcK1Se3uMVUVyX40TGb8VZGWgQq2sNlWxQVrbLpRrRIb2wK3Mt DUq4+5Mot6r5LKOasb1QfuM1B1TJ4SOQcBpuiHmru0Dm7NRNfb7MFDSPi02953FTVWQd2DeS6 b9ahfofTrfdJbxJrN2Wn2UtNwW0hCLcqlq1ZCI/XkN6EjrClFTABQ+uuZ0ESs2moF2uRVMqof ZP9wUpSNqNnZfDTu6YDygNHOohP4p47Phfdj8rI2JfQlAr28mqXQvyZQfEmKNx0xML49VcpA5 epVL45d2P3r2jrkPieYnrG3FOjcVRZ9Uu2ibhUoK9VeDRVzjLcaXV1euSeitZqv8j7qEhuPoJ BvxVISqKP/QJ8PKNyWxkijHgKKs+eSyL+J0U9n9ftWYzdKTjo+JS+RGkLkd9unj05VlKBQmbi q6K07XGWa+nJ7lSrigcsUI2vayzCqvHo3NgVwXRkWlHyATt+UspI6ZEgGM+QbTaWK+Uo5uwXe aeh9keAp+g6558QF6PCmD5+zqgE3eUXsnVYHYWfvXAjClOf8i7K+B0XKRy7+npUmaWduB7NrE xzmCuJdejoRu8uVQjmMfTk4f5Lc= 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: