Re: New warning: PRMT not present
From: Aubrey Li <hidden>
Date: 2021-09-07 13:03:47
Also in:
lkml
On 9/7/21 3:22 PM, Paul Menzel wrote:
Dear Aubrey, Thank you very much for quick reply. Am 07.09.21 um 05:26 schrieb Aubrey Li:quoted
On 9/6/21 10:15 PM, Paul Menzel wrote:quoted
quoted
Am 06.09.21 um 14:02 schrieb Rafael J. Wysocki:quoted
This should be addressed by commit 2bbfa0addd63 "ACPI: PRM: Deal with table not present or no module found", or yet another fix is needed.Linux still warns on my systems with Linux 5.14 and Linus’ master in QEMU i440fx and an Asus F2A85-M PRO.Does the following patch address your problem?Yes, it does. With this patch cherry-picked to my Linux tree, the warning is gone in QEMU. qemu-system-x86_64 -kernel /dev/shm/bzImage -append "earlyprintk=serial,ttyS0,keep console=ttyS0,115200 console=tty0" -display none -serial stdio (I have to check my configuration, why normal serial console does not work in QEMU.)quoted
---------------------------------------------------------------------- From 52fda76410fcb7a3661687e960634d34fa44fb5f Mon Sep 17 00:00:00 2001 From: Aubrey Li <redacted> Date: Tue, 7 Sep 2021 11:06:59 +0800 Subject: [PATCH] ACPI/RPM: Find PRMT table before parse itWhat does RPM mean?
PRM, Platform Runtime Mechanism: https://uefi.org/sites/default/files/resources/Platform%20Runtime%20Mechanism%20-%20with%20legal%20notice.pdf
quoted
Find and verify PRMT table before parse it, this eliminates a warning on machines without PRMT table.Please paste the warning for people grepping the commit messages. ACPI: PRMT not present
Nice suggestion.
quoted
Signed-off-by: Aubrey Li <redacted> --- drivers/acpi/prmt.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)diff --git a/drivers/acpi/prmt.c b/drivers/acpi/prmt.c index 1f6007a..89c22bc 100644 --- a/drivers/acpi/prmt.c +++ b/drivers/acpi/prmt.c@@ -288,10 +288,18 @@ static acpi_status acpi_platformrt_space_handler(u32 function,void __init init_prmt(void) { + struct acpi_table_header *tbl; acpi_status status; - int mc = acpi_table_parse_entries(ACPI_SIG_PRMT, sizeof(struct acpi_table_prmt) + + int mc; + + status = acpi_get_table(ACPI_SIG_PRMT, 0, &tbl); + if (ACPI_FAILURE(status)) + return; + + mc = acpi_table_parse_entries(ACPI_SIG_PRMT, sizeof(struct acpi_table_prmt) + sizeof (struct acpi_table_prmt_header), 0, acpi_parse_prmt, 0); + acpi_put_table(tbl); /* * Return immediately if PRMT table is not present or no PRM module found. */Tested-by: Paul Menzel <redacted>
Thanks for testing, I'll send a formal patch to Rafael.
Kind regards, Paul