| /linux/drivers/scsi/snic/ |
| H A D | snic_isr.c | 17 * snic_isr_msix_wq : MSIx ISR for work queue. 79 /* ONLY interrupt mode MSIX is supported */ in snic_free_intr() 80 for (i = 0; i < ARRAY_SIZE(snic->msix); i++) { in snic_free_intr() 81 if (snic->msix[i].requested) { in snic_free_intr() 83 snic->msix[i].devid); in snic_free_intr() 104 sprintf(snic->msix[SNIC_MSIX_WQ].devname, in snic_request_intr() 107 snic->msix[SNIC_MSIX_WQ].isr = snic_isr_msix_wq; in snic_request_intr() 108 snic->msix[SNIC_MSIX_WQ].devid = snic; in snic_request_intr() 110 sprintf(snic->msix[SNIC_MSIX_IO_CMPL].devname, in snic_request_intr() 113 snic->msix[SNIC_MSIX_IO_CMPL].isr = snic_isr_msix_io_cmpl; in snic_request_intr() [all …]
|
| /linux/drivers/scsi/bfa/ |
| H A D | bfa_hw_cb.c | 42 * MSIX - done in bfa_hwcb_rspq_ack_msix() 110 bfa->msix.nvecs = nvecs; in bfa_hwcb_msix_init() 119 if (bfa->msix.nvecs == 0) in bfa_hwcb_msix_ctrl_install() 122 if (bfa->msix.nvecs == 1) { in bfa_hwcb_msix_ctrl_install() 124 bfa->msix.handler[i] = bfa_msix_all; in bfa_hwcb_msix_ctrl_install() 129 bfa->msix.handler[i] = bfa_msix_lpu_err; in bfa_hwcb_msix_ctrl_install() 137 if (bfa->msix.nvecs == 0) in bfa_hwcb_msix_queue_install() 140 if (bfa->msix.nvecs == 1) { in bfa_hwcb_msix_queue_install() 142 bfa->msix.handler[i] = bfa_msix_all; in bfa_hwcb_msix_queue_install() 147 bfa->msix.handler[i] = bfa_msix_reqq; in bfa_hwcb_msix_queue_install() [all …]
|
| H A D | bfa_hw_ct.c | 108 bfa->msix.nvecs = nvecs; in bfa_hwct_msix_init() 115 if (bfa->msix.nvecs == 0) in bfa_hwct_msix_ctrl_install() 118 if (bfa->msix.nvecs == 1) in bfa_hwct_msix_ctrl_install() 119 bfa->msix.handler[BFI_MSIX_LPU_ERR_CT] = bfa_msix_all; in bfa_hwct_msix_ctrl_install() 121 bfa->msix.handler[BFI_MSIX_LPU_ERR_CT] = bfa_msix_lpu_err; in bfa_hwct_msix_ctrl_install() 129 if (bfa->msix.nvecs == 0) in bfa_hwct_msix_queue_install() 132 if (bfa->msix.nvecs == 1) { in bfa_hwct_msix_queue_install() 134 bfa->msix.handler[i] = bfa_msix_all; in bfa_hwct_msix_queue_install() 139 bfa->msix.handler[i] = bfa_msix_reqq; in bfa_hwct_msix_queue_install() 142 bfa->msix.handler[i] = bfa_msix_rspq; in bfa_hwct_msix_queue_install() [all …]
|
| /linux/drivers/scsi/fnic/ |
| H A D | fnic_isr.c | 122 i = irq - fnic->msix[0].irq_num; in fnic_isr_msix_wq_copy() 124 i < 0 || fnic->msix[i].irq_num != irq) { in fnic_isr_msix_wq_copy() 126 if (fnic->msix[i].irq_num == irq) in fnic_isr_msix_wq_copy() 164 for (i = 0; i < ARRAY_SIZE(fnic->msix); i++) in fnic_free_intr() 165 if (fnic->msix[i].requested) in fnic_free_intr() 167 fnic->msix[i].devid); in fnic_free_intr() 194 sprintf(fnic->msix[FNIC_MSIX_RQ].devname, in fnic_request_intr() 196 fnic->msix[FNIC_MSIX_RQ].isr = fnic_isr_msix_rq; in fnic_request_intr() 197 fnic->msix[FNIC_MSIX_RQ].devid = fnic; in fnic_request_intr() 199 sprintf(fnic->msix[FNIC_MSIX_WQ].devname, in fnic_request_intr() [all …]
|
| /linux/drivers/net/ethernet/intel/ice/ |
| H A D | ice_irq.c | 136 if (!pf->msix.min) in ice_init_interrupt_scheme() 137 pf->msix.min = ICE_MIN_MSIX; in ice_init_interrupt_scheme() 139 if (!pf->msix.max) in ice_init_interrupt_scheme() 140 pf->msix.max = min(total_vectors, in ice_init_interrupt_scheme() 143 pf->msix.total = total_vectors; in ice_init_interrupt_scheme() 144 pf->msix.rest = total_vectors - pf->msix.max; in ice_init_interrupt_scheme() 147 vectors = pf->msix.min; in ice_init_interrupt_scheme() 149 vectors = pf->msix.max; in ice_init_interrupt_scheme() 151 vectors = pci_alloc_irq_vectors(pf->pdev, pf->msix.min, vectors, in ice_init_interrupt_scheme() 156 ice_init_irq_tracker(pf, pf->msix.max, vectors); in ice_init_interrupt_scheme() [all …]
|
| H A D | ice_irq.h | 21 /* First MSIX vector used by SR-IOV VFs. Calculated by subtracting the 22 * number of MSIX vectors needed for all SR-IOV VFs from the number of 23 * MSIX vectors allowed on this PF.
|
| /linux/drivers/infiniband/hw/hfi1/ |
| H A D | affinity.c | 726 * Function updates the irq affinity hint for msix after it has been changed 730 static void hfi1_update_sdma_affinity(struct hfi1_msix_entry *msix, int cpu) in hfi1_update_sdma_affinity() argument 732 struct sdma_engine *sde = msix->arg; in hfi1_update_sdma_affinity() 748 cpumask_clear(&msix->mask); in hfi1_update_sdma_affinity() 749 cpumask_set_cpu(cpu, &msix->mask); in hfi1_update_sdma_affinity() 751 msix->irq, irq_type_names[msix->type], in hfi1_update_sdma_affinity() 753 irq_set_affinity_hint(msix->irq, &msix->mask); in hfi1_update_sdma_affinity() 766 if (other_msix->type != IRQ_SDMA || other_msix == msix) in hfi1_update_sdma_affinity() 782 struct hfi1_msix_entry *msix = container_of(notify, in hfi1_irq_notifier_notify() local 787 hfi1_update_sdma_affinity(msix, cpu); in hfi1_irq_notifier_notify() [all …]
|
| H A D | affinity.h | 44 struct hfi1_msix_entry *msix); 50 struct hfi1_msix_entry *msix);
|
| /linux/drivers/net/ethernet/chelsio/cxgb4/ |
| H A D | cxgb4_tc_mqprio.c | 154 int ret, msix = 0; in cxgb4_mqprio_alloc_hw_resources() local 177 msix = -((int)adap->sge.intrq.abs_id + 1); in cxgb4_mqprio_alloc_hw_resources() 184 if (msix >= 0) { in cxgb4_mqprio_alloc_hw_resources() 185 msix = cxgb4_get_msix_idx_from_bmap(adap); in cxgb4_mqprio_alloc_hw_resources() 186 if (msix < 0) { in cxgb4_mqprio_alloc_hw_resources() 187 ret = msix; in cxgb4_mqprio_alloc_hw_resources() 191 eorxq->msix = &adap->msix_info[msix]; in cxgb4_mqprio_alloc_hw_resources() 192 snprintf(eorxq->msix->desc, in cxgb4_mqprio_alloc_hw_resources() 193 sizeof(eorxq->msix->desc), in cxgb4_mqprio_alloc_hw_resources() 206 dev, msix, &eorxq->fl, in cxgb4_mqprio_alloc_hw_resources() [all …]
|
| /linux/drivers/vfio/pci/ |
| H A D | vfio_pci_intrs.c | 381 static int vfio_msi_enable(struct vfio_pci_core_device *vdev, int nvec, bool msix) in vfio_msi_enable() argument 384 unsigned int flag = msix ? PCI_IRQ_MSIX : PCI_IRQ_MSI; in vfio_msi_enable() 402 vdev->irq_type = msix ? VFIO_PCI_MSIX_IRQ_INDEX : in vfio_msi_enable() 405 if (!msix) { in vfio_msi_enable() 427 unsigned int vector, bool msix) in vfio_msi_alloc_irq() argument 437 if (irq > 0 || !msix || !vdev->has_dyn_msix) in vfio_msi_alloc_irq() 448 unsigned int vector, int fd, bool msix) in vfio_msi_set_vector_signal() argument 475 irq = vfio_msi_alloc_irq(vdev, vector, msix); in vfio_msi_set_vector_signal() 485 msix ? "x" : "", vector, pci_name(pdev)); in vfio_msi_set_vector_signal() 503 if (msix) { in vfio_msi_set_vector_signal() [all …]
|
| /linux/drivers/net/ethernet/emulex/benet/ |
| H A D | be_roce.c | 41 /* only msix is supported on these devices */ in _be_roce_dev_add() 65 dev_info.msix.num_vectors = min(num_vec, MAX_MSIX_VECTORS); in _be_roce_dev_add() 70 dev_info.msix.start_vector = adapter->num_evt_qs; in _be_roce_dev_add() 71 for (i = 0; i < dev_info.msix.num_vectors; i++) { in _be_roce_dev_add() 72 dev_info.msix.vector_list[i] = in _be_roce_dev_add() 76 dev_info.msix.num_vectors = 0; in _be_roce_dev_add()
|
| /linux/Documentation/devicetree/bindings/interrupt-controller/ |
| H A D | al,alpine-msix.yaml | 4 $id: http://devicetree.org/schemas/interrupt-controller/al,alpine-msix.yaml# 7 title: Alpine MSIX controller 14 const: al,alpine-msix 43 compatible = "al,alpine-msix";
|
| /linux/tools/testing/selftests/vfio/ |
| H A D | vfio_pci_device_test.c | 117 FIXTURE_VARIANT_ADD(vfio_pci_irq_test, msix) { in FIXTURE_VARIANT_ADD() argument 135 bool msix = variant->irq_index == VFIO_PCI_MSIX_IRQ_INDEX; in TEST_F() local 141 if (msix) in TEST_F() 149 SKIP(return, "MSI%s: not supported\n", msix ? "-x" : ""); in TEST_F() 152 printf("MSI%s: enabled %d interrupts\n", msix ? "-x" : "", count); in TEST_F()
|
| /linux/drivers/rapidio/devices/ |
| H A D | tsi721.c | 630 mbox = (irq - priv->msix[TSI721_VECT_OMB0_DONE].vector) % RIO_MAX_MBOX; in tsi721_omsg_msix() 649 mbox = (irq - priv->msix[TSI721_VECT_IMB0_RCV].vector) % RIO_MAX_MBOX; in tsi721_imsg_msix() 719 err = request_irq(priv->msix[TSI721_VECT_IDB].vector, in tsi721_request_msix() 721 priv->msix[TSI721_VECT_IDB].irq_name, (void *)priv); in tsi721_request_msix() 725 err = request_irq(priv->msix[TSI721_VECT_PWRX].vector, in tsi721_request_msix() 727 priv->msix[TSI721_VECT_PWRX].irq_name, (void *)priv); in tsi721_request_msix() 729 free_irq(priv->msix[TSI721_VECT_IDB].vector, (void *)priv); in tsi721_request_msix() 795 priv->msix[TSI721_VECT_IDB].vector = entries[TSI721_VECT_IDB].vector; in tsi721_enable_msix() 796 snprintf(priv->msix[TSI721_VECT_IDB].irq_name, IRQ_DEVICE_NAME_MAX, in tsi721_enable_msix() 798 priv->msix[TSI721_VECT_PWRX].vector = entries[TSI721_VECT_PWRX].vector; in tsi721_enable_msix() [all …]
|
| /linux/drivers/ntb/hw/amd/ |
| H A D | ntb_hw_amd.c | 730 /* Try to set up msix irq */ in ndev_init_isr() 736 ndev->msix = kcalloc_node(msix_max, sizeof(*ndev->msix), in ndev_init_isr() 738 if (!ndev->msix) in ndev_init_isr() 742 ndev->msix[i].entry = i; in ndev_init_isr() 744 msix_count = pci_enable_msix_range(pdev, ndev->msix, in ndev_init_isr() 749 /* NOTE: Disable MSIX if msix count is less than 16 because of in ndev_init_isr() 760 rc = request_irq(ndev->msix[i].vector, ndev_vec_isr, 0, in ndev_init_isr() 766 dev_dbg(&pdev->dev, "Using msix interrupts\n"); in ndev_init_isr() 773 free_irq(ndev->msix[i].vector, &ndev->vec[i]); in ndev_init_isr() 776 kfree(ndev->msix); in ndev_init_isr() [all …]
|
| /linux/drivers/scsi/csiostor/ |
| H A D | csio_isr.c | 77 * This is the ISR for FW events. It is shared b/w MSIX 100 * csio_fwevt_isr() - FW events MSIX ISR 209 * This routine is shared b/w MSIX and INTx. 248 * csio_scsi_isr() - SCSI MSIX handler 252 * This is the top level SCSI MSIX handler. Calls csio_scsi_isr_handler() 400 /* Add the MSIX vector descriptions */ in csio_request_irqs() 518 csio_dbg(hw, "FW supp #niq:%d, trying %d msix's\n", hw->cfg_niq, cnt); in csio_enable_msix() 556 /* Try MSIX, then MSI or fall back to INTx */ in csio_intr_enable() 579 (hw->intr_mode == CSIO_IM_MSIX) ? "MSIX" : in csio_intr_enable()
|
| /linux/arch/arm/boot/dts/amazon/ |
| H A D | alpine.dtsi | 164 msi-parent = <&msix>; 167 msix: msix@fbe00000 { label 168 compatible = "al,alpine-msix";
|
| /linux/drivers/net/ethernet/marvell/octeontx2/af/ |
| H A D | rvu.c | 569 /* Set start MSIX vector for this LF within this PF/VF */ in rvu_scan_block() 583 "PF%d:VF%d is configured with zero msix vectors, %d\n", in rvu_check_min_msix_vec() 620 /* Get num of MSIX vectors attached to this PF */ in rvu_setup_msix_resources() 622 pfvf->msix.max = ((cfg >> 32) & 0xFFF) + 1; in rvu_setup_msix_resources() 623 rvu_check_min_msix_vec(rvu, pfvf->msix.max, pf, 0); in rvu_setup_msix_resources() 625 /* Alloc msix bitmap for this PF */ in rvu_setup_msix_resources() 626 err = rvu_alloc_bitmap(&pfvf->msix); in rvu_setup_msix_resources() 630 /* Allocate memory for MSIX vector to RVU block LF mapping */ in rvu_setup_msix_resources() 631 pfvf->msix_lfmap = devm_kcalloc(rvu->dev, pfvf->msix.max, in rvu_setup_msix_resources() 636 /* For PF0 (AF) firmware will set msix vector offsets for in rvu_setup_msix_resources() [all …]
|
| /linux/drivers/edac/ |
| H A D | thunderx_edac.c | 1071 struct msix_entry *msix = irq_id; in thunderx_ocx_com_isr() local 1072 struct thunderx_ocx *ocx = container_of(msix, struct thunderx_ocx, in thunderx_ocx_com_isr() 1073 msix_ent[msix->entry]); in thunderx_ocx_com_isr() 1100 struct msix_entry *msix = irq_id; in thunderx_ocx_com_threaded_isr() local 1101 struct thunderx_ocx *ocx = container_of(msix, struct thunderx_ocx, in thunderx_ocx_com_threaded_isr() 1102 msix_ent[msix->entry]); in thunderx_ocx_com_threaded_isr() 1164 struct msix_entry *msix = irq_id; in thunderx_ocx_lnk_isr() local 1165 struct thunderx_ocx *ocx = container_of(msix, struct thunderx_ocx, in thunderx_ocx_lnk_isr() 1166 msix_ent[msix->entry]); in thunderx_ocx_lnk_isr() 1171 ctx->link = msix->entry; in thunderx_ocx_lnk_isr() [all …]
|
| /linux/drivers/gpu/drm/xe/ |
| H A D | xe_irq.h | 23 const char *name, bool dynamic_msix, u16 *msix); 24 void xe_irq_msix_free_irq(struct xe_device *xe, u16 msix);
|
| /linux/drivers/crypto/cavium/nitrox/ |
| H A D | nitrox_isr.c | 318 dev_err(DEV(ndev), "msix vectors %d alloc failed\n", nr_vecs); in nitrox_register_interrupts() 395 vec = ndev->iov.msix.vector; in nitrox_sriov_unregister_interrupts() 419 ndev->iov.msix.entry = NON_RING_MSIX_BASE; in nitrox_sriov_register_interupts() 420 ret = pci_enable_msix_exact(pdev, &ndev->iov.msix, NR_NON_RING_VECTORS); in nitrox_sriov_register_interupts() 439 vec = ndev->iov.msix.vector; in nitrox_sriov_register_interupts()
|
| /linux/rust/kernel/pci/ |
| H A D | irq.rs | 30 MsiX, enumerator 39 IrqType::MsiX => bindings::PCI_IRQ_MSIX, in as_raw() 62 /// .with(IrqType::MsiX); 239 /// .with(pci::IrqType::MsiX);
|
| /linux/drivers/net/ethernet/huawei/hinic/ |
| H A D | hinic_hw_dev.c | 149 * init_msix - enable the msix and save the entries 178 dev_err(&pdev->dev, "Failed to enable pci msix\n"); in init_msix() 186 * disable_msix - disable the msix 935 dev_err(&pdev->dev, "Failed to init msix\n"); in hinic_init_hwdev() 1088 * hinic_hwdev_msix_cnt_set - clear message attribute counters for msix entry 1100 * hinic_hwdev_msix_set - set message attribute for msix entry 1106 * @lli_credit_limit: maximum credits for low latency msix messages (unit 8) 1107 * @resend_timer: maximum wait for resending msix (unit coalesc period) 1161 * hinic_hwdev_set_msix_state- set msix state 1164 * @flag: msix state
|
| H A D | hinic_hw_if.c | 27 * hinic_msix_attr_set - set message attribute for msix entry 33 * @lli_credit_limit: maximum credits for low latency msix messages (unit 8) 34 * @resend_timer: maximum wait for resending msix (unit coalesc period) 61 * hinic_msix_attr_cnt_clear - clear message attribute counters for msix entry
|
| /linux/drivers/dma/ioat/ |
| H A D | init.c | 133 static char ioat_interrupt_style[32] = "msix"; 137 "set ioat interrupt style: msix (default), msi, intx"); 408 struct msix_entry *msix; in ioat_dma_setup_interrupts() local 413 if (!strcmp(ioat_interrupt_style, "msix")) in ioat_dma_setup_interrupts() 414 goto msix; in ioat_dma_setup_interrupts() 422 msix: in ioat_dma_setup_interrupts() 433 msix = &ioat_dma->msix_entries[i]; in ioat_dma_setup_interrupts() 435 err = devm_request_irq(dev, msix->vector, in ioat_dma_setup_interrupts() 437 "ioat-msix", ioat_chan); in ioat_dma_setup_interrupts() 440 msix = &ioat_dma->msix_entries[j]; in ioat_dma_setup_interrupts() [all …]
|