:::::: :::::: Manual check reason: "low confidence bisect report" :::::: Manual check reason: "low confidence static check warning: drivers/gpu/drm/panel/panel-edp.c:673:13: warning: use of uninitialized value '<unknown>' [CWE-457] [-Wanalyzer-use-of-uninitialized-value]" ::::::
BCC: [email protected] CC: [email protected] CC: [email protected] TO: Douglas Anderson <[email protected]> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: d895ec7938c431fe61a731939da76a6461bc6133 commit: 5540cf8f3e8dac7ef2de28edcf2623c1516fbe45 drm/panel-edp: Implement generic "edp-panel"s probed by EDID date: 12 months ago :::::: branch date: 17 hours ago :::::: commit date: 12 months ago config: arm-randconfig-c002-20220829 (https://download.01.org/0day-ci/archive/20220904/[email protected]/config) compiler: arm-linux-gnueabi-gcc (GCC) 12.1.0 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 # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5540cf8f3e8dac7ef2de28edcf2623c1516fbe45 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 5540cf8f3e8dac7ef2de28edcf2623c1516fbe45 # save the config file COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross ARCH=arm KBUILD_USERCFLAGS='-fanalyzer -Wno-error' If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot <[email protected]> gcc_analyzer warnings: (new ones prefixed by >>) drivers/gpu/drm/panel/panel-edp.c: In function 'generic_edp_panel_probe': >> drivers/gpu/drm/panel/panel-edp.c:673:13: warning: use of uninitialized >> value '<unknown>' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 673 | u16 product_id; | ^~~~~~~~~~ 'generic_edp_panel_probe': event 1 | | 673 | u16 product_id; | | ^~~~~~~~~~ | | | | | (1) use of uninitialized value '<unknown>' here | vim +673 drivers/gpu/drm/panel/panel-edp.c 5540cf8f3e8dac Douglas Anderson 2021-09-14 666 5540cf8f3e8dac Douglas Anderson 2021-09-14 667 static int generic_edp_panel_probe(struct device *dev, struct panel_edp *panel) 5540cf8f3e8dac Douglas Anderson 2021-09-14 668 { 5540cf8f3e8dac Douglas Anderson 2021-09-14 669 const struct edp_panel_entry *edp_panel; 5540cf8f3e8dac Douglas Anderson 2021-09-14 670 struct panel_desc *desc; 5540cf8f3e8dac Douglas Anderson 2021-09-14 671 u32 panel_id; 5540cf8f3e8dac Douglas Anderson 2021-09-14 672 char vend[4]; 5540cf8f3e8dac Douglas Anderson 2021-09-14 @673 u16 product_id; 5540cf8f3e8dac Douglas Anderson 2021-09-14 674 u32 reliable_ms = 0; 5540cf8f3e8dac Douglas Anderson 2021-09-14 675 u32 absent_ms = 0; 5540cf8f3e8dac Douglas Anderson 2021-09-14 676 int ret; 5540cf8f3e8dac Douglas Anderson 2021-09-14 677 5540cf8f3e8dac Douglas Anderson 2021-09-14 678 desc = devm_kzalloc(dev, sizeof(*desc), GFP_KERNEL); 5540cf8f3e8dac Douglas Anderson 2021-09-14 679 if (!desc) 5540cf8f3e8dac Douglas Anderson 2021-09-14 680 return -ENOMEM; 5540cf8f3e8dac Douglas Anderson 2021-09-14 681 panel->desc = desc; 5540cf8f3e8dac Douglas Anderson 2021-09-14 682 5540cf8f3e8dac Douglas Anderson 2021-09-14 683 /* 5540cf8f3e8dac Douglas Anderson 2021-09-14 684 * Read the dts properties for the initial probe. These are used by 5540cf8f3e8dac Douglas Anderson 2021-09-14 685 * the runtime resume code which will get called by the 5540cf8f3e8dac Douglas Anderson 2021-09-14 686 * pm_runtime_get_sync() call below. 5540cf8f3e8dac Douglas Anderson 2021-09-14 687 */ 5540cf8f3e8dac Douglas Anderson 2021-09-14 688 of_property_read_u32(dev->of_node, "hpd-reliable-delay-ms", &reliable_ms); 5540cf8f3e8dac Douglas Anderson 2021-09-14 689 desc->delay.hpd_reliable = reliable_ms; 5540cf8f3e8dac Douglas Anderson 2021-09-14 690 of_property_read_u32(dev->of_node, "hpd-absent-delay-ms", &absent_ms); 5540cf8f3e8dac Douglas Anderson 2021-09-14 691 desc->delay.hpd_reliable = absent_ms; 5540cf8f3e8dac Douglas Anderson 2021-09-14 692 5540cf8f3e8dac Douglas Anderson 2021-09-14 693 /* Power the panel on so we can read the EDID */ 5540cf8f3e8dac Douglas Anderson 2021-09-14 694 ret = pm_runtime_get_sync(dev); 5540cf8f3e8dac Douglas Anderson 2021-09-14 695 if (ret < 0) { 5540cf8f3e8dac Douglas Anderson 2021-09-14 696 dev_err(dev, "Couldn't power on panel to read EDID: %d\n", ret); 5540cf8f3e8dac Douglas Anderson 2021-09-14 697 goto exit; 5540cf8f3e8dac Douglas Anderson 2021-09-14 698 } 5540cf8f3e8dac Douglas Anderson 2021-09-14 699 5540cf8f3e8dac Douglas Anderson 2021-09-14 700 panel_id = drm_edid_get_panel_id(panel->ddc); 5540cf8f3e8dac Douglas Anderson 2021-09-14 701 if (!panel_id) { 5540cf8f3e8dac Douglas Anderson 2021-09-14 702 dev_err(dev, "Couldn't identify panel via EDID\n"); 5540cf8f3e8dac Douglas Anderson 2021-09-14 703 ret = -EIO; 5540cf8f3e8dac Douglas Anderson 2021-09-14 704 goto exit; 5540cf8f3e8dac Douglas Anderson 2021-09-14 705 } 5540cf8f3e8dac Douglas Anderson 2021-09-14 706 drm_edid_decode_panel_id(panel_id, vend, &product_id); 5540cf8f3e8dac Douglas Anderson 2021-09-14 707 5540cf8f3e8dac Douglas Anderson 2021-09-14 708 edp_panel = find_edp_panel(panel_id); 5540cf8f3e8dac Douglas Anderson 2021-09-14 709 5540cf8f3e8dac Douglas Anderson 2021-09-14 710 /* 5540cf8f3e8dac Douglas Anderson 2021-09-14 711 * We're using non-optimized timings and want it really obvious that 5540cf8f3e8dac Douglas Anderson 2021-09-14 712 * someone needs to add an entry to the table, so we'll do a WARN_ON 5540cf8f3e8dac Douglas Anderson 2021-09-14 713 * splat. 5540cf8f3e8dac Douglas Anderson 2021-09-14 714 */ 5540cf8f3e8dac Douglas Anderson 2021-09-14 715 if (WARN_ON(!edp_panel)) { 5540cf8f3e8dac Douglas Anderson 2021-09-14 716 dev_warn(dev, 5540cf8f3e8dac Douglas Anderson 2021-09-14 717 "Unknown panel %s %#06x, using conservative timings\n", 5540cf8f3e8dac Douglas Anderson 2021-09-14 718 vend, product_id); 5540cf8f3e8dac Douglas Anderson 2021-09-14 719 5540cf8f3e8dac Douglas Anderson 2021-09-14 720 /* 5540cf8f3e8dac Douglas Anderson 2021-09-14 721 * It's highly likely that the panel will work if we use very 5540cf8f3e8dac Douglas Anderson 2021-09-14 722 * conservative timings, so let's do that. We already know that 5540cf8f3e8dac Douglas Anderson 2021-09-14 723 * the HPD-related delays must have worked since we got this 5540cf8f3e8dac Douglas Anderson 2021-09-14 724 * far, so we really just need the "unprepare" / "enable" 5540cf8f3e8dac Douglas Anderson 2021-09-14 725 * delays. We don't need "prepare_to_enable" since that 5540cf8f3e8dac Douglas Anderson 2021-09-14 726 * overlaps the "enable" delay anyway. 5540cf8f3e8dac Douglas Anderson 2021-09-14 727 * 5540cf8f3e8dac Douglas Anderson 2021-09-14 728 * Nearly all panels have a "unprepare" delay of 500 ms though 5540cf8f3e8dac Douglas Anderson 2021-09-14 729 * there are a few with 1000. Let's stick 2000 in just to be 5540cf8f3e8dac Douglas Anderson 2021-09-14 730 * super conservative. 5540cf8f3e8dac Douglas Anderson 2021-09-14 731 * 5540cf8f3e8dac Douglas Anderson 2021-09-14 732 * An "enable" delay of 80 ms seems the most common, but we'll 5540cf8f3e8dac Douglas Anderson 2021-09-14 733 * throw in 200 ms to be safe. 5540cf8f3e8dac Douglas Anderson 2021-09-14 734 */ 5540cf8f3e8dac Douglas Anderson 2021-09-14 735 desc->delay.unprepare = 2000; 5540cf8f3e8dac Douglas Anderson 2021-09-14 736 desc->delay.enable = 200; 5540cf8f3e8dac Douglas Anderson 2021-09-14 737 } else { 5540cf8f3e8dac Douglas Anderson 2021-09-14 738 dev_info(dev, "Detected %s %s (%#06x)\n", 5540cf8f3e8dac Douglas Anderson 2021-09-14 739 vend, edp_panel->name, product_id); 5540cf8f3e8dac Douglas Anderson 2021-09-14 740 5540cf8f3e8dac Douglas Anderson 2021-09-14 741 /* Update the delay; everything else comes from EDID */ 5540cf8f3e8dac Douglas Anderson 2021-09-14 742 desc->delay = *edp_panel->delay; 5540cf8f3e8dac Douglas Anderson 2021-09-14 743 } 5540cf8f3e8dac Douglas Anderson 2021-09-14 744 5540cf8f3e8dac Douglas Anderson 2021-09-14 745 ret = 0; 5540cf8f3e8dac Douglas Anderson 2021-09-14 746 exit: 5540cf8f3e8dac Douglas Anderson 2021-09-14 747 pm_runtime_mark_last_busy(dev); 5540cf8f3e8dac Douglas Anderson 2021-09-14 748 pm_runtime_put_autosuspend(dev); 5540cf8f3e8dac Douglas Anderson 2021-09-14 749 5540cf8f3e8dac Douglas Anderson 2021-09-14 750 return ret; 5540cf8f3e8dac Douglas Anderson 2021-09-14 751 } 5540cf8f3e8dac Douglas Anderson 2021-09-14 752 -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
