core: add common user_mode_ctx_print_mappings()
Adds a common user_mode_ctx_print_mappings() which prints the current
user mode mappings.
Acked-by: Pipat Methavanitpong <pipat.methavanitpong@linaro.org>
Reviewed-by: Jerome Forissier <jerome@forissier.org>
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
diff --git a/core/arch/arm/kernel/user_ta.c b/core/arch/arm/kernel/user_ta.c
index 050f423..1c6db3b 100644
--- a/core/arch/arm/kernel/user_ta.c
+++ b/core/arch/arm/kernel/user_ta.c
@@ -16,6 +16,7 @@
#include <kernel/tee_misc.h>
#include <kernel/tee_ta_manager.h>
#include <kernel/thread.h>
+#include <kernel/user_mode_ctx.h>
#include <kernel/user_ta.h>
#include <kernel/user_ta_store.h>
#include <ldelf.h>
@@ -303,23 +304,7 @@
static void dump_state_no_ldelf_dbg(struct user_ta_ctx *utc)
{
- struct vm_region *r;
- char flags[7] = { '\0', };
- size_t n = 0;
-
- TAILQ_FOREACH(r, &utc->uctx.vm_info.regions, link) {
- paddr_t pa = 0;
-
- if (r->mobj)
- mobj_get_pa(r->mobj, r->offset, 0, &pa);
-
- mattr_perm_to_str(flags, sizeof(flags), r->attr);
- EMSG_RAW(" region %2zu: va 0x%0*" PRIxVA " pa 0x%0*" PRIxPA
- " size 0x%06zx flags %s",
- n, PRIxVA_WIDTH, r->va, PRIxPA_WIDTH, pa, r->size,
- flags);
- n++;
- }
+ user_mode_ctx_print_mappings(&utc->uctx);
}
static TEE_Result dump_state_ldelf_dbg(struct user_ta_ctx *utc)
diff --git a/core/include/kernel/user_mode_ctx.h b/core/include/kernel/user_mode_ctx.h
index 5480db4..59e2e33 100644
--- a/core/include/kernel/user_mode_ctx.h
+++ b/core/include/kernel/user_mode_ctx.h
@@ -21,4 +21,7 @@
assert(is_user_mode_ctx(ctx));
return container_of(ctx, struct user_mode_ctx, ctx);
}
+
+void user_mode_ctx_print_mappings(struct user_mode_ctx *umctx);
+
#endif /*__KERNEL_USER_MODE_CTX_H*/
diff --git a/core/kernel/sub.mk b/core/kernel/sub.mk
index 2841bd3..55319a3 100644
--- a/core/kernel/sub.mk
+++ b/core/kernel/sub.mk
@@ -16,3 +16,4 @@
srcs-y += scattered_array.c
srcs-y += huk_subkey.c
srcs-$(CFG_SHOW_CONF_ON_BOOT) += show_conf.c
+srcs-y += user_mode_ctx.c
diff --git a/core/kernel/user_mode_ctx.c b/core/kernel/user_mode_ctx.c
new file mode 100644
index 0000000..12906f3
--- /dev/null
+++ b/core/kernel/user_mode_ctx.c
@@ -0,0 +1,29 @@
+// SPDX-License-Identifier: BSD-2-Clause
+/*
+ * Copyright (c) 2019, Linaro Limited
+ */
+
+#include <kernel/user_mode_ctx.h>
+#include <trace.h>
+#include <mm/mobj.h>
+
+void user_mode_ctx_print_mappings(struct user_mode_ctx *uctx)
+{
+ struct vm_region *r = NULL;
+ char flags[7] = { '\0', };
+ size_t n = 0;
+
+ TAILQ_FOREACH(r, &uctx->vm_info.regions, link) {
+ paddr_t pa = 0;
+
+ if (r->mobj)
+ mobj_get_pa(r->mobj, r->offset, 0, &pa);
+
+ mattr_perm_to_str(flags, sizeof(flags), r->attr);
+ EMSG_RAW(" region %2zu: va 0x%0*" PRIxVA " pa 0x%0*" PRIxPA
+ " size 0x%06zx flags %s",
+ n, PRIxVA_WIDTH, r->va, PRIxPA_WIDTH, pa, r->size,
+ flags);
+ n++;
+ }
+}