Building the Linux kernel with Clang and LLVM
 help / color / mirror / Atom feed
* drivers/scsi/qla2xxx/qla_init.c:9368:2: warning: label at end of compound statement is a C23 extension
@ 2026-07-14 15:20 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-07-14 15:20 UTC (permalink / raw)
  To: Manish Rangankar
  Cc: llvm, oe-kbuild-all, 0day robot, Nilesh Javali, Hannes Reinecke

tree:   https://github.com/intel-lab-lkp/linux/commits/Nilesh-Javali/scsi-qla2xxx-Add-29xx-series-PCI-device-ID-support/20260714-180455
head:   a91be341107d322b5c157a8eb685f7d8d4d9277b
commit: da14b131a2d623b4393360a60ee862a7dd1d5d7a scsi: qla2xxx: Add NVRAM config support for 29xx adapters
date:   5 hours ago
config: x86_64-kexec (https://download.01.org/0day-ci/archive/20260714/202607141733.w1IF5m43-lkp@intel.com/config)
compiler: clang version 22.1.8 (https://github.com/llvm/llvm-project ca7933e47d3a3451d81e72ac174dcb5aa28b59d1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260714/202607141733.w1IF5m43-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202607141733.w1IF5m43-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/scsi/qla2xxx/qla_init.c:9368:2: warning: label at end of compound statement is a C23 extension [-Wc23-extensions]
    9368 |         } else {
         |         ^
   In file included from drivers/scsi/qla2xxx/qla_init.c:6:
   In file included from drivers/scsi/qla2xxx/qla_def.h:12:
   In file included from include/linux/module.h:13:
   In file included from include/linux/stat.h:19:
   In file included from include/linux/time.h:60:
   In file included from include/linux/time32.h:13:
   In file included from include/linux/timex.h:67:
   In file included from arch/x86/include/asm/timex.h:5:
   In file included from arch/x86/include/asm/processor.h:25:
   In file included from arch/x86/include/asm/special_insns.h:10:
   In file included from include/linux/irqflags.h:18:
   In file included from arch/x86/include/asm/irqflags.h:100:
   In file included from arch/x86/include/asm/paravirt.h:19:
   In file included from include/linux/cpumask.h:11:
   In file included from include/linux/bitmap.h:13:
   In file included from include/linux/string.h:383:
   include/linux/fortify-string.h:530:4: warning: call to '__read_overflow2_field' declared with 'warning' attribute: detected read beyond size of field (2nd parameter); maybe use struct_group()? [-Wattribute-warning]
     530 |                         __read_overflow2_field(q_size_field, size);
         |                         ^
   2 warnings generated.


vim +9368 drivers/scsi/qla2xxx/qla_init.c

  9284	
  9285	int
  9286	qla81xx_nvram_config(scsi_qla_host_t *vha)
  9287	{
  9288		int   rval;
  9289		struct init_cb_81xx *icb;
  9290		struct nvram_81xx *nv;
  9291		__le32 *dptr;
  9292		uint8_t  *dptr1, *dptr2;
  9293		uint32_t chksum;
  9294		uint16_t cnt;
  9295		struct qla_hw_data *ha = vha->hw;
  9296		uint32_t faddr;
  9297		struct active_regions active_regions = { };
  9298	
  9299		rval = QLA_SUCCESS;
  9300		icb = (struct init_cb_81xx *)ha->init_cb;
  9301		nv = ha->nvram;
  9302	
  9303		/* Determine NVRAM starting address. */
  9304		ha->nvram_size = sizeof(*nv);
  9305		ha->vpd_size = FA_NVRAM_VPD_SIZE;
  9306		if (IS_P3P_TYPE(ha) || IS_QLA8031(ha))
  9307			ha->vpd_size = FA_VPD_SIZE_82XX;
  9308	
  9309		/* Get VPD data into cache */
  9310		ha->vpd = ha->nvram + VPD_OFFSET;
  9311	
  9312		if (IS_QLA29XX(ha)) {
  9313			uint16_t fw_options = 0, r_code;
  9314			uint32_t vpd_r[] = {FLT_REG_VPD_0, FLT_REG_VPD_1,
  9315					    FLT_REG_VPD_2, FLT_REG_VPD_3};
  9316			uint32_t nvram_r[] = {FLT_REG_NVRAM_0, FLT_REG_NVRAM_1,
  9317					      FLT_REG_NVRAM_2, FLT_REG_NVRAM_3};
  9318			void *buf;
  9319	
  9320			BUILD_BUG_ON((VPD_OFFSET + FA_NVRAM_VPD_SIZE +
  9321				      sizeof(struct qla_flash_memo_block)) >
  9322				     MAX_NVRAM_SIZE);
  9323	
  9324			ha->fiv = (struct qla_flash_memo_block *)
  9325				((char *)ha->vpd + ha->vpd_size);
  9326	
  9327			buf = qla29xx_read_optrom_data(vha, FLT_REG_FMB_PRI,
  9328						       fw_options, ha->fiv, 0,
  9329						       sizeof(struct qla_flash_memo_block));
  9330			if (!buf) {
  9331				ql_log(ql_log_info, vha, 0x01be,
  9332				    "Unable to read Flash Image Version.\n");
  9333			} else if (ha->fiv->signature != QLFC_FMB_SIG) {
  9334				ql_log(ql_log_warn, vha, 0x01bf,
  9335				    "Invalid FMB signature %#x, expected %#x.\n",
  9336				    le32_to_cpu(ha->fiv->signature),
  9337				    le32_to_cpu(QLFC_FMB_SIG));
  9338				ha->fiv = NULL;
  9339			} else {
  9340				ql_log(ql_log_info, vha, 0x0024,
  9341				    "Flash Image Version %u.%02u.%02u\n",
  9342				    ha->fiv->mbi_ver.major,
  9343				    ha->fiv->mbi_ver.minor,
  9344				    ha->fiv->mbi_ver.sub);
  9345			}
  9346	
  9347			if (ha->port_no >= ARRAY_SIZE(vpd_r)) {
  9348				ql_log(ql_log_warn, vha, 0x002e,
  9349				    "Invalid port number %u, skipping VPD/NVRAM read.\n",
  9350				    ha->port_no);
  9351				goto out_29xx;
  9352			}
  9353	
  9354			r_code = vpd_r[ha->port_no];
  9355			buf = qla29xx_read_optrom_data(vha, r_code, fw_options,
  9356						       ha->vpd, 0, ha->vpd_size);
  9357			if (!buf)
  9358				ql_log(ql_log_info, vha, 0x002d,
  9359				    "Unable to read VPD info.\n");
  9360	
  9361			r_code = nvram_r[ha->port_no];
  9362			buf = qla29xx_read_optrom_data(vha, r_code, fw_options,
  9363						       ha->nvram, 0, ha->nvram_size);
  9364			if (!buf)
  9365				ql_log(ql_log_info, vha, 0x0013,
  9366				    "Unable to read nvram config info.\n");
  9367	out_29xx:
> 9368		} else {
  9369			if (IS_QLA28XX(ha) || IS_QLA27XX(ha))
  9370				qla28xx_get_aux_images(vha, &active_regions);
  9371	
  9372			faddr = ha->flt_region_vpd;
  9373			if (IS_QLA28XX(ha)) {
  9374				if (active_regions.aux.vpd_nvram ==
  9375				    QLA27XX_SECONDARY_IMAGE)
  9376					faddr = ha->flt_region_vpd_sec;
  9377				ql_dbg(ql_dbg_init, vha, 0x0110,
  9378				    "Loading %s nvram image.\n",
  9379				    active_regions.aux.vpd_nvram ==
  9380				    QLA27XX_PRIMARY_IMAGE ?
  9381				    "primary" : "secondary");
  9382			}
  9383			ha->isp_ops->read_optrom(vha, ha->vpd, faddr << 2,
  9384						 ha->vpd_size);
  9385	
  9386			/* Get NVRAM data into cache and calculate checksum. */
  9387			faddr = ha->flt_region_nvram;
  9388			if (IS_QLA28XX(ha)) {
  9389				if (active_regions.aux.vpd_nvram ==
  9390				    QLA27XX_SECONDARY_IMAGE)
  9391					faddr = ha->flt_region_nvram_sec;
  9392			}
  9393			ql_dbg(ql_dbg_init, vha, 0x0110,
  9394			    "Loading %s nvram image.\n",
  9395			    active_regions.aux.vpd_nvram == QLA27XX_PRIMARY_IMAGE ?
  9396			    "primary" : "secondary");
  9397			ha->isp_ops->read_optrom(vha, ha->nvram, faddr << 2,
  9398						 ha->nvram_size);
  9399		}
  9400	
  9401		dptr = (__force __le32 *)nv;
  9402		for (cnt = 0, chksum = 0; cnt < ha->nvram_size >> 2; cnt++, dptr++)
  9403			chksum += le32_to_cpu(*dptr);
  9404	
  9405		ql_dbg(ql_dbg_init + ql_dbg_buffer, vha, 0x0111,
  9406		    "Contents of NVRAM:\n");
  9407		ql_dump_buffer(ql_dbg_init + ql_dbg_buffer, vha, 0x0112,
  9408		    nv, ha->nvram_size);
  9409	
  9410		/* Bad NVRAM data, set defaults parameters. */
  9411		if (chksum || memcmp("ISP ", nv->id, sizeof(nv->id)) ||
  9412		    le16_to_cpu(nv->nvram_version) < ICB_VERSION) {
  9413			/* Reset NVRAM data. */
  9414			ql_log(ql_log_info, vha, 0x0073,
  9415			    "Inconsistent NVRAM checksum=%#x id=%.4s version=%#x.\n",
  9416			    chksum, nv->id, le16_to_cpu(nv->nvram_version));
  9417			ql_dump_buffer(ql_dbg_init, vha, 0x0073, nv, sizeof(*nv));
  9418			ql_log(ql_log_info, vha, 0x0074,
  9419			    "Falling back to functioning (yet invalid -- WWPN) "
  9420			    "defaults.\n");
  9421	
  9422			/*
  9423			 * Set default initialization control block.
  9424			 */
  9425			memset(nv, 0, ha->nvram_size);
  9426			nv->nvram_version = cpu_to_le16(ICB_VERSION);
  9427			nv->version = cpu_to_le16(ICB_VERSION);
  9428			nv->frame_payload_size = cpu_to_le16(2048);
  9429			nv->execution_throttle = cpu_to_le16(0xFFFF);
  9430			nv->exchange_count = cpu_to_le16(0);
  9431			nv->port_name[0] = 0x21;
  9432			nv->port_name[1] = 0x00 + ha->port_no + 1;
  9433			nv->port_name[2] = 0x00;
  9434			nv->port_name[3] = 0xe0;
  9435			nv->port_name[4] = 0x8b;
  9436			nv->port_name[5] = 0x1c;
  9437			nv->port_name[6] = 0x55;
  9438			nv->port_name[7] = 0x86;
  9439			nv->node_name[0] = 0x20;
  9440			nv->node_name[1] = 0x00;
  9441			nv->node_name[2] = 0x00;
  9442			nv->node_name[3] = 0xe0;
  9443			nv->node_name[4] = 0x8b;
  9444			nv->node_name[5] = 0x1c;
  9445			nv->node_name[6] = 0x55;
  9446			nv->node_name[7] = 0x86;
  9447			nv->login_retry_count = cpu_to_le16(8);
  9448			nv->interrupt_delay_timer = cpu_to_le16(0);
  9449			nv->login_timeout = cpu_to_le16(0);
  9450			nv->firmware_options_1 =
  9451			    cpu_to_le32(BIT_14|BIT_13|BIT_2|BIT_1);
  9452			if (IS_QLA29XX(ha))
  9453				nv->firmware_options_2 = cpu_to_le32(BIT_4);
  9454			else
  9455				nv->firmware_options_2 = cpu_to_le32(BIT_5);
  9456			nv->firmware_options_2 |= cpu_to_le32(BIT_12);
  9457			nv->firmware_options_3 = cpu_to_le32(2 << 13);
  9458			nv->host_p = cpu_to_le32(BIT_11|BIT_10);
  9459			nv->efi_parameters = cpu_to_le32(0);
  9460			nv->reset_delay = 5;
  9461			nv->max_luns_per_target = cpu_to_le16(128);
  9462			nv->port_down_retry_count = cpu_to_le16(30);
  9463			nv->link_down_timeout = cpu_to_le16(180);
  9464			nv->enode_mac[0] = 0x00;
  9465			nv->enode_mac[1] = 0xC0;
  9466			nv->enode_mac[2] = 0xDD;
  9467			nv->enode_mac[3] = 0x04;
  9468			nv->enode_mac[4] = 0x05;
  9469			nv->enode_mac[5] = 0x06 + ha->port_no + 1;
  9470	
  9471			rval = 1;
  9472		}
  9473	
  9474		if (IS_T10_PI_CAPABLE(ha))
  9475			nv->frame_payload_size &= cpu_to_le16(~7);
  9476	
  9477		qlt_81xx_config_nvram_stage1(vha, nv);
  9478	
  9479		/* Reset Initialization control block */
  9480		memset(icb, 0, ha->init_cb_size);
  9481	
  9482		/* Copy 1st segment. */
  9483		dptr1 = (uint8_t *)icb;
  9484		dptr2 = (uint8_t *)&nv->version;
  9485		cnt = (uint8_t *)&icb->response_q_inpointer - (uint8_t *)&icb->version;
  9486		while (cnt--)
  9487			*dptr1++ = *dptr2++;
  9488	
  9489		icb->login_retry_count = nv->login_retry_count;
  9490	
  9491		/* Copy 2nd segment. */
  9492		dptr1 = (uint8_t *)&icb->interrupt_delay_timer;
  9493		dptr2 = (uint8_t *)&nv->interrupt_delay_timer;
  9494		cnt = (uint8_t *)&icb->reserved_5 -
  9495		    (uint8_t *)&icb->interrupt_delay_timer;
  9496		while (cnt--)
  9497			*dptr1++ = *dptr2++;
  9498	
  9499		memcpy(icb->enode_mac, nv->enode_mac, sizeof(icb->enode_mac));
  9500		/* Some boards (with valid NVRAMs) still have NULL enode_mac!! */
  9501		if (!memcmp(icb->enode_mac, "\0\0\0\0\0\0", sizeof(icb->enode_mac))) {
  9502			icb->enode_mac[0] = 0x00;
  9503			icb->enode_mac[1] = 0xC0;
  9504			icb->enode_mac[2] = 0xDD;
  9505			icb->enode_mac[3] = 0x04;
  9506			icb->enode_mac[4] = 0x05;
  9507			icb->enode_mac[5] = 0x06 + ha->port_no + 1;
  9508		}
  9509	
  9510		/* Use extended-initialization control block. */
  9511		memcpy(ha->ex_init_cb, &nv->ex_version, sizeof(*ha->ex_init_cb));
  9512		ha->frame_payload_size = le16_to_cpu(icb->frame_payload_size);
  9513		/*
  9514		 * Setup driver NVRAM options.
  9515		 */
  9516		qla2x00_set_model_info(vha, nv->model_name, sizeof(nv->model_name),
  9517		    "QLE8XXX");
  9518	
  9519		qlt_81xx_config_nvram_stage2(vha, icb);
  9520	
  9521		/* Use alternate WWN? */
  9522		if (nv->host_p & cpu_to_le32(BIT_15)) {
  9523			memcpy(icb->node_name, nv->alternate_node_name, WWN_SIZE);
  9524			memcpy(icb->port_name, nv->alternate_port_name, WWN_SIZE);
  9525		}
  9526	
  9527		/* Prepare nodename */
  9528		if ((icb->firmware_options_1 & cpu_to_le32(BIT_14)) == 0) {
  9529			/*
  9530			 * Firmware will apply the following mask if the nodename was
  9531			 * not provided.
  9532			 */
  9533			memcpy(icb->node_name, icb->port_name, WWN_SIZE);
  9534			icb->node_name[0] &= 0xF0;
  9535		}
  9536	
  9537		/* SCM Enabled in NVRAM */
  9538		if (IS_QLA29XX(ha) || IS_QLA28XX(ha) || IS_QLA27XX(ha)) {
  9539			if ((le16_to_cpu(nv->enhanced_features) & BIT_7) == 0) {
  9540				ql_log(ql_log_info, vha, 0x0062,
  9541				       "USCM enabled in NVRAM\n");
  9542				ha->flags.scm_supported_a = 1;
  9543			}
  9544		}
  9545	
  9546		/* Set host adapter parameters. */
  9547		ha->flags.disable_risc_code_load = 0;
  9548		ha->flags.enable_lip_reset = 0;
  9549		ha->flags.enable_lip_full_login =
  9550		    le32_to_cpu(nv->host_p) & BIT_10 ? 1 : 0;
  9551		ha->flags.enable_target_reset =
  9552		    le32_to_cpu(nv->host_p) & BIT_11 ? 1 : 0;
  9553		ha->flags.enable_led_scheme = 0;
  9554		ha->flags.disable_serdes = le32_to_cpu(nv->host_p) & BIT_5 ? 1 : 0;
  9555	
  9556		ha->operating_mode = (le32_to_cpu(icb->firmware_options_2) &
  9557		    (BIT_6 | BIT_5 | BIT_4)) >> 4;
  9558	
  9559		/* save HBA serial number */
  9560		ha->serial0 = icb->port_name[5];
  9561		ha->serial1 = icb->port_name[6];
  9562		ha->serial2 = icb->port_name[7];
  9563		memcpy(vha->node_name, icb->node_name, WWN_SIZE);
  9564		memcpy(vha->port_name, icb->port_name, WWN_SIZE);
  9565	
  9566		icb->execution_throttle = cpu_to_le16(0xFFFF);
  9567	
  9568		ha->retry_count = le16_to_cpu(nv->login_retry_count);
  9569	
  9570		/* Set minimum login_timeout to 4 seconds. */
  9571		if (le16_to_cpu(nv->login_timeout) < ql2xlogintimeout)
  9572			nv->login_timeout = cpu_to_le16(ql2xlogintimeout);
  9573		if (le16_to_cpu(nv->login_timeout) < 4)
  9574			nv->login_timeout = cpu_to_le16(4);
  9575		ha->login_timeout = le16_to_cpu(nv->login_timeout);
  9576	
  9577		/* Set minimum RATOV to 100 tenths of a second. */
  9578		ha->r_a_tov = 100;
  9579	
  9580		ha->loop_reset_delay = nv->reset_delay;
  9581	
  9582		/* Link Down Timeout = 0:
  9583		 *
  9584		 *	When Port Down timer expires we will start returning
  9585		 *	I/O's to OS with "DID_NO_CONNECT".
  9586		 *
  9587		 * Link Down Timeout != 0:
  9588		 *
  9589		 *	 The driver waits for the link to come up after link down
  9590		 *	 before returning I/Os to OS with "DID_NO_CONNECT".
  9591		 */
  9592		if (le16_to_cpu(nv->link_down_timeout) == 0) {
  9593			ha->loop_down_abort_time =
  9594			    (LOOP_DOWN_TIME - LOOP_DOWN_TIMEOUT);
  9595		} else {
  9596			ha->link_down_timeout =	le16_to_cpu(nv->link_down_timeout);
  9597			ha->loop_down_abort_time =
  9598			    (LOOP_DOWN_TIME - ha->link_down_timeout);
  9599		}
  9600	
  9601		/* Need enough time to try and get the port back. */
  9602		ha->port_down_retry_count = le16_to_cpu(nv->port_down_retry_count);
  9603		if (qlport_down_retry)
  9604			ha->port_down_retry_count = qlport_down_retry;
  9605	
  9606		/* Set login_retry_count */
  9607		ha->login_retry_count  = le16_to_cpu(nv->login_retry_count);
  9608		if (ha->port_down_retry_count ==
  9609		    le16_to_cpu(nv->port_down_retry_count) &&
  9610		    ha->port_down_retry_count > 3)
  9611			ha->login_retry_count = ha->port_down_retry_count;
  9612		else if (ha->port_down_retry_count > (int)ha->login_retry_count)
  9613			ha->login_retry_count = ha->port_down_retry_count;
  9614		if (ql2xloginretrycount)
  9615			ha->login_retry_count = ql2xloginretrycount;
  9616	
  9617		/* if not running MSI-X we need handshaking on interrupts */
  9618		if (!vha->hw->flags.msix_enabled &&
  9619		    (IS_QLA83XX(ha) || IS_QLA27XX(ha) || IS_QLA28XX(ha) ||
  9620		     IS_QLA29XX(ha)))
  9621			icb->firmware_options_2 |= cpu_to_le32(BIT_22);
  9622	
  9623		/* Enable ZIO. */
  9624		if (!vha->flags.init_done) {
  9625			ha->zio_mode = le32_to_cpu(icb->firmware_options_2) &
  9626			    (BIT_3 | BIT_2 | BIT_1 | BIT_0);
  9627			ha->zio_timer = le16_to_cpu(icb->interrupt_delay_timer) ?
  9628			    le16_to_cpu(icb->interrupt_delay_timer) : 2;
  9629		}
  9630		icb->firmware_options_2 &= cpu_to_le32(
  9631		    ~(BIT_3 | BIT_2 | BIT_1 | BIT_0));
  9632		vha->flags.process_response_queue = 0;
  9633		if (ha->zio_mode != QLA_ZIO_DISABLED) {
  9634			ha->zio_mode = QLA_ZIO_MODE_6;
  9635	
  9636			ql_log(ql_log_info, vha, 0x0075,
  9637			    "ZIO mode %d enabled; timer delay (%d us).\n",
  9638			    ha->zio_mode,
  9639			    ha->zio_timer * 100);
  9640	
  9641			icb->firmware_options_2 |= cpu_to_le32(
  9642			    (uint32_t)ha->zio_mode);
  9643			icb->interrupt_delay_timer = cpu_to_le16(ha->zio_timer);
  9644			vha->flags.process_response_queue = 1;
  9645		}
  9646	
  9647		 /* enable RIDA Format2 */
  9648		icb->firmware_options_3 |= cpu_to_le32(BIT_0);
  9649	
  9650		/* N2N: driver will initiate Login instead of FW */
  9651		icb->firmware_options_3 |= cpu_to_le32(BIT_8);
  9652	
  9653		/* Determine NVMe/FCP priority for target ports */
  9654		ha->fc4_type_priority = qla2xxx_get_fc4_priority(vha);
  9655	
  9656		if (rval) {
  9657			ql_log(ql_log_warn, vha, 0x0076,
  9658			    "NVRAM configuration failed.\n");
  9659		}
  9660		return (rval);
  9661	}
  9662	

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-07-14 15:21 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-14 15:20 drivers/scsi/qla2xxx/qla_init.c:9368:2: warning: label at end of compound statement is a C23 extension kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox