From 968afd91d89d89e8ff784d75f134167f454e6f73 Mon Sep 17 00:00:00 2001 From: Joel Sing Date: Thu, 1 Jul 2010 21:14:02 +0000 Subject: Ensure that IPIs have priority and are run first to avoid deadlock. This is a rather ugly hack and needs to be revisited at a later date. ok kettenis@ --- sys/arch/hppa/hppa/intr.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'sys/arch') diff --git a/sys/arch/hppa/hppa/intr.c b/sys/arch/hppa/hppa/intr.c index dee14c28721..5f42f6f57a7 100644 --- a/sys/arch/hppa/hppa/intr.c +++ b/sys/arch/hppa/hppa/intr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: intr.c,v 1.33 2010/05/24 15:04:54 deraadt Exp $ */ +/* $OpenBSD: intr.c,v 1.34 2010/07/01 21:14:01 jsing Exp $ */ /* * Copyright (c) 2002-2004 Michael Shalayeff @@ -307,6 +307,13 @@ cpu_intr(void *v) while ((mask = ci->ci_ipending & ~imask[s])) { int r, bit = fls(mask) - 1; + +#ifdef MULTIPROCESSOR + /* XXX - Ensure that IPIs run first. */ + if (mask & (1 << 30)) + bit = 30; +#endif + struct hppa_iv *iv = &intr_table[bit]; ci->ci_ipending &= ~(1L << bit); -- cgit v1.2.3