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

Reply via email to