From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=66.187.233.73; helo=mx1.redhat.com; envelope-from=lersek@redhat.com; receiver=edk2-devel@lists.01.org Received: from mx1.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 0A34D203BBBA6 for ; Thu, 24 May 2018 05:53:13 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 4D938401EF0E; Thu, 24 May 2018 12:53:12 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-121-84.rdu2.redhat.com [10.10.121.84]) by smtp.corp.redhat.com (Postfix) with ESMTP id 210092166BB2; Thu, 24 May 2018 12:53:09 +0000 (UTC) To: Ard Biesheuvel , edk2-devel@lists.01.org Cc: Leif Lindholm , Michael D Kinney , Liming Gao , Star Zeng , Eric Dong , Dandan Bi References: <20180524090945.10289-1-ard.biesheuvel@linaro.org> <20180524090945.10289-6-ard.biesheuvel@linaro.org> From: Laszlo Ersek Message-ID: <4fb347c6-3cb4-e1de-b9b1-f1a97c93753d@redhat.com> Date: Thu, 24 May 2018 14:53:09 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: <20180524090945.10289-6-ard.biesheuvel@linaro.org> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.5]); Thu, 24 May 2018 12:53:12 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.5]); Thu, 24 May 2018 12:53:12 +0000 (UTC) for IP:'10.11.54.6' DOMAIN:'int-mx06.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'lersek@redhat.com' RCPT:'' Subject: Re: [PATCH v2 5/5] MdeModulePkg/FirmwarePerformanceDataTableDxe: use AllocatePeiAccessiblePages X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 May 2018 12:53:13 -0000 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit On 05/24/18 11:09, Ard Biesheuvel wrote: > Replace the call to and implementation of the function > FpdtAllocateReservedMemoryBelow4G() with a call to > AllocatePeiAccessiblePages, which boils down to the same on X64, > but does not crash non-X64 systems that lack memory below 4 GB. > > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Ard Biesheuvel > --- > Note that the ZeroMem() call is dropped, but it is redundant anyway, given > that in both cases, the subsequent CopyMem() call supersedes it immediately. > > MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.c | 51 ++++---------------- > MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.inf | 1 + > 2 files changed, 10 insertions(+), 42 deletions(-) > > diff --git a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.c b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.c > index e719e9e482cb..ded817f37301 100644 > --- a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.c > +++ b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.c > @@ -32,6 +32,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -179,46 +180,6 @@ FpdtAcpiTableChecksum ( > Buffer[ChecksumOffset] = CalculateCheckSum8 (Buffer, Size); > } > > -/** > - Allocate EfiReservedMemoryType below 4G memory address. > - > - This function allocates EfiReservedMemoryType below 4G memory address. > - > - @param[in] Size Size of memory to allocate. > - > - @return Allocated address for output. > - > -**/ > -VOID * > -FpdtAllocateReservedMemoryBelow4G ( > - IN UINTN Size > - ) > -{ > - UINTN Pages; > - EFI_PHYSICAL_ADDRESS Address; > - EFI_STATUS Status; > - VOID *Buffer; > - > - Buffer = NULL; > - Pages = EFI_SIZE_TO_PAGES (Size); > - Address = 0xffffffff; > - > - Status = gBS->AllocatePages ( > - AllocateMaxAddress, > - EfiReservedMemoryType, > - Pages, > - &Address > - ); > - ASSERT_EFI_ERROR (Status); > - > - if (!EFI_ERROR (Status)) { > - Buffer = (VOID *) (UINTN) Address; > - ZeroMem (Buffer, Size); > - } > - > - return Buffer; > -} > - > /** > Callback function upon VariableArchProtocol and LockBoxProtocol > to allocate S3 performance table memory and save the pointer to LockBox. > @@ -287,7 +248,10 @@ FpdtAllocateS3PerformanceTableMemory ( > // > // Fail to allocate at specified address, continue to allocate at any address. > // > - mAcpiS3PerformanceTable = (S3_PERFORMANCE_TABLE *) FpdtAllocateReservedMemoryBelow4G (sizeof (S3_PERFORMANCE_TABLE)); > + mAcpiS3PerformanceTable = (S3_PERFORMANCE_TABLE *) AllocatePeiAccessiblePages ( > + EfiReservedMemoryType, > + EFI_SIZE_TO_PAGES (sizeof (S3_PERFORMANCE_TABLE)) > + ); > } > DEBUG ((EFI_D_INFO, "FPDT: ACPI S3 Performance Table address = 0x%x\n", mAcpiS3PerformanceTable)); > if (mAcpiS3PerformanceTable != NULL) { > @@ -368,7 +332,10 @@ InstallFirmwarePerformanceDataTable ( > // > // Fail to allocate at specified address, continue to allocate at any address. > // > - mAcpiBootPerformanceTable = (BOOT_PERFORMANCE_TABLE *) FpdtAllocateReservedMemoryBelow4G (BootPerformanceDataSize); > + mAcpiBootPerformanceTable = (BOOT_PERFORMANCE_TABLE *) AllocatePeiAccessiblePages ( > + EfiReservedMemoryType, > + EFI_SIZE_TO_PAGES (BootPerformanceDataSize) > + ); > } > DEBUG ((DEBUG_INFO, "FPDT: ACPI Boot Performance Table address = 0x%x\n", mAcpiBootPerformanceTable)); > if (mAcpiBootPerformanceTable == NULL) { > diff --git a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.inf b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.inf > index 8757bbd0aaa9..3d2dd6eb732f 100644 > --- a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.inf > +++ b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe.inf > @@ -44,6 +44,7 @@ [LibraryClasses] > UefiRuntimeServicesTableLib > BaseLib > DebugLib > + DxeServicesLib > TimerLib > BaseMemoryLib > MemoryAllocationLib > Reviewed-by: Laszlo Ersek