From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2607:f8b0:4864:20::12d; helo=mail-it1-x12d.google.com; envelope-from=ard.biesheuvel@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-it1-x12d.google.com (mail-it1-x12d.google.com [IPv6:2607:f8b0:4864:20::12d]) (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 78212211944D6 for ; Thu, 29 Nov 2018 09:59:58 -0800 (PST) Received: by mail-it1-x12d.google.com with SMTP id h65so5070916ith.3 for ; Thu, 29 Nov 2018 09:59:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=+/h2y3LnMvqkDjdcsklAfEUJpidUQRuT5kLxaPil7EY=; b=NA+fLqSKGIzd//Kp7csLXmcgXd0v8b62iPsr3tyeY60aKMJT2slJ3eKXFLyYYcoBd4 vHeCWSDtY8JWreXgWiqY4DzlSHhB3ZkPXbCGz48b/WWd+W2u39IgmCMvdxi2xgb/sSy0 IixzmMQsLcLiBCtdNrziGwpI8e2iH60TdBiX4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=+/h2y3LnMvqkDjdcsklAfEUJpidUQRuT5kLxaPil7EY=; b=fjQXk1IXy7NJagFuazSPn/ZqtBHIHz0evNUo/ydZFTa0Cam6LxE0aunf8q1isuO+5K yZfJgwv/1WYeqekCfj6V/aj1RxbIh/SSul3/v2JiN5/GdIvqv8xAwnul4Rr+am+KtCVV GWHf/MS8M1bDt/xVBn9WbPdobwzGp6Mok+tBMhZn2QjJC8iJvZt5V6DKqPw2vPux1G9u XGtdx/tal4eBBX6papLSRN+KMZCqzd92vUoHAgpExeDdm3nJabBkbnLj/G/vkLw4V9uq IAkY+zcTopcX7Xa3cLahFeWV1KgsL3YCuBReo7VZOw9Csr4szgERebOP+8QF0Qn/mfRA JzDA== X-Gm-Message-State: AA+aEWYT4VoYEUJD4UjKiKAL/+IirxTnzd0s3aeHn7tN7/gaMixgbCpH q3Ofy6BZP+4xxW8aN14Kew5gLEC1czbyNW/6b0NfeD3nqyM= X-Google-Smtp-Source: AFSGD/XFU1jfPhGg6kKjpotbAuqk7EDkeCw0fCkJRjEuayiPkbqT46QhFOdvBoOmxABLZRpwwjwqkOpbLqVccf5IFj0= X-Received: by 2002:a24:710:: with SMTP id f16mr2152385itf.121.1543514397280; Thu, 29 Nov 2018 09:59:57 -0800 (PST) MIME-Version: 1.0 References: <20181128143357.991-1-ard.biesheuvel@linaro.org> In-Reply-To: <20181128143357.991-1-ard.biesheuvel@linaro.org> From: Ard Biesheuvel Date: Thu, 29 Nov 2018 18:59:45 +0100 Message-ID: To: "edk2-devel@lists.01.org" Cc: Laszlo Ersek , Leif Lindholm , Auger Eric , Andrew Jones , =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= , Julien Grall Subject: Re: [PATCH v3 00/16] [Arm|ArmVirt|MdePkg|Embedded]Pkg: lift 40-bit IPA space limit X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 29 Nov 2018 17:59:58 -0000 Content-Type: text/plain; charset="UTF-8" On Wed, 28 Nov 2018 at 15:34, Ard Biesheuvel wrote: > > This v3 subsumes and/or supersedes > > [PATCH v2 00/13] ArmPkg, ArmVirtPkg: lift 40-bit IPA space limit > [PATCH] MdePkg/ProcessorBind.h AARCH64: limit MAX_ADDRESS to 48 bits > [PATCH v2 0/2] ArmVirtPkg: remove high peripheral space mapping > > The ArmVirtQemu targets currently limit the size of the IPA space to > 40 bits because that is all what KVM supports. However, this is about > to change, and so we need to update the code if we want to ensure that > our UEFI firmware builds can keep running on systems that set values > other than 40 (which could be > 40 or < 40) > > This series refactors how we handle the maximum size of the physical > address space supported by the CPU in relation with the size of UEFI's > 1:1 mapping and the size of the GCD memory space map, taking the following > observations into account: > - the range of the linear mapping can be tied to whatever the CPU supports > (as long as it doesn't exceed what the architecture permits for 4k pages) > since we mostly already use the maximum of 4 levels anyway, and there is > no memory cost involved beyond that > - there is usually no point in mapping the entire address space, which does > involve a memory cost > - the GCD memory space may be required to cover more than what UEFI can > address itself, since it is the based for the UEFI memory map that is > provided to the OS > > Patches #1 and #2 remove some unused code to avoid having to fix it. > > Patches #3 and #4 update ArmVirtQemu and ArmVirtQemuKernel to drop the high > peripheral space mapping, and map whatever may reside there explicitly > (currently only the ECAM space in practice, but the MMIO view of the PCI > I/O space is mapped explicitly as well) > > Patch #5 was sent out before individually, and sets MAX_ADDRESS to the > maximum value AArch64 can map in UEFI which runs with 4k pages. > > Patch #6 adds a helper to ArmLib to read the number of supported address > bits and take this into account in the page table code (#8), which allows > PcdPrePiCpuMemorySize to assume a value that exceeds the capabilities of > the CPU. > > Patch #7 is mostly a cleanup patch, to switch to the new helper added in > patch #6. No functional changes intended. > > Patches #9 to #12 modify building of the CPU hob (and thus the size of the > GCD memory space) based on the CPU capabilities rather than the value of > PcdPrePiCpuMemorySize, which is dropped in the last patch. > > Pacthes #13 and #14 remove some needless references to PcdPrePiCpuMemorySize > > Patch #15 drops the overrides of PcdPrePiCpuMemorySize from all ArmVirtPkg > platforms. > > Cc: Laszlo Ersek > Cc: Leif Lindholm > Cc: Eric Auger > Cc: Andrew Jones > Cc: Philippe Mathieu-Daude > Cc: Julien Grall > > Ard Biesheuvel (16): > EmbeddedPkg/TemplateSec: remove unused module > EmbeddedPkg/PrePiHobLib: drop CreateHobList() from library > ArmVirtPkg/FdtPciHostBridgeLib: map ECAM and I/O spaces in GCD memory > map > ArmVirtPkg/QemuVirtMemInfoLib: remove 1:1 mapping of top of PA range > MdePkg/ProcessorBind.h AARCH64: limit MAX_ADDRESS to 48 bits > ArmPkg/ArmLib: add support for reading the max physical address space > size > ArmVirtPkg/XenVirtMemInfoLib: refactor reading of the PA space size > ArmPkg/ArmMmuLib: take the CPU supported maximum PA space into account > ArmPkg/CpuPei: base GCD memory space size on CPU's PA range > ArmPlatformPkg/PrePi: base GCD memory space size on CPU's PA range > ArmVirtPkg/PrePi: base GCD memory space size on CPU's PA range > BeagleBoardPkg/PrePi: base GCD memory space size on CPU's PA range > ArmPlatformPkg/PlatformPei: drop unused PCD references > EmbeddedPkg/PrePiLib: drop unused PCD reference > ArmVirtPkg: drop PcdPrePiCpuMemorySize assignments from all platforms > EmbeddedPkg/EmbeddedPkg.dec: drop PcdPrePiCpuMemorySize declarations > Thanks all for the reviews. Patches #1 .. #15 pushed as e979ea74aa14..55342094fb86 Patch #16 needs to wait until edk2-platforms is brought up to date with the removal of PcdPrePiCpuMemorySize