Lines Matching refs:msix
742 static void hfi1_update_sdma_affinity(struct hfi1_msix_entry *msix, int cpu) in hfi1_update_sdma_affinity() argument
744 struct sdma_engine *sde = msix->arg; in hfi1_update_sdma_affinity()
760 cpumask_clear(&msix->mask); in hfi1_update_sdma_affinity()
761 cpumask_set_cpu(cpu, &msix->mask); in hfi1_update_sdma_affinity()
763 msix->irq, irq_type_names[msix->type], in hfi1_update_sdma_affinity()
765 irq_set_affinity_hint(msix->irq, &msix->mask); in hfi1_update_sdma_affinity()
778 if (other_msix->type != IRQ_SDMA || other_msix == msix) in hfi1_update_sdma_affinity()
794 struct hfi1_msix_entry *msix = container_of(notify, in hfi1_irq_notifier_notify() local
799 hfi1_update_sdma_affinity(msix, cpu); in hfi1_irq_notifier_notify()
810 static void hfi1_setup_sdma_notifier(struct hfi1_msix_entry *msix) in hfi1_setup_sdma_notifier() argument
812 struct irq_affinity_notify *notify = &msix->notify; in hfi1_setup_sdma_notifier()
814 notify->irq = msix->irq; in hfi1_setup_sdma_notifier()
823 static void hfi1_cleanup_sdma_notifier(struct hfi1_msix_entry *msix) in hfi1_cleanup_sdma_notifier() argument
825 struct irq_affinity_notify *notify = &msix->notify; in hfi1_cleanup_sdma_notifier()
837 struct hfi1_msix_entry *msix) in get_irq_affinity() argument
848 cpumask_clear(&msix->mask); in get_irq_affinity()
852 switch (msix->type) { in get_irq_affinity()
854 sde = (struct sdma_engine *)msix->arg; in get_irq_affinity()
862 rcd = (struct hfi1_ctxtdata *)msix->arg; in get_irq_affinity()
870 rcd = (struct hfi1_ctxtdata *)msix->arg; in get_irq_affinity()
875 dd_dev_err(dd, "Invalid IRQ type %d\n", msix->type); in get_irq_affinity()
898 cpumask_set_cpu(cpu, &msix->mask); in get_irq_affinity()
900 msix->irq, irq_type_names[msix->type], in get_irq_affinity()
902 irq_set_affinity_hint(msix->irq, &msix->mask); in get_irq_affinity()
904 if (msix->type == IRQ_SDMA) { in get_irq_affinity()
906 hfi1_setup_sdma_notifier(msix); in get_irq_affinity()
912 int hfi1_get_irq_affinity(struct hfi1_devdata *dd, struct hfi1_msix_entry *msix) in hfi1_get_irq_affinity() argument
917 ret = get_irq_affinity(dd, msix); in hfi1_get_irq_affinity()
923 struct hfi1_msix_entry *msix) in hfi1_put_irq_affinity() argument
931 switch (msix->type) { in hfi1_put_irq_affinity()
934 hfi1_cleanup_sdma_notifier(msix); in hfi1_put_irq_affinity()
940 struct hfi1_ctxtdata *rcd = msix->arg; in hfi1_put_irq_affinity()
956 cpumask_andnot(&set->used, &set->used, &msix->mask); in hfi1_put_irq_affinity()
960 irq_set_affinity_hint(msix->irq, NULL); in hfi1_put_irq_affinity()
961 cpumask_clear(&msix->mask); in hfi1_put_irq_affinity()