diff options
| author | Stephen Wolfe <swolfe@nvidia.com> | 2017-10-29 22:39:44 -0400 |
|---|---|---|
| committer | Stephen Wolfe <swolfe@nvidia.com> | 2018-07-27 17:12:44 -0400 |
| commit | 111a90676b10d3fbb9de161775724e1194e83aa6 (patch) | |
| tree | f9ffb4332b2b96fe4776da788f0ac5e9e65f6db1 /include/linux | |
| parent | 063e2a8b0579b4931ef591dab469f626c09a9ad3 (diff) | |
trusty: disable trusty irq's when trusty crashes
After trusty panics, whenever control reaches trusty will
immediately context switch back to NS world. This triggers a trusty
irq in the linux kernel, which eventually causes control to return back
to trusty. This causes an endless loop of context switching back and
forth between non-secure and secure world, and generates log spew.
This commit fixes this issue by disabling trusty irq's once trusty
crashes. The crash is detected in the trusty driver, who signals the
trusty-irq driver to disable interrupts via a notifier chain.
Bug 1883981
Change-Id: Ib7d8f921537f6aa423bd1372d8073bfa73b81fa4
Signed-off-by: Stephen Wolfe <swolfe@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1591010
(cherry picked from commit 55756bf62e988fe028791d95bc54b5345863c098)
Reviewed-on: https://git-master.nvidia.com/r/1600497
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Mihir Joshi <mihirj@nvidia.com>
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/trusty/trusty.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/linux/trusty/trusty.h b/include/linux/trusty/trusty.h index 41623faa9..096608e24 100644 --- a/include/linux/trusty/trusty.h +++ b/include/linux/trusty/trusty.h | |||
| @@ -67,6 +67,10 @@ int trusty_call_notifier_register(struct device *dev, | |||
| 67 | struct notifier_block *n); | 67 | struct notifier_block *n); |
| 68 | int trusty_call_notifier_unregister(struct device *dev, | 68 | int trusty_call_notifier_unregister(struct device *dev, |
| 69 | struct notifier_block *n); | 69 | struct notifier_block *n); |
| 70 | int trusty_panic_notifier_register(struct device *dev, | ||
| 71 | struct notifier_block *n); | ||
| 72 | int trusty_panic_notifier_unregister(struct device *dev, | ||
| 73 | struct notifier_block *n); | ||
| 70 | const char *trusty_version_str_get(struct device *dev); | 74 | const char *trusty_version_str_get(struct device *dev); |
| 71 | u32 trusty_get_api_version(struct device *dev); | 75 | u32 trusty_get_api_version(struct device *dev); |
| 72 | 76 | ||
