From: Shivaprasad G Bhat <sbhat@linux.ibm.com>
To: njavali@marvell.com, GR-QLogic-Storage-Upstream@marvell.com,
James.Bottomley@HansenPartnership.com,
martin.petersen@oracle.com
Cc: linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org,
alex.williamson@nvidia.com, Kyle.Mahlkuch@ibm.com,
sbhat@linux.ibm.com
Subject: [PATCH] [SCSI] qla2xxx: Handle the INTx not connected while passing through
Date: Fri, 15 May 2026 13:45:18 +0000 [thread overview]
Message-ID: <177885270578.1573.14283751510936407585.stgit@linux.ibm.com> (raw)
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.
The patch handles the case, and sets the port_no to devfn like
its done everywhere else.
Reference: commit 2bd42b03ab6b ("vfio/pci: Virtualize zero INTx PIN if no pdev->irq")
Signed-off-by: Shivaprasad G Bhat <sbhat@linux.ibm.com>
---
drivers/scsi/qla2xxx/qla_os.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 72b1c28e4dae..a8d6a0a021f4 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -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,
next reply other threads:[~2026-05-15 13:46 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-15 13:45 Shivaprasad G Bhat [this message]
2026-05-25 4:24 ` Fwd: [PATCH] [SCSI] qla2xxx: Handle the INTx not connected while passing through priyama2
2026-06-03 8:12 ` Madhavan Srinivasan
2026-06-03 10:56 ` Shivaprasad G Bhat
2026-06-18 16:56 ` Kyle Mahlkuch
2026-07-29 2:55 ` Martin K. Petersen
2026-08-07 8:23 ` Shivaprasad G Bhat
2026-08-07 14:45 ` Martin K. Petersen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=177885270578.1573.14283751510936407585.stgit@linux.ibm.com \
--to=sbhat@linux.ibm.com \
--cc=GR-QLogic-Storage-Upstream@marvell.com \
--cc=James.Bottomley@HansenPartnership.com \
--cc=Kyle.Mahlkuch@ibm.com \
--cc=alex.williamson@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=njavali@marvell.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.