[FOSS_TLK]security: tlk_driver: export te_vrr_sec fastcall
Chris Johnson [Thu, 19 Feb 2015 03:01:24 +0000 (19:01 -0800)]
Add support for a callable interface to issue a monitor fastcall
to do VRR (currently only supported for ARMv8 archs).

Change-Id: I2a29cd6d1c627ab80d9b504ec8bdf978125d43ec
Signed-off-by: Chris Johnson <cwj@nvidia.com>
Reviewed-on: http://git-master/r/755013
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Varun Wadekar <vwadekar@nvidia.com>
Tested-by: Varun Wadekar <vwadekar@nvidia.com>

include/linux/ote_protocol.h
security/tlk_driver/ote_comms.c
security/tlk_driver/ote_protocol.h

index 47b93c2..e453277 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
+ * Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -21,5 +21,7 @@
 
 int te_set_vpr_params(void *vpr_base, size_t vpr_size);
 void te_restore_keyslots(void);
+int  te_vrr_set_buf(phys_addr_t addr);
+void te_vrr_sec(void);
 
 #endif
index cb7e155..9d353a8 100644 (file)
@@ -433,6 +433,31 @@ void te_restore_keyslots(void)
 EXPORT_SYMBOL(te_restore_keyslots);
 
 /*
+ * VRR Set Buffer
+ *
+ * Called from the DC driver and implemented as a monitor fastcall
+ * to avoid taking the smc_lock. This call passes in the physical
+ * address for the shared memory buffer.
+ */
+int te_vrr_set_buf(phys_addr_t addr)
+{
+       return _tlk_generic_smc(TE_SMC_VRR_SET_BUF, addr, 0);
+}
+EXPORT_SYMBOL(te_vrr_set_buf);
+
+/*
+ * VRR Sec
+ *
+ * Called from the DC driver and implemented as a monitor fastcall
+ * to avoid taking the smc_lock.
+ */
+void te_vrr_sec(void)
+{
+       _tlk_generic_smc(TE_SMC_VRR_SEC, 0, 0);
+}
+EXPORT_SYMBOL(te_vrr_sec);
+
+/*
  * Open session SMC (supporting client-based te_open_session() calls)
  */
 void te_open_session(struct te_opensession *cmd,
index 06afc6f..4cdba76 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2014 NVIDIA Corporation. All rights reserved.
+ * Copyright (c) 2013-2015 NVIDIA Corporation. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -128,6 +128,8 @@ enum {
        /* SIP (SOC specific) calls.  */
        TE_SMC_PROGRAM_VPR              = 0x82000003,
        TE_SMC_REGISTER_FIQ_GLUE        = 0x82000005,
+       TE_SMC_VRR_SET_BUF              = 0x82000011,
+       TE_SMC_VRR_SEC                  = 0x82000012,
 };
 
 enum {