* [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.