From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=209.132.183.28; helo=mx1.redhat.com; envelope-from=lersek@redhat.com; receiver=edk2-devel@lists.01.org Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) (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 19BCA2035BB0E for ; Tue, 21 Nov 2017 08:23:23 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id ECE92C056827; Tue, 21 Nov 2017 16:27:37 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-120-145.rdu2.redhat.com [10.10.120.145]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0810A6C429; Tue, 21 Nov 2017 16:27:36 +0000 (UTC) From: Laszlo Ersek To: Ard Biesheuvel , edk2-devel@lists.01.org Cc: leif.lindholm@linaro.org References: <20171117160913.17292-1-ard.biesheuvel@linaro.org> <20171117160913.17292-11-ard.biesheuvel@linaro.org> Message-ID: <428456f8-237a-89aa-2531-18ce18bb4c97@redhat.com> Date: Tue, 21 Nov 2017 17:27:35 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Tue, 21 Nov 2017 16:27:37 +0000 (UTC) Subject: Re: [PATCH 10/15] ArmVirtPkg: introduce ArmVirtMemInfoLib library class X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Nov 2017 16:23:23 -0000 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit On 11/21/17 17:23, Laszlo Ersek wrote: > On 11/17/17 17:09, Ard Biesheuvel wrote: >> As part of the effort to get rid of ArmPlatformLib (which incorporates >> far too many duties in a single library), introduce ArmVirtMemInfoLib >> which will be invoked by our ArmVirtMemoryInitPeiLib implementation to >> get a description of the virtual address space. This will allow us to >> remove this functionality from ArmPlatformLib later, or, in the case of >> ArmVirtXen and ArmVirtQemuKernel, drop ArmPlatformLib altogether. >> >> Contributed-under: TianoCore Contribution Agreement 1.1 >> Signed-off-by: Ard Biesheuvel >> --- >> ArmVirtPkg/ArmVirtPkg.dec | 3 ++ >> ArmVirtPkg/Include/Library/ArmVirtMemInfoLib.h | 39 ++++++++++++++++++++ >> 2 files changed, 42 insertions(+) >> >> diff --git a/ArmVirtPkg/ArmVirtPkg.dec b/ArmVirtPkg/ArmVirtPkg.dec >> index a8603e1b80e5..8f656fd2739d 100644 >> --- a/ArmVirtPkg/ArmVirtPkg.dec >> +++ b/ArmVirtPkg/ArmVirtPkg.dec >> @@ -30,6 +30,9 @@ [Defines] >> [Includes.common] >> Include # Root include for the package >> >> +[LibraryClasses] >> + ArmVirtMemInfoLib|Include/Library/ArmVirtMemInfoLib.h >> + >> [Guids.common] >> gArmVirtTokenSpaceGuid = { 0x0B6F5CA7, 0x4F53, 0x445A, { 0xB7, 0x6E, 0x2E, 0x36, 0x5B, 0x80, 0x63, 0x66 } } >> gEarlyPL011BaseAddressGuid = { 0xB199DEA9, 0xFD5C, 0x4A84, { 0x80, 0x82, 0x2F, 0x41, 0x70, 0x78, 0x03, 0x05 } } >> diff --git a/ArmVirtPkg/Include/Library/ArmVirtMemInfoLib.h b/ArmVirtPkg/Include/Library/ArmVirtMemInfoLib.h >> new file mode 100644 >> index 000000000000..65be2cbd8082 >> --- /dev/null >> +++ b/ArmVirtPkg/Include/Library/ArmVirtMemInfoLib.h >> @@ -0,0 +1,39 @@ >> +/** @file >> + >> + Copyright (c) 2011-2013, ARM Limited. All rights reserved. >> + Copyright (c) 2017, Linaro, Ltd. All rights reserved. >> + >> + This program and the accompanying materials are licensed and made available >> + under the terms and conditions of the BSD License which accompanies this >> + distribution. The full text of the license may be found at >> + http://opensource.org/licenses/bsd-license.php >> + >> + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, >> + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. >> + >> +**/ >> + >> +#ifndef _ARM_VIRT_MEMINFO_LIB_H_ >> +#define _ARM_VIRT_MEMINFO_LIB_H_ >> + >> +#include >> +#include >> + >> +/** >> + Return the Virtual Memory Map of your platform >> + >> + This Virtual Memory Map is used by MemoryInitPei Module to initialize the MMU >> + on your platform. >> + >> + @param[out] VirtualMemoryMap Array of ARM_MEMORY_REGION_DESCRIPTOR >> + describing a Physical-to-Virtual Memory >> + mapping. This array must be ended by a >> + zero-filled entry >> + >> +**/ >> +VOID >> +ArmVirtGetMemoryMap ( >> + OUT ARM_MEMORY_REGION_DESCRIPTOR **VirtualMemoryMap >> + ); >> + >> +#endif >> > > (1) Since this is a library API, please add EFIAPI to the declaration. > > (This will affect the instance(s) too.) > > > (2) If it's not overly restrictive, then please mention in the > "VirtualMemoryMap" param comment that the map is supposed to be > allocated dynamically within the function, using the phase-matching > MemoryAllocationLib instance. > > (Judged from the AllocatePages() call in > "ArmVirtPkg/Library/ArmQemuRelocatablePlatformLib/QemuVirtMem.c".) Looking at the patch right after this one, dynamic memory allocation appears wrong to spell out in the library interface. Then I guess the right thing to say would be, "the returned array is never supposed to be freed; it is released at the latest when the OS takes control". > With those addressed, > > Reviewed-by: Laszlo Ersek My R-b stands, just please clarify the expected lifetime of the array returned, one way or another. Thanks Laszlo