Re: New warning: PRMT not present

From: Aubrey Li
Date: Tue Sep 07 2021 - 09:03:47 EST


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:
>
>> On 9/6/21 10:15 PM, Paul Menzel wrote:
>
>>> Am 06.09.21 um 14:02 schrieb Rafael J. Wysocki:
>>>>
>>>> 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.)
>
>> ----------------------------------------------------------------------
>>  From 52fda76410fcb7a3661687e960634d34fa44fb5f Mon Sep 17 00:00:00 2001
>> From: Aubrey Li <aubrey.li@xxxxxxxxx>
>> Date: Tue, 7 Sep 2021 11:06:59 +0800
>> Subject: [PATCH] ACPI/RPM: Find PRMT table before parse it
>
> What does RPM mean?

PRM, Platform Runtime Mechanism:
https://uefi.org/sites/default/files/resources/Platform%20Runtime%20Mechanism%20-%20with%20legal%20notice.pdf

>
>> 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.

>
>> Signed-off-by: Aubrey Li <aubrey.li@xxxxxxxxxxxxxxx>
>> ---
>>   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 <pmenzel@xxxxxxxxxxxxx>

Thanks for testing, I'll send a formal patch to Rafael.
>
>
> Kind regards,
>
> Paul