Minor fixes to the xlat tables lib v2
authorAntonio Nino Diaz <antonio.ninodiaz@arm.com>
Mon, 8 May 2017 15:43:53 +0000 (16:43 +0100)
committerAntonio Nino Diaz <antonio.ninodiaz@arm.com>
Tue, 9 May 2017 10:05:05 +0000 (11:05 +0100)
- Fix some comments.
- Remove duplicated definition.
- Make xlat_arch_get_max_supported_pa() private in aarch64.

Change-Id: I629237209cfb2ce7b0c4bd539d63dd81d45b2edd
Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
include/lib/xlat_tables/xlat_tables_v2.h
lib/xlat_tables_v2/aarch64/xlat_tables_arch.c
lib/xlat_tables_v2/xlat_tables_common.c
lib/xlat_tables_v2/xlat_tables_private.h

index 2c27e3cd68f1649d43b0e7ab88bef6f3f16b8ae5..e7ed23378c29f9c68af7b53ca1e78c30c990fe7b 100644 (file)
@@ -83,18 +83,25 @@ typedef struct mmap_region {
 } mmap_region_t;
 
 /* Generic translation table APIs */
+
+/*
+ * Initialize translation tables from the current list of mmap regions. Calling
+ * this function marks the transition point after which static regions can no
+ * longer be added.
+ */
 void init_xlat_tables(void);
 
 /*
- * Add a region with defined base PA and base VA. This type of region can only
- * be added before initializing the MMU and cannot be removed later.
+ * Add a static region with defined base PA and base VA. This function can only
+ * be used before initializing the translation tables. The region cannot be
+ * removed afterwards.
  */
 void mmap_add_region(unsigned long long base_pa, uintptr_t base_va,
                                size_t size, mmap_attr_t attr);
 
 /*
- * Add a region with defined base PA and base VA. This type of region can be
- * added and removed even if the MMU is enabled.
+ * Add a dynamic region with defined base PA and base VA. This type of region
+ * can be added and removed even after the translation tables are initialized.
  *
  * Returns:
  *        0: Success.
@@ -107,15 +114,16 @@ int mmap_add_dynamic_region(unsigned long long base_pa, uintptr_t base_va,
                                size_t size, mmap_attr_t attr);
 
 /*
- * Add an array of static regions with defined base PA and base VA. This type
- * of region can only be added before initializing the MMU and cannot be
- * removed later.
+ * Add an array of static regions with defined base PA and base VA. This
+ * function can only be used before initializing the translation tables. The
+ * regions cannot be removed afterwards.
  */
 void mmap_add(const mmap_region_t *mm);
 
 /*
  * Remove a region with the specified base VA and size. Only dynamic regions can
- * be removed, and they can be removed even if the MMU is enabled.
+ * be removed, and they can be removed even if the translation tables are
+ * initialized.
  *
  * Returns:
  *        0: Success.
index cc41fc3ee1f420b8b51bfdbe697a1b67d8ae93a6..14f6cd6a037385e0c8c4e9a93b1f4b0b2fd1961c 100644 (file)
@@ -60,7 +60,7 @@ static const unsigned int pa_range_bits_arr[] = {
        PARANGE_0101
 };
 
-unsigned long long xlat_arch_get_max_supported_pa(void)
+static unsigned long long xlat_arch_get_max_supported_pa(void)
 {
        u_register_t pa_range = read_id_aa64mmfr0_el1() &
                                                ID_AA64MMFR0_EL1_PARANGE_MASK;
index a6f3b7ce6706ad18df98c41d0a00433a928b02e9..f20bf93ac3e8e42cfc5c8d73d490c7f12568c398 100644 (file)
@@ -34,8 +34,6 @@ static uint64_t tf_xlat_tables[MAX_XLAT_TABLES][XLAT_TABLE_ENTRIES]
 static uint64_t tf_base_xlat_table[NUM_BASE_LEVEL_ENTRIES]
                __aligned(NUM_BASE_LEVEL_ENTRIES * sizeof(uint64_t));
 
-static mmap_region_t tf_mmap[MAX_MMAP_REGIONS + 1];
-
 #if PLAT_XLAT_TABLES_DYNAMIC
 static int xlat_tables_mapped_regions[MAX_XLAT_TABLES];
 #endif /* PLAT_XLAT_TABLES_DYNAMIC */
index 07bf39f1484ddda4c5fa7f0ae7ea4da3b32dbd47..7b3e555ec9add54ff2e4bf7a2269bc597d0da7d8 100644 (file)
@@ -47,8 +47,11 @@ typedef struct {
         * Array of all memory regions stored in order of ascending end address
         * and ascending size to simplify the code that allows overlapping
         * regions. The list is terminated by the first entry with size == 0.
+        * The max size of the list is stored in `mmap_num`. `mmap` points to an
+        * array of mmap_num + 1 elements, so that there is space for the final
+        * null entry.
         */
-       mmap_region_t *mmap; /* mmap_num + 1 elements */
+       mmap_region_t *mmap;
        int mmap_num;
 
        /*
@@ -75,6 +78,11 @@ typedef struct {
        uint64_t *base_table;
        int base_table_entries;
 
+       /*
+        * Max Physical and Virtual addresses currently in use by the
+        * translation tables. These might get updated as we map/unmap memory
+        * regions but they will never go beyond pa/va_max_address.
+        */
        unsigned long long max_pa;
        uintptr_t max_va;