mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 20:54:03 +02:00
scsi: qla2xxx: Handle INTx not connected while passing through
The PCI_INTERRUPT_PIN reports if the device supports the INTx. However,
when the device is assigned to a guest via vfio, the PCI_INTERRUPT_PIN
is set to 0 (i.e none) if the line is not connected and/or the platform
cannot route the interrupt.
In such cases, the guest PCI_INTERRUPT_PIN is 0 and the port number
becomes -1 (255, uint8_t underflow) for qla[25|27|28]xx and qla2031
devices. The flt_region_nvram is never set, and subsequently the LUN
detection fails. Below warnings show the NVRAM configuration failure:
[]-0073:1: Inconsistent NVRAM checksum=0xffffffc0 id=HCAM version=0x100.
[]-0074:1: Falling back to functioning (yet invalid -- WWPN) defaults.
[]-0076:1: NVRAM configuration failed.
Handle this case and set the port_no to devfn like its done everywhere
else.
Reference: commit 2bd42b03ab ("vfio/pci: Virtualize zero INTx PIN if no pdev->irq")
Signed-off-by: Shivaprasad G Bhat <sbhat@linux.ibm.com>
Reviewed-by: Kyle Mahlkuch <kmahlkuc@linux.ibm.com>
Link: https://patch.msgid.link/177885270578.1573.14283751510936407585.stgit@linux.ibm.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
c6cee609f6
commit
7268e509b4
|
|
@ -2803,11 +2803,16 @@ qla2x00_set_isp_flags(struct qla_hw_data *ha)
|
|||
else {
|
||||
/* Get adapter physical port no from interrupt pin register. */
|
||||
pci_read_config_byte(ha->pdev, PCI_INTERRUPT_PIN, &ha->port_no);
|
||||
if (IS_QLA25XX(ha) || IS_QLA2031(ha) ||
|
||||
IS_QLA27XX(ha) || IS_QLA28XX(ha))
|
||||
ha->port_no--;
|
||||
else
|
||||
ha->port_no = !(ha->port_no & 1);
|
||||
if (ha->port_no == 0) {
|
||||
/* None of INT[A|B|C|D] may be virtualized by vfio */
|
||||
ha->port_no = PCI_FUNC(ha->pdev->devfn);
|
||||
} else {
|
||||
if (IS_QLA25XX(ha) || IS_QLA2031(ha) ||
|
||||
IS_QLA27XX(ha) || IS_QLA28XX(ha))
|
||||
ha->port_no--;
|
||||
else
|
||||
ha->port_no = !(ha->port_no & 1);
|
||||
}
|
||||
}
|
||||
|
||||
ql_dbg_pci(ql_dbg_init, ha->pdev, 0x000b,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user