:::::: :::::: Manual check reason: "low confidence static check warning: drivers/gpu/drm/tegra/dc.c:2238:2: warning: Value stored to 'old_state' is never read [clang-analyzer-deadcode.DeadStores]" ::::::
CC: [email protected] CC: [email protected] BCC: [email protected] CC: [email protected] TO: Dmitry Osipenko <[email protected]> CC: Thierry Reding <[email protected]> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 8171acb8bc9b33f3ed827f0615b24f7a06495cd0 commit: 04d5d5df9df79f9045e76404775fc8a084aac23d drm/tegra: dc: Support memory bandwidth management date: 10 months ago :::::: branch date: 5 hours ago :::::: commit date: 10 months ago config: arm-randconfig-c002-20220531 (https://download.01.org/0day-ci/archive/20220602/[email protected]/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project c825abd6b0198fb088d9752f556a70705bc99dfd) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install arm cross compiling tool for clang build # apt-get install binutils-arm-linux-gnueabi # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=04d5d5df9df79f9045e76404775fc8a084aac23d git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 04d5d5df9df79f9045e76404775fc8a084aac23d # save the config file COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm clang-analyzer If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot <[email protected]> clang-analyzer warnings: (new ones prefixed by >>) ^~~ ~~~~~~~~~~~~~~~ drivers/media/platform/qcom/venus/hfi_venus.c:959:17: note: Value stored to 'dev' during its initialization is never read struct device *dev = hdev->core->dev; ^~~ ~~~~~~~~~~~~~~~ drivers/media/platform/qcom/venus/hfi_venus.c:966:34: warning: Value stored to 'pkt' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct hfi_msg_sys_debug_pkt *pkt = packet; ^~~ ~~~~~~ drivers/media/platform/qcom/venus/hfi_venus.c:966:34: note: Value stored to 'pkt' during its initialization is never read struct hfi_msg_sys_debug_pkt *pkt = packet; ^~~ ~~~~~~ Suppressed 2 warnings (1 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 2 warnings generated. Suppressed 2 warnings (1 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 2 warnings generated. Suppressed 2 warnings (1 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 2 warnings generated. Suppressed 2 warnings (1 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 3 warnings generated. block/bfq-wf2q.c:263:7: warning: Access to field 'my_sched_data' results in a dereference of a null pointer (loaded from variable 'entity') [clang-analyzer-core.NullDereference] if (!entity->my_sched_data) ^ block/bfq-wf2q.c:1508:2: note: 'entity' initialized to a null pointer value struct bfq_entity *entity = NULL; ^~~~~~~~~~~~~~~~~~~~~~~~~ block/bfq-wf2q.c:1512:6: note: Assuming the condition is false if (bfq_tot_busy_queues(bfqd) == 0) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ block/bfq-wf2q.c:1512:2: note: Taking false branch if (bfq_tot_busy_queues(bfqd) == 0) ^ block/bfq-wf2q.c:1521:2: note: Loop condition is false. Execution continues on line 1582 for (; sd ; sd = entity->my_sched_data) { ^ block/bfq-wf2q.c:1582:28: note: Passing null pointer value via 1st parameter 'entity' bfqq = bfq_entity_to_bfqq(entity); ^~~~~~ block/bfq-wf2q.c:1582:9: note: Calling 'bfq_entity_to_bfqq' bfqq = bfq_entity_to_bfqq(entity); ^~~~~~~~~~~~~~~~~~~~~~~~~~ block/bfq-wf2q.c:263:7: note: Access to field 'my_sched_data' results in a dereference of a null pointer (loaded from variable 'entity') if (!entity->my_sched_data) ^~~~~~ Suppressed 2 warnings (2 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 2 warnings generated. Suppressed 2 warnings (2 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 2 warnings generated. Suppressed 2 warnings (1 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 2 warnings generated. Suppressed 2 warnings (1 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 3 warnings generated. Suppressed 3 warnings (1 in non-user code, 2 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 3 warnings generated. Suppressed 3 warnings (1 in non-user code, 2 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 3 warnings generated. drivers/media/dvb-frontends/tda10048.c:493:3: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores] ret = 0; ^ ~ drivers/media/dvb-frontends/tda10048.c:493:3: note: Value stored to 'ret' is never read ret = 0; ^ ~ Suppressed 2 warnings (1 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 9 warnings generated. drivers/gpu/drm/tegra/dc.c:1856:2: warning: Value stored to 'old_dc_state' is never read [clang-analyzer-deadcode.DeadStores] old_dc_state = to_const_dc_state(old_crtc_state); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/tegra/dc.c:1856:2: note: Value stored to 'old_dc_state' is never read old_dc_state = to_const_dc_state(old_crtc_state); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/tegra/dc.c:1857:2: warning: Value stored to 'new_dc_state' is never read [clang-analyzer-deadcode.DeadStores] new_dc_state = to_const_dc_state(crtc->state); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/tegra/dc.c:1857:2: note: Value stored to 'new_dc_state' is never read new_dc_state = to_const_dc_state(crtc->state); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/tegra/dc.c:2145:2: warning: Value stored to 'value' is never read [clang-analyzer-deadcode.DeadStores] value = tegra_dc_readl(dc, DC_CMD_STATE_CONTROL); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/tegra/dc.c:2145:2: note: Value stored to 'value' is never read value = tegra_dc_readl(dc, DC_CMD_STATE_CONTROL); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/tegra/dc.c:2149:2: warning: Value stored to 'value' is never read [clang-analyzer-deadcode.DeadStores] value = tegra_dc_readl(dc, DC_CMD_STATE_CONTROL); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/tegra/dc.c:2149:2: note: Value stored to 'value' is never read value = tegra_dc_readl(dc, DC_CMD_STATE_CONTROL); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/gpu/drm/tegra/dc.c:2238:2: warning: Value stored to 'old_state' is >> never read [clang-analyzer-deadcode.DeadStores] old_state = drm_atomic_get_old_crtc_state(state, crtc); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/tegra/dc.c:2238:2: note: Value stored to 'old_state' is never read old_state = drm_atomic_get_old_crtc_state(state, crtc); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Suppressed 4 warnings (1 in non-user code, 3 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 3 warnings generated. drivers/base/dd.c:684:2: warning: Value stored to 'calltime' is never read [clang-analyzer-deadcode.DeadStores] calltime = ktime_get(); ^ ~~~~~~~~~~~ drivers/base/dd.c:684:2: note: Value stored to 'calltime' is never read calltime = ktime_get(); ^ ~~~~~~~~~~~ drivers/base/dd.c:686:2: warning: Value stored to 'rettime' is never read [clang-analyzer-deadcode.DeadStores] rettime = ktime_get(); ^ ~~~~~~~~~~~ drivers/base/dd.c:686:2: note: Value stored to 'rettime' is never read rettime = ktime_get(); ^ ~~~~~~~~~~~ drivers/base/dd.c:1080:2: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores] ret = driver_probe_device(drv, dev); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/base/dd.c:1080:2: note: Value stored to 'ret' is never read ret = driver_probe_device(drv, dev); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. drivers/base/platform.c:577:3: warning: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy] strcpy(pa->name, name); ^~~~~~ drivers/base/platform.c:577:3: note: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 strcpy(pa->name, name); ^~~~~~ 2 warnings generated. drivers/mmc/core/regulator.c:181:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct device *dev = mmc_dev(mmc); ^~~ drivers/mmc/core/regulator.c:181:17: note: Value stored to 'dev' during its initialization is never read struct device *dev = mmc_dev(mmc); ^~~ Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 2 warnings generated. Suppressed 2 warnings (1 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 2 warnings generated. Suppressed 2 warnings (1 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 5 warnings generated. drivers/media/platform/sti/delta/delta-debug.c:57:20: warning: Value stored to 'delta' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct delta_dev *delta = ctx->dev; ^~~~~ ~~~~~~~~ drivers/media/platform/sti/delta/delta-debug.c:57:20: note: Value stored to 'delta' during its initialization is never read struct delta_dev *delta = ctx->dev; ^~~~~ ~~~~~~~~ drivers/media/platform/sti/delta/delta-debug.c:58:27: warning: Value stored to 's' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct delta_streaminfo *s = &ctx->streaminfo; ^ ~~~~~~~~~~~~~~~~ drivers/media/platform/sti/delta/delta-debug.c:58:27: note: Value stored to 's' during its initialization is never read struct delta_streaminfo *s = &ctx->streaminfo; ^ ~~~~~~~~~~~~~~~~ drivers/media/platform/sti/delta/delta-debug.c:59:16: warning: Value stored to 'str' during its initialization is never read [clang-analyzer-deadcode.DeadStores] unsigned char str[100] = ""; ^~~ ~~ drivers/media/platform/sti/delta/delta-debug.c:59:16: note: Value stored to 'str' during its initialization is never read unsigned char str[100] = ""; ^~~ ~~ Suppressed 2 warnings (1 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 2 warnings generated. -- Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 2 warnings generated. sound/soc/codecs/ak4613.c:402:2: warning: Value stored to 'fmt_ctrl' is never read [clang-analyzer-deadcode.DeadStores] fmt_ctrl = NO_FMT; ^ sound/soc/codecs/ak4613.c:402:2: note: Value stored to 'fmt_ctrl' is never read Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 3 warnings generated. sound/soc/codecs/adau7118.c:127:24: warning: Value stored to 'st' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct adau7118_data *st = ^~ sound/soc/codecs/adau7118.c:127:24: note: Value stored to 'st' during its initialization is never read struct adau7118_data *st = ^~ sound/soc/codecs/adau7118.c:210:24: warning: Value stored to 'st' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct adau7118_data *st = ^~ sound/soc/codecs/adau7118.c:210:24: note: Value stored to 'st' during its initialization is never read struct adau7118_data *st = ^~ Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. drivers/mtd/nand/onenand/onenand_bbt.c:72:12: warning: Although the value stored to 'ooblen' is used in the enclosing expression, the value is never actually read from 'ooblen' [clang-analyzer-deadcode.DeadStores] scanlen = ooblen = 0; ^ ~ drivers/mtd/nand/onenand/onenand_bbt.c:72:12: note: Although the value stored to 'ooblen' is used in the enclosing expression, the value is never actually read from 'ooblen' scanlen = ooblen = 0; ^ ~ 1 warning generated. drivers/mtd/nand/onenand/generic.c:66:2: warning: Value stored to 'err' is never read [clang-analyzer-deadcode.DeadStores] err = mtd_device_register(&info->mtd, pdata ? pdata->parts : NULL, ^ drivers/mtd/nand/onenand/generic.c:66:2: note: Value stored to 'err' is never read 9 warnings generated. drivers/gpu/drm/tegra/dc.c:1856:2: warning: Value stored to 'old_dc_state' is never read [clang-analyzer-deadcode.DeadStores] old_dc_state = to_const_dc_state(old_crtc_state); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/tegra/dc.c:1856:2: note: Value stored to 'old_dc_state' is never read old_dc_state = to_const_dc_state(old_crtc_state); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/tegra/dc.c:1857:2: warning: Value stored to 'new_dc_state' is never read [clang-analyzer-deadcode.DeadStores] new_dc_state = to_const_dc_state(crtc->state); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/tegra/dc.c:1857:2: note: Value stored to 'new_dc_state' is never read new_dc_state = to_const_dc_state(crtc->state); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/tegra/dc.c:2145:2: warning: Value stored to 'value' is never read [clang-analyzer-deadcode.DeadStores] value = tegra_dc_readl(dc, DC_CMD_STATE_CONTROL); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/tegra/dc.c:2145:2: note: Value stored to 'value' is never read value = tegra_dc_readl(dc, DC_CMD_STATE_CONTROL); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/tegra/dc.c:2149:2: warning: Value stored to 'value' is never read [clang-analyzer-deadcode.DeadStores] value = tegra_dc_readl(dc, DC_CMD_STATE_CONTROL); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/tegra/dc.c:2149:2: note: Value stored to 'value' is never read value = tegra_dc_readl(dc, DC_CMD_STATE_CONTROL); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/gpu/drm/tegra/dc.c:2238:2: warning: Value stored to 'old_state' is >> never read [clang-analyzer-deadcode.DeadStores] old_state = drm_atomic_get_old_crtc_state(state, crtc); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/tegra/dc.c:2238:2: note: Value stored to 'old_state' is never read old_state = drm_atomic_get_old_crtc_state(state, crtc); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Suppressed 4 warnings (1 in non-user code, 3 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 2 warnings generated. Suppressed 2 warnings (2 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 2 warnings generated. Suppressed 2 warnings (1 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 2 warnings generated. Suppressed 2 warnings (1 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 2 warnings generated. Suppressed 2 warnings (1 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 2 warnings generated. Suppressed 2 warnings (1 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 with check filters). 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 1 warning generated. Suppressed 1 warnings (1 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 2 warnings generated. Suppressed 2 warnings (1 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. drivers/w1/w1.c:589:3: warning: Value stored to 'event_owner' is never read [clang-analyzer-deadcode.DeadStores] event_owner = "master"; ^ ~~~~~~~~ drivers/w1/w1.c:589:3: note: Value stored to 'event_owner' is never read event_owner = "master"; ^ ~~~~~~~~ drivers/w1/w1.c:590:3: warning: Value stored to 'name' is never read [clang-analyzer-deadcode.DeadStores] name = md->name; ^ ~~~~~~~~ drivers/w1/w1.c:590:3: note: Value stored to 'name' is never read name = md->name; ^ ~~~~~~~~ drivers/w1/w1.c:593:3: warning: Value stored to 'event_owner' is never read [clang-analyzer-deadcode.DeadStores] event_owner = "slave"; ^ ~~~~~~~ drivers/w1/w1.c:593:3: note: Value stored to 'event_owner' is never read event_owner = "slave"; ^ ~~~~~~~ drivers/w1/w1.c:594:3: warning: Value stored to 'name' is never read [clang-analyzer-deadcode.DeadStores] name = sl->name; ^ ~~~~~~~~ vim +/old_state +2238 drivers/gpu/drm/tegra/dc.c 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2213 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2214 static int tegra_crtc_calculate_memory_bandwidth(struct drm_crtc *crtc, 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2215 struct drm_atomic_state *state) 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2216 { 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2217 ulong overlap_mask[TEGRA_DC_LEGACY_PLANES_NUM] = {}, mask; 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2218 u32 plane_peak_bw[TEGRA_DC_LEGACY_PLANES_NUM] = {}; 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2219 bool all_planes_overlap_simultaneously = true; 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2220 const struct tegra_plane_state *tegra_state; 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2221 const struct drm_plane_state *plane_state; 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2222 struct tegra_dc *dc = to_tegra_dc(crtc); 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2223 const struct drm_crtc_state *old_state; 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2224 struct drm_crtc_state *new_state; 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2225 struct tegra_plane *tegra; 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2226 struct drm_plane *plane; 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2227 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2228 /* 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2229 * The nv-display uses shared planes. The algorithm below assumes 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2230 * maximum 3 planes per-CRTC, this assumption isn't applicable to 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2231 * the nv-display. Note that T124 support has additional windows, 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2232 * but currently they aren't supported by the driver. 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2233 */ 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2234 if (dc->soc->has_nvdisplay) 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2235 return 0; 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2236 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2237 new_state = drm_atomic_get_new_crtc_state(state, crtc); 04d5d5df9df79f Dmitry Osipenko 2021-06-01 @2238 old_state = drm_atomic_get_old_crtc_state(state, crtc); 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2239 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2240 /* 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2241 * For overlapping planes pixel's data is fetched for each plane at 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2242 * the same time, hence bandwidths are accumulated in this case. 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2243 * This needs to be taken into account for calculating total bandwidth 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2244 * consumed by all planes. 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2245 * 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2246 * Here we get the overlapping state of each plane, which is a 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2247 * bitmask of plane indices telling with what planes there is an 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2248 * overlap. Note that bitmask[plane] includes BIT(plane) in order 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2249 * to make further code nicer and simpler. 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2250 */ 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2251 drm_atomic_crtc_state_for_each_plane_state(plane, plane_state, new_state) { 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2252 tegra_state = to_const_tegra_plane_state(plane_state); 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2253 tegra = to_tegra_plane(plane); 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2254 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2255 if (WARN_ON_ONCE(tegra->index >= TEGRA_DC_LEGACY_PLANES_NUM)) 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2256 return -EINVAL; 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2257 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2258 plane_peak_bw[tegra->index] = tegra_state->peak_memory_bandwidth; 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2259 mask = tegra_plane_overlap_mask(new_state, plane_state); 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2260 overlap_mask[tegra->index] = mask; 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2261 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2262 if (hweight_long(mask) != 3) 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2263 all_planes_overlap_simultaneously = false; 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2264 } 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2265 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2266 /* 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2267 * Then we calculate maximum bandwidth of each plane state. 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2268 * The bandwidth includes the plane BW + BW of the "simultaneously" 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2269 * overlapping planes, where "simultaneously" means areas where DC 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2270 * fetches from the planes simultaneously during of scan-out process. 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2271 * 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2272 * For example, if plane A overlaps with planes B and C, but B and C 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2273 * don't overlap, then the peak bandwidth will be either in area where 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2274 * A-and-B or A-and-C planes overlap. 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2275 * 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2276 * The plane_peak_bw[] contains peak memory bandwidth values of 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2277 * each plane, this information is needed by interconnect provider 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2278 * in order to set up latency allowance based on the peak BW, see 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2279 * tegra_crtc_update_memory_bandwidth(). 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2280 */ 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2281 drm_atomic_crtc_state_for_each_plane_state(plane, plane_state, new_state) { 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2282 u32 i, old_peak_bw, new_peak_bw, overlap_bw = 0; 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2283 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2284 /* 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2285 * Note that plane's atomic check doesn't touch the 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2286 * total_peak_memory_bandwidth of enabled plane, hence the 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2287 * current state contains the old bandwidth state from the 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2288 * previous CRTC commit. 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2289 */ 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2290 tegra_state = to_const_tegra_plane_state(plane_state); 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2291 tegra = to_tegra_plane(plane); 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2292 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2293 for_each_set_bit(i, &overlap_mask[tegra->index], 3) { 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2294 if (i == tegra->index) 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2295 continue; 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2296 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2297 if (all_planes_overlap_simultaneously) 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2298 overlap_bw += plane_peak_bw[i]; 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2299 else 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2300 overlap_bw = max(overlap_bw, plane_peak_bw[i]); 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2301 } 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2302 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2303 new_peak_bw = plane_peak_bw[tegra->index] + overlap_bw; 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2304 old_peak_bw = tegra_state->total_peak_memory_bandwidth; 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2305 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2306 /* 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2307 * If plane's peak bandwidth changed (for example plane isn't 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2308 * overlapped anymore) and plane isn't in the atomic state, 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2309 * then add plane to the state in order to have the bandwidth 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2310 * updated. 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2311 */ 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2312 if (old_peak_bw != new_peak_bw) { 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2313 struct tegra_plane_state *new_tegra_state; 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2314 struct drm_plane_state *new_plane_state; 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2315 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2316 new_plane_state = drm_atomic_get_plane_state(state, plane); 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2317 if (IS_ERR(new_plane_state)) 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2318 return PTR_ERR(new_plane_state); 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2319 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2320 new_tegra_state = to_tegra_plane_state(new_plane_state); 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2321 new_tegra_state->total_peak_memory_bandwidth = new_peak_bw; 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2322 } 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2323 } 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2324 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2325 return 0; 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2326 } 04d5d5df9df79f Dmitry Osipenko 2021-06-01 2327 -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
