All of lore.kernel.org
 help / color / mirror / Atom feed
* drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:2730 dm_resume() error: we previously assumed 'aconnector->dc_link' could be null (see line 2717)
@ 2022-10-25  7:05 Dan Carpenter
  0 siblings, 0 replies; only message in thread
From: Dan Carpenter @ 2022-10-25  7:05 UTC (permalink / raw)
  To: kbuild, Roman Li; +Cc: lkp, kbuild-all, linux-kernel, Alex Deucher, Wayne Lin

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   337a0a0b63f1c30195733eaacf39e4310a592a68
commit: f4346fb3edf7720db3f7f5e1cab1f667cd024280 drm/amd/display: Fix allocate_mst_payload assert on resume
config: mips-randconfig-m031-20221018
compiler: mips64el-linux-gcc (GCC) 12.1.0

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

New smatch warnings:
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:2730 dm_resume() error: we previously assumed 'aconnector->dc_link' could be null (see line 2717)

Old smatch warnings:
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:1747 amdgpu_dm_fini() warn: variable dereferenced before check 'adev->dm.dc' (see line 1720)
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:4019 amdgpu_dm_backlight_update_status() error: testing array offset 'i' after use.
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:4061 amdgpu_dm_backlight_get_brightness() error: testing array offset 'i' after use.
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:6530 create_stream_for_sink() error: we previously assumed 'aconnector->dc_sink' could be null (see line 6429)
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:8918 handle_cursor_update() error: we previously assumed 'afb' could be null (see line 8877)

vim +2730 drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c

4562236b3bc0a2 Harry Wentland      2017-09-12  2606  static int dm_resume(void *handle)
4562236b3bc0a2 Harry Wentland      2017-09-12  2607  {
4562236b3bc0a2 Harry Wentland      2017-09-12  2608  	struct amdgpu_device *adev = handle;
4a580877bdcb83 Luben Tuikov        2020-08-24  2609  	struct drm_device *ddev = adev_to_drm(adev);
4562236b3bc0a2 Harry Wentland      2017-09-12  2610  	struct amdgpu_display_manager *dm = &adev->dm;
c84dec2fe8837f Harry Wentland      2017-09-05  2611  	struct amdgpu_dm_connector *aconnector;
4562236b3bc0a2 Harry Wentland      2017-09-12  2612  	struct drm_connector *connector;
f8d2d39eb40694 Lyude Paul          2019-09-03  2613  	struct drm_connector_list_iter iter;
4562236b3bc0a2 Harry Wentland      2017-09-12  2614  	struct drm_crtc *crtc;
c2cea7063b85fc Leo (Sunpeng  Li    2017-10-12  2615) 	struct drm_crtc_state *new_crtc_state;
fcb4019e090b95 Leo (Sunpeng  Li    2017-11-01  2616) 	struct dm_crtc_state *dm_new_crtc_state;
fcb4019e090b95 Leo (Sunpeng  Li    2017-11-01  2617) 	struct drm_plane *plane;
fcb4019e090b95 Leo (Sunpeng  Li    2017-11-01  2618) 	struct drm_plane_state *new_plane_state;
fcb4019e090b95 Leo (Sunpeng  Li    2017-11-01  2619) 	struct dm_plane_state *dm_new_plane_state;
113b7a01087211 Leo Li              2019-03-19  2620  	struct dm_atomic_state *dm_state = to_dm_atomic_state(dm->atomic_obj.state);
fbbdadf2faf17c Bhawanpreet Lakha   2018-09-26  2621  	enum dc_connection_type new_connection_type = dc_connection_none;
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2622  	struct dc_state *dc_state;
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2623  	int i, r, j;
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2624  
53b3f8f40e6cff Dennis Li           2020-08-19  2625  	if (amdgpu_in_reset(adev)) {
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2626  		dc_state = dm->cached_dc_state;
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2627  
6d63fcc2a334f7 Nicholas Kazlauskas 2021-11-09  2628  		/*
6d63fcc2a334f7 Nicholas Kazlauskas 2021-11-09  2629  		 * The dc->current_state is backed up into dm->cached_dc_state
6d63fcc2a334f7 Nicholas Kazlauskas 2021-11-09  2630  		 * before we commit 0 streams.
6d63fcc2a334f7 Nicholas Kazlauskas 2021-11-09  2631  		 *
6d63fcc2a334f7 Nicholas Kazlauskas 2021-11-09  2632  		 * DC will clear link encoder assignments on the real state
6d63fcc2a334f7 Nicholas Kazlauskas 2021-11-09  2633  		 * but the changes won't propagate over to the copy we made
6d63fcc2a334f7 Nicholas Kazlauskas 2021-11-09  2634  		 * before the 0 streams commit.
6d63fcc2a334f7 Nicholas Kazlauskas 2021-11-09  2635  		 *
6d63fcc2a334f7 Nicholas Kazlauskas 2021-11-09  2636  		 * DC expects that link encoder assignments are *not* valid
32685b32d825ca Nicholas Kazlauskas 2022-02-28  2637  		 * when committing a state, so as a workaround we can copy
32685b32d825ca Nicholas Kazlauskas 2022-02-28  2638  		 * off of the current state.
32685b32d825ca Nicholas Kazlauskas 2022-02-28  2639  		 *
32685b32d825ca Nicholas Kazlauskas 2022-02-28  2640  		 * We lose the previous assignments, but we had already
32685b32d825ca Nicholas Kazlauskas 2022-02-28  2641  		 * commit 0 streams anyway.
6d63fcc2a334f7 Nicholas Kazlauskas 2021-11-09  2642  		 */
32685b32d825ca Nicholas Kazlauskas 2022-02-28  2643  		link_enc_cfg_copy(adev->dm.dc->current_state, dc_state);
6d63fcc2a334f7 Nicholas Kazlauskas 2021-11-09  2644  
af6902ec415655 Nicholas Kazlauskas 2021-11-23  2645  		if (dc_enable_dmub_notifications(adev->dm.dc))
524a0ba6fab955 Nicholas Kazlauskas 2021-11-08  2646  			amdgpu_dm_outbox_init(adev);
524a0ba6fab955 Nicholas Kazlauskas 2021-11-08  2647  
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2648  		r = dm_dmub_hw_init(adev);
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2649  		if (r)
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2650  			DRM_ERROR("DMUB interface failed to initialize: status=%d\n", r);
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2651  
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2652  		dc_set_power_state(dm->dc, DC_ACPI_CM_POWER_STATE_D0);
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2653  		dc_resume(dm->dc);
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2654  
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2655  		amdgpu_dm_irq_resume_early(adev);
4562236b3bc0a2 Harry Wentland      2017-09-12  2656  
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2657  		for (i = 0; i < dc_state->stream_count; i++) {
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2658  			dc_state->streams[i]->mode_changed = true;
6984fa418b8efd Nicholas Kazlauskas 2021-11-09  2659  			for (j = 0; j < dc_state->stream_status[i].plane_count; j++) {
6984fa418b8efd Nicholas Kazlauskas 2021-11-09  2660  				dc_state->stream_status[i].plane_states[j]->update_flags.raw
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2661  					= 0xffffffff;
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2662  			}
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2663  		}
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2664  
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2665  		WARN_ON(!dc_commit_state(dm->dc, dc_state));
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2666  
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2667  		dm_gpureset_commit_state(dm->cached_dc_state, dm);
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2668  
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2669  		dm_gpureset_toggle_interrupts(adev, dm->cached_dc_state, true);
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2670  
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2671  		dc_release_state(dm->cached_dc_state);
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2672  		dm->cached_dc_state = NULL;
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2673  
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2674  		amdgpu_dm_irq_resume_late(adev);
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2675  
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2676  		mutex_unlock(&dm->dc_lock);
4562236b3bc0a2 Harry Wentland      2017-09-12  2677  
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2678  		return 0;
cdaae8371aa9d4 Bhawanpreet Lakha   2020-05-11  2679  	}
113b7a01087211 Leo Li              2019-03-19  2680  	/* Recreate dc_state - DC invalidates it when setting power state to S3. */
113b7a01087211 Leo Li              2019-03-19  2681  	dc_release_state(dm_state->context);
113b7a01087211 Leo Li              2019-03-19  2682  	dm_state->context = dc_create_state(dm->dc);
113b7a01087211 Leo Li              2019-03-19  2683  	/* TODO: Remove dc_state->dccg, use dc->dccg directly. */
113b7a01087211 Leo Li              2019-03-19  2684  	dc_resource_state_construct(dm->dc, dm_state->context);
113b7a01087211 Leo Li              2019-03-19  2685  
af6902ec415655 Nicholas Kazlauskas 2021-11-23  2686  	/* Re-enable outbox interrupts for DPIA. */
af6902ec415655 Nicholas Kazlauskas 2021-11-23  2687  	if (dc_enable_dmub_notifications(adev->dm.dc))
af6902ec415655 Nicholas Kazlauskas 2021-11-23  2688  		amdgpu_dm_outbox_init(adev);
af6902ec415655 Nicholas Kazlauskas 2021-11-23  2689  
8c7aea404d55da Nicholas Kazlauskas 2019-11-25  2690  	/* Before powering on DC we need to re-initialize DMUB. */
79d6b9351f086e Nicholas Kazlauskas 2021-12-15  2691  	dm_dmub_hw_resume(adev);
8c7aea404d55da Nicholas Kazlauskas 2019-11-25  2692  
a80aa93de1a0e6 Mikita Lipski       2018-02-03  2693  	/* power on hardware */
a80aa93de1a0e6 Mikita Lipski       2018-02-03  2694  	dc_set_power_state(dm->dc, DC_ACPI_CM_POWER_STATE_D0);
a80aa93de1a0e6 Mikita Lipski       2018-02-03  2695  
4562236b3bc0a2 Harry Wentland      2017-09-12  2696  	/* program HPD filter */
4562236b3bc0a2 Harry Wentland      2017-09-12  2697  	dc_resume(dm->dc);
4562236b3bc0a2 Harry Wentland      2017-09-12  2698  
4562236b3bc0a2 Harry Wentland      2017-09-12  2699  	/*
4562236b3bc0a2 Harry Wentland      2017-09-12  2700  	 * early enable HPD Rx IRQ, should be done before set mode as short
4562236b3bc0a2 Harry Wentland      2017-09-12  2701  	 * pulse interrupts are used for MST
4562236b3bc0a2 Harry Wentland      2017-09-12  2702  	 */
4562236b3bc0a2 Harry Wentland      2017-09-12  2703  	amdgpu_dm_irq_resume_early(adev);
4562236b3bc0a2 Harry Wentland      2017-09-12  2704  
684cd480fd4e6d Lyude Paul          2019-09-25  2705  	/* On resume we need to rewrite the MSTM control bits to enable MST*/
684cd480fd4e6d Lyude Paul          2019-09-25  2706  	s3_handle_mst(ddev, false);
684cd480fd4e6d Lyude Paul          2019-09-25  2707  
4562236b3bc0a2 Harry Wentland      2017-09-12  2708  	/* Do detection*/
f8d2d39eb40694 Lyude Paul          2019-09-03  2709  	drm_connector_list_iter_begin(ddev, &iter);
f8d2d39eb40694 Lyude Paul          2019-09-03  2710  	drm_for_each_connector_iter(connector, &iter) {
c84dec2fe8837f Harry Wentland      2017-09-05  2711  		aconnector = to_amdgpu_dm_connector(connector);
4562236b3bc0a2 Harry Wentland      2017-09-12  2712  
4562236b3bc0a2 Harry Wentland      2017-09-12  2713  		/*
4562236b3bc0a2 Harry Wentland      2017-09-12  2714  		 * this is the case when traversing through already created
4562236b3bc0a2 Harry Wentland      2017-09-12  2715  		 * MST connectors, should be skipped
4562236b3bc0a2 Harry Wentland      2017-09-12  2716  		 */
f4346fb3edf772 Roman Li            2022-03-17 @2717  		if (aconnector->dc_link &&
                                                                    ^^^^^^^^^^^^^^^^^^^
Probably this check can be deleted...

f4346fb3edf772 Roman Li            2022-03-17  2718  		    aconnector->dc_link->type == dc_connection_mst_branch)
4562236b3bc0a2 Harry Wentland      2017-09-12  2719  			continue;
4562236b3bc0a2 Harry Wentland      2017-09-12  2720  
03ea364c8e156b Arindam Nath        2017-04-26  2721  		mutex_lock(&aconnector->hpd_lock);
fbbdadf2faf17c Bhawanpreet Lakha   2018-09-26  2722  		if (!dc_link_detect_sink(aconnector->dc_link, &new_connection_type))
fbbdadf2faf17c Bhawanpreet Lakha   2018-09-26  2723  			DRM_ERROR("KMS: Failed to detect connector\n");
fbbdadf2faf17c Bhawanpreet Lakha   2018-09-26  2724  
fbbdadf2faf17c Bhawanpreet Lakha   2018-09-26  2725  		if (aconnector->base.force && new_connection_type == dc_connection_none)
fbbdadf2faf17c Bhawanpreet Lakha   2018-09-26  2726  			emulated_link_detect(aconnector->dc_link);
fbbdadf2faf17c Bhawanpreet Lakha   2018-09-26  2727  		else
8f38b66c826188 Hersen Wu           2017-09-11  2728  			dc_link_detect(aconnector->dc_link, DETECT_REASON_HPD);
3eb4eba42263cc Roman Li            2017-10-20  2729  
3eb4eba42263cc Roman Li            2017-10-20 @2730  		if (aconnector->fake_enable && aconnector->dc_link->local_sink)
                                                                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The other code does not bother to check.

3eb4eba42263cc Roman Li            2017-10-20  2731  			aconnector->fake_enable = false;
3eb4eba42263cc Roman Li            2017-10-20  2732  
dcd5fb82ffb484 Mathias Fröhlich    2019-02-10  2733  		if (aconnector->dc_sink)

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-10-25  7:06 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-25  7:05 drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:2730 dm_resume() error: we previously assumed 'aconnector->dc_link' could be null (see line 2717) Dan Carpenter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.