[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