summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenji Aoyama <aoyama@cvs.openbsd.org>2020-01-04 03:17:57 +0000
committerKenji Aoyama <aoyama@cvs.openbsd.org>2020-01-04 03:17:57 +0000
commitc907c9d6f2c91945b127beac1ccb398925e701d5 (patch)
tree85d2da969594981d26630c995df3a5027da5855d
parentbaa202d2aa84c1aa9f9df9cd5c77144ccd4ba452 (diff)
Ignore 'hardware lied' interrupt in do-while loop, same as first
time processing. That was sometimes observed when the system get heavy load, like 'make -j N build'.
-rw-r--r--sys/arch/luna88k/luna88k/machdep.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/arch/luna88k/luna88k/machdep.c b/sys/arch/luna88k/luna88k/machdep.c
index 6785ba5a810..f72349f830d 100644
--- a/sys/arch/luna88k/luna88k/machdep.c
+++ b/sys/arch/luna88k/luna88k/machdep.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: machdep.c,v 1.129 2019/12/31 10:07:31 mpi Exp $ */
+/* $OpenBSD: machdep.c,v 1.130 2020/01/04 03:17:56 aoyama Exp $ */
/*
* Copyright (c) 1998, 1999, 2000, 2001 Steve Murphree, Jr.
* Copyright (c) 1996 Nivas Madhur
@@ -891,6 +891,11 @@ luna88k_ext_int(struct trapframe *eframe)
cur_isr = *(volatile uint32_t *)ci->ci_intr_mask;
cur_int_level = cur_isr >> 29;
+
+ /* Again, ignore 'hardware lied' interrupt */
+ if ( !(cur_isr & (1 << (cur_int_level + 17))))
+ goto out;
+
} while (cur_int_level != 0);
out: