Message ID | 20180206171225.10676-1-leif.lindholm@linaro.org |
---|---|
State | New |
Headers | show |
Series | [edk2,edk2-platforms,1/3] Platform/ARM: drop unused EmbeddedPkg Pcds | expand |
This patch causes Juno and other ARM platforms to raise an assert during MMU initialisation in ArmConfigureMmu() (edk2\ArmPkg\Library\ArmMmuLib\AArch64\ArmMmuLibCore.c): ASSERT (TranslationTableAttribute == ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK || TranslationTableAttribute == ARM_MEMORY_REGION_ATTRIBUTE_NONSECURE_WRITE_BACK); see debug output: UEFI firmware (version built at 12:01:21 on Feb 8 2018) add-symbol-file n:\edk2\Build\ArmJuno\DEBUG_GCC5\AARCH64\ArmPlatformPkg\PrePi\PeiUniCore\DEBUG\ArmPlatformPrePiUniCore.dll 0xE0000800 ASSERT [ArmPlatformPrePiUniCore] n:\edk2\ArmPkg\Library\ArmMmuLib\AArch64\ArmMmuLibCore.c(744): TranslationTableAttribute == ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK || TranslationTableAttribute == ARM_MEMORY_REGION_ATTRIBUTE_NONSECURE_WRITE_BACK because removal of - gEmbeddedTokenSpaceGuid.PcdCacheEnable|TRUE from ArmVExpress.dsc.inc now makes ArmPlatformGetVirtualMemoryMap () function in \edk2-platforms\Platform\ARM\JunoPkg\Library\ArmJunoLib\ArmJunoMem.c use default FALSE value defined in EmbeddedPkg.dec: [PcdsFeatureFlag.common] gEmbeddedTokenSpaceGuid.PcdCacheEnable|FALSE|BOOLEAN|0x00000042 & set CacheAttributes to DDR_ATTRIBUTES_UNCACHED: if (FeaturePcdGet(PcdCacheEnable) == TRUE) { CacheAttributes = DDR_ATTRIBUTES_CACHED; } else { CacheAttributes = DDR_ATTRIBUTES_UNCACHED; } Thank you for your cooperation. Alexei. ________________________________ From: edk2-devel <edk2-devel-bounces@lists.01.org> on behalf of Leif Lindholm <leif.lindholm@linaro.org> Sent: 06 February 2018 17:12 To: edk2-devel@lists.01.org Cc: ard.biesheuvel@linaro.org Subject: [edk2] [PATCH edk2-platforms 1/3] Platform/ARM: drop unused EmbeddedPkg Pcds A set of mostly Ebl-related Pcds are about to be deleted from edk2. Delete references to them here to keep platforms building. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org> --- Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc b/Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc index 717f7332c9..b026ce3a42 100644 --- a/Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc +++ b/Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc @@ -257,20 +257,6 @@ [PcdsFeatureFlag.common] gEfiMdePkgTokenSpaceGuid.PcdComponentName2Disable|TRUE gEfiMdePkgTokenSpaceGuid.PcdDriverDiagnostics2Disable|TRUE - # - # Control what commands are supported from the UI - # Turn these on and off to add features or save size - # - gEmbeddedTokenSpaceGuid.PcdEmbeddedMacBoot|TRUE - gEmbeddedTokenSpaceGuid.PcdEmbeddedDirCmd|TRUE - gEmbeddedTokenSpaceGuid.PcdEmbeddedHobCmd|TRUE - gEmbeddedTokenSpaceGuid.PcdEmbeddedHwDebugCmd|TRUE - gEmbeddedTokenSpaceGuid.PcdEmbeddedPciDebugCmd|TRUE - gEmbeddedTokenSpaceGuid.PcdEmbeddedIoEnable|FALSE - gEmbeddedTokenSpaceGuid.PcdEmbeddedScriptCmd|FALSE - - gEmbeddedTokenSpaceGuid.PcdCacheEnable|TRUE - # Use the Vector Table location in CpuDxe. We will not copy the Vector Table at PcdCpuVectorBaseAddress gArmTokenSpaceGuid.PcdRelocateVectorTable|FALSE @@ -333,10 +319,6 @@ [PcdsFixedAtBuild.common] gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07 - gEmbeddedTokenSpaceGuid.PcdEmbeddedAutomaticBootCommand|"" - gEmbeddedTokenSpaceGuid.PcdEmbeddedDefaultTextColor|0x07 - gEmbeddedTokenSpaceGuid.PcdEmbeddedMemVariableStoreSize|0x10000 - # # Optional feature to help prevent EFI memory map fragments # Turned on and off via: PcdPrePiProduceMemoryTypeInformationHob -- 2.11.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you. _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
On Thu, Feb 08, 2018 at 03:08:19PM +0000, Alexei Fedorov wrote: > This patch causes Juno and other ARM platforms to raise an assert during MMU initialisation in ArmConfigureMmu() Huh... > (edk2\ArmPkg\Library\ArmMmuLib\AArch64\ArmMmuLibCore.c): > > > ASSERT (TranslationTableAttribute == ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK || > TranslationTableAttribute == ARM_MEMORY_REGION_ATTRIBUTE_NONSECURE_WRITE_BACK); > > > see debug output: > > UEFI firmware (version built at 12:01:21 on Feb 8 2018) > add-symbol-file n:\edk2\Build\ArmJuno\DEBUG_GCC5\AARCH64\ArmPlatformPkg\PrePi\PeiUniCore\DEBUG\ArmPlatformPrePiUniCore.dll 0xE0000800 > ASSERT [ArmPlatformPrePiUniCore] n:\edk2\ArmPkg\Library\ArmMmuLib\AArch64\ArmMmuLibCore.c(744): TranslationTableAttribute == ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK || TranslationTableAttribute == ARM_MEMORY_REGION_ATTRIBUTE_NONSECURE_WRITE_BACK > > because removal of > - gEmbeddedTokenSpaceGuid.PcdCacheEnable|TRUE > from ArmVExpress.dsc.inc now makes ArmPlatformGetVirtualMemoryMap () function in > \edk2-platforms\Platform\ARM\JunoPkg\Library\ArmJunoLib\ArmJunoMem.c > > use default FALSE value defined in EmbeddedPkg.dec: > > > [PcdsFeatureFlag.common] > gEmbeddedTokenSpaceGuid.PcdCacheEnable|FALSE|BOOLEAN|0x00000042 > > > & set CacheAttributes to DDR_ATTRIBUTES_UNCACHED: > > if (FeaturePcdGet(PcdCacheEnable) == TRUE) { > CacheAttributes = DDR_ATTRIBUTES_CACHED; > } else { > CacheAttributes = DDR_ATTRIBUTES_UNCACHED; > } So. I spent a while scratching my head here over how i didn't spot this when I did my final test build before generating the patches. Turns out, somewhere amongst my rebasing, gEmbeddedTokenSpaceGuid.PcdCacheEnable managed to reintroduce itself into EmbeddedPkg.dec (I explicitly deleted it). Since I _knew_ I'd deleted it, and all the platforms still built, I didn't bother grepping for it through all of edk2-platforms. Ho hum. Well, the fix is trivial - just excise it from all platforms, and turn all conditional statements into the unconditional execution of the TRUE path. There is no code in public trees that actually does anything different initialisation-wise depending on the value of this Pcd. Scream if you disagree. > Thank you for your cooperation. Thanks for reporting! / Leif > Alexei. > > ________________________________ > From: edk2-devel <edk2-devel-bounces@lists.01.org> on behalf of Leif Lindholm <leif.lindholm@linaro.org> > Sent: 06 February 2018 17:12 > To: edk2-devel@lists.01.org > Cc: ard.biesheuvel@linaro.org > Subject: [edk2] [PATCH edk2-platforms 1/3] Platform/ARM: drop unused EmbeddedPkg Pcds > > A set of mostly Ebl-related Pcds are about to be deleted from > edk2. Delete references to them here to keep platforms building. > > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org> > --- > Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc | 18 ------------------ > 1 file changed, 18 deletions(-) > > diff --git a/Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc b/Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc > index 717f7332c9..b026ce3a42 100644 > --- a/Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc > +++ b/Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc > @@ -257,20 +257,6 @@ [PcdsFeatureFlag.common] > gEfiMdePkgTokenSpaceGuid.PcdComponentName2Disable|TRUE > gEfiMdePkgTokenSpaceGuid.PcdDriverDiagnostics2Disable|TRUE > > - # > - # Control what commands are supported from the UI > - # Turn these on and off to add features or save size > - # > - gEmbeddedTokenSpaceGuid.PcdEmbeddedMacBoot|TRUE > - gEmbeddedTokenSpaceGuid.PcdEmbeddedDirCmd|TRUE > - gEmbeddedTokenSpaceGuid.PcdEmbeddedHobCmd|TRUE > - gEmbeddedTokenSpaceGuid.PcdEmbeddedHwDebugCmd|TRUE > - gEmbeddedTokenSpaceGuid.PcdEmbeddedPciDebugCmd|TRUE > - gEmbeddedTokenSpaceGuid.PcdEmbeddedIoEnable|FALSE > - gEmbeddedTokenSpaceGuid.PcdEmbeddedScriptCmd|FALSE > - > - gEmbeddedTokenSpaceGuid.PcdCacheEnable|TRUE > - > # Use the Vector Table location in CpuDxe. We will not copy the Vector Table at PcdCpuVectorBaseAddress > gArmTokenSpaceGuid.PcdRelocateVectorTable|FALSE > > @@ -333,10 +319,6 @@ [PcdsFixedAtBuild.common] > > gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07 > > - gEmbeddedTokenSpaceGuid.PcdEmbeddedAutomaticBootCommand|"" > - gEmbeddedTokenSpaceGuid.PcdEmbeddedDefaultTextColor|0x07 > - gEmbeddedTokenSpaceGuid.PcdEmbeddedMemVariableStoreSize|0x10000 > - > # > # Optional feature to help prevent EFI memory map fragments > # Turned on and off via: PcdPrePiProduceMemoryTypeInformationHob > -- > 2.11.0 > > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel > IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you. _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
On 8 February 2018 at 17:45, Leif Lindholm <leif.lindholm@linaro.org> wrote: > On Thu, Feb 08, 2018 at 03:08:19PM +0000, Alexei Fedorov wrote: >> This patch causes Juno and other ARM platforms to raise an assert during MMU initialisation in ArmConfigureMmu() > > Huh... > >> (edk2\ArmPkg\Library\ArmMmuLib\AArch64\ArmMmuLibCore.c): >> >> >> ASSERT (TranslationTableAttribute == ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK || >> TranslationTableAttribute == ARM_MEMORY_REGION_ATTRIBUTE_NONSECURE_WRITE_BACK); >> >> >> see debug output: >> >> UEFI firmware (version built at 12:01:21 on Feb 8 2018) >> add-symbol-file n:\edk2\Build\ArmJuno\DEBUG_GCC5\AARCH64\ArmPlatformPkg\PrePi\PeiUniCore\DEBUG\ArmPlatformPrePiUniCore.dll 0xE0000800 >> ASSERT [ArmPlatformPrePiUniCore] n:\edk2\ArmPkg\Library\ArmMmuLib\AArch64\ArmMmuLibCore.c(744): TranslationTableAttribute == ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK || TranslationTableAttribute == ARM_MEMORY_REGION_ATTRIBUTE_NONSECURE_WRITE_BACK >> >> because removal of >> - gEmbeddedTokenSpaceGuid.PcdCacheEnable|TRUE >> from ArmVExpress.dsc.inc now makes ArmPlatformGetVirtualMemoryMap () function in >> \edk2-platforms\Platform\ARM\JunoPkg\Library\ArmJunoLib\ArmJunoMem.c >> >> use default FALSE value defined in EmbeddedPkg.dec: >> >> >> [PcdsFeatureFlag.common] >> gEmbeddedTokenSpaceGuid.PcdCacheEnable|FALSE|BOOLEAN|0x00000042 >> >> >> & set CacheAttributes to DDR_ATTRIBUTES_UNCACHED: >> >> if (FeaturePcdGet(PcdCacheEnable) == TRUE) { >> CacheAttributes = DDR_ATTRIBUTES_CACHED; >> } else { >> CacheAttributes = DDR_ATTRIBUTES_UNCACHED; >> } > > So. I spent a while scratching my head here over how i didn't spot > this when I did my final test build before generating the patches. > > Turns out, somewhere amongst my rebasing, > gEmbeddedTokenSpaceGuid.PcdCacheEnable managed to reintroduce itself > into EmbeddedPkg.dec (I explicitly deleted it). > > Since I _knew_ I'd deleted it, and all the platforms still built, I > didn't bother grepping for it through all of edk2-platforms. > > Ho hum. > > Well, the fix is trivial - just excise it from all platforms, and turn > all conditional statements into the unconditional execution of the > TRUE path. There is no code in public trees that actually does > anything different initialisation-wise depending on the value of this > Pcd. > > Scream if you disagree. > My vote would be to get rid of it entirely. These days, uncached means non-coherent, which breaks all sorts of assumptions in UEFI itself but also in Trusted Firmware. _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
diff --git a/Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc b/Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc index 717f7332c9..b026ce3a42 100644 --- a/Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc +++ b/Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc @@ -257,20 +257,6 @@ [PcdsFeatureFlag.common] gEfiMdePkgTokenSpaceGuid.PcdComponentName2Disable|TRUE gEfiMdePkgTokenSpaceGuid.PcdDriverDiagnostics2Disable|TRUE - # - # Control what commands are supported from the UI - # Turn these on and off to add features or save size - # - gEmbeddedTokenSpaceGuid.PcdEmbeddedMacBoot|TRUE - gEmbeddedTokenSpaceGuid.PcdEmbeddedDirCmd|TRUE - gEmbeddedTokenSpaceGuid.PcdEmbeddedHobCmd|TRUE - gEmbeddedTokenSpaceGuid.PcdEmbeddedHwDebugCmd|TRUE - gEmbeddedTokenSpaceGuid.PcdEmbeddedPciDebugCmd|TRUE - gEmbeddedTokenSpaceGuid.PcdEmbeddedIoEnable|FALSE - gEmbeddedTokenSpaceGuid.PcdEmbeddedScriptCmd|FALSE - - gEmbeddedTokenSpaceGuid.PcdCacheEnable|TRUE - # Use the Vector Table location in CpuDxe. We will not copy the Vector Table at PcdCpuVectorBaseAddress gArmTokenSpaceGuid.PcdRelocateVectorTable|FALSE @@ -333,10 +319,6 @@ [PcdsFixedAtBuild.common] gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x07 - gEmbeddedTokenSpaceGuid.PcdEmbeddedAutomaticBootCommand|"" - gEmbeddedTokenSpaceGuid.PcdEmbeddedDefaultTextColor|0x07 - gEmbeddedTokenSpaceGuid.PcdEmbeddedMemVariableStoreSize|0x10000 - # # Optional feature to help prevent EFI memory map fragments # Turned on and off via: PcdPrePiProduceMemoryTypeInformationHob
A set of mostly Ebl-related Pcds are about to be deleted from edk2. Delete references to them here to keep platforms building. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org> --- Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc | 18 ------------------ 1 file changed, 18 deletions(-) -- 2.11.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel