On Sat, Feb 1, 2025 at 5:23 PM Ard Biesheuvel <ardb@xxxxxxxxxx> wrote: > > On Sun, 26 Jan 2025 at 03:08, Aubrey Li <aubrey.li@xxxxxxxxxxxxxxx> wrote: > > > > Commit 088984c8d54c ("ACPI: PRM: Find EFI_MEMORY_RUNTIME block for PRM > > handler and context") added unnecessary strict handler address checks, > > caused the PRM module to fail in translating memory error addresses. > > > > Both static data buffer address and acpi parameter buffer address may > > be NULL if they are not needed, as described in section 4.1.2 PRM Handler > > Information Structure of Platform Runtime Mechanism specification [1]. > > > > Here are two examples from real hardware: > > > > ----PRMT.dsl---- > > > > - staic data address is not used > > [10Ch 0268 2] Revision : 0000 > > [10Eh 0270 2] Length : 002C > > [110h 0272 16] Handler GUID : F6A58D47-E04F-4F5A-86B8-2A50D4AA109B > > [120h 0288 8] Handler address : 0000000065CE51F4 > > [128h 0296 8] Satic Data Address : 0000000000000000 > > [130h 0304 8] ACPI Parameter Address : 000000006522A718 > > > > - ACPI parameter address is not used > > [1B0h 0432 2] Revision : 0000 > > [1B2h 0434 2] Length : 002C > > [1B4h 0436 16] Handler GUID : 657E8AE6-A8FC-4877-BB28-42E7DE1899A5 > > [1C4h 0452 8] Handler address : 0000000065C567C8 > > [1CCh 0460 8] Satic Data Address : 000000006113FB98 > > [1D4h 0468 8] ACPI Parameter Address : 0000000000000000 > > > > Fixes: 088984c8d54c ("ACPI: PRM: Find EFI_MEMORY_RUNTIME block for PRM handler and context") > > Reported-and-tested-by: Shi Liu <aurelianliu@xxxxxxxxxxx> > > Cc: All applicable <stable@xxxxxxxxxxxxxxx> > > Signed-off-by: Aubrey Li <aubrey.li@xxxxxxxxxxxxxxx> > > Link: https://uefi.org/sites/default/files/resources/Platform%20Runtime%20Mechanism%20-%20with%20legal%20notice.pdf # [1] > > --- > > drivers/acpi/prmt.c | 4 +--- > > 1 file changed, 1 insertion(+), 3 deletions(-) > > > > Acked-by: Ard Biesheuvel <ardb@xxxxxxxxxx> > > > diff --git a/drivers/acpi/prmt.c b/drivers/acpi/prmt.c > > index 747f83f7114d..e549914a636c 100644 > > --- a/drivers/acpi/prmt.c > > +++ b/drivers/acpi/prmt.c > > @@ -287,9 +287,7 @@ static acpi_status acpi_platformrt_space_handler(u32 function, > > if (!handler || !module) > > goto invalid_guid; > > > > - if (!handler->handler_addr || > > - !handler->static_data_buffer_addr || > > - !handler->acpi_param_buffer_addr) { > > + if (!handler->handler_addr) { > > buffer->prm_status = PRM_HANDLER_ERROR; > > return AE_OK; > > } > > -- Applied as 6.14-rc material, thanks!