Lines Matching full:irqs
114 * struct vmd_irq_list - list of driver requested IRQs mapping to a VMD vector
117 * @count: number of child IRQs assigned to this vector; used to track
135 struct vmd_irq_list *irqs; member
153 struct vmd_irq_list *irqs) in index_from_irqs() argument
155 return irqs - vmd->irqs; in index_from_irqs()
159 * Drivers managing a device in a VMD domain allocate their own IRQs as before,
238 return &vmd->irqs[vmd->first_vec]; in vmd_next_irq()
248 return &vmd->irqs[vmd->first_vec]; in vmd_next_irq()
254 if (vmd->irqs[i].count < vmd->irqs[best].count) in vmd_next_irq()
256 vmd->irqs[best].count++; in vmd_next_irq()
259 return &vmd->irqs[best]; in vmd_next_irq()
666 struct vmd_irq_list *irqs = data; in vmd_irq() local
670 idx = srcu_read_lock(&irqs->srcu); in vmd_irq()
671 list_for_each_entry_rcu(vmdirq, &irqs->irq_list, node) in vmd_irq()
673 srcu_read_unlock(&irqs->srcu, idx); in vmd_irq()
692 vmd->irqs = devm_kcalloc(&dev->dev, vmd->msix_count, sizeof(*vmd->irqs), in vmd_alloc_irqs()
694 if (!vmd->irqs) in vmd_alloc_irqs()
698 err = init_srcu_struct(&vmd->irqs[i].srcu); in vmd_alloc_irqs()
702 INIT_LIST_HEAD(&vmd->irqs[i].irq_list); in vmd_alloc_irqs()
703 vmd->irqs[i].virq = pci_irq_vector(dev, i); in vmd_alloc_irqs()
704 err = devm_request_irq(&dev->dev, vmd->irqs[i].virq, in vmd_alloc_irqs()
706 vmd->name, &vmd->irqs[i]); in vmd_alloc_irqs()
1052 cleanup_srcu_struct(&vmd->irqs[i].srcu); in vmd_cleanup_srcu()
1084 devm_free_irq(dev, vmd->irqs[i].virq, &vmd->irqs[i]); in vmd_suspend()
1098 err = devm_request_irq(dev, vmd->irqs[i].virq, in vmd_resume()
1100 vmd->name, &vmd->irqs[i]); in vmd_resume()