]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
xen/events: use xen_vcpu_id mapping in events_base
authorVitaly Kuznetsov <vkuznets@redhat.com>
Thu, 30 Jun 2016 15:56:40 +0000 (17:56 +0200)
committerBob Liu <bob.liu@oracle.com>
Thu, 20 Oct 2016 08:02:49 +0000 (04:02 -0400)
EVTCHNOP_bind_ipi and EVTCHNOP_bind_virq pass vCPU id as a parameter
and Xen's idea of vCPU id should be used. Use the newly introduced
xen_vcpu_id mapping to convert it from Linux's id.

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
(cherry picked from commit 8058c0b897e7d1ba5c900cb17eb82aa0d88fca53)
Signed-off-by: Bob Liu <bob.liu@oracle.com>
Orabug: 24820937

drivers/xen/events/events_base.c

index ac6975c0e5d2fa1720d6f36dd22eb9e051c6407d..0aa021dc384585f7dd38eabd749b58c4586f716e 100644 (file)
@@ -894,7 +894,7 @@ static int bind_ipi_to_irq(unsigned int ipi, unsigned int cpu)
                irq_set_chip_and_handler_name(irq, &xen_percpu_chip,
                                              handle_percpu_irq, "ipi");
 
-               bind_ipi.vcpu = cpu;
+               bind_ipi.vcpu = xen_vcpu_nr(cpu);
                if (HYPERVISOR_event_channel_op(EVTCHNOP_bind_ipi,
                                                &bind_ipi) != 0)
                        BUG();
@@ -990,7 +990,7 @@ int bind_virq_to_irq(unsigned int virq, unsigned int cpu, bool percpu)
                                                      handle_edge_irq, "virq");
 
                bind_virq.virq = virq;
-               bind_virq.vcpu = cpu;
+               bind_virq.vcpu = xen_vcpu_nr(cpu);
                ret = HYPERVISOR_event_channel_op(EVTCHNOP_bind_virq,
                                                &bind_virq);
                if (ret == 0)
@@ -1318,7 +1318,7 @@ static int rebind_irq_to_cpu(unsigned irq, unsigned tcpu)
 
        /* Send future instances of this interrupt to other vcpu. */
        bind_vcpu.port = evtchn;
-       bind_vcpu.vcpu = tcpu;
+       bind_vcpu.vcpu = xen_vcpu_nr(tcpu);
 
        /*
         * Mask the event while changing the VCPU binding to prevent
@@ -1458,7 +1458,7 @@ static void restore_cpu_virqs(unsigned int cpu)
 
                /* Get a new binding from Xen. */
                bind_virq.virq = virq;
-               bind_virq.vcpu = cpu;
+               bind_virq.vcpu = xen_vcpu_nr(cpu);
                if (HYPERVISOR_event_channel_op(EVTCHNOP_bind_virq,
                                                &bind_virq) != 0)
                        BUG();
@@ -1482,7 +1482,7 @@ static void restore_cpu_ipis(unsigned int cpu)
                BUG_ON(ipi_from_irq(irq) != ipi);
 
                /* Get a new binding from Xen. */
-               bind_ipi.vcpu = cpu;
+               bind_ipi.vcpu = xen_vcpu_nr(cpu);
                if (HYPERVISOR_event_channel_op(EVTCHNOP_bind_ipi,
                                                &bind_ipi) != 0)
                        BUG();