| From fc5ae2c844c8ef8d4e774cd146545411bef6dbb4 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 4 Jul 2025 01:41:04 +0000 |
| Subject: ACPI: PRM: Reduce unnecessary printing to avoid user confusion |
| |
| From: Zhu Qiyu <qiyuzhu2@amd.com> |
| |
| [ Upstream commit 3db5648c4d608b5483470efc1da9780b081242dd ] |
| |
| Commit 088984c8d54c ("ACPI: PRM: Find EFI_MEMORY_RUNTIME block for PRM |
| handler and context") introduced non-essential printing "Failed to find |
| VA for GUID: xxxx, PA: 0x0" which may confuse users to think that |
| something wrong is going on while it is not the case. |
| |
| According to the PRM Spec Section 4.1.2 [1], both static data buffer |
| address and ACPI parameter buffer address may be NULL if they are not |
| needed, so there is no need to print out the "Failed to find VA ... " |
| in those cases. |
| |
| Link: https://uefi.org/sites/default/files/resources/Platform%20Runtime%20Mechanism%20-%20with%20legal%20notice.pdf # [1] |
| Signed-off-by: Zhu Qiyu <qiyuzhu2@amd.com> |
| Link: https://patch.msgid.link/20250704014104.82524-1-qiyuzhu2@amd.com |
| [ rjw: Edits in new comments, subject and changelog ] |
| Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/acpi/prmt.c | 26 ++++++++++++++++++++++++-- |
| 1 file changed, 24 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/acpi/prmt.c b/drivers/acpi/prmt.c |
| index a34f7d37877c..eb8f2a1ce138 100644 |
| --- a/drivers/acpi/prmt.c |
| +++ b/drivers/acpi/prmt.c |
| @@ -85,8 +85,6 @@ static u64 efi_pa_va_lookup(efi_guid_t *guid, u64 pa) |
| } |
| } |
| |
| - pr_warn("Failed to find VA for GUID: %pUL, PA: 0x%llx", guid, pa); |
| - |
| return 0; |
| } |
| |
| @@ -154,13 +152,37 @@ acpi_parse_prmt(union acpi_subtable_headers *header, const unsigned long end) |
| guid_copy(&th->guid, (guid_t *)handler_info->handler_guid); |
| th->handler_addr = |
| (void *)efi_pa_va_lookup(&th->guid, handler_info->handler_address); |
| + /* |
| + * Print a warning message if handler_addr is zero which is not expected to |
| + * ever happen. |
| + */ |
| + if (unlikely(!th->handler_addr)) |
| + pr_warn("Failed to find VA of handler for GUID: %pUL, PA: 0x%llx", |
| + &th->guid, handler_info->handler_address); |
| |
| th->static_data_buffer_addr = |
| efi_pa_va_lookup(&th->guid, handler_info->static_data_buffer_address); |
| + /* |
| + * According to the PRM specification, static_data_buffer_address can be zero, |
| + * so avoid printing a warning message in that case. Otherwise, if the |
| + * return value of efi_pa_va_lookup() is zero, print the message. |
| + */ |
| + if (unlikely(!th->static_data_buffer_addr && handler_info->static_data_buffer_address)) |
| + pr_warn("Failed to find VA of static data buffer for GUID: %pUL, PA: 0x%llx", |
| + &th->guid, handler_info->static_data_buffer_address); |
| |
| th->acpi_param_buffer_addr = |
| efi_pa_va_lookup(&th->guid, handler_info->acpi_param_buffer_address); |
| |
| + /* |
| + * According to the PRM specification, acpi_param_buffer_address can be zero, |
| + * so avoid printing a warning message in that case. Otherwise, if the |
| + * return value of efi_pa_va_lookup() is zero, print the message. |
| + */ |
| + if (unlikely(!th->acpi_param_buffer_addr && handler_info->acpi_param_buffer_address)) |
| + pr_warn("Failed to find VA of acpi param buffer for GUID: %pUL, PA: 0x%llx", |
| + &th->guid, handler_info->acpi_param_buffer_address); |
| + |
| } while (++cur_handler < tm->handler_count && (handler_info = get_next_handler(handler_info))); |
| |
| return 0; |
| -- |
| 2.39.5 |
| |