Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp3126697ybi; Thu, 18 Jul 2019 21:33:00 -0700 (PDT) X-Google-Smtp-Source: APXvYqxWNUVJvnGXd5rd9L1K2rBRF1bkV/E+QpfZWVXFk6fZCCgKXa7wAtyEm1Zc6dAwVgUqf1e4 X-Received: by 2002:a63:6f8f:: with SMTP id k137mr51615514pgc.90.1563510780165; Thu, 18 Jul 2019 21:33:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1563510780; cv=none; d=google.com; s=arc-20160816; b=BKtpV+wEAxWh4YEaAYdaGA7p9lRnUVxOtWoZPEf3ZO/xtwPbrekfsa6IGBkH80h0EY f+eNl4aVaacsKnLowReTBaSrNzYXPUF99Yyh2dPnqkCtb1PfvNcBkhFTxsWUvTsDwC1K EctKb0LVUQk9FpjJ7gAuXKVIHhaPQh731RulxBRceSrb4D9JebaVEjD42iFgMxLZpshm bpKTziiro42W/iOjE6X0BJBVHhUdTMBjj9AD+UUUz46lhDRLfMUZ5UzmcWWXxxWn+vbb 6J467T4c+iNUC6JFwlYPjuS4nEHe36m6X1ArRZttkcPZ7f+scBj3c+4bxcASirwlKSQ/ jLCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=1ZJwLZJBUywoxtKYmMYgWehdkxYpO7Yk1PycRzu0cng=; b=gHf9juM88D3M4naOUSWDoirR0yEtAVxn+9Gu/CpsxJuN6IIz2nWJ7f3m+DKMKGKDBJ tY8qN8Ebn0l/GPzl92BmXdvddGK/a2AsdJHArBCt4En5S4/VurdlGBHecoNdAjuejcat 4fVWk47/YVR6X4fFHIb6+fF/Q56ZuRJQp+Qsq12FJN8nwSEJGIr1YTwwgBlhcKNM4rSr ThNcSjJM4IMfeDQARIdCZGQIjlWYKKzq0i1Nsz9vMXZRcxkPJqNTiN1cIubAUYuYQegc wN9GC1qbzpA0WcBP8OnV/GmQWH7Pl2BSgNqe111yJshAl6tXQ2ApNYT3fb5NAX2lOtM0 oWsQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=im0YdGqk; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h68si698253plb.281.2019.07.18.21.32.45; Thu, 18 Jul 2019 21:33:00 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=im0YdGqk; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731023AbfGSEEY (ORCPT + 99 others); Fri, 19 Jul 2019 00:04:24 -0400 Received: from mail.kernel.org ([198.145.29.99]:36628 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730978AbfGSEEW (ORCPT ); Fri, 19 Jul 2019 00:04:22 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 30AEB218C3; Fri, 19 Jul 2019 04:04:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1563509062; bh=R8D/y3Ypq3CcEyxbVqjygTUGau6ejYuCCCQO8aVhrw4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=im0YdGqkdtOns02jBW/aiDbI/BRbtnzRINfJd/Rdi3gDPPVc/xZUqAu6E9/qmUdgg C4rAq7S5qy//9HyrfOmGOfJ/WLFwpaQdktMUK5gIohf04QKAv8zMKqQb008/1CkAE/ 4DhHXU/joQQhDmJQx3iUy8VY0mgvgRwy+RDMSsvY= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Yurii Pavlovskyi , Daniel Drake , Andy Shevchenko , Sasha Levin , acpi4asus-user@lists.sourceforge.net, platform-driver-x86@vger.kernel.org Subject: [PATCH AUTOSEL 5.1 046/141] platform/x86: asus-wmi: Increase input buffer size of WMI methods Date: Fri, 19 Jul 2019 00:01:11 -0400 Message-Id: <20190719040246.15945-46-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190719040246.15945-1-sashal@kernel.org> References: <20190719040246.15945-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Yurii Pavlovskyi [ Upstream commit 98e865a522983f2afde075648ec9d15ea4bb9194 ] The asus-nb-wmi driver is matched by WMI alias but fails to load on TUF Gaming series laptops producing multiple ACPI errors in the kernel log. The input buffer for WMI method invocation size is 2 dwords, whereas 3 are expected by this model. FX505GM: .. Method (WMNB, 3, Serialized) { P8XH (Zero, 0x11) CreateDWordField (Arg2, Zero, IIA0) CreateDWordField (Arg2, 0x04, IIA1) CreateDWordField (Arg2, 0x08, IIA2) Local0 = (Arg1 & 0xFFFFFFFF) ... Compare with older K54C: ... Method (WMNB, 3, NotSerialized) { CreateDWordField (Arg2, 0x00, IIA0) CreateDWordField (Arg2, 0x04, IIA1) Local0 = (Arg1 & 0xFFFFFFFF) ... Increase buffer size to 3 dwords. No negative consequences of this change are expected, as the input buffer size is not verified. The original function is replaced by a wrapper for a new method passing value 0 for the last parameter. The new function will be used to control RGB keyboard backlight. Signed-off-by: Yurii Pavlovskyi Reviewed-by: Daniel Drake Signed-off-by: Andy Shevchenko Signed-off-by: Sasha Levin --- drivers/platform/x86/asus-wmi.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c index a66e99500c12..79c9a3f98dce 100644 --- a/drivers/platform/x86/asus-wmi.c +++ b/drivers/platform/x86/asus-wmi.c @@ -95,6 +95,7 @@ static bool ashs_present(void) struct bios_args { u32 arg0; u32 arg1; + u32 arg2; /* At least TUF Gaming series uses 3 dword input buffer. */ } __packed; /* @@ -219,11 +220,13 @@ static void asus_wmi_input_exit(struct asus_wmi *asus) asus->inputdev = NULL; } -int asus_wmi_evaluate_method(u32 method_id, u32 arg0, u32 arg1, u32 *retval) +static int asus_wmi_evaluate_method3(u32 method_id, + u32 arg0, u32 arg1, u32 arg2, u32 *retval) { struct bios_args args = { .arg0 = arg0, .arg1 = arg1, + .arg2 = arg2, }; struct acpi_buffer input = { (acpi_size) sizeof(args), &args }; struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL }; @@ -255,6 +258,11 @@ int asus_wmi_evaluate_method(u32 method_id, u32 arg0, u32 arg1, u32 *retval) return 0; } + +int asus_wmi_evaluate_method(u32 method_id, u32 arg0, u32 arg1, u32 *retval) +{ + return asus_wmi_evaluate_method3(method_id, arg0, arg1, 0, retval); +} EXPORT_SYMBOL_GPL(asus_wmi_evaluate_method); static int asus_wmi_evaluate_method_agfn(const struct acpi_buffer args) -- 2.20.1