Thread (18 messages) 18 messages, 4 authors, 2023-08-14

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 WBRF
method.
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;
+}
...
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help