tree:
https://gitlab.freedesktop.org/agd5f/linux.git drm-next
head: 2117d5f920190bd219e1aca5bf903477781ca161
commit: 509b9a5b4865dee723296f143695a7774fc96c4a [266/414] drm/amd/display: Avoid HPD IRQ
in GPU reset state
config: i386-randconfig-m021-20210517 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
New smatch warnings:
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:2776 handle_hpd_rx_irq() warn:
inconsistent indenting
Old smatch warnings:
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:1345 amdgpu_dm_fini() warn:
variable dereferenced before check 'adev->dm.dc' (see line 1329)
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:5748 create_stream_for_sink()
error: we previously assumed 'aconnector->dc_sink' could be null (see line
5612)
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:8068 handle_cursor_update()
error: we previously assumed 'afb' could be null (see line 8027)
vim +2776 drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c
4562236b3bc0a28 Harry Wentland 2017-09-12 2730
4562236b3bc0a28 Harry Wentland 2017-09-12 2731 static void handle_hpd_rx_irq(void
*param)
4562236b3bc0a28 Harry Wentland 2017-09-12 2732 {
c84dec2fe8837fa Harry Wentland 2017-09-05 2733 struct amdgpu_dm_connector
*aconnector = (struct amdgpu_dm_connector *)param;
4562236b3bc0a28 Harry Wentland 2017-09-12 2734 struct drm_connector *connector =
&aconnector->base;
4562236b3bc0a28 Harry Wentland 2017-09-12 2735 struct drm_device *dev =
connector->dev;
53cbf65c145450e Tom St Denis 2017-10-17 2736 struct dc_link *dc_link =
aconnector->dc_link;
4562236b3bc0a28 Harry Wentland 2017-09-12 2737 bool is_mst_root_connector =
aconnector->mst_mgr.mst_state;
c8ea79a8a2767e7 Qingqing Zhuo 2020-10-01 2738 bool result = false;
fbbdadf2faf17cd Bhawanpreet Lakha 2018-09-26 2739 enum dc_connection_type
new_connection_type = dc_connection_none;
c8ea79a8a2767e7 Qingqing Zhuo 2020-10-01 2740 struct amdgpu_device *adev =
drm_to_adev(dev);
2a0f92700fe348f Bhawanpreet Lakha 2019-06-10 2741 union hpd_irq_data hpd_irq_data;
2a0f92700fe348f Bhawanpreet Lakha 2019-06-10 2742
2a0f92700fe348f Bhawanpreet Lakha 2019-06-10 2743 memset(&hpd_irq_data, 0,
sizeof(hpd_irq_data));
4562236b3bc0a28 Harry Wentland 2017-09-12 2744
b972b4f913eee02 Harry Wentland 2020-10-02 2745 if (adev->dm.disable_hpd_irq)
b972b4f913eee02 Harry Wentland 2020-10-02 2746 return;
b972b4f913eee02 Harry Wentland 2020-10-02 2747
b972b4f913eee02 Harry Wentland 2020-10-02 2748
1f6010a96273c31 David Francis 2018-08-15 2749 /*
1f6010a96273c31 David Francis 2018-08-15 2750 * TODO:Temporary add mutex to
protect hpd interrupt not have a gpio
4562236b3bc0a28 Harry Wentland 2017-09-12 2751 * conflict, after implement i2c
helper, this mutex should be
4562236b3bc0a28 Harry Wentland 2017-09-12 2752 * retired.
4562236b3bc0a28 Harry Wentland 2017-09-12 2753 */
4562236b3bc0a28 Harry Wentland 2017-09-12 2754
mutex_lock(&aconnector->hpd_lock);
4562236b3bc0a28 Harry Wentland 2017-09-12 2755
3083a9845e1258e Qingqing Zhuo 2020-11-23 2756 read_hpd_rx_irq_data(dc_link,
&hpd_irq_data);
3083a9845e1258e Qingqing Zhuo 2020-11-23 2757
3083a9845e1258e Qingqing Zhuo 2020-11-23 2758 if
((dc_link->cur_link_settings.lane_count != LANE_COUNT_UNKNOWN) ||
3083a9845e1258e Qingqing Zhuo 2020-11-23 2759 (dc_link->type ==
dc_connection_mst_branch)) {
3083a9845e1258e Qingqing Zhuo 2020-11-23 2760 if
(hpd_irq_data.bytes.device_service_irq.bits.UP_REQ_MSG_RDY) {
3083a9845e1258e Qingqing Zhuo 2020-11-23 2761 result = true;
3083a9845e1258e Qingqing Zhuo 2020-11-23 2762 dm_handle_hpd_rx_irq(aconnector);
3083a9845e1258e Qingqing Zhuo 2020-11-23 2763 goto out;
3083a9845e1258e Qingqing Zhuo 2020-11-23 2764 } else if
(hpd_irq_data.bytes.device_service_irq.bits.DOWN_REP_MSG_RDY) {
3083a9845e1258e Qingqing Zhuo 2020-11-23 2765 result = false;
3083a9845e1258e Qingqing Zhuo 2020-11-23 2766 dm_handle_hpd_rx_irq(aconnector);
3083a9845e1258e Qingqing Zhuo 2020-11-23 2767 goto out;
3083a9845e1258e Qingqing Zhuo 2020-11-23 2768 }
3083a9845e1258e Qingqing Zhuo 2020-11-23 2769 }
3083a9845e1258e Qingqing Zhuo 2020-11-23 2770
509b9a5b4865dee Zhan Liu 2021-05-09 2771 if (!amdgpu_in_reset(adev)) {
c8ea79a8a2767e7 Qingqing Zhuo 2020-10-01 2772
mutex_lock(&adev->dm.dc_lock);
2a0f92700fe348f Bhawanpreet Lakha 2019-06-10 2773 #ifdef CONFIG_DRM_AMD_DC_HDCP
c8ea79a8a2767e7 Qingqing Zhuo 2020-10-01 2774 result =
dc_link_handle_hpd_rx_irq(dc_link, &hpd_irq_data, NULL);
2a0f92700fe348f Bhawanpreet Lakha 2019-06-10 2775 #else
c8ea79a8a2767e7 Qingqing Zhuo 2020-10-01 @2776 result =
dc_link_handle_hpd_rx_irq(dc_link, NULL, NULL);
2a0f92700fe348f Bhawanpreet Lakha 2019-06-10 2777 #endif
c8ea79a8a2767e7 Qingqing Zhuo 2020-10-01 2778
mutex_unlock(&adev->dm.dc_lock);
509b9a5b4865dee Zhan Liu 2021-05-09 2779 }
c8ea79a8a2767e7 Qingqing Zhuo 2020-10-01 2780
3083a9845e1258e Qingqing Zhuo 2020-11-23 2781 out:
c8ea79a8a2767e7 Qingqing Zhuo 2020-10-01 2782 if (result &&
!is_mst_root_connector) {
4562236b3bc0a28 Harry Wentland 2017-09-12 2783 /* Downstream Port status changed.
*/
fbbdadf2faf17cd Bhawanpreet Lakha 2018-09-26 2784 if (!dc_link_detect_sink(dc_link,
&new_connection_type))
fbbdadf2faf17cd Bhawanpreet Lakha 2018-09-26 2785 DRM_ERROR("KMS: Failed to
detect connector\n");
fbbdadf2faf17cd Bhawanpreet Lakha 2018-09-26 2786
fbbdadf2faf17cd Bhawanpreet Lakha 2018-09-26 2787 if (aconnector->base.force
&& new_connection_type == dc_connection_none) {
fbbdadf2faf17cd Bhawanpreet Lakha 2018-09-26 2788 emulated_link_detect(dc_link);
fbbdadf2faf17cd Bhawanpreet Lakha 2018-09-26 2789
fbbdadf2faf17cd Bhawanpreet Lakha 2018-09-26 2790 if (aconnector->fake_enable)
fbbdadf2faf17cd Bhawanpreet Lakha 2018-09-26 2791 aconnector->fake_enable =
false;
fbbdadf2faf17cd Bhawanpreet Lakha 2018-09-26 2792
fbbdadf2faf17cd Bhawanpreet Lakha 2018-09-26 2793
amdgpu_dm_update_connector_after_detect(aconnector);
fbbdadf2faf17cd Bhawanpreet Lakha 2018-09-26 2794
fbbdadf2faf17cd Bhawanpreet Lakha 2018-09-26 2795
fbbdadf2faf17cd Bhawanpreet Lakha 2018-09-26 2796 drm_modeset_lock_all(dev);
fbbdadf2faf17cd Bhawanpreet Lakha 2018-09-26 2797 dm_restore_drm_connector_state(dev,
connector);
fbbdadf2faf17cd Bhawanpreet Lakha 2018-09-26 2798 drm_modeset_unlock_all(dev);
fbbdadf2faf17cd Bhawanpreet Lakha 2018-09-26 2799
fbbdadf2faf17cd Bhawanpreet Lakha 2018-09-26 2800 drm_kms_helper_hotplug_event(dev);
fbbdadf2faf17cd Bhawanpreet Lakha 2018-09-26 2801 } else if (dc_link_detect(dc_link,
DETECT_REASON_HPDRX)) {
88ac3ddab12e2b0 Roman Li 2018-02-09 2802
88ac3ddab12e2b0 Roman Li 2018-02-09 2803 if (aconnector->fake_enable)
88ac3ddab12e2b0 Roman Li 2018-02-09 2804 aconnector->fake_enable =
false;
88ac3ddab12e2b0 Roman Li 2018-02-09 2805
4562236b3bc0a28 Harry Wentland 2017-09-12 2806
amdgpu_dm_update_connector_after_detect(aconnector);
4562236b3bc0a28 Harry Wentland 2017-09-12 2807
4562236b3bc0a28 Harry Wentland 2017-09-12 2808
4562236b3bc0a28 Harry Wentland 2017-09-12 2809 drm_modeset_lock_all(dev);
4562236b3bc0a28 Harry Wentland 2017-09-12 2810 dm_restore_drm_connector_state(dev,
connector);
4562236b3bc0a28 Harry Wentland 2017-09-12 2811 drm_modeset_unlock_all(dev);
4562236b3bc0a28 Harry Wentland 2017-09-12 2812
4562236b3bc0a28 Harry Wentland 2017-09-12 2813 drm_kms_helper_hotplug_event(dev);
4562236b3bc0a28 Harry Wentland 2017-09-12 2814 }
4562236b3bc0a28 Harry Wentland 2017-09-12 2815 }
2a0f92700fe348f Bhawanpreet Lakha 2019-06-10 2816 #ifdef CONFIG_DRM_AMD_DC_HDCP
e22bb5626cd6cd7 Alex Deucher 2020-02-18 2817 if
(hpd_irq_data.bytes.device_service_irq.bits.CP_IRQ) {
e22bb5626cd6cd7 Alex Deucher 2020-02-18 2818 if (adev->dm.hdcp_workqueue)
2a0f92700fe348f Bhawanpreet Lakha 2019-06-10 2819
hdcp_handle_cpirq(adev->dm.hdcp_workqueue, aconnector->base.index);
e22bb5626cd6cd7 Alex Deucher 2020-02-18 2820 }
2a0f92700fe348f Bhawanpreet Lakha 2019-06-10 2821 #endif
4562236b3bc0a28 Harry Wentland 2017-09-12 2822
b86e7eef91ef119 Nikola Cornij 2021-04-30 2823 if (dc_link->type !=
dc_connection_mst_branch)
e86e894751f0420 Hans Verkuil 2018-08-27 2824
drm_dp_cec_irq(&aconnector->dm_dp_aux.aux);
b86e7eef91ef119 Nikola Cornij 2021-04-30 2825
4562236b3bc0a28 Harry Wentland 2017-09-12 2826
mutex_unlock(&aconnector->hpd_lock);
4562236b3bc0a28 Harry Wentland 2017-09-12 2827 }
4562236b3bc0a28 Harry Wentland 2017-09-12 2828
:::::: The code at line 2776 was first introduced by commit
:::::: c8ea79a8a2767e7948c778237be655a109366eb9 drm/amd/display: NULL pointer error during
compliance test
:::::: TO: Qingqing Zhuo <qingqing.zhuo(a)amd.com>
:::::: CC: Alex Deucher <alexander.deucher(a)amd.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org