diff options
author | Arto Merilainen <amerilainen@nvidia.com> | 2014-05-06 19:58:05 +0300 |
---|---|---|
committer | Mandar Padmawar <mpadmawar@nvidia.com> | 2014-05-12 00:09:15 -0700 |
commit | ef4897aa84954facdcf60a5344ff4bf16c2ba71d (patch) | |
tree | 6ba409f2b1448df14e4e8323702968d146b38597 /security | |
parent | 61934c65cea4d118570c740cb7a839287795b491 (diff) |
security: tlk_driver: Allow affinity changing
Currently the driver assumes that smc requests come from a thread
that already has possibility to set cpu affinity, however, kernel
threads by default do not have this possibility.
Turning on devices is sometimes done in kernel threads and in GPU
case we may need to change i.e. the VPR parameters. Therefore,
ensure that the thread can change affinity.
Bug 1506585
Change-Id: Ie879f6b2f7d8cb3bc324b5d7a391dd6e8cf9b3cf
Signed-off-by: Arto Merilainen <amerilainen@nvidia.com>
Reviewed-on: http://git-master/r/405915
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'security')
-rw-r--r-- | security/tlk_driver/ote_comms.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/security/tlk_driver/ote_comms.c b/security/tlk_driver/ote_comms.c index da260a5c216f..64045ac0154e 100644 --- a/security/tlk_driver/ote_comms.c +++ b/security/tlk_driver/ote_comms.c @@ -218,19 +218,33 @@ static void switch_cpumask_to_cpu0(void) { long ret; cpumask_t local_cpu_mask = CPU_MASK_NONE; + unsigned long flags; + + flags = current->flags; + current->flags &= ~PF_NO_SETAFFINITY; cpu_set(0, local_cpu_mask); cpumask_copy(&saved_cpu_mask, tsk_cpus_allowed(current)); ret = sched_setaffinity(0, &local_cpu_mask); if (ret) pr_err("sched_setaffinity #1 -> 0x%lX", ret); + + current->flags = flags; } static void restore_cpumask(void) { - long ret = sched_setaffinity(0, &saved_cpu_mask); + unsigned long flags; + long ret; + + flags = current->flags; + current->flags &= ~PF_NO_SETAFFINITY; + + ret = sched_setaffinity(0, &saved_cpu_mask); if (ret) pr_err("sched_setaffinity #2 -> 0x%lX", ret); + + current->flags = flags; } #else static inline void switch_cpumask_to_cpu0(void) {}; |