From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.cableone.net (mail.cableone.syn-alias.com [64.8.70.48]) (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 AAF211A1E4D for ; Mon, 3 Oct 2016 19:45:46 -0700 (PDT) X_CMAE_Category: , , X-CNFS-Analysis: v=2.2 cv=ZZVfDYdA c=1 sm=1 tr=0 a=F7HL8DhlWvVqsgDc77s/Qg==:117 a=FKkrIqjQGGEA:10 a=m0sRR0la7fUA:10 a=IkcTkHD0fZMA:10 a=20KFwNOVAAAA:8 a=otLtsZP2AAAA:8 a=i3X5FwGiAAAA:8 a=TSbVqHtbAAAA:8 a=6y9mIIUkAAAA:8 a=plQkw7jA_WB4bKSqjusA:9 a=TkWYNdCYu0IwrHxe:21 a=8NpRBM3GxPHSKbtV:21 a=QEXdDO2ut3YA:10 a=e_O65bzb51kRm2y5VmPK:22 a=gVyqtFkygESWxkzkOzyS:22 a=mmqRlSCDY2ywfjPLJ4af:22 a=NJcUIoPEKLAEIzHnl83t:22 a=BT1tkpHCJze4Rb8jY6gx:22 X-CM-Score: 0 X-Scanned-by: Cloudmark Authority Engine X-Authed-Username: c3BhbWNvbGxlY3RvckBjYWJsZW9uZS5uZXQ= Received: from [10.203.0.111] ([10.203.0.111:39858] helo=md11.cableone.synacor.com) by mail.cableone.net (envelope-from ) (ecelerity 3.6.6.45965 r(Core:3.6.6.0)) with ESMTP id 77/88-07644-9D713F75; Mon, 03 Oct 2016 22:45:45 -0400 Date: Mon, 3 Oct 2016 22:45:45 -0400 (EDT) From: spam collector To: Laszlo Ersek Cc: edk2-devel@ml01.01.org Message-ID: <812341546.91963700.1475549145141.JavaMail.zimbra@cableone.net> In-Reply-To: <9f2b0b8c-9bfb-dd73-f7cb-cd6df775c237@redhat.com> References: <1825038664.87486514.1475464584880.JavaMail.zimbra@cableone.net> <9f2b0b8c-9bfb-dd73-f7cb-cd6df775c237@redhat.com> MIME-Version: 1.0 X-Originating-IP: [174.126.140.68] X-Mailer: Zimbra 8.0.7_GA_6021 (ZimbraWebClient - FF49 (Win)/8.0.7_GA_6021) Thread-Topic: OVMF.fd and placement of EfiBootServicesData Thread-Index: rqAV7XxwaT3jk8W7kqy6ToG2ej3GVQ== Subject: Re: OVMF.fd and placement of EfiBootServicesData 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: Tue, 04 Oct 2016 02:45:46 -0000 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit ----- Original Message ----- > From: "Laszlo Ersek" > To: "spam collector" > Cc: edk2-devel@ml01.01.org > Sent: Monday, October 3, 2016 2:42:08 AM > Subject: Re: [edk2] OVMF.fd and placement of EfiBootServicesData > > On 10/03/16 05:16, spam collector wrote: > > Hello, > > Forgive me for not searching for this first, but gmane.org has > > been down for a little while. Therefore, forgive me if this > > question has been asked and answered. > > I am using OVMF.fd and QEMU for Windows and tried to load > > a large file to physical address 0x00800000. When an error > > was returned, I found that OVMF has reserved an amount of > > EfiBootServicesData within/around that location. > > Here is a memory dump using the BootServices MemoryMap Service: > > Start: 0x00000000->0x0009FFFF, Pgs: 160, EfiConventionalMem > > Start: 0x00100000->0x003FFFFF, Pgs: 768, EfiConventionalMem > > Start: 0x00400000->0x0040BFFF, Pgs: 12, EfiBootServicesCode > > Start: 0x0040C000->0x0081FFFF, Pgs: 1044, EfiConventionalMem > > Start: 0x00820000->0x00FFFFFF, Pgs: 2016, EfiBootServicesData > > Start: 0x01000000->0x0BFFFFFF, Pgs: 1044, EfiConventionalMem > > ... and so on > > Without the idea of "you should make your code relocatable, > > i.e.: not care where it is in memory", or if I say that I *must* have > > the memory from 0x00800000 to 0x00FFFFFFavailable, > > without re-building OVMF.fd, is there a way to tell the system > > to use a different address for that portion of EfiBootServiceCode? > > I tried manipulating NvVars with a few entries to no avail. > > I added the "LoadFixedAddressConfigurationTable" entry hoping > > that I could set a minimum location, too without success. > > So, without rebuilding OVMF.fd, which would require everyone > > whom wished to use my code to do so, or at least download it > > from me, and I don't like modified packages of other's work > > floating around, is there a why to tell OVMF.fd/the EFI system > > to not use memory below a certain address? > > Thank you in advance for your suggestions, > > Sorry, I don't think I can help. > > You can read about the OVMF memory map in the (now somewhat outdated) > OVMF whitepaper at > > http://www.linux-kvm.org/downloads/lersek/ovmf-whitepaper-c770f8c.txt > > section > > A comprehensive memory map of OVMF > > You'd like to place your stuff at 8192 KB .. 16384 KB, but as you can > see from the map, that exact range is heavily used by OVMF itself. > > (As I said, some of those exact values are no longer current, due to the > following commits since: > > 08df58ec3043 OvmfPkg: raise DXEFV size to 9 MB > 2f7b34b20842 OvmfPkg: raise DXEFV size to 10 MB > 45d870815156 OvmfPkg/PlatformPei: rebase and resize the permanent PEI > memory for S3 > 6b04cca4d697 OvmfPkg: remove PcdS3AcpiReservedMemoryBase, > PcdS3AcpiReservedMemorySize > > but the main layout remains the same.) > > Please consider making your code relocatable. Without sounding rude, and please do not take it as so, making my code relocatable due to the fact that the other code is not relocatable, sounds a little hypocritical. :-) Anyway, please don't take offense to that, it is just what first came to mind when I read it. Eventually I will make my code relocatable but at the moment that would be quite a re-write of many other parts of this project, and I am not ready or willing to do that yet. Yet... May I please suggest to the maintainers of this project to add a function that will allow a NvVars entry to indicate where the base of this "comprehensive memory map of OVMF" starts. Allow an entry within the NvVars file to "suggest" a base address and let the code accommodate as close as it can. Or even just a flag that states to use higher area memory when set, or lower area memory when clear. Some OS writers like to use high memory and leave low memory available while others like to use low memory and leave the remaining higher memory available. Just a humble suggestion. Thank you, Ben