summaryrefslogtreecommitdiff
path: root/usr/src/uts/i86pc/i86hvm
diff options
context:
space:
mode:
authorJohn Levon <john.levon@sun.com>2008-09-09 06:00:28 -0700
committerJohn Levon <john.levon@sun.com>2008-09-09 06:00:28 -0700
commit391647d5ee9b25dc5307abb55f583388e08b2dd7 (patch)
treef61cd017c094950b6e73afb1c3f84c831658098b /usr/src/uts/i86pc/i86hvm
parentc2e312289d4832c879e67a27c7af9dfc9873979e (diff)
downloadillumos-joyent-391647d5ee9b25dc5307abb55f583388e08b2dd7.tar.gz
6717224 HVM domUs stop doing IO, peg CPU
Diffstat (limited to 'usr/src/uts/i86pc/i86hvm')
-rw-r--r--usr/src/uts/i86pc/i86hvm/io/xpv/evtchn.c11
-rw-r--r--usr/src/uts/i86pc/i86hvm/io/xpv/xpv.conf11
2 files changed, 16 insertions, 6 deletions
diff --git a/usr/src/uts/i86pc/i86hvm/io/xpv/evtchn.c b/usr/src/uts/i86pc/i86hvm/io/xpv/evtchn.c
index 14d5bcc4b9..6fbaa568cd 100644
--- a/usr/src/uts/i86pc/i86hvm/io/xpv/evtchn.c
+++ b/usr/src/uts/i86pc/i86hvm/io/xpv/evtchn.c
@@ -24,8 +24,6 @@
* Use is subject to license terms.
*/
-#pragma ident "%Z%%M% %I% %E% SMI"
-
#include <sys/types.h>
#include <sys/xpv_support.h>
#include <sys/hypervisor.h>
@@ -230,7 +228,14 @@ evtchn_callback_fcn(caddr_t arg0, caddr_t arg1)
int low, high;
ulong_t sels;
- vci = &HYPERVISOR_shared_info->vcpu_info[CPU->cpu_id];
+ /*
+ * Xen hard-codes all notifications to VCPU0, so we bind
+ * ourselves via xpv.conf. Note that this also assumes that all
+ * evtchns are bound to VCPU0, which is true by default.
+ */
+ ASSERT(CPU->cpu_id == 0);
+
+ vci = &HYPERVISOR_shared_info->vcpu_info[0];
again:
DTRACE_PROBE2(evtchn__scan__start, int, vci->evtchn_upcall_pending,
diff --git a/usr/src/uts/i86pc/i86hvm/io/xpv/xpv.conf b/usr/src/uts/i86pc/i86hvm/io/xpv/xpv.conf
index d599f6f3ff..aa8b997152 100644
--- a/usr/src/uts/i86pc/i86hvm/io/xpv/xpv.conf
+++ b/usr/src/uts/i86pc/i86hvm/io/xpv/xpv.conf
@@ -19,10 +19,15 @@
# CDDL HEADER END
#
#
-# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
-# ident "%Z%%M% %I% %E% SMI"
-
interrupt-priorities=9;
+#
+# Xen requires us to run this ISR on VCPU0, since that's where all HVM
+# event channels are bound to, and only the vcpu_info for VCPU0 gets
+# updated. This will bind us to VCPU0, as well as preventing any
+# attempt to offline the CPU.
+#
+xpv_intpt_bind_cpus=0;