These patches are based on Martin Peterson's 5.13/scsi-queue tree Note that these patches depend on the following three patches applied to Martin Peterson's tree: https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git 5.13/scsi-queue Depends-on: 5443bdc4cc77 scsi: smartpqi: Update version to 1.2.16-012 Depends-on: 408bdd7e5845 scsi: smartpqi: Correct pqi_sas_smp_handler busy condition Depends-on: 1bdf6e934387 scsi: smartpqi: Correct driver removal with HBA disks This set of changes consist of: * Add support for newer controller hardware. * Refactor AIO and s/g processing code. (No functional changes) * Add write support for RAID 5/6/1 Raid bypass path (or accelerated I/O path). * Add check for sequential streaming. * Add in new PCI-IDs. * Format changes to re-align with our in-house driver. (No functional changes.) * Correct some issues relating to suspend/hibernation/OFA/shutdown. * Block I/O requests during these conditions. * Add in qdepth limit check to limit outstanding commands. to the max values supported by the controller. * Correct some minor issues found during regression testing. * Update the driver version. Changes since V1: * Re-added 32bit calculations to correct i386 compile issues to patch smartpqi-refactor-aio-submission-code Reported-by: kernel test robot <lkp@xxxxxxxxx> https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx/thread/VMBBGGGE5446SVEOQBRCKBTRRWTSH4AB/ Changes since V2: * Added 32bit division to correct i386 compile issues to patch smartpqi-add-support-for-raid5-and-raid6-writes Reported-by: kernel test robot <lkp@xxxxxxxxx> https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx/thread/ZCXJJDGPPTTXLZCSCGWEY6VXPRB3IFOQ/ Changes since V3: Martin Wilck's Review: smartpqi-add-support-for-product-id * Moved a formatting HUNK to smartpqi-align-code-with-oob-driver * Added more patch description detail. smartpqi-refactor-aio-submission-code * Updated patch description. smartpqi-add-support-for-raid5-and-raid6-writes * Removed two manifest constants from smartpqi.h * Changed scnprintf format from %hhx to %x for sysfs entries: pqi_host_enable_r5_writes_show:ctrl_info->enable_r5_writes pqi_host_enable_r6_writes_show:ctrl_info->enable_r6_writes * Corrected disabling of R1 reads * Added comment on raid_map calculations. Changed how parity indexes are calculated. * Changed DMA direction in function pqi_aio_submit_r56_write_io to DMA_TO_DEVICE. smartpqi-add-support-for-raid1-writes * Changed DMA direction in function pqi_aio_submit_r1_write_io to DMA_TO_DEVICE. smartpqi-add-support-for-BMIC-sense-feature-cmd-and-feature-bits * Squashed smartpqi-update-AIO-Sub-Page-0x02-support This effectively moved function pqi_aio_limit_to_bytes into this patch. * Squashed smartpqi-enable-support-for-NVMe-encryption since this was adding in another feature. * Moved formatting HUNK for pqi_scsi_dev_raid_map_data into smartpqi-refactor-aio-submission-code. * Moved structure pqi_aio_r56_path_request formatting HUNKS into smartpqi-add-support-for-raid5-and-raid6-writes. * Moved remaining formatting HUNKs into smartpqi-align-code-with-oob-driver. smartpqi-add-support-for-long-firmware-version * Updated setting of ctrl_info->firmware_version to avoid overflows. * Moved a formatting HUNK into smartpqi-align-code-with-oob-driver. smartpqi-align-code-with-oob-driver * Updated with formatting HUNKs in other reviews. smartpqi-add-stream-detection * Updated patch description to better describe what the patch does. smartpqi-add-host-level-stream-detection-enable * Changed snprintf formate from 0x%hhx to 0x%x. smartpqi-enable-support-for-NVMe-encryption * Squashed into patch smartpqi-add-support-for-BMIC-sense-feature-cmd-and-feature-bits smartpqi-fix-driver-synchronization-issues * Split into 10 patches. smartpqi-remove-timeouts-from-internal-cmds smartpqi-add-support-for-wwid smartpqi-update-event-handler smartpqi-update-soft-reset-management-for-OFA * Squashed smartpqi-change-timing-of-release-of-QRM-memory-during-OFA smartpqi-synchronize-device-resets-with-mutex * Note: still using mutex. Our OOB driver has been well tested with this synchronization construct. Changing this here will mandate a change in our OOB driver and kick off another round of regression tests that have already passed. smartpqi-update-suspend-resume-and-shutdown * Note: suspend/resume is not supported on many servers. This has passed our internal tests on the few that do. This patch was originally intended for a workstation platform. So I left the mutex code alone. We would like to address any subsequent issues in the future. smartpqi-update-raid-bypass-handling smartpqi-update-ofa-management * Squashed smartpqi-return-busy-indication-for-IOCTLs-when-ofa-is-active smartpqi-update-device-scan-operations smartpqi-fix-driver-synchronization-issues * Original patch with all un-related HUNKs moved into the above 9 patches. smartpqi-fix_host_qdepth_limit * Patch removed and replaced with patch smartpqi-use-host-wide-tagspace smartpqi-change-timing-of-release-of-QRM-memory-during-OFA * Squashed into patch smartpqi-update-soft-reset-management-for-OFA smartpqi-add-additional-logging-for-LUN-resets * Updated patch description smartpqi-update-enclosure-identifier-in-sysfs * Updated patch description. smartpqi-correct-system-hangs-when-resuming-from-hibernation * Updated patch description. * Note: suspend/resume is not widely supported. The platform this patch was added for was a workstation. There has been a lot of testing on the supported platforms and all of the tests have passed. We would rather not make changes to this patch because of the rare usage. We would rather correct any issues (if any) in subsequent patches. smartpqi-update-version-to-2.1.8-045 * Previous patch was smartpqi-update-version-to-2.1.6-005 We bumped the version up since the patch set was originally pushed. Changes since V4: smartpqi-use-host-wide-tagspace John Garry <john.garry@xxxxxxxxxx> review: https://marc.info/?l=linux-scsi&m=161541732830890&w=2 * Changed driver to only set shost->host_tagset = 1, and reverted setting nm_hw_queue back to original setting. * Corrected John's email address. --- Don Brace (8): smartpqi: use host wide tagspace smartpqi: refactor aio submission code smartpqi: refactor build sg list code smartpqi: add support for raid5 and raid6 writes smartpqi: add support for raid1 writes smartpqi: add stream detection smartpqi: add host level stream detection enable smartpqi: update version to 2.1.8-045 Kevin Barnett (19): smartpqi: add support for product id smartpqi: add support for BMIC sense feature cmd and feature bits smartpqi: add support for long firmware version smartpqi: align code with oob driver smartpqi: disable write_same for nvme hba disks smartpqi: remove timeouts from internal cmds smartpqi: add support for wwid smartpqi: update event handler smartpqi: update soft reset management for OFA smartpqi: synchronize device resets with mutex smartpqi: update suspend resume and shutdown smartpqi: update raid bypass handling smartpqi: update ofa management smartpqi: update device scan operations smartpqi: fix driver synchronization issues smartpqi: convert snprintf to scnprintf smartpqi: add additional logging for LUN resets smartpqi: correct system hangs when resuming from hibernation smartpqi: add new pci ids Murthy Bhat (4): smartpqi: fix request leakage smartpqi: add phy id support for the physical drives smartpqi: update sas initiator_port_protocols and target_port_protocols smartpqi: update enclosure identifier in sysfs drivers/scsi/smartpqi/smartpqi.h | 310 +- drivers/scsi/smartpqi/smartpqi_init.c | 3106 ++++++++++------- .../scsi/smartpqi/smartpqi_sas_transport.c | 39 +- drivers/scsi/smartpqi/smartpqi_sis.c | 9 +- drivers/scsi/smartpqi/smartpqi_sis.h | 1 + 5 files changed, 2184 insertions(+), 1281 deletions(-) -- Signature