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 61DB721BADAB2 for ; Thu, 24 May 2018 05:50:00 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A30B4401EF0E; Thu, 24 May 2018 12:49:59 +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 410412026DEF; Thu, 24 May 2018 12:49:58 +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-5-ard.biesheuvel@linaro.org> From: Laszlo Ersek Message-ID: Date: Thu, 24 May 2018 14:49:56 +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-5-ard.biesheuvel@linaro.org> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 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:49:59 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.5]); Thu, 24 May 2018 12:49:59 +0000 (UTC) for IP:'10.11.54.4' DOMAIN:'int-mx04.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'lersek@redhat.com' RCPT:'' Subject: Re: [PATCH v2 4/5] MdeModulePkg/DxeCorePerformanceLib: 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:50:00 -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 the subsequent CopyMem() call supersedes it immediately. I'm not sure the ZeroMem() is redundant. The allocation size -- before rounding up to full pages -- is computed like this: BootPerformanceDataSize = sizeof (BOOT_PERFORMANCE_TABLE) + mPerformanceLength + PcdGet32 (PcdExtFpdtBootRecordPadSize); if (SmmCommData != NULL && SmmBootRecordData != NULL) { BootPerformanceDataSize += SmmBootRecordDataSize; } ZeroMem() covers all of the above, but the CopyMem() calls don't seem to cover the optional padding (from the PCD). I'm unsure if that matters, of course. The patch looks good to me otherwise. Thanks Laszlo > > MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c | 45 ++------------------ > 1 file changed, 4 insertions(+), 41 deletions(-) > > diff --git a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c > index 71d624fc9ce9..b1f09710b65c 100644 > --- a/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c > +++ b/MdeModulePkg/Library/DxeCorePerformanceLib/DxeCorePerformanceLib.c > @@ -165,46 +165,6 @@ IsKnownID ( > } > } > > -/** > - 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; > -} > - > /** > Allocate buffer for Boot Performance table. > > @@ -348,7 +308,10 @@ AllocateBootPerformanceTable ( > // > // 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, "DxeCorePerformanceLib: ACPI Boot Performance Table address = 0x%x\n", mAcpiBootPerformanceTable)); > >