[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] PV-on-HVM: unmask_evtchn() must always use hypercall.



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1219308706 -3600
# Node ID 1ea9dd2c7331a7ac22e0debc749316840ce5fdca
# Parent  598d92a5ae7a0a426dc8cb2b6b2e5dce2b5036be
PV-on-HVM: unmask_evtchn() must always use hypercall.
Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
---
 unmodified_drivers/linux-2.6/platform-pci/evtchn.c |   41 +--------------------
 1 files changed, 2 insertions(+), 39 deletions(-)

diff -r 598d92a5ae7a -r 1ea9dd2c7331 
unmodified_drivers/linux-2.6/platform-pci/evtchn.c
--- a/unmodified_drivers/linux-2.6/platform-pci/evtchn.c        Wed Aug 20 
14:45:21 2008 +0100
+++ b/unmodified_drivers/linux-2.6/platform-pci/evtchn.c        Thu Aug 21 
09:51:46 2008 +0100
@@ -107,39 +107,8 @@ EXPORT_SYMBOL(mask_evtchn);
 
 void unmask_evtchn(int port)
 {
-       unsigned int cpu;
-       shared_info_t *s = shared_info_area;
-       vcpu_info_t *vcpu_info;
-
-       cpu = get_cpu();
-       vcpu_info = &s->vcpu_info[cpu];
-
-       /* Slow path (hypercall) if this is a non-local port.  We only
-          ever bind event channels to vcpu 0 in HVM guests. */
-       if (unlikely(cpu != 0)) {
-               evtchn_unmask_t op = { .port = port };
-               VOID(HYPERVISOR_event_channel_op(EVTCHNOP_unmask,
-                                                &op));
-               put_cpu();
-               return;
-       }
-
-       synch_clear_bit(port, &s->evtchn_mask[0]);
-
-       /*
-        * The following is basically the equivalent of
-        * 'hw_resend_irq'. Just like a real IO-APIC we 'lose the
-        * interrupt edge' if the channel is masked.
-        */
-       if (synch_test_bit(port, &s->evtchn_pending[0]) &&
-           !synch_test_and_set_bit(port / BITS_PER_LONG,
-                                   &vcpu_info->evtchn_pending_sel)) {
-               vcpu_info->evtchn_upcall_pending = 1;
-               if (!vcpu_info->evtchn_upcall_mask)
-                       force_evtchn_callback();
-       }
-
-       put_cpu();
+       evtchn_unmask_t op = { .port = port };
+       VOID(HYPERVISOR_event_channel_op(EVTCHNOP_unmask, &op));
 }
 EXPORT_SYMBOL(unmask_evtchn);
 
@@ -357,12 +326,6 @@ static irqreturn_t evtchn_interrupt(int 
        return IRQ_HANDLED;
 }
 
-void force_evtchn_callback(void)
-{
-       VOID(HYPERVISOR_xen_version(0, NULL));
-}
-EXPORT_SYMBOL(force_evtchn_callback);
-
 void irq_resume(void)
 {
        int evtchn, irq;

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.