summaryrefslogtreecommitdiff
path: root/security
diff options
context:
space:
mode:
Diffstat (limited to 'security')
-rw-r--r--security/tf_driver/Makefile2
-rw-r--r--security/tf_driver/s_version.h4
-rw-r--r--security/tf_driver/tf_comm_tz.c18
-rw-r--r--security/tf_driver/tf_protocol.h4
4 files changed, 25 insertions, 3 deletions
diff --git a/security/tf_driver/Makefile b/security/tf_driver/Makefile
index dfadb7d97406..5c48f626f5d8 100644
--- a/security/tf_driver/Makefile
+++ b/security/tf_driver/Makefile
@@ -21,7 +21,7 @@
# debug options
#EXTRA_CFLAGS += -O0 -DDEBUG -D_DEBUG -DCONFIG_TF_DRIVER_DEBUG_SUPPORT
EXTRA_CFLAGS += -DNDEBUG
-EXTRA_CFLAGS += -DLINUX -DCONFIG_TF_TRUSTZONE -DCONFIG_TFN
+EXTRA_CFLAGS += -DLINUX -DCONFIG_TF_TRUSTZONE -DCONFIG_TFN -DCONFIG_SECURE_TRACES
ifdef S_VERSION_BUILD
EXTRA_CFLAGS += -DS_VERSION_BUILD=$(S_VERSION_BUILD)
diff --git a/security/tf_driver/s_version.h b/security/tf_driver/s_version.h
index ba4d48c6f417..d812cdca75df 100644
--- a/security/tf_driver/s_version.h
+++ b/security/tf_driver/s_version.h
@@ -33,12 +33,12 @@
*/
#define S_VERSION_OS "A" /* "A" for all Android */
-#define S_VERSION_PLATFORM "A" /* "A" for Tegra2 */
+#define S_VERSION_PLATFORM "B" /* "B" for Tegra3 */
/*
* This version number must be updated for each new release
*/
-#define S_VERSION_MAIN "01.07"
+#define S_VERSION_MAIN "01.08"
/*
* If this is a patch or engineering version use the following
diff --git a/security/tf_driver/tf_comm_tz.c b/security/tf_driver/tf_comm_tz.c
index 4c89de84accf..4628f24f3cf2 100644
--- a/security/tf_driver/tf_comm_tz.c
+++ b/security/tf_driver/tf_comm_tz.c
@@ -194,6 +194,20 @@ static inline void tf_smc_nyield(void)
tf_smc_generic_call(&generic_smc);
}
+#ifdef CONFIG_SECURE_TRACES
+static void tf_print_secure_traces(struct tf_comm *comm)
+{
+ spin_lock(&(comm->lock));
+ if (comm->l1_buffer->traces_status != 0) {
+ if (comm->l1_buffer->traces_status > 1)
+ pr_info("TF : traces lost...\n");
+ pr_info("TF : %s", comm->l1_buffer->traces_buffer);
+ comm->l1_buffer->traces_status = 0;
+ }
+ spin_unlock(&(comm->lock));
+}
+#endif
+
/* Yields the Secure World */
int tf_schedule_secure_world(struct tf_comm *comm)
{
@@ -202,6 +216,10 @@ int tf_schedule_secure_world(struct tf_comm *comm)
/* yield to the Secure World */
tf_smc_nyield();
+#ifdef CONFIG_SECURE_TRACES
+ tf_print_secure_traces(comm);
+#endif
+
return 0;
}
diff --git a/security/tf_driver/tf_protocol.h b/security/tf_driver/tf_protocol.h
index 403df8ec8ef5..b264f04c4454 100644
--- a/security/tf_driver/tf_protocol.h
+++ b/security/tf_driver/tf_protocol.h
@@ -659,6 +659,10 @@ struct tf_l1_shared_buffer {
#ifdef CONFIG_TF_ZEBRA
u8 rpc_trace_buffer[140];
u8 rpc_cus_buffer[180];
+ #elif CONFIG_SECURE_TRACES
+ u32 traces_status;
+ u8 traces_buffer[140];
+ u8 reserved3[176];
#else
u8 reserved3[320];
#endif