From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-it0-x235.google.com (mail-it0-x235.google.com [IPv6:2607:f8b0:4001:c0b::235]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 07A5B1A1E18 for ; Mon, 8 Aug 2016 01:50:15 -0700 (PDT) Received: by mail-it0-x235.google.com with SMTP id f6so76344203ith.0 for ; Mon, 08 Aug 2016 01:50:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=NXhg+u2zmT2FhBvfI74yNJPfP0G8SMVSeiQ//O3L2cA=; b=CtTX3+rCiPTx+LHbIYJuLL19wBKvgUf5XSGecw/nuoJpPMl8UJXuEGims8H4aoxbs9 UCLGjTN/6ZaCAoO/xnxCmUF8l7IAQRNcWciWvpMQ+QBqtWcePfnjlRCK1fvm+b0JNYUm PU2Bhf+U0t0Q0fgSKV5EiJVmLjJn6e+avYKmI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=NXhg+u2zmT2FhBvfI74yNJPfP0G8SMVSeiQ//O3L2cA=; b=BGu7c5HL7LIWdlceqaF+JOc6E96nzpoG1k0vGzqdQi5Q47Tq40JFxX/FnDIbjTb18s XYnFSFu6Fr9TXGFmA+6SWoIAqkeQauy0X/ySo+05erQVHIdp6P4mlTAloa32Qck24+SZ TColgskguVHy8tex7xK3Kplebt0URQ8yNYKLwCYfj9CoFY1iRFZShMIfqevu7MoaQTTV M7as0iFV3Ab2GM7zwd/ZAOsdm3VK1OLVOHTQSXmwMUDUDpD2T7hSa819+of+0uh95CDT HEnRE1A3A8+a+Xf/ASqSn2Q3YCFAinKR1xgvbyo8hlW+nbBliMk8mHKNbqYBYoyRTmAP KeGA== X-Gm-Message-State: AEkoouv7syHaCimJkCL7Hg1Uy8JNBJdT5LAjeJzixMQ4mNv6KHrI1VWE0sjLb3/2saK2NeEpcm4cBaICvwYMveXe X-Received: by 10.36.107.211 with SMTP id v202mr16038365itc.51.1470646214054; Mon, 08 Aug 2016 01:50:14 -0700 (PDT) MIME-Version: 1.0 Received: by 10.36.204.195 with HTTP; Mon, 8 Aug 2016 01:50:13 -0700 (PDT) In-Reply-To: References: From: Ard Biesheuvel Date: Mon, 8 Aug 2016 10:50:13 +0200 Message-ID: To: Michael Zimmermann Cc: edk2-devel-01 Subject: Re: ARM PrePI Memory setup recommendations X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Aug 2016 08:50:15 -0000 Content-Type: text/plain; charset=UTF-8 On 6 August 2016 at 13:05, Michael Zimmermann wrote: > Hi, > > I have some problems with my current setup and would like to ask you for the > best way to configure the following setup: > - I'm using PrePi, I don't need relocations because the loading address is > fixed(0xfe000000) > - The SystemMemory address range is unknown at compile time > - the system-memory consists of multiple ranges with holes so providing just > a base and a size is not enough > - There's no NOR, edk2 gets loaded into dram > > my current setup: > PcdSystemMemoryBase = loading addr(0xfe000000) > PcdSystemMemorySize = 32MB > FD_BASE = PcdSystemMemoryBase > FD_SIZE = 4MB > in ArmPlatformGetVirtualMemoryMap I call BuildResourceDescriptorHob for all > DRAM memory ranges. > In PrePiMain after MemoryPeim I call BuildMemoryAllocationHob for some > reserved memory ranges > > After running into out-of-memory errors during PrePi when using bigger FV's > I revisited everything and came across a PCD I somehow never looked at when > setting up my platform a year ago: PcdSystemMemoryUefiRegionSize. > this was hardcoded to 0x00e00000 which obviously caused allocation errors > while extracting big FV's even though PcdSystemMemorySize was big enough. > > Since there already was this nice comment 'PcdSystemMemorySize - PcdFdSize' > I did exactly that: 32MB-4MB = 28MB. > Unfortunately after doing that MdeModulePkg/Core/Dxe/Gcd/Gcd.c starts > bugging that he can't find a resource hob that contains the PHIT Hob. > Could you check the gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiXXX|nnnn definitions in your .DSC? Fairly recently, the core code was modified to use the sum of these definitions as an estimate of the minimally required allocation size, and it broke some other platforms in a similar way. > So now that my setup and problems are clear, the questions: > - Is it ok to define ResourceHob's that cover the PcdSystemMemory range? > - what can I do to fix the PHIT Hob problem? should PcdFdSize + > PcdSystemMemoryUefiRegionSize be smaller than PcdSystemMemorySize ? > - I took a quick look at ArmVirt where they change the PcdSystemMemory range > at runtime, but they use lots of custom code like their own MemoryPeiLib, > and I think everything but Xen uses PEIM instead of PrePi. Also as I said I > have more than one range so this would work anyway. > ArmVirtQemu uses PEIM, since it runs from [emulated] NOR flash. ArmVirtQemuKernel and ArmVirtXen use PrePi (the former is simply ArmVirtQemu with the FD executing from DRAM, using the QEMU '-kernel' option)