xen/events: Use PIRQ instead of GSI value when unmapping MSI/MSI-X irqs.
authorKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Fri, 19 Nov 2010 16:27:09 +0000 (11:27 -0500)
committerJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Mon, 22 Nov 2010 20:10:34 +0000 (12:10 -0800)
When we allocate a vector for MSI/MSI-X we save away the PIRQ, and the
vector value. When we unmap (de-allocate) the MSI/MSI-X vector(s) we
need to provide the PIRQ and the vector value. What we did instead
was to provide the GSI (which was zero) and the vector value, and we
got these unhappy error messages:

(XEN) irq.c:1575: dom0: pirq 0 not mapped
[    7.733415] unmap irq failed -22

This patches fixes this and we use the PIRQ value instead of the GSI
value.

CC: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
drivers/xen/events.c

index d6d4f76ed500c20e6c07f09877c6a0c6853bff60..2811bb988ea0551b85bc4c77d15b8590382abdf4 100644 (file)
@@ -755,7 +755,7 @@ int xen_destroy_irq(int irq)
                goto out;
 
        if (xen_initial_domain()) {
-               unmap_irq.pirq = info->u.pirq.gsi;
+               unmap_irq.pirq = info->u.pirq.pirq;
                unmap_irq.domid = DOMID_SELF;
                rc = HYPERVISOR_physdev_op(PHYSDEVOP_unmap_pirq, &unmap_irq);
                if (rc) {