RE: [PATCH V8 2/9] drivers core: add ACPI based WBRF mechanism introduced by AMD
From: Quan, Evan <hidden>
Date: 2023-08-14 07:46:56
Also in:
amd-gfx, dri-devel, linux-acpi, linux-wireless, lkml
[AMD Official Use Only - General]
-----Original Message----- From: Simon Horman <horms@kernel.org> Sent: Friday, August 11, 2023 5:38 PM To: Quan, Evan <redacted> Cc: rafael@kernel.org; lenb@kernel.org; Deucher, Alexander [off-list ref]; Koenig, Christian [off-list ref]; Pan, Xinhui [off-list ref]; airlied@gmail.com; daniel@ffwll.ch; johannes@sipsolutions.net; davem@davemloft.net; edumazet@google.com; kuba@kernel.org; pabeni@redhat.com; Limonciello, Mario [off-list ref]; mdaenzer@redhat.com; maarten.lankhorst@linux.intel.com; tzimmermann@suse.de; hdegoede@redhat.com; jingyuwang_vip@163.com; Lazar, Lijo [off-list ref]; jim.cromie@gmail.com; bellosilicio@gmail.com; andrealmeid@igalia.com; trix@redhat.com; jsg@jsg.id.au; arnd@arndb.de; andrew@lunn.ch; linux- kernel@vger.kernel.org; linux-acpi@vger.kernel.org; amd- gfx@lists.freedesktop.org; dri-devel@lists.freedesktop.org; linux- wireless@vger.kernel.org; netdev@vger.kernel.org Subject: Re: [PATCH V8 2/9] drivers core: add ACPI based WBRF mechanism introduced by AMD On Thu, Aug 10, 2023 at 03:37:56PM +0800, Evan Quan wrote:quoted
AMD has introduced an ACPI based mechanism to support WBRF for some platforms with AMD dGPU + WLAN. This needs support from BIOS equipped with necessary AML implementations and dGPU firmwares. For those systems without the ACPI mechanism and developing solutions, user can use/fall-back the generic WBRF solution for diagnosing potential interference issues. And for the platform which does not equip with the necessary AMD ACPI implementations but with CONFIG_WBRF_AMD_ACPI built as 'y', it will fall back to generic WBRF solution if the `wbrf` is set as "on". Co-developed-by: Mario Limonciello <mario.limonciello@amd.com> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> Co-developed-by: Evan Quan <redacted> Signed-off-by: Evan Quan <redacted>...quoted
diff --git a/drivers/acpi/amd_wbrf.c b/drivers/acpi/amd_wbrf.c...quoted
+static bool check_acpi_wbrf(acpi_handle handle, u64 rev, u64 funcs) +{ + int i; + u64 mask = 0; + union acpi_object *obj; + + if (funcs == 0) + return false; + + obj = acpi_evaluate_wbrf(handle, rev, 0); + if (!obj) + return false; + + if (obj->type != ACPI_TYPE_BUFFER) + return false; + + /* + * Bit vector providing supported functions information. + * Each bit marks support for one specific function of the WBRFmethod.quoted
+ */ + for (i = 0; i < obj->buffer.length && i < 8; i++) + mask |= (((u64)obj->buffer.pointer[i]) << (i * 8)); + + ACPI_FREE(obj); + + if ((mask & BIT(WBRF_ENABLED)) && + (mask & funcs) == funcs)Hi Evan, a minor nit from my side: the indentation of the line above seems odd.
Thanks. Will update this. Evan
if ((mask & BIT(WBRF_ENABLED)) && (mask & funcs) == funcs)quoted
+ return true; + + return false; +}...