Lines Matching refs:msix
740 static void hfi1_update_sdma_affinity(struct hfi1_msix_entry *msix, int cpu) in hfi1_update_sdma_affinity() argument
742 struct sdma_engine *sde = msix->arg; in hfi1_update_sdma_affinity()
758 cpumask_clear(&msix->mask); in hfi1_update_sdma_affinity()
759 cpumask_set_cpu(cpu, &msix->mask); in hfi1_update_sdma_affinity()
761 msix->irq, irq_type_names[msix->type], in hfi1_update_sdma_affinity()
763 irq_set_affinity_hint(msix->irq, &msix->mask); in hfi1_update_sdma_affinity()
776 if (other_msix->type != IRQ_SDMA || other_msix == msix) in hfi1_update_sdma_affinity()
792 struct hfi1_msix_entry *msix = container_of(notify, in hfi1_irq_notifier_notify() local
797 hfi1_update_sdma_affinity(msix, cpu); in hfi1_irq_notifier_notify()
808 static void hfi1_setup_sdma_notifier(struct hfi1_msix_entry *msix) in hfi1_setup_sdma_notifier() argument
810 struct irq_affinity_notify *notify = &msix->notify; in hfi1_setup_sdma_notifier()
812 notify->irq = msix->irq; in hfi1_setup_sdma_notifier()
821 static void hfi1_cleanup_sdma_notifier(struct hfi1_msix_entry *msix) in hfi1_cleanup_sdma_notifier() argument
823 struct irq_affinity_notify *notify = &msix->notify; in hfi1_cleanup_sdma_notifier()
835 struct hfi1_msix_entry *msix) in get_irq_affinity() argument
846 cpumask_clear(&msix->mask); in get_irq_affinity()
850 switch (msix->type) { in get_irq_affinity()
852 sde = (struct sdma_engine *)msix->arg; in get_irq_affinity()
860 rcd = (struct hfi1_ctxtdata *)msix->arg; in get_irq_affinity()
868 rcd = (struct hfi1_ctxtdata *)msix->arg; in get_irq_affinity()
873 dd_dev_err(dd, "Invalid IRQ type %d\n", msix->type); in get_irq_affinity()
896 cpumask_set_cpu(cpu, &msix->mask); in get_irq_affinity()
898 msix->irq, irq_type_names[msix->type], in get_irq_affinity()
900 irq_set_affinity_hint(msix->irq, &msix->mask); in get_irq_affinity()
902 if (msix->type == IRQ_SDMA) { in get_irq_affinity()
904 hfi1_setup_sdma_notifier(msix); in get_irq_affinity()
910 int hfi1_get_irq_affinity(struct hfi1_devdata *dd, struct hfi1_msix_entry *msix) in hfi1_get_irq_affinity() argument
915 ret = get_irq_affinity(dd, msix); in hfi1_get_irq_affinity()
921 struct hfi1_msix_entry *msix) in hfi1_put_irq_affinity() argument
929 switch (msix->type) { in hfi1_put_irq_affinity()
932 hfi1_cleanup_sdma_notifier(msix); in hfi1_put_irq_affinity()
938 struct hfi1_ctxtdata *rcd = msix->arg; in hfi1_put_irq_affinity()
954 cpumask_andnot(&set->used, &set->used, &msix->mask); in hfi1_put_irq_affinity()
958 irq_set_affinity_hint(msix->irq, NULL); in hfi1_put_irq_affinity()
959 cpumask_clear(&msix->mask); in hfi1_put_irq_affinity()