CC: llvm(a)lists.linux.dev CC: kbuild-all(a)lists.01.org CC: Linux Memory Management List TO: Wei Li CC: Rob Clark CC: Abhinav Kumar CC: Dmitry Baryshkov tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 5e63226c72287bc6c6724d4fc7e157af0e3d7908 commit: bfddcfe155a2fe448fee0169c5cbc82c7fa73491 [5493/10945] drm/msm: Fix error return code in msm_drm_init() :::::: branch date: 10 hours ago :::::: commit date: 3 weeks ago config: arm-randconfig-c002-20210826 (attached as .config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project ea08c4cd1c0869ec5024a8bb3f5cdf06ab03ae83) 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/next/linux-next.git/commit/?id=bfddcfe155a2fe448fee0169c5cbc82c7fa73491 git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git fetch --no-tags linux-next master git checkout bfddcfe155a2fe448fee0169c5cbc82c7fa73491 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm clang-analyzer If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot clang-analyzer warnings: (new ones prefixed by >>) 9 warnings generated. Suppressed 9 warnings (9 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. 9 warnings generated. Suppressed 9 warnings (9 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 (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. 9 warnings generated. Suppressed 9 warnings (9 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. 9 warnings generated. Suppressed 9 warnings (9 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 (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. 9 warnings generated. drivers/gpu/drm/meson/meson_venc.c:136:2: warning: Excessive padding in 'struct meson_hdmi_venc_mode::(unnamed at drivers/gpu/drm/meson/meson_venc.c:136:2)' (39 padding bytes, where 3 is optimal). Optimal fields order: dvi_settings, video_mode, video_mode_adv, video_prog_mode, video_sync_mode, video_yc_dly, video_rgb_ctrl, video_filt_ctrl, video_ofld_voav_ofst, yfp1_htime, yfp2_htime, max_pxcnt, hspuls_begin, hspuls_end, hspuls_switch, vspuls_begin, vspuls_end, vspuls_bline, vspuls_eline, eqpuls_begin, eqpuls_end, eqpuls_bline, eqpuls_eline, havon_begin, havon_end, vavon_bline, vavon_eline, hso_begin, hso_end, vso_begin, vso_end, vso_bline, vso_eline, sy_val, sy2_val, max_lncnt, video_prog_mode_present, video_sync_mode_present, video_yc_dly_present, video_rgb_ctrl_present, video_filt_ctrl_present, video_ofld_voav_ofst_present, eqpuls_begin_present, eqpuls_end_present, eqpuls_bline_present, eqpuls_eline_present, vso_eline_present, sy_val_present, sy2_val_present, consider reordering the fields or adding explicit padding members [clang-analyzer-optin.performance.Padding] struct { ^~~~~~~~ drivers/gpu/drm/meson/meson_venc.c:136:2: note: Excessive padding in 'struct meson_hdmi_venc_mode::(unnamed at drivers/gpu/drm/meson/meson_venc.c:136:2)' (39 padding bytes, where 3 is optimal). Optimal fields order: dvi_settings, video_mode, video_mode_adv, video_prog_mode, video_sync_mode, video_yc_dly, video_rgb_ctrl, video_filt_ctrl, video_ofld_voav_ofst, yfp1_htime, yfp2_htime, max_pxcnt, hspuls_begin, hspuls_end, hspuls_switch, vspuls_begin, vspuls_end, vspuls_bline, vspuls_eline, eqpuls_begin, eqpuls_end, eqpuls_bline, eqpuls_eline, havon_begin, havon_end, vavon_bline, vavon_eline, hso_begin, hso_end, vso_begin, vso_end, vso_bline, vso_eline, sy_val, sy2_val, max_lncnt, video_prog_mode_present, video_sync_mode_present, video_yc_dly_present, video_rgb_ctrl_present, video_filt_ctrl_present, video_ofld_voav_ofst_present, eqpuls_begin_present, eqpuls_end_present, eqpuls_bline_present, eqpuls_eline_present, vso_eline_present, sy_val_present, sy2_val_present, consider reordering the fields or adding explicit padding members struct { ^~~~~~~~ Suppressed 8 warnings (8 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. 8 warnings generated. Suppressed 8 warnings (8 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. 9 warnings generated. Suppressed 9 warnings (9 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. 8 warnings generated. Suppressed 8 warnings (8 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. 9 warnings generated. Suppressed 9 warnings (9 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. 12 warnings generated. >> drivers/gpu/drm/msm/msm_drv.c:540:4: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores] ret = PTR_ERR(priv->event_thread[i].worker); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/msm/msm_drv.c:540:4: note: Value stored to 'ret' is never read ret = PTR_ERR(priv->event_thread[i].worker); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/msm/msm_drv.c:1267:8: warning: 1st function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage] ret = add_components_mdp(mdp_dev, matchptr); ^ drivers/gpu/drm/msm/msm_drv.c:1328:6: note: Assuming the condition is true if (get_mdp_ver(pdev)) { ^~~~~~~~~~~~~~~~~ drivers/gpu/drm/msm/msm_drv.c:1328:2: note: Taking true branch if (get_mdp_ver(pdev)) { ^ drivers/gpu/drm/msm/msm_drv.c:1329:9: note: Calling 'add_display_components' ret = add_display_components(pdev, &match); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/msm/msm_drv.c:1229:2: note: 'mdp_dev' declared without an initial value struct device *mdp_dev; ^~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/msm/msm_drv.c:1239:2: note: 'Default' branch taken. Execution continues on line 1267 switch (get_mdp_ver(pdev)) { ^ drivers/gpu/drm/msm/msm_drv.c:1267:8: note: 1st function call argument is an uninitialized value ret = add_components_mdp(mdp_dev, matchptr); ^ ~~~~~~~ Suppressed 10 warnings (10 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. 9 warnings generated. Suppressed 9 warnings (9 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. 9 warnings generated. Suppressed 9 warnings (9 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 (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. 9 warnings generated. Suppressed 9 warnings (9 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. 9 warnings generated. Suppressed 9 warnings (9 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. 10 warnings generated. drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c:355:27: warning: Value stored to 'mdp5_state' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct mdp5_plane_state *mdp5_state = to_mdp5_plane_state(new_plane_state); ^~~~~~~~~~ drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c:355:27: note: Value stored to 'mdp5_state' during its initialization is never read struct mdp5_plane_state *mdp5_state = to_mdp5_plane_state(new_plane_state); ^~~~~~~~~~ Suppressed 9 warnings (9 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. 56 warnings generated. drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c:158:16: warning: The result of the left shift is undefined because the left operand is negative [clang-analyzer-core.UndefinedBinaryOperatorResult] blkcfg |= (n << (8 * i)); ~ ^ drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c:136:7: note: Assuming 'rev' is <= 0 if ((rev > 0) && (format->chroma_sample > CHROMA_FULL)) { ^~~~~~~ drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c:136:16: note: Left side of '&&' is false if ((rev > 0) && (format->chroma_sample > CHROMA_FULL)) { ^ drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c:146:14: note: Assuming 'i' is < 'nplanes' for (i = 0; i < nplanes; i++) { ^~~~~~~~~~~ drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c:146:2: note: Loop condition is true. Entering loop body for (i = 0; i < nplanes; i++) { ^ drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c:150:33: note: 'i' is 0 fetch_stride = width * cpp / (i ? hsub : 1); ^ drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c:150:33: note: '?' condition is false drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c:155:7: note: Assuming 'rev' is equal to 0 if (rev == 0) ^~~~~~~~ drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c:155:3: note: Taking true branch if (rev == 0) ^ drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c:156:8: note: '?' condition is false n = roundup_pow_of_two(n); ^ include/linux/log2.h:176:2: note: expanded from macro 'roundup_pow_of_two' __builtin_constant_p(n) ? ( \ ^ drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c:156:8: note: Calling '__roundup_pow_of_two' n = roundup_pow_of_two(n); ^ include/linux/log2.h:180:2: note: expanded from macro 'roundup_pow_of_two' __roundup_pow_of_two(n) \ ^~~~~~~~~~~~~~~~~~~~~~~ include/linux/log2.h:57:2: note: Returning the value 2147483648 return 1UL << fls_long(n - 1); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/msm/disp/mdp5/mdp5_smp.c:156:8: note: Returning from '__roundup_pow_of_two' vim +/ret +540 drivers/gpu/drm/msm/msm_drv.c 5bf9c0b614542d Rob Clark 2015-03-03 418 70a59dd82959f8 Daniel Vetter 2020-11-04 419 static int msm_drm_init(struct device *dev, const struct drm_driver *drv) 5bf9c0b614542d Rob Clark 2015-03-03 420 { 2b669875332fbd Archit Taneja 2016-05-02 421 struct platform_device *pdev = to_platform_device(dev); 2b669875332fbd Archit Taneja 2016-05-02 422 struct drm_device *ddev; 5bf9c0b614542d Rob Clark 2015-03-03 423 struct msm_drm_private *priv; 5bf9c0b614542d Rob Clark 2015-03-03 424 struct msm_kms *kms; bc3220be22577e Rajesh Yadav 2018-06-21 425 struct msm_mdss *mdss; 25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 426 int ret, i; 5bf9c0b614542d Rob Clark 2015-03-03 427 2b669875332fbd Archit Taneja 2016-05-02 428 ddev = drm_dev_alloc(drv, dev); 0f2886057be322 Tom Gundersen 2016-09-21 429 if (IS_ERR(ddev)) { 6a41da17e87dee Mamta Shukla 2018-10-20 430 DRM_DEV_ERROR(dev, "failed to allocate drm_device\n"); 0f2886057be322 Tom Gundersen 2016-09-21 431 return PTR_ERR(ddev); 2b669875332fbd Archit Taneja 2016-05-02 432 } 2b669875332fbd Archit Taneja 2016-05-02 433 2b669875332fbd Archit Taneja 2016-05-02 434 platform_set_drvdata(pdev, ddev); 2b669875332fbd Archit Taneja 2016-05-02 435 5bf9c0b614542d Rob Clark 2015-03-03 436 priv = kzalloc(sizeof(*priv), GFP_KERNEL); 5bf9c0b614542d Rob Clark 2015-03-03 437 if (!priv) { 77050c3febb180 Jeykumar Sankaran 2018-06-27 438 ret = -ENOMEM; 4d8dc2dfae2c48 Thomas Zimmermann 2018-09-26 439 goto err_put_drm_dev; 5bf9c0b614542d Rob Clark 2015-03-03 440 } 5bf9c0b614542d Rob Clark 2015-03-03 441 2b669875332fbd Archit Taneja 2016-05-02 442 ddev->dev_private = priv; 68209390f11603 Rob Clark 2016-05-17 443 priv->dev = ddev; 5bf9c0b614542d Rob Clark 2015-03-03 444 25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 445 switch (get_mdp_ver(pdev)) { 25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 446 case KMS_MDP5: bc3220be22577e Rajesh Yadav 2018-06-21 447 ret = mdp5_mdss_init(ddev); 25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 448 break; 25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 449 case KMS_DPU: 25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 450 ret = dpu_mdss_init(ddev); 25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 451 break; 25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 452 default: 25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 453 ret = 0; 25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 454 break; 25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 455 } 77050c3febb180 Jeykumar Sankaran 2018-06-27 456 if (ret) 77050c3febb180 Jeykumar Sankaran 2018-06-27 457 goto err_free_priv; 0a6030d224d3a4 Archit Taneja 2016-05-08 458 bc3220be22577e Rajesh Yadav 2018-06-21 459 mdss = priv->mdss; bc3220be22577e Rajesh Yadav 2018-06-21 460 5bf9c0b614542d Rob Clark 2015-03-03 461 priv->wq = alloc_ordered_workqueue("msm", 0); 1d2fa58e0dda33 Samuel Iglesias Gonsalvez 2021-06-07 462 priv->hangcheck_period = DRM_MSM_HANGCHECK_DEFAULT_PERIOD; 5bf9c0b614542d Rob Clark 2015-03-03 463 6ed0897cd800c3 Rob Clark 2021-03-31 464 INIT_LIST_HEAD(&priv->objects); 6ed0897cd800c3 Rob Clark 2021-03-31 465 mutex_init(&priv->obj_lock); 6ed0897cd800c3 Rob Clark 2021-03-31 466 3edfa30f2340e6 Rob Clark 2020-11-16 467 INIT_LIST_HEAD(&priv->inactive_willneed); 3edfa30f2340e6 Rob Clark 2020-11-16 468 INIT_LIST_HEAD(&priv->inactive_dontneed); 64fcbde772c72a Rob Clark 2021-04-05 469 INIT_LIST_HEAD(&priv->inactive_unpinned); d984457b31c4c5 Rob Clark 2020-10-23 470 mutex_init(&priv->mm_lock); 48e7f18392c66f Kristian H. Kristensen 2019-03-20 471 d984457b31c4c5 Rob Clark 2020-10-23 472 /* Teach lockdep about lock ordering wrt. shrinker: */ d984457b31c4c5 Rob Clark 2020-10-23 473 fs_reclaim_acquire(GFP_KERNEL); d984457b31c4c5 Rob Clark 2020-10-23 474 might_lock(&priv->mm_lock); d984457b31c4c5 Rob Clark 2020-10-23 475 fs_reclaim_release(GFP_KERNEL); 5bf9c0b614542d Rob Clark 2015-03-03 476 2b669875332fbd Archit Taneja 2016-05-02 477 drm_mode_config_init(ddev); 060530f1ea6740 Rob Clark 2014-03-03 478 d863f0c7b53628 Craig Tatlor 2020-12-30 479 ret = msm_init_vram(ddev); 77050c3febb180 Jeykumar Sankaran 2018-06-27 480 if (ret) 77050c3febb180 Jeykumar Sankaran 2018-06-27 481 goto err_destroy_mdss; 060530f1ea6740 Rob Clark 2014-03-03 482 d863f0c7b53628 Craig Tatlor 2020-12-30 483 /* Bind all our sub-components: */ d863f0c7b53628 Craig Tatlor 2020-12-30 484 ret = component_bind_all(dev, ddev); 13f15565f7887a Rob Clark 2015-05-07 485 if (ret) d863f0c7b53628 Craig Tatlor 2020-12-30 486 goto err_destroy_mdss; 13f15565f7887a Rob Clark 2015-05-07 487 d5653a994a665c Robin Murphy 2020-09-03 488 dma_set_max_seg_size(dev, UINT_MAX); db735fc4036bbe Sean Paul 2020-01-21 489 68209390f11603 Rob Clark 2016-05-17 490 msm_gem_shrinker_init(ddev); 68209390f11603 Rob Clark 2016-05-17 491 06c0dd96bfbba8 Rob Clark 2013-11-30 492 switch (get_mdp_ver(pdev)) { aaded2e3a1f6b7 Jeykumar Sankaran 2018-06-27 493 case KMS_MDP4: 2b669875332fbd Archit Taneja 2016-05-02 494 kms = mdp4_kms_init(ddev); 0a6030d224d3a4 Archit Taneja 2016-05-08 495 priv->kms = kms; 06c0dd96bfbba8 Rob Clark 2013-11-30 496 break; aaded2e3a1f6b7 Jeykumar Sankaran 2018-06-27 497 case KMS_MDP5: 392ae6e0efa5e2 Archit Taneja 2016-06-14 498 kms = mdp5_kms_init(ddev); 06c0dd96bfbba8 Rob Clark 2013-11-30 499 break; 25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 500 case KMS_DPU: 25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 501 kms = dpu_kms_init(ddev); 25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 502 priv->kms = kms; 25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 503 break; 06c0dd96bfbba8 Rob Clark 2013-11-30 504 default: e6f6d63ed14c20 Jonathan Marek 2018-12-04 505 /* valid only for the dummy headless case, where of_node=NULL */ e6f6d63ed14c20 Jonathan Marek 2018-12-04 506 WARN_ON(dev->of_node); e6f6d63ed14c20 Jonathan Marek 2018-12-04 507 kms = NULL; 06c0dd96bfbba8 Rob Clark 2013-11-30 508 break; 06c0dd96bfbba8 Rob Clark 2013-11-30 509 } 06c0dd96bfbba8 Rob Clark 2013-11-30 510 c8afe684c95cd1 Rob Clark 2013-06-26 511 if (IS_ERR(kms)) { 6a41da17e87dee Mamta Shukla 2018-10-20 512 DRM_DEV_ERROR(dev, "failed to load kms\n"); e4826a94c74446 Thomas Meyer 2013-09-16 513 ret = PTR_ERR(kms); b2ccfdf1dde588 Jonathan Marek 2018-11-21 514 priv->kms = NULL; 77050c3febb180 Jeykumar Sankaran 2018-06-27 515 goto err_msm_uninit; c8afe684c95cd1 Rob Clark 2013-06-26 516 } c8afe684c95cd1 Rob Clark 2013-06-26 517 bb676df12b5e81 Jeykumar Sankaran 2018-06-11 518 /* Enable normalization of plane zpos */ bb676df12b5e81 Jeykumar Sankaran 2018-06-11 519 ddev->mode_config.normalize_zpos = true; bb676df12b5e81 Jeykumar Sankaran 2018-06-11 520 c8afe684c95cd1 Rob Clark 2013-06-26 521 if (kms) { 2d99ced787e3d0 Rob Clark 2019-08-29 522 kms->dev = ddev; c8afe684c95cd1 Rob Clark 2013-06-26 523 ret = kms->funcs->hw_init(kms); c8afe684c95cd1 Rob Clark 2013-06-26 524 if (ret) { 6a41da17e87dee Mamta Shukla 2018-10-20 525 DRM_DEV_ERROR(dev, "kms hw init failed: %d\n", ret); 77050c3febb180 Jeykumar Sankaran 2018-06-27 526 goto err_msm_uninit; c8afe684c95cd1 Rob Clark 2013-06-26 527 } c8afe684c95cd1 Rob Clark 2013-06-26 528 } c8afe684c95cd1 Rob Clark 2013-06-26 529 2b669875332fbd Archit Taneja 2016-05-02 530 ddev->mode_config.funcs = &mode_config_funcs; d14659f5de7d28 Sean Paul 2018-02-28 531 ddev->mode_config.helper_private = &mode_config_helper_funcs; c8afe684c95cd1 Rob Clark 2013-06-26 532 25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 533 for (i = 0; i < priv->num_crtcs; i++) { 25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 534 /* initialize event thread */ 25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 535 priv->event_thread[i].crtc_id = priv->crtcs[i]->base.id; 25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 536 priv->event_thread[i].dev = ddev; 1041dee2178ffd Bernard 2020-07-21 537 priv->event_thread[i].worker = kthread_create_worker(0, 25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 538 "crtc_event:%d", priv->event_thread[i].crtc_id); 1041dee2178ffd Bernard 2020-07-21 539 if (IS_ERR(priv->event_thread[i].worker)) { a1c9b1e3bdd6d8 Zhen Lei 2021-05-08 @540 ret = PTR_ERR(priv->event_thread[i].worker); 4971f090aa7f6c Linus Torvalds 2018-12-25 541 DRM_DEV_ERROR(dev, "failed to create crtc_event kthread\n"); bfddcfe155a2fe Wei Li 2021-07-05 542 ret = PTR_ERR(priv->event_thread[i].worker); 7f9743abaa79d3 Jeykumar Sankaran 2018-10-10 543 goto err_msm_uninit; 7f9743abaa79d3 Jeykumar Sankaran 2018-10-10 544 } 7f9743abaa79d3 Jeykumar Sankaran 2018-10-10 545 6d2b84a4e5b954 Linus Torvalds 2020-08-06 546 sched_set_fifo(priv->event_thread[i].worker->task); 25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 547 } 25fdd5933e4c0f Jeykumar Sankaran 2018-06-27 548 2b669875332fbd Archit Taneja 2016-05-02 549 ret = drm_vblank_init(ddev, priv->num_crtcs); c8afe684c95cd1 Rob Clark 2013-06-26 550 if (ret < 0) { 6a41da17e87dee Mamta Shukla 2018-10-20 551 DRM_DEV_ERROR(dev, "failed to initialize vblank\n"); 77050c3febb180 Jeykumar Sankaran 2018-06-27 552 goto err_msm_uninit; c8afe684c95cd1 Rob Clark 2013-06-26 553 } c8afe684c95cd1 Rob Clark 2013-06-26 554 a2b3a5571f386e Archit Taneja 2016-05-18 555 if (kms) { 2b669875332fbd Archit Taneja 2016-05-02 556 pm_runtime_get_sync(dev); a2b3a5571f386e Archit Taneja 2016-05-18 557 ret = drm_irq_install(ddev, kms->irq); 2b669875332fbd Archit Taneja 2016-05-02 558 pm_runtime_put_sync(dev); c8afe684c95cd1 Rob Clark 2013-06-26 559 if (ret < 0) { 6a41da17e87dee Mamta Shukla 2018-10-20 560 DRM_DEV_ERROR(dev, "failed to install IRQ handler\n"); 77050c3febb180 Jeykumar Sankaran 2018-06-27 561 goto err_msm_uninit; c8afe684c95cd1 Rob Clark 2013-06-26 562 } a2b3a5571f386e Archit Taneja 2016-05-18 563 } c8afe684c95cd1 Rob Clark 2013-06-26 564 2b669875332fbd Archit Taneja 2016-05-02 565 ret = drm_dev_register(ddev, 0); 2b669875332fbd Archit Taneja 2016-05-02 566 if (ret) 77050c3febb180 Jeykumar Sankaran 2018-06-27 567 goto err_msm_uninit; 2b669875332fbd Archit Taneja 2016-05-02 568 98659487b845c0 Abhinav Kumar 2021-04-16 569 ret = msm_disp_snapshot_init(ddev); 98659487b845c0 Abhinav Kumar 2021-04-16 570 if (ret) 98659487b845c0 Abhinav Kumar 2021-04-16 571 DRM_DEV_ERROR(dev, "msm_disp_snapshot_init failed ret = %d\n", ret); 98659487b845c0 Abhinav Kumar 2021-04-16 572 2b669875332fbd Archit Taneja 2016-05-02 573 drm_mode_config_reset(ddev); cf3a7e4ce08e68 Rob Clark 2014-11-08 574 :::::: The code@line 540 was first introduced by commit :::::: a1c9b1e3bdd6d8dc43c18699772fb6cf4497d45a drm/msm: Fix error return code in msm_drm_init() :::::: TO: Zhen Lei :::::: CC: Rob Clark --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org