Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/aarch64/aarch64 No need to recover from fault from ...



details:   https://anonhg.NetBSD.org/src/rev/8eb8c681df5d
branches:  trunk
changeset: 937028:8eb8c681df5d
user:      ryo <ryo%NetBSD.org@localhost>
date:      Thu Aug 06 06:50:39 2020 +0000

description:
No need to recover from fault from within a hardware interrupt handler.

diffstat:

 sys/arch/aarch64/aarch64/fault.c |  14 ++++++++------
 1 files changed, 8 insertions(+), 6 deletions(-)

diffs (35 lines):

diff -r 0639402fc4e8 -r 8eb8c681df5d sys/arch/aarch64/aarch64/fault.c
--- a/sys/arch/aarch64/aarch64/fault.c  Thu Aug 06 06:49:55 2020 +0000
+++ b/sys/arch/aarch64/aarch64/fault.c  Thu Aug 06 06:50:39 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: fault.c,v 1.17 2020/08/06 06:49:55 ryo Exp $   */
+/*     $NetBSD: fault.c,v 1.18 2020/08/06 06:50:39 ryo Exp $   */
 
 /*
  * Copyright (c) 2017 Ryo Shimizu <ryo%nerv.org@localhost>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: fault.c,v 1.17 2020/08/06 06:49:55 ryo Exp $");
+__KERNEL_RCSID(0, "$NetBSD: fault.c,v 1.18 2020/08/06 06:50:39 ryo Exp $");
 
 #include "opt_compat_netbsd32.h"
 #include "opt_ddb.h"
@@ -223,10 +223,12 @@
 
  do_fault:
        /* faultbail path? */
-       fb = cpu_disable_onfault();
-       if (fb != NULL) {
-               cpu_jump_onfault(tf, fb, EFAULT);
-               return;
+       if (curcpu()->ci_intr_depth == 0) {
+               fb = cpu_disable_onfault();
+               if (fb != NULL) {
+                       cpu_jump_onfault(tf, fb, EFAULT);
+                       return;
+               }
        }
 
  handle_fault:



Home | Main Index | Thread Index | Old Index