linux/drivers/scsi/qla2xxx
Viacheslav Dubeyko f839544ccf scsi: qla2xxx: Fix warning after FC target reset
Currently, FC target reset finishes with the warning message:

[84010.596893] ------------[ cut here ]------------
[84010.596917] WARNING: CPU: 238 PID: 279973 at ../drivers/scsi/qla2xxx/qla_target.c:6644 qlt_enable_vha+0x1d0/0x260 [qla2xxx]
[84010.596918] Modules linked in: vrf af_packet 8021q garp mrp stp llc netlink_diag target_tatlin_tblock(OEX) dm_ec(OEX) ttln_rdma(OEX) dm_frontend(OEX) nvme_rdma nvmet tcm_qla2xxx iscsi_target_mod target_core_mod at24 nvmem_core pnv_php ipmi_watchdog ipmi_ssif vmx_crypto gf128mul crct10dif_vpmsum qla2xxx rpcrdma nvme_fc powernv_flash(X) nvme_fabrics uio_pdrv_genirq mtd rtc_opal(X) ibmpowernv(X) opal_prd(X) uio scsi_transport_fc i2c_opal(X) ses enclosure ipmi_poweroff ast i2c_algo_bit ttm bmc_mcu(OEX) drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm drm_panel_orientation_quirks agpgart nfsd auth_rpcgss nfs_acl ipmi_powernv(X) lockd ipmi_devintf ipmi_msghandler grace dummy ext4 crc16 jbd2 mbcache sd_mod rdma_ucm ib_iser rdma_cm ib_umad iw_cm ib_ipoib libiscsi scsi_transport_iscsi ib_cm
[84010.596975]  configfs mlx5_ib ib_uverbs ib_core mlx5_core crc32c_vpmsum xhci_pci xhci_hcd mpt3sas(OEX) tg3 usbcore mlxfw tls raid_class libphy scsi_transport_sas devlink ptp pps_core nvme nvme_core sunrpc dm_mirror dm_region_hash dm_log sg dm_multipath dm_mod scsi_dh_rdac scsi_dh_emc scsi_dh_alua scsi_mod autofs4
[84010.597001] Supported: Yes, External
[84010.597004] CPU: 238 PID: 279973 Comm: bash Tainted: G           OE      4.12.14-197.29-default #1 SLE15-SP1
[84010.597006] task: c000000a104c0000 task.stack: c000000b52188000
[84010.597007] NIP: d00000001ffd7f78 LR: d00000001ffd7f6c CTR: c0000000001676c0
[84010.597008] REGS: c000000b5218b910 TRAP: 0700   Tainted: G           OE       (4.12.14-197.29-default)
[84010.597008] MSR: 900000010282b033 <SF,HV,VEC,VSX,EE,FP,ME,IR,DR,RI,LE,TM[E]>
[84010.597015]   CR: 48242424  XER: 00000000
[84010.597016] CFAR: d00000001ff45d08 SOFTE: 1
               GPR00: d00000001ffd7f6c c000000b5218bb90 d00000002001b228 0000000000000102
               GPR04: 0000000000000001 0000000000000001 00013d91ed0a5e2d 0000000000000000
               GPR08: c000000007793300 0000000000000000 0000000000000000 c000000a086e7818
               GPR12: 0000000000002200 c000000007793300 0000000000000000 000000012bc937c0
               GPR16: 000000012bbf7ed0 0000000000000000 000000012bc3dd10 0000000000000000
               GPR20: 000000012bc4db28 0000010036442810 000000012bc97828 000000012bc96c70
               GPR24: 00000100365b1550 0000000000000000 00000100363f3d80 c000000be20d3080
               GPR28: c000000bda7eae00 c000000be20db7e8 c000000be20d3778 c000000be20db7e8
[84010.597042] NIP [d00000001ffd7f78] qlt_enable_vha+0x1d0/0x260 [qla2xxx]
[84010.597051] LR [d00000001ffd7f6c] qlt_enable_vha+0x1c4/0x260 [qla2xxx]
[84010.597051] Call Trace:
[84010.597061] [c000000b5218bb90] [d00000001ffd7f6c] qlt_enable_vha+0x1c4/0x260 [qla2xxx] (unreliable)
[84010.597064] [c000000b5218bc20] [d000000009820b6c] tcm_qla2xxx_tpg_enable_store+0xc4/0x130 [tcm_qla2xxx]
[84010.597067] [c000000b5218bcb0] [d0000000185d0e68] configfs_write_file+0xd0/0x190 [configfs]
[84010.597072] [c000000b5218bd00] [c0000000003d0edc] __vfs_write+0x3c/0x1e0
[84010.597074] [c000000b5218bd90] [c0000000003d2ea8] vfs_write+0xd8/0x220
[84010.597076] [c000000b5218bde0] [c0000000003d4ddc] SyS_write+0x6c/0x110
[84010.597079] [c000000b5218be30] [c00000000000b188] system_call+0x3c/0x130
[84010.597080] Instruction dump:
[84010.597082] 7d0050a8 7d084b78 7d0051ad 40c2fff4 7fa3eb78 4bf73965 60000000 7fa3eb78
[84010.597086] 4bf6dcd9 60000000 2fa30000 419eff40 <0fe00000> 4bffff38 e95f0058 a12a0180
[84010.597090] ---[ end trace e32abaf6e6fee826 ]---

To reproduce:

echo 0x7fffffff > /sys/module/qla2xxx/parameters/logging
modprobe target_core_mod
modprobe tcm_qla2xxx
mkdir /sys/kernel/config/target/qla2xxx
mkdir /sys/kernel/config/target/qla2xxx/<port-name>
mkdir /sys/kernel/config/target/qla2xxx/<port-name>/tpgt_1
echo 1 > /sys/kernel/config/target/qla2xxx/<port-name>/tpgt_1/enable
echo 0 > /sys/kernel/config/target/qla2xxx/<port-name>/tpgt_1/enable
echo 1 > /sys/kernel/config/target/qla2xxx/<port-name>/tpgt_1/enable

SYSTEM START
kernel: pid 327:drivers/scsi/qla2xxx/qla_init.c:2174 qla2x00_initialize_adapter(): vha->flags.online 0x0
<...>
kernel: pid 327:drivers/scsi/qla2xxx/qla_os.c:3444 qla2x00_probe_one(): vha->flags.online 0x1

echo 1 > /sys/kernel/config/target/qla2xxx/21:00:00:24:ff:86:a6:2a/tpgt_1/enable
kernel: pid 348:drivers/scsi/qla2xxx/qla_init.c:6641 qla2x00_abort_isp_cleanup(): vha->flags.online 0x0, ISP_ABORT_NEEDED 0x0
<...>
kernel: pid 348:drivers/scsi/qla2xxx/qla_init.c:6998 qla2x00_restart_isp(): vha->flags.online 0x0

echo 0 > /sys/kernel/config/target/qla2xxx/21:00:00:24:ff:86:a6:2a/tpgt_1/enable
kernel: pid 348:drivers/scsi/qla2xxx/qla_init.c:6641 qla2x00_abort_isp_cleanup(): vha->flags.online 0x0, ISP_ABORT_NEEDED 0x0
<...>
kernel: pid 1404:drivers/scsi/qla2xxx/qla_os.c:1107 qla2x00_wait_for_hba_online(): base_vha->flags.online 0x0

echo 1 > /sys/kernel/config/target/qla2xxx/21:00:00:24:ff:86:a6:2a/tpgt_1/enable
kernel: pid 1404:drivers/scsi/qla2xxx/qla_os.c:1107 qla2x00_wait_for_hba_online(): base_vha->flags.online 0x0
kernel: -----------[ cut here ]-----------
kernel: WARNING: CPU: 1 PID: 1404 at drivers/scsi/qla2xxx/qla_target.c:6654 qlt_enable_vha+0x1e0/0x280 [qla2xxx]

The issue happens because no real ISP reset is executed.  The
qla2x00_abort_isp(scsi_qla_host_t *vha) function expects that
vha->flags.online will be not zero for ISP reset procedure.  This patch
sets vha->flags.online to 1 before calling ->abort_isp() for starting the
ISP reset.

Link: https://lore.kernel.org/r/1d7b21bf9f7676643239eb3d60eaca7cfa505cf0.camel@yadro.com
Reviewed-by: Roman Bolshakov <r.bolshakov@yadro.com>
Signed-off-by: Viacheslav Dubeyko <v.dubeiko@yadro.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2020-05-07 21:26:23 -04:00
..
Kconfig
Makefile
qla_attr.c scsi: qla2xxx: Fix MPI failure AEN (8200) handling 2020-04-24 12:15:47 -04:00
qla_bsg.c scsi: qla2xxx: Return appropriate failure through BSG Interface 2020-02-28 20:32:29 -05:00
qla_bsg.h
qla_dbg.c scsi: qla2xxx: Use ARRAY_SIZE() instead of open-coding it 2020-04-14 21:31:00 -04:00
qla_dbg.h scsi: qla2xxx: Fix unbound NVME response length 2020-01-30 10:31:47 -05:00
qla_def.h scsi: qla2xxx: make 1-bit bit-fields unsigned int 2020-04-29 22:10:40 -04:00
qla_devtbl.h
qla_dfs.c scsi: qla2xxx: fix FW resource count values 2020-02-28 20:32:31 -05:00
qla_dsd.h
qla_fw.h scsi: qla2xxx: Update BPM enablement semantics. 2020-02-28 20:32:33 -05:00
qla_gbl.h scsi: qla2xxx: Fix MPI failure AEN (8200) handling 2020-04-24 12:15:47 -04:00
qla_gs.c scsi: qla2xxx: Fix FCP-SCSI FC4 flag passing error 2020-02-28 20:32:28 -05:00
qla_init.c scsi: qla2xxx: Fix MPI failure AEN (8200) handling 2020-04-24 12:15:47 -04:00
qla_inline.h scsi: qla2xxx: Add a shadow variable to hold disc_state history of fcport 2019-12-19 22:42:44 -05:00
qla_iocb.c scsi: qla2xxx: Convert MAKE_HANDLE() from a define into an inline function 2020-02-28 19:55:01 -05:00
qla_isr.c scsi: qla2xxx: Fix MPI failure AEN (8200) handling 2020-04-24 12:15:47 -04:00
qla_mbx.c scsi: qla2xxx: Set Nport ID for N2N 2020-02-28 20:32:37 -05:00
qla_mid.c scsi: qla2xxx: Use a dedicated interrupt handler for 'handshake-required' ISPs 2020-02-28 20:32:30 -05:00
qla_mr.c scsi: qla2xxx: Convert MAKE_HANDLE() from a define into an inline function 2020-02-28 19:55:01 -05:00
qla_mr.h
qla_nvme.c block-5.7-2020-04-10 2020-04-10 10:06:54 -07:00
qla_nvme.h
qla_nx2.c
qla_nx2.h
qla_nx.c scsi: qla2xxx: Use get_unaligned_*() instead of open-coding these functions 2020-01-02 21:53:31 -05:00
qla_nx.h
qla_os.c scsi: qla2xxx: Fix warning after FC target reset 2020-05-07 21:26:23 -04:00
qla_settings.h
qla_sup.c scsi: qla2xxx: Return appropriate failure through BSG Interface 2020-02-28 20:32:29 -05:00
qla_target.c scsi: qla2xxx: Fix FCP-SCSI FC4 flag passing error 2020-02-28 20:32:28 -05:00
qla_target.h scsi: tcm_qla2xxx: Make qlt_alloc_qfull_cmd() set cmd->se_cmd.map_tag 2020-02-10 22:46:54 -05:00
qla_tmpl.c scsi: qla2xxx: Fix MPI failure AEN (8200) handling 2020-04-24 12:15:47 -04:00
qla_tmpl.h scsi: qla2xxx: Fix sparse warning reported by kbuild bot 2020-02-28 19:49:00 -05:00
qla_version.h scsi: qla2xxx: Update driver version to 10.01.00.25-k 2020-02-28 20:32:37 -05:00
tcm_qla2xxx.c scsi: tcm_qla2xxx: Make qlt_alloc_qfull_cmd() set cmd->se_cmd.map_tag 2020-02-10 22:46:54 -05:00
tcm_qla2xxx.h