Thread (31 messages) 31 messages, 4 authors, 2017-01-24

[PATCH V7 04/10] arm64: exception: handle Synchronous External Abort

From: Will Deacon <hidden>
Date: 2017-01-17 10:27:57
Also in: kvm, kvmarm, linux-acpi, linux-efi, lkml

On Mon, Jan 16, 2017 at 01:09:22PM -0700, Baicar, Tyler wrote:
On 1/16/2017 4:53 AM, Will Deacon wrote:
quoted
On Thu, Jan 12, 2017 at 11:15:18AM -0700, Tyler Baicar wrote:
quoted
SEA exceptions are often caused by an uncorrected hardware
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 <redacted>
Signed-off-by: Jonathan (Zhixiong) Zhang <redacted>
Signed-off-by: Naveen Kaje <redacted>
---
 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);
I still don't understand why you need notifiers for this. You register
precisely one hook in the series.
I didn't see a response to my last comment on the previous series so I just
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.
Yes, please. It's easy to add the notifier infrastructure back if/when it's
actually needed and I don't see why the low-level fault dispatching needs to
be consistent with the GHES/SCI code.

Will
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help