Skip to content

Commit 3db5648

Browse files
qiyuzhu3rafaeljw
authored andcommitted
ACPI: PRM: Reduce unnecessary printing to avoid user confusion
Commit 088984c ("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>
1 parent d7b8f8e commit 3db5648

1 file changed

Lines changed: 24 additions & 2 deletions

File tree

drivers/acpi/prmt.c

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,6 @@ static u64 efi_pa_va_lookup(efi_guid_t *guid, u64 pa)
8585
}
8686
}
8787

88-
pr_warn("Failed to find VA for GUID: %pUL, PA: 0x%llx", guid, pa);
89-
9088
return 0;
9189
}
9290

@@ -154,13 +152,37 @@ acpi_parse_prmt(union acpi_subtable_headers *header, const unsigned long end)
154152
guid_copy(&th->guid, (guid_t *)handler_info->handler_guid);
155153
th->handler_addr =
156154
(void *)efi_pa_va_lookup(&th->guid, handler_info->handler_address);
155+
/*
156+
* Print a warning message if handler_addr is zero which is not expected to
157+
* ever happen.
158+
*/
159+
if (unlikely(!th->handler_addr))
160+
pr_warn("Failed to find VA of handler for GUID: %pUL, PA: 0x%llx",
161+
&th->guid, handler_info->handler_address);
157162

158163
th->static_data_buffer_addr =
159164
efi_pa_va_lookup(&th->guid, handler_info->static_data_buffer_address);
165+
/*
166+
* According to the PRM specification, static_data_buffer_address can be zero,
167+
* so avoid printing a warning message in that case. Otherwise, if the
168+
* return value of efi_pa_va_lookup() is zero, print the message.
169+
*/
170+
if (unlikely(!th->static_data_buffer_addr && handler_info->static_data_buffer_address))
171+
pr_warn("Failed to find VA of static data buffer for GUID: %pUL, PA: 0x%llx",
172+
&th->guid, handler_info->static_data_buffer_address);
160173

161174
th->acpi_param_buffer_addr =
162175
efi_pa_va_lookup(&th->guid, handler_info->acpi_param_buffer_address);
163176

177+
/*
178+
* According to the PRM specification, acpi_param_buffer_address can be zero,
179+
* so avoid printing a warning message in that case. Otherwise, if the
180+
* return value of efi_pa_va_lookup() is zero, print the message.
181+
*/
182+
if (unlikely(!th->acpi_param_buffer_addr && handler_info->acpi_param_buffer_address))
183+
pr_warn("Failed to find VA of acpi param buffer for GUID: %pUL, PA: 0x%llx",
184+
&th->guid, handler_info->acpi_param_buffer_address);
185+
164186
} while (++cur_handler < tm->handler_count && (handler_info = get_next_handler(handler_info)));
165187

166188
return 0;

0 commit comments

Comments
 (0)