plat/arm: Remove option ARM_BOARD_OPTIMISE_MEM
authorAntonio Nino Diaz <antonio.ninodiaz@arm.com>
Fri, 28 Sep 2018 15:39:26 +0000 (16:39 +0100)
committerAntonio Nino Diaz <antonio.ninodiaz@arm.com>
Tue, 2 Oct 2018 13:00:32 +0000 (14:00 +0100)
This option makes it hard to optimize the memory definitions of all Arm
platforms because any change in the common defines must work in all of
them. The best thing to do is to remove it and move the definition to
each platform's header.

FVP, SGI and SGM were using the definitions in board_arm_def.h. The
definitions have been copied to each platform's platform_def.h. Juno
was already using the ones in platform_def.h, so there have been no
changes.

Change-Id: I9aecd11bbc72a3d0d7aad1ef9934d8df21dcfaf2
Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
docs/user-guide.rst
include/plat/arm/board/common/board_arm_def.h
plat/arm/board/common/board_common.mk
plat/arm/board/fvp/include/platform_def.h
plat/arm/board/juno/include/platform_def.h
plat/arm/board/juno/platform.mk
plat/arm/css/sgi/include/platform_def.h
plat/arm/css/sgm/include/sgm_base_platform_def.h

index 47a04a3152627f28ffdbfd5fbddb1c871993ddc6..2632329a2e2e59a7400341ca7bdb46051938eaee 100644 (file)
@@ -707,14 +707,6 @@ Arm development platform specific build options
    sets the TSP location to DRAM and ignores the ``ARM_TSP_RAM_LOCATION`` build
    flag.
 
--  ``ARM_BOARD_OPTIMISE_MEM``: Boolean option to enable or disable optimisation
-   of the memory reserved for each image. This affects the maximum size of each
-   BL image as well as the number of allocated memory regions and translation
-   tables. By default this flag is 0, which means it uses the default
-   unoptimised values for these macros. Arm development platforms that wish to
-   optimise memory usage need to set this flag to 1 and must override the
-   related macros.
-
 -  ``ARM_CONFIG_CNTACR``: boolean option to unlock access to the ``CNTBase<N>``
    frame registers by setting the ``CNTCTLBase.CNTACR<N>`` register bits. The
    frame number ``<N>`` is defined by ``PLAT_ARM_NSTIMER_FRAME_ID``, which should
index 9af8f8c43666c3d4f08ba632bc889ccafd9c0d5c..a9272080bb3f8897ff394d323a9c23797f34025f 100644 (file)
@@ -8,7 +8,6 @@
 
 #include <v2m_def.h>
 
-
 /*
  * Required platform porting definitions common to all ARM
  * development platforms
 # define PLATFORM_STACK_SIZE 0x440
 #endif
 
-/*
- * The constants below are not optimised for memory usage. Platforms that wish
- * to optimise these constants should set `ARM_BOARD_OPTIMISE_MEM` to 1 and
- * provide there own values.
- */
-#if !ARM_BOARD_OPTIMISE_MEM
-/*
- * PLAT_ARM_MMAP_ENTRIES depends on the number of entries in the
- * plat_arm_mmap array defined for each BL stage.
- *
- * Provide relatively optimised values for the runtime images (BL31 and BL32).
- * Optimisation is less important for the other, transient boot images so a
- * common, maximum value is used across these images.
- *
- * They are also used for the dynamically mapped regions in the images that
- * enable dynamic memory mapping.
- */
-#if defined(IMAGE_BL31)
-# if ENABLE_SPM
-#  define PLAT_ARM_MMAP_ENTRIES                9
-#  define MAX_XLAT_TABLES              7
-#  define PLAT_SP_IMAGE_MMAP_REGIONS   7
-#  define PLAT_SP_IMAGE_MAX_XLAT_TABLES        10
-# else
-#  define PLAT_ARM_MMAP_ENTRIES                8
-#  define MAX_XLAT_TABLES              5
-# endif
-#elif defined(IMAGE_BL32)
-# define PLAT_ARM_MMAP_ENTRIES         8
-# define MAX_XLAT_TABLES               5
-#elif !USE_ROMLIB
-# define PLAT_ARM_MMAP_ENTRIES         11
-# define MAX_XLAT_TABLES               5
-#else
-# define PLAT_ARM_MMAP_ENTRIES         12
-# define MAX_XLAT_TABLES               6
-#endif
-
-/*
- * PLAT_ARM_MAX_BL1_RW_SIZE is calculated using the current BL1 RW debug size
- * plus a little space for growth.
- */
-#define PLAT_ARM_MAX_BL1_RW_SIZE       0xB000
-
-/*
- * PLAT_ARM_MAX_ROMLIB_RW_SIZE is define to use a full page
- */
-
-#if USE_ROMLIB
-#define PLAT_ARM_MAX_ROMLIB_RW_SIZE    0x1000
-#define PLAT_ARM_MAX_ROMLIB_RO_SIZE    0xe000
-#else
-#define PLAT_ARM_MAX_ROMLIB_RW_SIZE    0
-#define PLAT_ARM_MAX_ROMLIB_RO_SIZE    0
-#endif
-
-/*
- * PLAT_ARM_MAX_BL2_SIZE is calculated using the current BL2 debug size plus a
- * little space for growth.
- */
-#if TRUSTED_BOARD_BOOT
-# define PLAT_ARM_MAX_BL2_SIZE         0x1D000
-#else
-# define PLAT_ARM_MAX_BL2_SIZE         0x11000
-#endif
-
-/*
- * Since BL31 NOBITS overlays BL2 and BL1-RW, PLAT_ARM_MAX_BL31_SIZE is
- * calculated using the current BL31 PROGBITS debug size plus the sizes of
- * BL2 and BL1-RW
- */
-#define PLAT_ARM_MAX_BL31_SIZE         0x3B000
-
-#ifdef AARCH32
-/*
- * Since BL32 NOBITS overlays BL2 and BL1-RW, PLAT_ARM_MAX_BL32_SIZE is
- * calculated using the current SP_MIN PROGBITS debug size plus the sizes of
- * BL2 and BL1-RW
- */
-# define PLAT_ARM_MAX_BL32_SIZE                0x3B000
-#endif
-
-#endif /* ARM_BOARD_OPTIMISE_MEM */
-
 #define MAX_IO_DEVICES                 3
 #define MAX_IO_HANDLES                 4
 
index af47c0defcef1015e50a094839c245bf2caf31da..8b46c4bee137f9541b0e3bea07dd5635256e9ec9 100644 (file)
@@ -43,10 +43,3 @@ ifneq (${TRUSTED_BOARD_BOOT},0)
     BL1_SOURCES                +=      plat/arm/board/common/board_arm_trusted_boot.c
     BL2_SOURCES                +=      plat/arm/board/common/board_arm_trusted_boot.c
 endif
-
-# This flag controls whether memory usage needs to be optimised
-ARM_BOARD_OPTIMISE_MEM ?=      0
-
-# Process flags
-$(eval $(call assert_boolean,ARM_BOARD_OPTIMISE_MEM))
-$(eval $(call add_define,ARM_BOARD_OPTIMISE_MEM))
index 44ab95365e0303ffa3c4825eaa6045a9f2c0ce99..e4df227d75568e01aeab94d10e1c924eafa168b4 100644 (file)
  */
 #define PLAT_ARM_NS_IMAGE_OFFSET       (ARM_DRAM1_BASE + U(0x8000000))
 
+/*
+ * PLAT_ARM_MMAP_ENTRIES depends on the number of entries in the
+ * plat_arm_mmap array defined for each BL stage.
+ */
+#if defined(IMAGE_BL31)
+# if ENABLE_SPM
+#  define PLAT_ARM_MMAP_ENTRIES                9
+#  define MAX_XLAT_TABLES              7
+#  define PLAT_SP_IMAGE_MMAP_REGIONS   7
+#  define PLAT_SP_IMAGE_MAX_XLAT_TABLES        10
+# else
+#  define PLAT_ARM_MMAP_ENTRIES                8
+#  define MAX_XLAT_TABLES              5
+# endif
+#elif defined(IMAGE_BL32)
+# define PLAT_ARM_MMAP_ENTRIES         8
+# define MAX_XLAT_TABLES               5
+#elif !USE_ROMLIB
+# define PLAT_ARM_MMAP_ENTRIES         11
+# define MAX_XLAT_TABLES               5
+#else
+# define PLAT_ARM_MMAP_ENTRIES         12
+# define MAX_XLAT_TABLES               6
+#endif
+
+/*
+ * PLAT_ARM_MAX_BL1_RW_SIZE is calculated using the current BL1 RW debug size
+ * plus a little space for growth.
+ */
+#define PLAT_ARM_MAX_BL1_RW_SIZE       0xB000
+
+/*
+ * PLAT_ARM_MAX_ROMLIB_RW_SIZE is define to use a full page
+ */
+
+#if USE_ROMLIB
+#define PLAT_ARM_MAX_ROMLIB_RW_SIZE    0x1000
+#define PLAT_ARM_MAX_ROMLIB_RO_SIZE    0xe000
+#else
+#define PLAT_ARM_MAX_ROMLIB_RW_SIZE    0
+#define PLAT_ARM_MAX_ROMLIB_RO_SIZE    0
+#endif
+
+/*
+ * PLAT_ARM_MAX_BL2_SIZE is calculated using the current BL2 debug size plus a
+ * little space for growth.
+ */
+#if TRUSTED_BOARD_BOOT
+# define PLAT_ARM_MAX_BL2_SIZE         0x1D000
+#else
+# define PLAT_ARM_MAX_BL2_SIZE         0x11000
+#endif
+
+/*
+ * Since BL31 NOBITS overlays BL2 and BL1-RW, PLAT_ARM_MAX_BL31_SIZE is
+ * calculated using the current BL31 PROGBITS debug size plus the sizes of
+ * BL2 and BL1-RW
+ */
+#define PLAT_ARM_MAX_BL31_SIZE         0x3B000
+
+#ifdef AARCH32
+/*
+ * Since BL32 NOBITS overlays BL2 and BL1-RW, PLAT_ARM_MAX_BL32_SIZE is
+ * calculated using the current SP_MIN PROGBITS debug size plus the sizes of
+ * BL2 and BL1-RW
+ */
+# define PLAT_ARM_MAX_BL32_SIZE                0x3B000
+#endif
 
 /*
  * PL011 related constants
index 3f71d7355ecc3b0711b0180512dc42b313a1afb8..d130bebe8ee2da3936fee3c0676c5b4066b17ad7 100644 (file)
 #define PLAT_ARM_TRUSTED_ROM_SIZE      0x00010000
 #endif /* TRUSTED_BOARD_BOOT */
 
-/*
- * If ARM_BOARD_OPTIMISE_MEM=0 then Juno uses the default, unoptimised values
- * defined for ARM development platforms.
- */
-#if ARM_BOARD_OPTIMISE_MEM
 /*
  * PLAT_ARM_MMAP_ENTRIES depends on the number of entries in the
  * plat_arm_mmap array defined for each BL stage.
  */
 #define PLAT_LOG_LEVEL_ASSERT          40
 
-#endif /* ARM_BOARD_OPTIMISE_MEM */
-
 /* CCI related constants */
 #define PLAT_ARM_CCI_BASE              0x2c090000
 #define PLAT_ARM_CCI_CLUSTER0_SL_IFACE_IX      4
index 67fc19adfc661bb87061702f30c32189c698f65b..90fa938a3991928f2af36b1bdb70994ca274731e 100644 (file)
@@ -115,9 +115,6 @@ ERRATA_A72_859971           :=      0
 # power down sequence
 SKIP_A57_L1_FLUSH_PWR_DWN      :=       1
 
-# Enable memory map related constants optimisation
-ARM_BOARD_OPTIMISE_MEM         :=      1
-
 # Do not enable SVE
 ENABLE_SVE_FOR_NS              :=      0
 
index ce86a75a91a8f78cd16f660ee6580b1b5fd35595..b87bded8f638f6efe6fddbfaa0cc8c51431e3363 100644 (file)
                                        CSS_SGI_MAX_CPUS_PER_CLUSTER * \
                                        CSS_SGI_MAX_PE_PER_CPU)
 
-#if ARM_BOARD_OPTIMISE_MEM
-
-#if defined(IMAGE_BL31) || defined(IMAGE_BL32)
-# define PLAT_ARM_MMAP_ENTRIES         6
-# define MAX_XLAT_TABLES               4
-#else
-# define PLAT_ARM_MMAP_ENTRIES         10
+/*
+ * PLAT_ARM_MMAP_ENTRIES depends on the number of entries in the
+ * plat_arm_mmap array defined for each BL stage.
+ */
+#if defined(IMAGE_BL31)
+# if ENABLE_SPM
+#  define PLAT_ARM_MMAP_ENTRIES                9
+#  define MAX_XLAT_TABLES              7
+#  define PLAT_SP_IMAGE_MMAP_REGIONS   7
+#  define PLAT_SP_IMAGE_MAX_XLAT_TABLES        10
+# else
+#  define PLAT_ARM_MMAP_ENTRIES                8
+#  define MAX_XLAT_TABLES              5
+# endif
+#elif defined(IMAGE_BL32)
+# define PLAT_ARM_MMAP_ENTRIES         8
+# define MAX_XLAT_TABLES               5
+#elif !USE_ROMLIB
+# define PLAT_ARM_MMAP_ENTRIES         11
 # define MAX_XLAT_TABLES               5
+#else
+# define PLAT_ARM_MMAP_ENTRIES         12
+# define MAX_XLAT_TABLES               6
 #endif
 
-#if TRUSTED_BOARD_BOOT
-# define PLAT_ARM_MAX_BL1_RW_SIZE      0xA000
+/*
+ * PLAT_ARM_MAX_BL1_RW_SIZE is calculated using the current BL1 RW debug size
+ * plus a little space for growth.
+ */
+#define PLAT_ARM_MAX_BL1_RW_SIZE       0xB000
+
+/*
+ * PLAT_ARM_MAX_ROMLIB_RW_SIZE is define to use a full page
+ */
+
+#if USE_ROMLIB
+#define PLAT_ARM_MAX_ROMLIB_RW_SIZE    0x1000
+#define PLAT_ARM_MAX_ROMLIB_RO_SIZE    0xe000
 #else
-# define PLAT_ARM_MAX_BL1_RW_SIZE      0x6000
+#define PLAT_ARM_MAX_ROMLIB_RW_SIZE    0
+#define PLAT_ARM_MAX_ROMLIB_RO_SIZE    0
 #endif
 
+/*
+ * PLAT_ARM_MAX_BL2_SIZE is calculated using the current BL2 debug size plus a
+ * little space for growth.
+ */
 #if TRUSTED_BOARD_BOOT
 # define PLAT_ARM_MAX_BL2_SIZE         0x1D000
 #else
-# define PLAT_ARM_MAX_BL2_SIZE         0xC000
+# define PLAT_ARM_MAX_BL2_SIZE         0x11000
 #endif
 
-#endif /* ARM_BOARD_OPTIMISE_MEM */
+/*
+ * Since BL31 NOBITS overlays BL2 and BL1-RW, PLAT_ARM_MAX_BL31_SIZE is
+ * calculated using the current BL31 PROGBITS debug size plus the sizes of
+ * BL2 and BL1-RW
+ */
+#define PLAT_ARM_MAX_BL31_SIZE         0x3B000
 
 #define PLAT_ARM_NSTIMER_FRAME_ID      0
 
index 2498430c49734f649f58efb47cf80aeb678acc90..7d35bd5e386e2df97e6ddf86f79b2a1fda01ce22 100644 (file)
  * Most platform porting definitions provided by included headers
  */
 
-/*
- * If ARM_BOARD_OPTIMISE_MEM=0 then use the default, unoptimised values
- * defined for ARM development platforms.
- */
-#if ARM_BOARD_OPTIMISE_MEM
 /*
  * PLAT_ARM_MMAP_ENTRIES depends on the number of entries in the
  * plat_arm_mmap array defined for each BL stage.
  */
-#if IMAGE_BL1
-# if TRUSTED_BOARD_BOOT
-#  define PLAT_ARM_MMAP_ENTRIES                7
-# else
-#  define PLAT_ARM_MMAP_ENTRIES                6
-# endif /* TRUSTED_BOARD_BOOT */
-#elif IMAGE_BL2
-#  define PLAT_ARM_MMAP_ENTRIES                8
-#elif IMAGE_BL2U
-#  define PLAT_ARM_MMAP_ENTRIES                4
-#elif IMAGE_BL31
-#  define PLAT_ARM_MMAP_ENTRIES                6
-#elif IMAGE_BL32
-#  define PLAT_ARM_MMAP_ENTRIES                5
+#if defined(IMAGE_BL31)
+# define PLAT_ARM_MMAP_ENTRIES         8
+# define MAX_XLAT_TABLES               5
+#elif defined(IMAGE_BL32)
+# define PLAT_ARM_MMAP_ENTRIES         8
+# define MAX_XLAT_TABLES               5
+#elif !USE_ROMLIB
+# define PLAT_ARM_MMAP_ENTRIES         11
+# define MAX_XLAT_TABLES               5
+#else
+# define PLAT_ARM_MMAP_ENTRIES         12
+# define MAX_XLAT_TABLES               6
 #endif
 
 /*
- * Platform specific page table and MMU setup constants
+ * PLAT_ARM_MAX_BL1_RW_SIZE is calculated using the current BL1 RW debug size
+ * plus a little space for growth.
  */
-#if IMAGE_BL1
-# if TRUSTED_BOARD_BOOT
-#  define MAX_XLAT_TABLES              4
-# else
-#  define MAX_XLAT_TABLES              3
-#endif
-#elif IMAGE_BL2
-#  define MAX_XLAT_TABLES              4
-#elif IMAGE_BL2U
-#  define MAX_XLAT_TABLES              4
-#elif IMAGE_BL31
-#  define MAX_XLAT_TABLES              2
-#elif IMAGE_BL32
-# if ARM_TSP_RAM_LOCATION_ID == ARM_DRAM_ID
-#  define MAX_XLAT_TABLES              3
-# else
-#  define MAX_XLAT_TABLES              2
-# endif
-#endif
+#define PLAT_ARM_MAX_BL1_RW_SIZE       0xB000
 
 /*
- * PLAT_ARM_MAX_BL1_RW_SIZE is calculated using the current BL1 RW debug size
- * plus a little space for growth.
+ * PLAT_ARM_MAX_ROMLIB_RW_SIZE is define to use a full page
  */
-#if TRUSTED_BOARD_BOOT
-# define PLAT_ARM_MAX_BL1_RW_SIZE      0xA000
+
+#if USE_ROMLIB
+#define PLAT_ARM_MAX_ROMLIB_RW_SIZE    0x1000
+#define PLAT_ARM_MAX_ROMLIB_RO_SIZE    0xe000
 #else
-# define PLAT_ARM_MAX_BL1_RW_SIZE      0x7000
+#define PLAT_ARM_MAX_ROMLIB_RW_SIZE    0
+#define PLAT_ARM_MAX_ROMLIB_RO_SIZE    0
 #endif
 
 /*
 #if TRUSTED_BOARD_BOOT
 # define PLAT_ARM_MAX_BL2_SIZE         0x1D000
 #else
-# define PLAT_ARM_MAX_BL2_SIZE         0xD000
+# define PLAT_ARM_MAX_BL2_SIZE         0x11000
 #endif
 
-#endif /* ARM_BOARD_OPTIMISE_MEM */
+/*
+ * Since BL31 NOBITS overlays BL2 and BL1-RW, PLAT_ARM_MAX_BL31_SIZE is
+ * calculated using the current BL31 PROGBITS debug size plus the sizes of
+ * BL2 and BL1-RW
+ */
+#define PLAT_ARM_MAX_BL31_SIZE         0x3B000
 
 /*******************************************************************************
  * Memprotect definitions