From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: citrix.com, ip: 216.71.145.153, mailfrom: anthony.perard@citrix.com) Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com [216.71.145.153]) by groups.io with SMTP; Wed, 24 Jul 2019 09:18:02 -0700 Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=anthony.perard@citrix.com; spf=Pass smtp.mailfrom=anthony.perard@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: None (esa2.hc3370-68.iphmx.com: no sender authenticity information available from domain of anthony.perard@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa2.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="anthony.perard@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa2.hc3370-68.iphmx.com: domain of anthony.perard@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa2.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="anthony.perard@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ~all" Received-SPF: None (esa2.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa2.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: aBUuMBHOJALsZHlyDAUE7yyp9y+08G1hV1EQUVZvhseDSaS0jolXcvYJ7YxLzDxqQ8Z56EpDdq hlOv4DjpcSRF4Z15WDW0Itwaki5mDNGgj+CAiS8pHnogyw3pp3ZNaTJ7pTHfOZwO5SI4yiV79W rl8LUW8ofYMa485cIOYm/2jTcuJOSLkkyt/3m+IfqcYjZkmMoIU7pDyjnhqofA3GvF4bjVxcY6 nvPpArWSe/rC5KRFaqfdTsqb1QmKcrbAlQ1qzYnO9JBMJi+mZdejATzYpR/7j6qEUhfSEYR6ZX kIc= X-SBRS: 2.7 X-MesageID: 3377769 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.64,303,1559534400"; d="scan'208";a="3377769" Date: Wed, 24 Jul 2019 17:17:59 +0100 From: "Anthony PERARD" To: Roger Pau =?iso-8859-1?Q?Monn=E9?= CC: , , Ard Biesheuvel , Jordan Justen , Laszlo Ersek , Julien Grall , "Andrew Cooper" Subject: Re: [PATCH v3 24/35] OvmfPkg/XenPlatformPei: Rework memory detection Message-ID: <20190724161759.GB1242@perard.uk.xensource.com> References: <20190704144233.27968-1-anthony.perard@citrix.com> <20190704144233.27968-25-anthony.perard@citrix.com> <20190715141521.aqmpchgzyleoergc@MacBook-Air-de-Roger.local> <20190722145319.GG1208@perard.uk.xensource.com> <20190723094207.ccnzyzuma4ydpugi@Air-de-Roger> MIME-Version: 1.0 In-Reply-To: <20190723094207.ccnzyzuma4ydpugi@Air-de-Roger> User-Agent: Mutt/1.12.1 (2019-06-15) Return-Path: anthony.perard@citrix.com Content-Type: text/plain; charset="iso-8859-1" Content-Disposition: inline Content-Transfer-Encoding: 8bit On Tue, Jul 23, 2019 at 11:42:07AM +0200, Roger Pau Monné wrote: > On Mon, Jul 22, 2019 at 03:53:19PM +0100, Anthony PERARD wrote: > > On Mon, Jul 15, 2019 at 04:15:21PM +0200, Roger Pau Monné wrote: > > > On Thu, Jul 04, 2019 at 03:42:22PM +0100, Anthony PERARD wrote: > > > > + // error message: CpuDxe: IntersectMemoryDescriptor: > > > > + // desc [FC000000, 100000000) type 1 cap 8700000000026001 > > > > + // conflicts with aperture [FEE00000, FEE01000) cap 1 > > > > // > > > > - if (Entry->Type != EfiAcpiAddressRangeMemory) { > > > > - continue; > > > > + if (!XenHvmloaderDetected ()) { > > > > + AddReservedMemoryBaseSizeHob (Base, End - Base, FALSE); > > > > > > This special casing for PVH looks weird, ideally we would like to use > > > the same code path, or else it should be explicitly mentioned why PVH > > > has diverging behaviour. > > > > I think hvmloader is the issue rather than PVH. Here is part of the > > "memory map" as found in hvmloader/config.h: > > > > /* Special BIOS mappings, etc. are allocated from here upwards... */ > > #define RESERVED_MEMBASE 0xFC000000 > > /* NB. ACPI_INFO_PHYSICAL_ADDRESS *MUST* match definition in acpi/dsdt.asl! */ > > #define ACPI_INFO_PHYSICAL_ADDRESS 0xFC000000 > > #define RESERVED_MEMORY_DYNAMIC_START 0xFC001000 > > #define RESERVED_MEMORY_DYNAMIC_END 0xFE000000 > > > > and hvmloader simply creates a single e820 reserved entry, from > > RESERVED_MEMBASE to the top of 4GB. It's probably too much. > > But isn't this kind of dangerous? How can you assure future versions > of hvmloader won't use this space? > > > If hvmloader only reserved > > ACPI_INFO_PHYSICAL_ADDRESS-RESERVED_MEMORY_DYNAMIC_END, I might not have > > to special case hvmloader. > > Could we look into getting this fixed in hvmloader then? > > I think it's dangerous for OVMF to play such tricks with the memory > map. > > > As far as I know 0xfee00000 isn't a special > > bios mapping, but something the hardware provides. > > Yes, that's used by the lapic, so it's not specific to hvmloader. Right, I've got a closer look at that CpuDxe module, it wants the local APIC memory mapped space to be "mapped IO", and that different than "reserved". So while parsing the e820 from hvmloader, instead of ignoring all reserved region, I'm going to avoid adding the local apic memory mapped space. something like: if (hvmloaderDetected()) Base = $(start of the e820 entry); End = $(start of the e820 entry + size); LocalApic = 0xfee00000; if (Base < LocalApic && LocalApic < End) { AddReservedMemoryRangeHob (Base, LocalApic, FALSE); if (End > (LocalApic + SIZE_4KB)) { AddReservedMemoryRangeHob (LocalApic + SIZE_4KB, End, FALSE); } } } Also, I will always add the 0xfee00000 as mapped IO, CpuDxe will not complain as the region will be of the expected type. I think with that change (and the other about the ACPI entries), everything from the e820 table will be put into OVMF's memory map. -- Anthony PERARD