int cpu;
        u64 res;
 
-       dest = irq_data_get_affinity_mask(data);
+       dest = irq_data_get_effective_affinity_mask(data);
        pdev = msi_desc_to_pci_dev(msi_desc);
        pbus = pdev->bus;
        hbus = container_of(pbus->sysdata, struct hv_pcibus_device, sysdata);
        struct hv_pci_dev *hpdev;
        struct pci_bus *pbus;
        struct pci_dev *pdev;
+       struct cpumask *dest;
        struct compose_comp_ctxt comp;
        struct tran_int_desc *int_desc;
        struct {
        int ret;
 
        pdev = msi_desc_to_pci_dev(irq_data_get_msi_desc(data));
+       dest = irq_data_get_effective_affinity_mask(data);
        pbus = pdev->bus;
        hbus = container_of(pbus->sysdata, struct hv_pcibus_device, sysdata);
        hpdev = get_pcichild_wslot(hbus, devfn_to_wslot(pdev->devfn));
        switch (pci_protocol_version) {
        case PCI_PROTOCOL_VERSION_1_1:
                size = hv_compose_msi_req_v1(&ctxt.int_pkts.v1,
-                                       irq_data_get_affinity_mask(data),
+                                       dest,
                                        hpdev->desc.win_slot.slot,
                                        cfg->vector);
                break;
 
        case PCI_PROTOCOL_VERSION_1_2:
                size = hv_compose_msi_req_v2(&ctxt.int_pkts.v2,
-                                       irq_data_get_affinity_mask(data),
+                                       dest,
                                        hpdev->desc.win_slot.slot,
                                        cfg->vector);
                break;