IPL_NONE doesn't really exist. The corresponding bit in the
authorkettenis <kettenis@openbsd.org>
Mon, 21 Jul 2008 10:07:14 +0000 (10:07 +0000)
committerkettenis <kettenis@openbsd.org>
Mon, 21 Jul 2008 10:07:14 +0000 (10:07 +0000)
per-processor soft interrupt register is used for hardware clock-tick
counter interrupts.  So make smp_signotify() use IPL_SOFTINT instead
such that we don't unintentionally trigger a spurious clock interrupt.
This seems to fix the timekeeping anomalies on the t1k.

tested by art@

sys/arch/sparc64/sparc64/ipifuncs.c

index 90255db..becf431 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: ipifuncs.c,v 1.10 2008/06/26 05:42:13 ray Exp $       */
+/*     $OpenBSD: ipifuncs.c,v 1.11 2008/07/21 10:07:14 kettenis Exp $  */
 /*     $NetBSD: ipifuncs.c,v 1.8 2006/10/07 18:11:36 rjs Exp $ */
 
 /*-
@@ -241,7 +241,7 @@ smp_signotify(struct proc *p)
                return;
 
        if (CPU_ISSUN4V)
-               sun4v_send_ipi(ci->ci_itid, ipi_softint, 1 << IPL_NONE, 0UL);
+               sun4v_send_ipi(ci->ci_itid, ipi_softint, 1 << IPL_SOFTINT, 0);
        else
-               sun4u_send_ipi(ci->ci_itid, ipi_softint, 1 << IPL_NONE, 0UL);
+               sun4u_send_ipi(ci->ci_itid, ipi_softint, 1 << IPL_SOFTINT, 0);
 }