Re: [PATCH 14/16] qla2xxx: Add devid's and conditionals for 28xx

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> On Dec 23, 2021, at 11:07 PM, Nilesh Javali <njavali@xxxxxxxxxxx> wrote:
> 
> From: Arun Easi <aeasi@xxxxxxxxxxx>
> 
> 28XX adapters are capable of detecting both T10 PI tag escape values
> as well as IP guard. This was missed due to the adapter type missed
> in the corresponding macros. Fix this by adding support for 28xx in
> those macros.
> 

This patch seems to fix more than just IP guard macros. 
Can you please seperate T10 PI fix with other fixes from this patch.

> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Arun Easi <aeasi@xxxxxxxxxxx>
> Signed-off-by: Nilesh Javali <njavali@xxxxxxxxxxx>
> ---
> drivers/scsi/qla2xxx/qla_attr.c   |  7 ++-----
> drivers/scsi/qla2xxx/qla_init.c   | 17 +++++++++++------
> drivers/scsi/qla2xxx/qla_mbx.c    | 17 ++++++++++++++---
> drivers/scsi/qla2xxx/qla_os.c     |  3 +--
> drivers/scsi/qla2xxx/qla_sup.c    |  4 ++--
> drivers/scsi/qla2xxx/qla_target.c |  3 +--
> 6 files changed, 31 insertions(+), 20 deletions(-)
> 
> diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c
> index db55737000ab..3b3e4234f37a 100644
> --- a/drivers/scsi/qla2xxx/qla_attr.c
> +++ b/drivers/scsi/qla2xxx/qla_attr.c
> @@ -555,7 +555,7 @@ qla2x00_sysfs_read_vpd(struct file *filp, struct kobject *kobj,
> 	if (!capable(CAP_SYS_ADMIN))
> 		return -EINVAL;
> 
> -	if (IS_NOCACHE_VPD_TYPE(ha))
> +	if (!IS_NOCACHE_VPD_TYPE(ha))
> 		goto skip;
> 
> 	faddr = ha->flt_region_vpd << 2;
> @@ -745,7 +745,7 @@ qla2x00_sysfs_write_reset(struct file *filp, struct kobject *kobj,
> 		ql_log(ql_log_info, vha, 0x706f,
> 		    "Issuing MPI reset.\n");
> 
> -		if (IS_QLA83XX(ha) || IS_QLA27XX(ha) || IS_QLA28XX(ha)) {
> +		if (IS_QLA83XX(ha)) {
> 			uint32_t idc_control;
> 
> 			qla83xx_idc_lock(vha, 0);
> @@ -1056,9 +1056,6 @@ qla2x00_free_sysfs_attr(scsi_qla_host_t *vha, bool stop_beacon)
> 			continue;
> 		if (iter->type == 3 && !(IS_CNA_CAPABLE(ha)))
> 			continue;
> -		if (iter->type == 0x27 &&
> -		    (!IS_QLA27XX(ha) || !IS_QLA28XX(ha)))
> -			continue;
> 
> 		sysfs_remove_bin_file(&host->shost_gendev.kobj,
> 		    iter->attr);
> diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
> index 24322eb01571..87382477ff85 100644
> --- a/drivers/scsi/qla2xxx/qla_init.c
> +++ b/drivers/scsi/qla2xxx/qla_init.c
> @@ -3482,6 +3482,14 @@ qla2x00_alloc_fw_dump(scsi_qla_host_t *vha)
> 	struct rsp_que *rsp = ha->rsp_q_map[0];
> 	struct qla2xxx_fw_dump *fw_dump;
> 
> +	if (ha->fw_dump) {
> +		ql_dbg(ql_dbg_init, vha, 0x00bd,
> +		    "Firmware dump already allocated.\n");
> +		return;
> +	}
> +
> +	ha->fw_dumped = 0;
> +	ha->fw_dump_cap_flags = 0;
> 	dump_size = fixed_size = mem_size = eft_size = fce_size = mq_size = 0;
> 	req_q_size = rsp_q_size = 0;
> 
> @@ -3492,7 +3500,7 @@ qla2x00_alloc_fw_dump(scsi_qla_host_t *vha)
> 		mem_size = (ha->fw_memory_size - 0x11000 + 1) *
> 		    sizeof(uint16_t);
> 	} else if (IS_FWI2_CAPABLE(ha)) {
> -		if (IS_QLA83XX(ha) || IS_QLA27XX(ha) || IS_QLA28XX(ha))
> +		if (IS_QLA83XX(ha))
> 			fixed_size = offsetof(struct qla83xx_fw_dump, ext_mem);
> 		else if (IS_QLA81XX(ha))
> 			fixed_size = offsetof(struct qla81xx_fw_dump, ext_mem);
> @@ -3504,8 +3512,7 @@ qla2x00_alloc_fw_dump(scsi_qla_host_t *vha)
> 		mem_size = (ha->fw_memory_size - 0x100000 + 1) *
> 		    sizeof(uint32_t);
> 		if (ha->mqenable) {
> -			if (!IS_QLA83XX(ha) && !IS_QLA27XX(ha) &&
> -			    !IS_QLA28XX(ha))
> +			if (!IS_QLA83XX(ha))
> 				mq_size = sizeof(struct qla2xxx_mq_chain);
> 			/*
> 			 * Allocate maximum buffer size for all queues - Q0.
> @@ -4065,9 +4072,7 @@ qla2x00_setup_chip(scsi_qla_host_t *vha)
> 			    "Unsupported FAC firmware (%d.%02d.%02d).\n",
> 			    ha->fw_major_version, ha->fw_minor_version,
> 			    ha->fw_subminor_version);
> -
> -			if (IS_QLA83XX(ha) || IS_QLA27XX(ha) ||
> -			    IS_QLA28XX(ha)) {
> +			if (IS_QLA83XX(ha)) {
> 				ha->flags.fac_supported = 0;
> 				rval = QLA_SUCCESS;
> 			}
> diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c
> index c4bd8a16d78c..826303f53f77 100644
> --- a/drivers/scsi/qla2xxx/qla_mbx.c
> +++ b/drivers/scsi/qla2xxx/qla_mbx.c
> @@ -9,6 +9,12 @@
> #include <linux/delay.h>
> #include <linux/gfp.h>
> 
> +#ifdef CONFIG_PPC
> +#define IS_PPCARCH      true
> +#else
> +#define IS_PPCARCH      false
> +#endif
> +
> static struct mb_cmd_name {
> 	uint16_t cmd;
> 	const char *str;
> @@ -728,6 +734,12 @@ qla2x00_execute_fw(scsi_qla_host_t *vha, uint32_t risc_addr)
> 				vha->min_supported_speed =
> 				    nv->min_supported_speed;
> 			}
> +
> +			if (IS_PPCARCH)
> +				mcp->mb[11] |= BIT_4;
> +
> +			if (ql2xnvmeenable)
> +				mcp->mb[4] |= NVME_ENABLE_FLAG;
> 		}
> 
> 		if (ha->flags.exlogins_enabled)
> @@ -3035,8 +3047,7 @@ qla2x00_get_resource_cnts(scsi_qla_host_t *vha)
> 		ha->orig_fw_iocb_count = mcp->mb[10];
> 		if (ha->flags.npiv_supported)
> 			ha->max_npiv_vports = mcp->mb[11];
> -		if (IS_QLA81XX(ha) || IS_QLA83XX(ha) || IS_QLA27XX(ha) ||
> -		    IS_QLA28XX(ha))
> +		if (IS_QLA81XX(ha) || IS_QLA83XX(ha))
> 			ha->fw_max_fcf_count = mcp->mb[12];
> 	}
> 
> @@ -5627,7 +5638,7 @@ qla2x00_get_data_rate(scsi_qla_host_t *vha)
> 	mcp->out_mb = MBX_1|MBX_0;
> 	mcp->in_mb = MBX_2|MBX_1|MBX_0;
> 	if (IS_QLA83XX(ha) || IS_QLA27XX(ha) || IS_QLA28XX(ha))
> -		mcp->in_mb |= MBX_3;
> +		mcp->in_mb |= MBX_4|MBX_3;
> 	mcp->tov = MBX_TOV_SECONDS;
> 	mcp->flags = 0;
> 	rval = qla2x00_mailbox_command(vha, mcp);
> diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
> index 88bff825aa5e..cff5e4a710d1 100644
> --- a/drivers/scsi/qla2xxx/qla_os.c
> +++ b/drivers/scsi/qla2xxx/qla_os.c
> @@ -3762,8 +3762,7 @@ qla2x00_unmap_iobases(struct qla_hw_data *ha)
> 		if (ha->mqiobase)
> 			iounmap(ha->mqiobase);
> 
> -		if ((IS_QLA83XX(ha) || IS_QLA27XX(ha) || IS_QLA28XX(ha)) &&
> -		    ha->msixbase)
> +		if (ha->msixbase)
> 			iounmap(ha->msixbase);
> 	}
> }
> diff --git a/drivers/scsi/qla2xxx/qla_sup.c b/drivers/scsi/qla2xxx/qla_sup.c
> index a0aeba69513d..c092a6b1ced4 100644
> --- a/drivers/scsi/qla2xxx/qla_sup.c
> +++ b/drivers/scsi/qla2xxx/qla_sup.c
> @@ -844,7 +844,7 @@ qla2xxx_get_flt_info(scsi_qla_host_t *vha, uint32_t flt_addr)
> 				ha->flt_region_nvram = start;
> 			break;
> 		case FLT_REG_IMG_PRI_27XX:
> -			if (IS_QLA27XX(ha) && !IS_QLA28XX(ha))
> +			if (IS_QLA27XX(ha) || IS_QLA28XX(ha))
> 				ha->flt_region_img_status_pri = start;
> 			break;
> 		case FLT_REG_IMG_SEC_27XX:
> @@ -1356,7 +1356,7 @@ qla24xx_write_flash_data(scsi_qla_host_t *vha, __le32 *dwptr, uint32_t faddr,
> 		    flash_data_addr(ha, faddr), le32_to_cpu(*dwptr));
> 		if (ret) {
> 			ql_dbg(ql_dbg_user, vha, 0x7006,
> -			    "Failed slopw write %x (%x)\n", faddr, *dwptr);
> +			    "Failed slow write %x (%x)\n", faddr, *dwptr);
> 			break;
> 		}
> 	}
> diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c
> index feb054c688a3..b109716d44fb 100644
> --- a/drivers/scsi/qla2xxx/qla_target.c
> +++ b/drivers/scsi/qla2xxx/qla_target.c
> @@ -7220,8 +7220,7 @@ qlt_probe_one_stage1(struct scsi_qla_host *base_vha, struct qla_hw_data *ha)
> 	if (!QLA_TGT_MODE_ENABLED())
> 		return;
> 
> -	if  ((ql2xenablemsix == 0) || IS_QLA83XX(ha) || IS_QLA27XX(ha) ||
> -	    IS_QLA28XX(ha)) {
> +	if  (ha->mqenable || IS_QLA83XX(ha) || IS_QLA27XX(ha) || IS_QLA28XX(ha)) {
> 		ISP_ATIO_Q_IN(base_vha) = &ha->mqiobase->isp25mq.atio_q_in;
> 		ISP_ATIO_Q_OUT(base_vha) = &ha->mqiobase->isp25mq.atio_q_out;
> 	} else {
> -- 
> 2.23.1
> 

--
Himanshu Madhani	 Oracle Linux Engineering





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux