From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by mx.groups.io with SMTP id smtpd.web08.75038.1656957204463578843 for ; Mon, 04 Jul 2022 10:53:24 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=qMM14zDu; spf=pass (domain: kernel.org, ip: 139.178.84.217, mailfrom: ardb@kernel.org) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id D9D6C615F4; Mon, 4 Jul 2022 17:53:23 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DF514C3411E; Mon, 4 Jul 2022 17:53:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1656957203; bh=d4nM/YXfw5Owh7jVlruImQ4r5C+NvPZ5KJTSB9qH5F8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qMM14zDuh3bBXbrVsgp9YSn5Z/WpSU8cJOMkV6IqQOskHn8WpuS77DDN/dmnG43Sx F0QsU5du/akgGGQLCcj/prTGWkfDihOYaPUG59arp44NwYTgv8hBthl1bZSPn14fXR 3cXVek+Wxm1hEESCKk9PWRUr3a5bb2ZjgeYv3x3TS30qWLX2IqzKYSQVAezIp+7EAC Alpda341Z9HB9YUkTsy+dqePLHnO9Ugpdhv4HDEt0nNIEKYRcIs8tc3q54Ygmdx+M5 ZBFH+m05QfbyZ17O7unACJHOklmMX9JUO4lL8Xts7sdFz2B0qzEcGCdG5+CNL6ZOiD oaY0rkX4Rcugg== From: "Ard Biesheuvel" To: devel@edk2.groups.io Cc: quic_llindhol@quicinc.com, sami.mujawar@arm.com, Ard Biesheuvel , Marc Zyngier , Alexander Graf Subject: [PATCH 7/7] ArmVirtPkg/ArmVirtQemu: enable initial ID map at early boot Date: Mon, 4 Jul 2022 19:52:52 +0200 Message-Id: <20220704175252.4015120-8-ardb@kernel.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220704175252.4015120-1-ardb@kernel.org> References: <20220704175252.4015120-1-ardb@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Now that we have all the pieces in place, switch the AArch64 version of ArmVirtQemu to a mode where the first thing it does out of reset is enable a preliminary ID map that covers the NOR flash and sufficient DRAM to create the UEFI page tables as usual. The advantage of this is that no manipulation of memory occurs any longer before the MMU is enabled, which removes the need for explicit coherency management, which is cumbersome and bad for performance. Signed-off-by: Ard Biesheuvel --- ArmVirtPkg/ArmVirtQemu.dsc | 10 +++++++--- ArmVirtPkg/ArmVirtQemu.fdf | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc index 45c4a8fc84e0..0b673b6cb003 100644 --- a/ArmVirtPkg/ArmVirtQemu.dsc +++ b/ArmVirtPkg/ArmVirtQemu.dsc @@ -63,8 +63,6 @@ [LibraryClasses.common] QemuFwCfgSimpleParserLib|OvmfPkg/Library/QemuFwCfgSimpleParserLib/QemuFw= CfgSimpleParserLib.inf=0D QemuLoadImageLib|OvmfPkg/Library/GenericQemuLoadImageLib/GenericQemuLoad= ImageLib.inf=0D =0D - ArmPlatformLib|ArmPlatformPkg/Library/ArmPlatformLibNull/ArmPlatformLibN= ull.inf=0D -=0D TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf=0D NorFlashPlatformLib|ArmVirtPkg/Library/NorFlashQemuLib/NorFlashQemuLib.i= nf=0D =0D @@ -92,6 +90,12 @@ [LibraryClasses.common] TpmPlatformHierarchyLib|SecurityPkg/Library/PeiDxeTpmPlatformHierarchyLi= bNull/PeiDxeTpmPlatformHierarchyLib.inf=0D !endif=0D =0D +[LibraryClasses.AARCH64]=0D + ArmPlatformLib|ArmVirtPkg/Library/ArmPlatformLibQemu/ArmPlatformLibQemu.= inf=0D +=0D +[LibraryClasses.ARM]=0D + ArmPlatformLib|ArmPlatformPkg/Library/ArmPlatformLibNull/ArmPlatformLibN= ull.inf=0D +=0D [LibraryClasses.common.PEIM]=0D ArmVirtMemInfoLib|ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoP= eiLib.inf=0D =0D @@ -308,7 +312,7 @@ [Components.common] PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf=0D }=0D ArmPlatformPkg/PlatformPei/PlatformPeim.inf=0D - ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.inf=0D + ArmVirtPkg/MemoryInitPei/MemoryInitPeim.inf=0D ArmPkg/Drivers/CpuPei/CpuPei.inf=0D =0D MdeModulePkg/Universal/Variable/Pei/VariablePei.inf=0D diff --git a/ArmVirtPkg/ArmVirtQemu.fdf b/ArmVirtPkg/ArmVirtQemu.fdf index b5e2253295fe..7f17aeb3ad0d 100644 --- a/ArmVirtPkg/ArmVirtQemu.fdf +++ b/ArmVirtPkg/ArmVirtQemu.fdf @@ -107,7 +107,7 @@ [FV.FVMAIN_COMPACT] INF ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf=0D INF MdeModulePkg/Core/Pei/PeiMain.inf=0D INF ArmPlatformPkg/PlatformPei/PlatformPeim.inf=0D - INF ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.inf=0D + INF ArmVirtPkg/MemoryInitPei/MemoryInitPeim.inf=0D INF ArmPkg/Drivers/CpuPei/CpuPei.inf=0D INF MdeModulePkg/Universal/PCD/Pei/Pcd.inf=0D INF MdeModulePkg/Universal/Variable/Pei/VariablePei.inf=0D --=20 2.35.1