On Mon, Jan 16, 2017 at 01:09:22PM -0700, Baicar, Tyler wrote:Sounds good, I will remove the notifier in the next patchset.
On 1/16/2017 4:53 AM, Will Deacon wrote:Yes, please. It's easy to add the notifier infrastructure back if/when it's
On Thu, Jan 12, 2017 at 11:15:18AM -0700, Tyler Baicar wrote:I didn't see a response to my last comment on the previous series so I just
SEA exceptions are often caused by an uncorrected hardwareI still don't understand why you need notifiers for this. You register
error, and are handled when data abort and instruction abort
exception classes have specific values for their Fault Status
Code.
When SEA occurs, before killing the process, go through
the handlers registered in the notification list.
Update fault_info[] with specific SEA faults so that the
new SEA handler is used.
Signed-off-by: Tyler Baicar <tbaicar@xxxxxxxxxxxxxx>
Signed-off-by: Jonathan (Zhixiong) Zhang <zjzhang@xxxxxxxxxxxxxx>
Signed-off-by: Naveen Kaje <nkaje@xxxxxxxxxxxxxx>
---
arch/arm64/include/asm/system_misc.h | 13 ++++++++
arch/arm64/mm/fault.c | 58 +++++++++++++++++++++++++++++-------
2 files changed, 61 insertions(+), 10 deletions(-)
diff --git a/arch/arm64/include/asm/system_misc.h b/arch/arm64/include/asm/system_misc.h
index 57f110b..e7f3440 100644
--- a/arch/arm64/include/asm/system_misc.h
+++ b/arch/arm64/include/asm/system_misc.h
@@ -64,4 +64,17 @@ extern void (*arm_pm_restart)(enum reboot_mode reboot_mode, const char *cmd);
#endif /* __ASSEMBLY__ */
+/*
+ * The functions below are used to register and unregister callbacks
+ * that are to be invoked when a Synchronous External Abort (SEA)
+ * occurs. An SEA is raised by certain fault status codes that have
+ * either data or instruction abort as the exception class, and
+ * callbacks may be registered to parse or handle such hardware errors.
+ *
+ * Registered callbacks are run in an interrupt/atomic context. They
+ * are not allowed to block or sleep.
+ */
+int register_sea_notifier(struct notifier_block *nb);
+void unregister_sea_notifier(struct notifier_block *nb);
precisely one hook in the series.
left it in for this series.
The notifier usage is consistent with the GHES code for SCI errors which are
also only used a single
time in the code. If you think making the call directly is a better option I
will remove the notifiers.
actually needed and I don't see why the low-level fault dispatching needs to
be consistent with the GHES/SCI code.
Will