Lines Matching full:msi

9 #include <linux/msi.h>
147 .name = "PCI-MSI",
303 struct msi_desc *msi; in arch_setup_msi_irqs() local
323 * Request MSI interrupts: in arch_setup_msi_irqs()
324 * When using MSI, nvec_used interrupt sources and their irq in arch_setup_msi_irqs()
325 * descriptors are controlled through one msi descriptor. in arch_setup_msi_irqs()
326 * Thus the outer loop over msi descriptors shall run only once, in arch_setup_msi_irqs()
328 * When using MSI-X, each interrupt vector/irq descriptor in arch_setup_msi_irqs()
329 * is bound to exactly one msi descriptor (nvec_used is one). in arch_setup_msi_irqs()
331 * over the MSI-X descriptors. in arch_setup_msi_irqs()
334 msi_for_each_desc(msi, &pdev->dev, MSI_DESC_NOTASSOCIATED) { in arch_setup_msi_irqs()
337 irqs_per_msi = min_t(unsigned int, msi_vecs, msi->nvec_used); in arch_setup_msi_irqs()
340 msi->affinity : NULL); in arch_setup_msi_irqs()
345 rc = irq_set_msi_desc_off(irq, i, msi); in arch_setup_msi_irqs()
354 if (msi->affinity) in arch_setup_msi_irqs()
355 cpu = cpumask_first(&msi->affinity->mask); in arch_setup_msi_irqs()
391 struct msi_desc *msi; in arch_teardown_msi_irqs() local
400 /* Release MSI interrupts */ in arch_teardown_msi_irqs()
401 msi_for_each_desc(msi, &pdev->dev, MSI_DESC_ASSOCIATED) { in arch_teardown_msi_irqs()
402 for (i = 0; i < msi->nvec_used; i++) { in arch_teardown_msi_irqs()
403 irq_set_msi_desc(msi->irq + i, NULL); in arch_teardown_msi_irqs()
404 irq_free_desc(msi->irq + i); in arch_teardown_msi_irqs()
406 msi->msg.address_lo = 0; in arch_teardown_msi_irqs()
407 msi->msg.address_hi = 0; in arch_teardown_msi_irqs()
408 msi->msg.data = 0; in arch_teardown_msi_irqs()
409 msi->irq = 0; in arch_teardown_msi_irqs()