mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-30 09:26:45 +07:00
scsi: megaraid_sas: enable intx only if msix request fails
Without this fix, driver will enable INTx Interrupt pin even though MSI-x vectors are enabled. See below lspci output. DisINTx is unset for MSIx setup. lspci -s 85:00.0 -vvv |grep INT |grep Control Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- After applying this fix, driver will enable INTx Interrupt pin only if Legacy interrupt method is required. See below lspci output. DisINTx is set for MSIx setup. lspci -s 85:00.0 -vvv |grep INT |grep Control Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+ Signed-off-by: Kashyap Desai <kashyap.desai@broadcom.com> Reviewed-by: Tomas Henzl <thenzl@redhat.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
85e8a23936
commit
64ff64b90e
@ -5034,10 +5034,12 @@ megasas_setup_irqs_msix(struct megasas_instance *instance, u8 is_probe)
|
||||
&instance->irq_context[j]);
|
||||
/* Retry irq register for IO_APIC*/
|
||||
instance->msix_vectors = 0;
|
||||
if (is_probe)
|
||||
if (is_probe) {
|
||||
pci_free_irq_vectors(instance->pdev);
|
||||
return megasas_setup_irqs_ioapic(instance);
|
||||
else
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
@ -5277,9 +5279,11 @@ static int megasas_init_fw(struct megasas_instance *instance)
|
||||
MPI2_REPLY_POST_HOST_INDEX_OFFSET);
|
||||
}
|
||||
|
||||
i = pci_alloc_irq_vectors(instance->pdev, 1, 1, PCI_IRQ_LEGACY);
|
||||
if (i < 0)
|
||||
goto fail_setup_irqs;
|
||||
if (!instance->msix_vectors) {
|
||||
i = pci_alloc_irq_vectors(instance->pdev, 1, 1, PCI_IRQ_LEGACY);
|
||||
if (i < 0)
|
||||
goto fail_setup_irqs;
|
||||
}
|
||||
|
||||
dev_info(&instance->pdev->dev,
|
||||
"firmware supports msix\t: (%d)", fw_msix_count);
|
||||
|
Loading…
Reference in New Issue
Block a user