|
|
Log in / Subscribe / Register

scsi: qla2xxx: Add QLA29xx series adapter support

From:  Nilesh Javali <njavali-AT-marvell.com>
To:  <martin.petersen-AT-oracle.com>
Subject:  [PATCH v2 00/60] scsi: qla2xxx: Add QLA29xx series adapter support
Date:  Fri, 12 Jun 2026 15:22:33 +0530
Message-ID:  <20260612095333.1666592-1-njavali@marvell.com>
Cc:  <linux-scsi-AT-vger.kernel.org>, <GR-FC-Storage-Upstream-AT-marvell.com>, <agurumurthy-AT-marvell.com>, <emilne-AT-redhat.com>, <jmeneghi-AT-redhat.com>, <hare-AT-suse.com>
Archive-link:  Article

Add support for the QLA29xx generation of Marvell QLogic
Fibre Channel HBAs (ISP2091/ISP2291/ISP2099/ISP2299).
The 29xx family shares much of its architecture with the
existing 27xx/28xx adapters but introduces 128-byte request
and response ring entries (up from 64 bytes), requiring
extended IOCB definitions and updated ring management
throughout the driver.

The key hardware change is the wider IOCB format: every
request and response queue entry is now 128 bytes.
This propagates into every code path that builds, submits,
or processes IOCBs -- command submission, status completion,
marker, CT pass-through, ELS, logio, task management,
abort, ABTS, VP control, and NVMe.

The series is organised as follows:

Patches 01-08: Foundation and flash/firmware infrastructure
  PCI device ID registration, ISP-flags wiring, flash read/write
  interface, NVRAM configuration, queue initialisation, FC operational
  firmware load, and BSG passthrough (flash block I/O, MPI firmware
  load/dump).

Patches 09-13: 128-byte IOCB infrastructure
  New qla_fw29.h header with extended structure definitions, status
  continuation and marker IOCBs, removal of duplicate flash memo
  block defines, IO-path updates to select the correct IOCB size, and
  introduction of entry-size helper functions that centralise the
  IS_QLA29XX() dispatch pattern.

Patches 14-26: Sysfs, mailbox commands, and core enablement
  Sysfs attribute gating for unsupported 29xx features, mailbox command
  enablement (get_fw_version, execute_fw, get_adapter_id,
  init_firmware, get_firmware_state, serdes, ELS, echo_test,
  data rate), shutdown path, ring-slot helpers, and memory allocation
  updates.

Patches 27-44: Response-path IOCB handling and final wiring
  Marker, status continuation, status entry, CT pass-through, PUREX,
  ELS, logio, task management, abort, ABTS, VP control/config/report-ID,
  NVMe IOCB unification, LS4 pass-through, NVMe ring advance
  conversion, and BSG feature gating adjustments.

Patches 45-60: the tail of the series carries bug fixes uncovered
  during review of v1 patchset (64G/128G speed reporting,
  VP index bounds, Name Server logout detection, NVMe
  abort/LS-reject locking, a BSG job leak, an info leak,
  and an edif NULL deref).

The series applies on top of the scsi tree's 7.1/scsi-queue branch.

Changes in v2:
  - Folded the standalone fix-ups posted in v1 into the feature commits
    they corrected, so the 29xx enablement commits are now individually
    correct and bisectable (no "fix the previous patch" commits in the
    middle of the series).
  - Corrected several Fixes: tags to reference the actual introducing
    commits after the above reorganisation.
  - Widened the ELS vp_index path to 16 bits to match the 29xx 9-bit
    hardware field, folded into the ELS enablement commit.

Thanks,
Nilesh

Anil Gurumurthy (5):
  scsi: qla2xxx: Add 128-byte IOCB definitions for 29xx
  scsi: qla2xxx: Add extended status continuation and marker IOCBs
  scsi: qla2xxx: Remove duplicate flash memo block definitions
  scsi: qla2xxx: Update IO path to use 128-byte IOCBs for 29xx
  scsi: qla2xxx: Replace IS_QLA29XX() size checks with entry-size
    helpers

Manish Rangankar (10):
  scsi: qla2xxx: Add 29xx series PCI device ID support
  scsi: qla2xxx: Add flash read/write interface for 29xx
  scsi: qla2xxx: Add NVRAM config support for 29xx adapters
  scsi: qla2xxx: Add get_flash_version support for 29xx adapters
  scsi: qla2xxx: Add 29xx support in queue initialisation path
  scsi: qla2xxx: Add FC operational firmware load for 29xx
  scsi: qla2xxx: Add flash block read/write BSG support for 29xx
  scsi: qla2xxx: Add BSG MPI firmware load/dump for 29xx
  scsi: qla2xxx: Add LS4 pass-through IOCB handling for 29xx series
  scsi: qla2xxx: Adjust feature gating in BSG paths for 29xx support

Nilesh Javali (45):
  scsi: qla2xxx: Skip image-set-valid attribute for 29xx
  scsi: qla2xxx: Skip unsupported sysfs attributes for 29xx
  scsi: qla2xxx: Enable get_fw_version mailbox for 29xx
  scsi: qla2xxx: Extend execute_fw mailbox to include 29xx
  scsi: qla2xxx: Enable get_adapter_id mailbox for 29xx
  scsi: qla2xxx: Enable init_firmware mailbox for 29xx
  scsi: qla2xxx: Enable get_firmware_state for 29xx
  scsi: qla2xxx: Enable serdes, resource count and FCE trace for 29xx
  scsi: qla2xxx: Enable set_els_cmds and echo_test for 29xx
  scsi: qla2xxx: Add support for QLA29XX in data rate functions
  scsi: qla2xxx: Enable qla2x00_shutdown for 29xx
  scsi: qla2xxx: Use ring-slot helpers in __qla2x00_alloc_iocbs
  scsi: qla2xxx: Add support for QLA29XX in memory allocation
  scsi: qla2xxx: Refactor marker IOCB handling for 29xx series
  scsi: qla2xxx: Handle sts_cont_entry_ext_t for 29xx adapters
  scsi: qla2xxx: Update handling of status entries for 29xx series
  scsi: qla2xxx: Enhance ct_entry_24xx_ext iocb handling for 29xx series
  scsi: qla2xxx: Enhance purex_entry handling for 29xx series
  scsi: qla2xxx: Update handling of ELS IOCBs for 29xx series
  scsi: qla2xxx: Add size check for ELS status entry layout on 29xx
  scsi: qla2xxx: Add 29xx extended logio IOCB support
  scsi: qla2xxx: Enhance task management IOCB handling for 29xx series
  scsi: qla2xxx: Add abort command handling for 29xx series
  scsi: qla2xxx: Enhance ABTS processing for 29xx series
  scsi: qla2xxx: Update VP control IOCB handling for 29xx series
  scsi: qla2xxx: Add build-time size check for VP config IOCB layout
  scsi: qla2xxx: Add size check for extended VP report ID entry
  scsi: qla2xxx: Unify NVMe IOCB build path for 29xx and legacy adapters
  scsi: qla2xxx: Convert NVMe ring advance to use qla_req_ring_advance()
  scsi: qla2xxx: Fix queue teardown NULL dma_free and bitmap locking
  scsi: qla2xxx: Replace __le16 bitfields with scalar and accessors
  scsi: qla2xxx: Fix endianness annotations in vp_rpt_id_entry
    structures
  scsi: qla2xxx: Use 64-bit FPM word counters for 29xx host stats
  scsi: qla2xxx: Add 64G/128G port speed setting support
  scsi: qla2xxx: Fix 64G link speed reporting in get_data_rate
  scsi: qla2xxx: edif: Fix NULL pointer deref in RX SA delete check
  scsi: qla2xxx: Fix Name Server logout detection on FWI2 adapters
  scsi: qla2xxx: Bound VP index against VP_CTRL IOCB bitmap size
  scsi: qla2xxx: Check entry_status in qla24xx_modify_vp_config()
  scsi: qla2xxx: Hold vport reference in qla24xx_report_id_acquisition()
  scsi: qla2xxx: Initialize NVMe abort_work once at submission
  scsi: qla2xxx: Hold qpair lock when sending NVMe LS reject
  scsi: qla2xxx: Zero dport diagnostics buffer to avoid info leak
  scsi: qla2xxx: Fix BSG job leak on validate flash image error path
  scsi: qla2xxx: Bound image count in qla2x00_update_fru_versions()

 drivers/scsi/qla2xxx/qla_attr.c   |   55 +-
 drivers/scsi/qla2xxx/qla_bsg.c    |  475 +++++++++--
 drivers/scsi/qla2xxx/qla_bsg.h    |   34 +
 drivers/scsi/qla2xxx/qla_dbg.c    |   31 +-
 drivers/scsi/qla2xxx/qla_def.h    |  140 +++-
 drivers/scsi/qla2xxx/qla_dfs.c    |    4 +-
 drivers/scsi/qla2xxx/qla_edif.c   |  104 ++-
 drivers/scsi/qla2xxx/qla_fw.h     |  140 +++-
 drivers/scsi/qla2xxx/qla_fw29.h   |  830 ++++++++++++++++++
 drivers/scsi/qla2xxx/qla_gbl.h    |   40 +-
 drivers/scsi/qla2xxx/qla_gs.c     |  174 +++-
 drivers/scsi/qla2xxx/qla_init.c   |  692 ++++++++++++++-
 drivers/scsi/qla2xxx/qla_inline.h |  247 +++++-
 drivers/scsi/qla2xxx/qla_iocb.c   | 1304 +++++++++++++++++++++++------
 drivers/scsi/qla2xxx/qla_isr.c    |  756 +++++++++++------
 drivers/scsi/qla2xxx/qla_mbx.c    |  482 ++++++++---
 drivers/scsi/qla2xxx/qla_mid.c    |   74 +-
 drivers/scsi/qla2xxx/qla_nvme.c   |  288 +++++--
 drivers/scsi/qla2xxx/qla_nvme.h   |    4 +-
 drivers/scsi/qla2xxx/qla_nx.c     |    2 +-
 drivers/scsi/qla2xxx/qla_os.c     |  273 +++++-
 drivers/scsi/qla2xxx/qla_sup.c    |  761 ++++++++++++++++-
 drivers/scsi/qla2xxx/qla_target.c |   17 +-
 23 files changed, 5920 insertions(+), 1007 deletions(-)
 create mode 100644 drivers/scsi/qla2xxx/qla_fw29.h


base-commit: f9a7112b50efe8e115ca335ff57ed7504646a734
-- 
2.47.3




Copyright © 2026, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds