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.