[edk2,edk2-platforms,1/3] Platform/ARM: drop unused EmbeddedPkg Pcds

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
Related show

Commit Message

Leif Lindholm Feb. 6, 2018, 5:12 p.m.
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

Comments

Alexei Fedorov Feb. 8, 2018, 3:08 p.m. | #1
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
Leif Lindholm Feb. 8, 2018, 5:45 p.m. | #2
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
Ard Biesheuvel Feb. 8, 2018, 5:57 p.m. | #3
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

Patch

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