Commit 03987d01 authored by Antonio Nino Diaz's avatar Antonio Nino Diaz
Browse files

xlat: Fix compatibility between v1 and v2



There are several platforms using arm_setup_page_tables(), which is
supposed to be Arm platform only. This creates several dependency
problems between platforms.

This patch adds the definition XLAT_TABLES_LIB_V2 to the xlat tables lib
v2 makefile. This way it is possible to detect from C code which version
is being used and include the correct header.

The file arm_xlat_tables.h has been renamed to xlat_tables_compat.h and
moved to a common folder. This way, when in doubt, this header can be
used to guarantee compatibility, as it includes the correct header based
on XLAT_TABLES_LIB_V2.

This patch also removes the usage of ARM_XLAT_TABLES_V1 from QEMU (so
that is now locked in xlat lib v2) and ZynqMP (where it was added as a
workaround).

Change-Id: Ie1e22a23b44c549603d1402a237a70d0120d3e04
Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
parent 31abc7c4
/* /*
* Copyright (c) 2017, ARM Limited and Contributors. All rights reserved. * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
* *
* SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause
*/ */
#if ARM_XLAT_TABLES_LIB_V1 #if XLAT_TABLES_LIB_V2
#include <xlat_tables.h>
#else
#include <xlat_tables_v2.h> #include <xlat_tables_v2.h>
#endif /* ARM_XLAT_TABLES_LIB_V1 */ #else
#include <xlat_tables.h>
#endif
...@@ -6,8 +6,7 @@ ...@@ -6,8 +6,7 @@
#ifndef V2M_DEF_H #ifndef V2M_DEF_H
#define V2M_DEF_H #define V2M_DEF_H
#include <arm_xlat_tables.h> #include <xlat_tables_compat.h>
/* V2M motherboard system registers & offsets */ /* V2M motherboard system registers & offsets */
#define V2M_SYSREGS_BASE UL(0x1c010000) #define V2M_SYSREGS_BASE UL(0x1c010000)
......
...@@ -6,7 +6,6 @@ ...@@ -6,7 +6,6 @@
#ifndef __PLAT_ARM_H__ #ifndef __PLAT_ARM_H__
#define __PLAT_ARM_H__ #define __PLAT_ARM_H__
#include <arm_xlat_tables.h>
#include <bakery_lock.h> #include <bakery_lock.h>
#include <cassert.h> #include <cassert.h>
#include <cpu_data.h> #include <cpu_data.h>
...@@ -14,6 +13,7 @@ ...@@ -14,6 +13,7 @@
#include <spinlock.h> #include <spinlock.h>
#include <tzc_common.h> #include <tzc_common.h>
#include <utils_def.h> #include <utils_def.h>
#include <xlat_tables_compat.h>
/******************************************************************************* /*******************************************************************************
* Forward declarations * Forward declarations
......
...@@ -10,3 +10,6 @@ XLAT_TABLES_LIB_SRCS := $(addprefix lib/xlat_tables_v2/, \ ...@@ -10,3 +10,6 @@ XLAT_TABLES_LIB_SRCS := $(addprefix lib/xlat_tables_v2/, \
xlat_tables_context.c \ xlat_tables_context.c \
xlat_tables_core.c \ xlat_tables_core.c \
xlat_tables_utils.c) xlat_tables_utils.c)
XLAT_TABLES_LIB_V2 := 1
$(eval $(call add_define,XLAT_TABLES_LIB_V2))
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
#include <arm_config.h> #include <arm_config.h>
#include <arm_def.h> #include <arm_def.h>
#include <arm_spm_def.h> #include <arm_spm_def.h>
#include <arm_xlat_tables.h>
#include <assert.h> #include <assert.h>
#include <cci.h> #include <cci.h>
#include <ccn.h> #include <ccn.h>
...@@ -18,6 +17,8 @@ ...@@ -18,6 +17,8 @@
#include <platform.h> #include <platform.h>
#include <secure_partition.h> #include <secure_partition.h>
#include <v2m_def.h> #include <v2m_def.h>
#include <xlat_tables_compat.h>
#include "../fvp_def.h" #include "../fvp_def.h"
#include "fvp_private.h" #include "fvp_private.h"
......
...@@ -6,7 +6,6 @@ ...@@ -6,7 +6,6 @@
#include <arch.h> #include <arch.h>
#include <arm_def.h> #include <arm_def.h>
#include <arm_xlat_tables.h>
#include <assert.h> #include <assert.h>
#include <bl1.h> #include <bl1.h>
#include <bl_common.h> #include <bl_common.h>
...@@ -15,6 +14,8 @@ ...@@ -15,6 +14,8 @@
#include <platform_def.h> #include <platform_def.h>
#include <sp805.h> #include <sp805.h>
#include <utils.h> #include <utils.h>
#include <xlat_tables_compat.h>
#include "../../../bl1/bl1_private.h" #include "../../../bl1/bl1_private.h"
/* Weak definitions may be overridden in specific ARM standard platform */ /* Weak definitions may be overridden in specific ARM standard platform */
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
#include <platform.h> #include <platform.h>
#include <ras.h> #include <ras.h>
#include <utils.h> #include <utils.h>
#include <arm_xlat_tables.h> #include <xlat_tables_compat.h>
/* /*
* Placeholder variables for copying the arguments that have been passed to * Placeholder variables for copying the arguments that have been passed to
......
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
*/ */
#include <arch.h> #include <arch.h>
#include <arch_helpers.h> #include <arch_helpers.h>
#include <arm_xlat_tables.h>
#include <assert.h> #include <assert.h>
#include <debug.h> #include <debug.h>
#include <mmio.h> #include <mmio.h>
...@@ -14,6 +13,7 @@ ...@@ -14,6 +13,7 @@
#include <platform_def.h> #include <platform_def.h>
#include <romlib.h> #include <romlib.h>
#include <secure_partition.h> #include <secure_partition.h>
#include <xlat_tables_compat.h>
/* Weak definitions may be overridden in specific ARM standard platform */ /* Weak definitions may be overridden in specific ARM standard platform */
#pragma weak plat_get_ns_image_entrypoint #pragma weak plat_get_ns_image_entrypoint
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include <mbedtls_config.h> #include <mbedtls_config.h>
#endif #endif
#include <platform.h> #include <platform.h>
#include <xlat_tables_compat.h>
/* /*
* The following platform functions are weakly defined. The Platforms * The following platform functions are weakly defined. The Platforms
......
...@@ -38,24 +38,12 @@ ifeq (${ARM_ARCH_MAJOR},8) ...@@ -38,24 +38,12 @@ ifeq (${ARM_ARCH_MAJOR},8)
PLAT_INCLUDES += -Iinclude/plat/arm/common/${ARCH} PLAT_INCLUDES += -Iinclude/plat/arm/common/${ARCH}
endif endif
# Use translation tables library v2 by default
ARM_XLAT_TABLES_LIB_V1 := 0
$(eval $(call assert_boolean,ARM_XLAT_TABLES_LIB_V1))
$(eval $(call add_define,ARM_XLAT_TABLES_LIB_V1))
PLAT_BL_COMMON_SOURCES := plat/qemu/qemu_common.c \ PLAT_BL_COMMON_SOURCES := plat/qemu/qemu_common.c \
plat/qemu/qemu_console.c \ plat/qemu/qemu_console.c \
drivers/arm/pl011/${ARCH}/pl011_console.S \ drivers/arm/pl011/${ARCH}/pl011_console.S \
ifeq (${ARM_XLAT_TABLES_LIB_V1}, 1)
PLAT_BL_COMMON_SOURCES += lib/xlat_tables/xlat_tables_common.c \
lib/xlat_tables/${ARCH}/xlat_tables.c
else
include lib/xlat_tables_v2/xlat_tables.mk include lib/xlat_tables_v2/xlat_tables.mk
PLAT_BL_COMMON_SOURCES += ${XLAT_TABLES_LIB_SRCS} PLAT_BL_COMMON_SOURCES += ${XLAT_TABLES_LIB_SRCS}
endif
ifneq (${TRUSTED_BOARD_BOOT},0) ifneq (${TRUSTED_BOARD_BOOT},0)
......
/* /*
* Copyright (c) 2015-2016, ARM Limited and Contributors. All rights reserved. * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
* *
* SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause
*/ */
...@@ -7,7 +7,8 @@ ...@@ -7,7 +7,8 @@
#include <arch_helpers.h> #include <arch_helpers.h>
#include <bl_common.h> #include <bl_common.h>
#include <platform_def.h> #include <platform_def.h>
#include <arm_xlat_tables.h> #include <xlat_tables_v2.h>
#include "qemu_private.h" #include "qemu_private.h"
#define MAP_DEVICE0 MAP_REGION_FLAT(DEVICE0_BASE, \ #define MAP_DEVICE0 MAP_REGION_FLAT(DEVICE0_BASE, \
......
...@@ -16,10 +16,6 @@ ENABLE_SVE_FOR_NS := 0 ...@@ -16,10 +16,6 @@ ENABLE_SVE_FOR_NS := 0
WORKAROUND_CVE_2017_5715 := 0 WORKAROUND_CVE_2017_5715 := 0
ARM_XLAT_TABLES_LIB_V1 := 1
$(eval $(call assert_boolean,ARM_XLAT_TABLES_LIB_V1))
$(eval $(call add_define,ARM_XLAT_TABLES_LIB_V1))
ifdef ZYNQMP_ATF_MEM_BASE ifdef ZYNQMP_ATF_MEM_BASE
$(eval $(call add_define,ZYNQMP_ATF_MEM_BASE)) $(eval $(call add_define,ZYNQMP_ATF_MEM_BASE))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment