Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/netbsd-3]: src/sys/arch/xen/x86 Pull up revision 1.5 (requested by yamt ...
details: https://anonhg.NetBSD.org/src/rev/2f10f589a74c
branches: netbsd-3
changeset: 575368:2f10f589a74c
user: tron <tron%NetBSD.org@localhost>
date: Wed Apr 13 21:38:58 2005 +0000
description:
Pull up revision 1.5 (requested by yamt in ticket #146):
fix a bug which corrupts runqueue.
when dealing with events, which are handed to xenevt pseudo device,
don't call wakeup(9)/selnotify(9) at too high IPL. PR/29792.
diffstat:
sys/arch/xen/x86/intr.c | 25 +++++++++++++++++++++++--
1 files changed, 23 insertions(+), 2 deletions(-)
diffs (55 lines):
diff -r 57fa0789c156 -r 2f10f589a74c sys/arch/xen/x86/intr.c
--- a/sys/arch/xen/x86/intr.c Wed Apr 13 21:38:52 2005 +0000
+++ b/sys/arch/xen/x86/intr.c Wed Apr 13 21:38:58 2005 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: intr.c,v 1.4 2005/03/09 22:39:21 bouyer Exp $ */
+/* $NetBSD: intr.c,v 1.4.2.1 2005/04/13 21:38:58 tron Exp $ */
/* NetBSD: intr.c,v 1.20 2004/10/23 21:27:35 yamt Exp */
/*
@@ -104,9 +104,10 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.4 2005/03/09 22:39:21 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.4.2.1 2005/04/13 21:38:58 tron Exp $");
#include "opt_multiprocessor.h"
+#include "opt_xen.h"
#include <sys/cdefs.h>
#include <sys/param.h>
@@ -200,6 +201,11 @@
struct intrhand fake_softserial_intrhand;
struct intrhand fake_timer_intrhand;
struct intrhand fake_ipi_intrhand;
+#if defined(DOM0OPS)
+struct intrhand fake_softxenevt_intrhand;
+
+extern void Xsoftxenevt(void);
+#endif
/*
* Initialize all handlers that aren't dynamically allocated, and exist
@@ -249,6 +255,21 @@
evcnt_attach_dynamic(&isp->is_evcnt, EVCNT_TYPE_INTR, NULL,
ci->ci_dev->dv_xname, "softserial");
+#if defined(DOM0OPS)
+ MALLOC(isp, struct intrsource *, sizeof (struct intrsource), M_DEVBUF,
+ M_WAITOK|M_ZERO);
+ if (isp == NULL)
+ panic("can't allocate fixed interrupt source");
+ isp->is_recurse = Xsoftxenevt;
+ isp->is_resume = Xsoftxenevt;
+ fake_softxenevt_intrhand.ih_level = IPL_SOFTXENEVT;
+ isp->is_handlers = &fake_softxenevt_intrhand;
+ isp->is_pic = &softintr_pic;
+ ci->ci_isources[SIR_XENEVT] = isp;
+ evcnt_attach_dynamic(&isp->is_evcnt, EVCNT_TYPE_INTR, NULL,
+ ci->ci_dev->dv_xname, "xenevt");
+#endif /* defined(DOM0OPS) */
+
intr_calculatemasks(ci);
}
Home |
Main Index |
Thread Index |
Old Index