All of lore.kernel.org
 help / color / mirror / Atom feed
* [qcom:drivers-for-6.3 5/8] drivers/soc/qcom/dcc.c:361:51: warning: Operator '|' with one operand equal to zero is redundant. [badBitmaskCheck]
@ 2022-12-31 21:27 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-12-31 21:27 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp

:::::: 
:::::: Manual check reason: "low confidence static check warning: drivers/soc/qcom/dcc.c:361:51: warning: Operator '|' with one operand equal to zero is redundant. [badBitmaskCheck]"
:::::: 

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Souradeep Chowdhury <quic_schowdhu@quicinc.com>
CC: Bjorn Andersson <andersson@kernel.org>
CC: Alex Elder <elder@linaro.org>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux drivers-for-6.3
head:   f02a537357a61e7892587c0f3455f8295cc9075c
commit: 4cbe60cf5ad622f7f45ccc4fa369c9f7a71903b9 [5/8] soc: qcom: dcc: Add driver support for Data Capture and Compare unit(DCC)
:::::: branch date: 2 days ago
:::::: commit date: 3 days ago
compiler: sh4-linux-gcc (GCC) 12.1.0
reproduce (cppcheck warning):
        # apt-get install cppcheck
        git checkout 4cbe60cf5ad622f7f45ccc4fa369c9f7a71903b9
        cppcheck --quiet --enable=style,performance,portability --template=gcc FILE

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>


cppcheck possible warnings: (new ones prefixed by >>, may not real problems)

>> drivers/soc/qcom/dcc.c:361:51: warning: Operator '|' with one operand equal to zero is redundant. [badBitmaskCheck]
     cfg->addr |= DCC_ADDR_DESCRIPTOR | DCC_READ_IND | DCC_APB_IND;
                                                     ^
>> drivers/soc/qcom/dcc.c:438:18: warning: Uninitialized variable: entry->desc_type [uninitvar]
     switch (entry->desc_type) {
                    ^
   drivers/soc/qcom/dcc.c:1021:18: warning: Uninitialized variable: entry->desc_type [uninitvar]
     switch (entry->desc_type) {
                    ^
   drivers/soc/qcom/dcc.c:1014:16: note: Assuming condition is false
    if (curr_list < 0)
                  ^
   drivers/soc/qcom/dcc.c:1021:18: note: Uninitialized variable: entry->desc_type
     switch (entry->desc_type) {
                    ^

vim +361 drivers/soc/qcom/dcc.c

4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  349  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  350  static int dcc_emit_read(struct dcc_drvdata *drvdata,
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  351  			 struct dcc_config_entry *entry,
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  352  			 struct dcc_cfg_attr *cfg,
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  353  			 u32 *pos, u32 *total_len)
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  354  {
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  355  	u32 off;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  356  	u32 temp_off;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  357  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  358  	cfg->addr = (entry->base >> 4) & GENMASK(27, 0);
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  359  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  360  	if (entry->apb_bus)
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27 @361  		cfg->addr |= DCC_ADDR_DESCRIPTOR | DCC_READ_IND | DCC_APB_IND;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  362  	else
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  363  		cfg->addr |= DCC_ADDR_DESCRIPTOR | DCC_READ_IND | DCC_AHB_IND;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  364  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  365  	off = entry->offset / 4;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  366  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  367  	*total_len += entry->len * 4;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  368  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  369  	if (!cfg->prev_addr || cfg->prev_addr != cfg->addr || cfg->prev_off > off) {
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  370  		/* Check if we need to write prev link entry */
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  371  		if (cfg->link)
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  372  			dcc_sram_write_auto(drvdata, cfg->link, &cfg->sram_offset);
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  373  		dev_dbg(drvdata->dev, "DCC: sram address 0x%x\n", cfg->sram_offset);
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  374  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  375  		/* Write address */
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  376  		dcc_sram_write_auto(drvdata, cfg->addr, &cfg->sram_offset);
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  377  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  378  		/* Reset link and prev_off */
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  379  		cfg->link = 0;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  380  		cfg->prev_off = 0;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  381  	}
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  382  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  383  	if ((off - cfg->prev_off) > 0xff || entry->len > MAX_DCC_LEN) {
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  384  		dev_err(drvdata->dev, "DCC: Programming error Base: 0x%x, offset 0x%x\n",
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  385  			entry->base, entry->offset);
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  386  		return -EINVAL;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  387  	}
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  388  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  389  	if (cfg->link) {
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  390  		/*
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  391  		 * link already has one offset-length so new
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  392  		 * offset-length needs to be placed at
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  393  		 * bits [29:15]
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  394  		 */
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  395  		*pos = 15;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  396  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  397  		/* Clear bits [31:16] */
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  398  		cfg->link &= GENMASK(14, 0);
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  399  	} else {
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  400  		/*
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  401  		 * link is empty, so new offset-length needs
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  402  		 * to be placed at bits [15:0]
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  403  		 */
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  404  		*pos = 0;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  405  		cfg->link = 1 << 15;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  406  	}
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  407  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  408  	/* write new offset-length pair to correct position */
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  409  	temp_off = (off - cfg->prev_off) & GENMASK(7, 0);
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  410  	cfg->link |= temp_off | ((entry->len << 8) & GENMASK(14, 8)) << *pos;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  411  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  412  	cfg->link |= DCC_LINK_DESCRIPTOR;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  413  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  414  	if (*pos) {
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  415  		dcc_sram_write_auto(drvdata, cfg->link, &cfg->sram_offset);
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  416  		cfg->link = 0;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  417  	}
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  418  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  419  	cfg->prev_off = off + entry->len - 1;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  420  	cfg->prev_addr = cfg->addr;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  421  	return 0;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  422  }
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  423  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  424  static int dcc_emit_config(struct dcc_drvdata *drvdata, unsigned int curr_list)
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  425  {
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  426  	int ret;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  427  	u32 total_len, pos;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  428  	struct dcc_config_entry *entry;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  429  	struct dcc_cfg_attr cfg;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  430  	struct dcc_cfg_loop_attr cfg_loop;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  431  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  432  	memset(&cfg, 0, sizeof(cfg));
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  433  	memset(&cfg_loop, 0, sizeof(cfg_loop));
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  434  	cfg.sram_offset = drvdata->ram_cfg * 4;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  435  	total_len = 0;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  436  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  437  	list_for_each_entry(entry, &drvdata->cfg_head[curr_list], list) {
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27 @438  		switch (entry->desc_type) {
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  439  		case DCC_READ_WRITE_TYPE:
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  440  			dcc_emit_read_write(drvdata, entry, &cfg);
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  441  			break;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  442  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  443  		case DCC_LOOP_TYPE:
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  444  			dcc_emit_loop(drvdata, entry, &cfg, &cfg_loop, &total_len);
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  445  			break;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  446  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  447  		case DCC_WRITE_TYPE:
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  448  			dcc_emit_write(drvdata, entry, &cfg);
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  449  			break;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  450  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  451  		case DCC_READ_TYPE:
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  452  			ret = dcc_emit_read(drvdata, entry, &cfg, &pos, &total_len);
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  453  			if (ret)
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  454  				goto err;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  455  			break;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  456  		}
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  457  	}
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  458  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  459  	if (cfg.link)
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  460  		dcc_sram_write_auto(drvdata, cfg.link, &cfg.sram_offset);
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  461  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  462  	if (cfg_loop.loop_start) {
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  463  		dev_err(drvdata->dev, "DCC: Programming error: Loop unterminated\n");
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  464  		ret = -EINVAL;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  465  		goto err;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  466  	}
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  467  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  468  	/* Handling special case of list ending with a rd_mod_wr */
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  469  	if (cfg.addr == DCC_RD_MOD_WR_DESCRIPTOR) {
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  470  		cfg.addr = (DCC_RD_MOD_WR_ADDR) & GENMASK(27, 0);
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  471  		cfg.addr |= DCC_ADDR_DESCRIPTOR;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  472  		dcc_sram_write_auto(drvdata, cfg.addr, &cfg.sram_offset);
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  473  	}
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  474  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  475  	/* Setting zero to indicate end of the list */
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  476  	cfg.link = DCC_LINK_DESCRIPTOR;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  477  	dcc_sram_write_auto(drvdata, cfg.link, &cfg.sram_offset);
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  478  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  479  	/* Check if sram offset exceeds the ram size */
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  480  	if (cfg.sram_offset > drvdata->ram_size)
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  481  		goto overstep;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  482  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  483  	/* Update ram_cfg and check if the data will overstep */
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  484  	drvdata->ram_cfg = (cfg.sram_offset + total_len) / 4;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  485  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  486  	if (cfg.sram_offset + total_len > drvdata->ram_size) {
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  487  		cfg.sram_offset += total_len;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  488  		goto overstep;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  489  	}
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  490  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  491  	drvdata->ram_start = cfg.sram_offset / 4;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  492  	return 0;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  493  overstep:
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  494  	ret = -EINVAL;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  495  	memset_io(drvdata->ram_base, 0, drvdata->ram_size);
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  496  
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  497  err:
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  498  	return ret;
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  499  }
4cbe60cf5ad622 Souradeep Chowdhury 2022-12-27  500  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

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

only message in thread, other threads:[~2022-12-31 21:28 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-12-31 21:27 [qcom:drivers-for-6.3 5/8] drivers/soc/qcom/dcc.c:361:51: warning: Operator '|' with one operand equal to zero is redundant. [badBitmaskCheck] kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.