All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com
Subject: [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]
Date: Sun, 1 Jan 2023 05:27:49 +0800	[thread overview]
Message-ID: <202301010509.ar95p00G-lkp@intel.com> (raw)

:::::: 
:::::: 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

                 reply	other threads:[~2022-12-31 21:28 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202301010509.ar95p00G-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=oe-kbuild@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.