All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:8466:13: warning: stack frame size of 2112 bytes in function 'amdgpu_dm_atomic_commit_tail'
Date: Wed, 05 May 2021 20:26:36 +0800	[thread overview]
Message-ID: <202105052028.V7hP755T-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 30632 bytes --]

Hi Nikola,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   d665ea6ea86c785760ee4bad4543dab3267ad074
commit: a85ba00538cd4bb0655aaf57fe3ebf8cc21f4fea drm/amdgpu/display: re-enable freesync video patches
date:   6 weeks ago
config: powerpc-randconfig-r016-20210505 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 8f5a2a5836cc8e4c1def2bdeb022e7b496623439)
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 powerpc cross compiling tool for clang build
        # apt-get install binutils-powerpc-linux-gnu
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a85ba00538cd4bb0655aaf57fe3ebf8cc21f4fea
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout a85ba00538cd4bb0655aaf57fe3ebf8cc21f4fea
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=powerpc 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:8466:13: warning: stack frame size of 2112 bytes in function 'amdgpu_dm_atomic_commit_tail' [-Wframe-larger-than=]
   static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state)
               ^
   drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:8054:13: warning: stack frame size of 2352 bytes in function 'amdgpu_dm_commit_planes' [-Wframe-larger-than=]
   static void amdgpu_dm_commit_planes(struct drm_atomic_state *state,
               ^
   2 warnings generated.


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

e7b07ceef2a650 Harry Wentland      2017-08-10  8457  
b8592b48450b99 Leo Li              2018-09-14  8458  /**
b8592b48450b99 Leo Li              2018-09-14  8459   * amdgpu_dm_atomic_commit_tail() - AMDgpu DM's commit tail implementation.
b8592b48450b99 Leo Li              2018-09-14  8460   * @state: The atomic state to commit
b8592b48450b99 Leo Li              2018-09-14  8461   *
b8592b48450b99 Leo Li              2018-09-14  8462   * This will tell DC to commit the constructed DC state from atomic_check,
b8592b48450b99 Leo Li              2018-09-14  8463   * programming the hardware. Any failures here implies a hardware failure, since
b8592b48450b99 Leo Li              2018-09-14  8464   * atomic check should have filtered anything non-kosher.
b8592b48450b99 Leo Li              2018-09-14  8465   */
7578ecda14d521 Alex Deucher        2017-10-10 @8466  static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state)
e7b07ceef2a650 Harry Wentland      2017-08-10  8467  {
e7b07ceef2a650 Harry Wentland      2017-08-10  8468  	struct drm_device *dev = state->dev;
1348969ab68cb8 Luben Tuikov        2020-08-24  8469  	struct amdgpu_device *adev = drm_to_adev(dev);
e7b07ceef2a650 Harry Wentland      2017-08-10  8470  	struct amdgpu_display_manager *dm = &adev->dm;
e7b07ceef2a650 Harry Wentland      2017-08-10  8471  	struct dm_atomic_state *dm_state;
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8472  	struct dc_state *dc_state = NULL, *dc_state_temp = NULL;
e7b07ceef2a650 Harry Wentland      2017-08-10  8473  	uint32_t i, j;
5cc6dcbd45a60b Leo (Sunpeng  Li    2017-10-12  8474) 	struct drm_crtc *crtc;
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8475) 	struct drm_crtc_state *old_crtc_state, *new_crtc_state;
e7b07ceef2a650 Harry Wentland      2017-08-10  8476  	unsigned long flags;
e7b07ceef2a650 Harry Wentland      2017-08-10  8477  	bool wait_for_vblank = true;
e7b07ceef2a650 Harry Wentland      2017-08-10  8478  	struct drm_connector *connector;
c2cea7063b85fc Leo (Sunpeng  Li    2017-10-12  8479) 	struct drm_connector_state *old_con_state, *new_con_state;
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8480) 	struct dm_crtc_state *dm_old_crtc_state, *dm_new_crtc_state;
fe2a19652918a5 Lyude Paul          2018-06-21  8481  	int crtc_disable_count = 0;
6ee90e88b97674 hersen wu           2020-07-08  8482  	bool mode_set_reset_required = false;
e7b07ceef2a650 Harry Wentland      2017-08-10  8483  
e8a982355f9669 Rodrigo Siqueira    2020-09-04  8484  	trace_amdgpu_dm_atomic_commit_tail_begin(state);
e8a982355f9669 Rodrigo Siqueira    2020-09-04  8485  
e7b07ceef2a650 Harry Wentland      2017-08-10  8486  	drm_atomic_helper_update_legacy_modeset_state(dev, state);
e7b07ceef2a650 Harry Wentland      2017-08-10  8487  
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8488  	dm_state = dm_atomic_get_new_state(state);
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8489  	if (dm_state && dm_state->context) {
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8490  		dc_state = dm_state->context;
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8491  	} else {
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8492  		/* No state changes, retain current state. */
813d20dccf93f8 Aidan Wood          2019-02-22  8493  		dc_state_temp = dc_create_state(dm->dc);
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8494  		ASSERT(dc_state_temp);
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8495  		dc_state = dc_state_temp;
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8496  		dc_resource_state_copy_construct_current(dm->dc, dc_state);
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8497  	}
e7b07ceef2a650 Harry Wentland      2017-08-10  8498  
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8499  	for_each_oldnew_crtc_in_state (state, crtc, old_crtc_state,
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8500  				       new_crtc_state, i) {
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8501  		struct amdgpu_crtc *acrtc = to_amdgpu_crtc(crtc);
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8502  
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8503  		dm_old_crtc_state = to_dm_crtc_state(old_crtc_state);
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8504  
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8505  		if (old_crtc_state->active &&
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8506  		    (!new_crtc_state->active ||
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8507  		     drm_atomic_crtc_needs_modeset(new_crtc_state))) {
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8508  			manage_dm_interrupts(adev, acrtc, false);
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8509  			dc_stream_release(dm_old_crtc_state->stream);
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8510  		}
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8511  	}
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8512  
8976f73b676eb9 Rodrigo Siqueira    2020-11-17  8513  	drm_atomic_helper_calc_timestamping_constants(state);
8976f73b676eb9 Rodrigo Siqueira    2020-11-17  8514  
e7b07ceef2a650 Harry Wentland      2017-08-10  8515  	/* update changed items */
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8516) 	for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) {
e7b07ceef2a650 Harry Wentland      2017-08-10  8517  		struct amdgpu_crtc *acrtc = to_amdgpu_crtc(crtc);
b830ebc910f641 Harry Wentland      2017-07-26  8518  
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8519) 		dm_new_crtc_state = to_dm_crtc_state(new_crtc_state);
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8520) 		dm_old_crtc_state = to_dm_crtc_state(old_crtc_state);
e7b07ceef2a650 Harry Wentland      2017-08-10  8521  
f1ad2f5efd29dc Harry Wentland      2017-09-12  8522  		DRM_DEBUG_DRIVER(
e7b07ceef2a650 Harry Wentland      2017-08-10  8523  			"amdgpu_crtc id:%d crtc_state_flags: enable:%d, active:%d, "
e7b07ceef2a650 Harry Wentland      2017-08-10  8524  			"planes_changed:%d, mode_changed:%d,active_changed:%d,"
e7b07ceef2a650 Harry Wentland      2017-08-10  8525  			"connectors_changed:%d\n",
e7b07ceef2a650 Harry Wentland      2017-08-10  8526  			acrtc->crtc_id,
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8527) 			new_crtc_state->enable,
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8528) 			new_crtc_state->active,
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8529) 			new_crtc_state->planes_changed,
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8530) 			new_crtc_state->mode_changed,
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8531) 			new_crtc_state->active_changed,
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8532) 			new_crtc_state->connectors_changed);
e7b07ceef2a650 Harry Wentland      2017-08-10  8533  
5c68c65295de0b Victor Lu           2020-10-23  8534  		/* Disable cursor if disabling crtc */
5c68c65295de0b Victor Lu           2020-10-23  8535  		if (old_crtc_state->active && !new_crtc_state->active) {
5c68c65295de0b Victor Lu           2020-10-23  8536  			struct dc_cursor_position position;
5c68c65295de0b Victor Lu           2020-10-23  8537  
5c68c65295de0b Victor Lu           2020-10-23  8538  			memset(&position, 0, sizeof(position));
5c68c65295de0b Victor Lu           2020-10-23  8539  			mutex_lock(&dm->dc_lock);
5c68c65295de0b Victor Lu           2020-10-23  8540  			dc_stream_set_cursor_position(dm_old_crtc_state->stream, &position);
5c68c65295de0b Victor Lu           2020-10-23  8541  			mutex_unlock(&dm->dc_lock);
5c68c65295de0b Victor Lu           2020-10-23  8542  		}
5c68c65295de0b Victor Lu           2020-10-23  8543  
27b3f4fc91e1df Leo (Sunpeng  Li    2017-11-10  8544) 		/* Copy all transient state flags into dc state */
27b3f4fc91e1df Leo (Sunpeng  Li    2017-11-10  8545) 		if (dm_new_crtc_state->stream) {
27b3f4fc91e1df Leo (Sunpeng  Li    2017-11-10  8546) 			amdgpu_dm_crtc_copy_transient_flags(&dm_new_crtc_state->base,
27b3f4fc91e1df Leo (Sunpeng  Li    2017-11-10  8547) 							    dm_new_crtc_state->stream);
27b3f4fc91e1df Leo (Sunpeng  Li    2017-11-10  8548) 		}
27b3f4fc91e1df Leo (Sunpeng  Li    2017-11-10  8549) 
e7b07ceef2a650 Harry Wentland      2017-08-10  8550  		/* handles headless hotplug case, updating new_state and
e7b07ceef2a650 Harry Wentland      2017-08-10  8551  		 * aconnector as needed
e7b07ceef2a650 Harry Wentland      2017-08-10  8552  		 */
e7b07ceef2a650 Harry Wentland      2017-08-10  8553  
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8554) 		if (modeset_required(new_crtc_state, dm_new_crtc_state->stream, dm_old_crtc_state->stream)) {
e7b07ceef2a650 Harry Wentland      2017-08-10  8555  
f1ad2f5efd29dc Harry Wentland      2017-09-12  8556  			DRM_DEBUG_DRIVER("Atomic commit: SET crtc id %d: [%p]\n", acrtc->crtc_id, acrtc);
e7b07ceef2a650 Harry Wentland      2017-08-10  8557  
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8558) 			if (!dm_new_crtc_state->stream) {
e7b07ceef2a650 Harry Wentland      2017-08-10  8559  				/*
e7b07ceef2a650 Harry Wentland      2017-08-10  8560  				 * this could happen because of issues with
e7b07ceef2a650 Harry Wentland      2017-08-10  8561  				 * userspace notifications delivery.
e7b07ceef2a650 Harry Wentland      2017-08-10  8562  				 * In this case userspace tries to set mode on
1f6010a96273c3 David Francis       2018-08-15  8563  				 * display which is disconnected in fact.
1f6010a96273c3 David Francis       2018-08-15  8564  				 * dc_sink is NULL in this case on aconnector.
e7b07ceef2a650 Harry Wentland      2017-08-10  8565  				 * We expect reset mode will come soon.
e7b07ceef2a650 Harry Wentland      2017-08-10  8566  				 *
e7b07ceef2a650 Harry Wentland      2017-08-10  8567  				 * This can also happen when unplug is done
e7b07ceef2a650 Harry Wentland      2017-08-10  8568  				 * during resume sequence ended
e7b07ceef2a650 Harry Wentland      2017-08-10  8569  				 *
e7b07ceef2a650 Harry Wentland      2017-08-10  8570  				 * In this case, we want to pretend we still
e7b07ceef2a650 Harry Wentland      2017-08-10  8571  				 * have a sink to keep the pipe running so that
e7b07ceef2a650 Harry Wentland      2017-08-10  8572  				 * hw state is consistent with the sw state
e7b07ceef2a650 Harry Wentland      2017-08-10  8573  				 */
f1ad2f5efd29dc Harry Wentland      2017-09-12  8574  				DRM_DEBUG_DRIVER("%s: Failed to create new stream for crtc %d\n",
e7b07ceef2a650 Harry Wentland      2017-08-10  8575  						__func__, acrtc->base.base.id);
e7b07ceef2a650 Harry Wentland      2017-08-10  8576  				continue;
e7b07ceef2a650 Harry Wentland      2017-08-10  8577  			}
e7b07ceef2a650 Harry Wentland      2017-08-10  8578  
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8579) 			if (dm_old_crtc_state->stream)
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8580) 				remove_stream(adev, acrtc, dm_old_crtc_state->stream);
e7b07ceef2a650 Harry Wentland      2017-08-10  8581  
97028037a38ae4 Lyude Paul          2018-06-04  8582  			pm_runtime_get_noresume(dev->dev);
97028037a38ae4 Lyude Paul          2018-06-04  8583  
e7b07ceef2a650 Harry Wentland      2017-08-10  8584  			acrtc->enabled = true;
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8585) 			acrtc->hw_mode = new_crtc_state->mode;
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8586) 			crtc->hwmode = new_crtc_state->mode;
6ee90e88b97674 hersen wu           2020-07-08  8587  			mode_set_reset_required = true;
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8588) 		} else if (modereset_required(new_crtc_state)) {
f1ad2f5efd29dc Harry Wentland      2017-09-12  8589  			DRM_DEBUG_DRIVER("Atomic commit: RESET. crtc id %d:[%p]\n", acrtc->crtc_id, acrtc);
e7b07ceef2a650 Harry Wentland      2017-08-10  8590  			/* i.e. reset mode */
6ee90e88b97674 hersen wu           2020-07-08  8591  			if (dm_old_crtc_state->stream)
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8592) 				remove_stream(adev, acrtc, dm_old_crtc_state->stream);
a85ba00538cd4b Nikola Cornij       2021-03-15  8593  
6ee90e88b97674 hersen wu           2020-07-08  8594  			mode_set_reset_required = true;
8c322309e48e9f Roman Li            2019-09-20  8595  		}
e7b07ceef2a650 Harry Wentland      2017-08-10  8596  	} /* for_each_crtc_in_state() */
e7b07ceef2a650 Harry Wentland      2017-08-10  8597  
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8598  	if (dc_state) {
6ee90e88b97674 hersen wu           2020-07-08  8599  		/* if there mode set or reset, disable eDP PSR */
6ee90e88b97674 hersen wu           2020-07-08  8600  		if (mode_set_reset_required)
6ee90e88b97674 hersen wu           2020-07-08  8601  			amdgpu_dm_psr_disable_all(dm);
6ee90e88b97674 hersen wu           2020-07-08  8602  
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8603  		dm_enable_per_frame_crtc_master_sync(dc_state);
674e78acae0dfb Nicholas Kazlauskas 2018-12-05  8604  		mutex_lock(&dm->dc_lock);
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8605  		WARN_ON(!dc_commit_state(dm->dc, dc_state));
674e78acae0dfb Nicholas Kazlauskas 2018-12-05  8606  		mutex_unlock(&dm->dc_lock);
fa2123dbccdc88 Mikita Lipski       2017-10-17  8607  	}
e7b07ceef2a650 Harry Wentland      2017-08-10  8608  
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8609) 	for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) {
e7b07ceef2a650 Harry Wentland      2017-08-10  8610  		struct amdgpu_crtc *acrtc = to_amdgpu_crtc(crtc);
b830ebc910f641 Harry Wentland      2017-07-26  8611  
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8612) 		dm_new_crtc_state = to_dm_crtc_state(new_crtc_state);
e7b07ceef2a650 Harry Wentland      2017-08-10  8613  
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8614) 		if (dm_new_crtc_state->stream != NULL) {
e7b07ceef2a650 Harry Wentland      2017-08-10  8615  			const struct dc_stream_status *status =
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8616) 					dc_stream_get_status(dm_new_crtc_state->stream);
e7b07ceef2a650 Harry Wentland      2017-08-10  8617  
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8618  			if (!status)
09f609c34fc8b9 Leo Li              2018-11-27  8619  				status = dc_stream_get_status_from_state(dc_state,
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8620  									 dm_new_crtc_state->stream);
e7b07ceef2a650 Harry Wentland      2017-08-10  8621  			if (!status)
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8622) 				DC_ERR("got no status for stream %p on acrtc%p\n", dm_new_crtc_state->stream, acrtc);
e7b07ceef2a650 Harry Wentland      2017-08-10  8623  			else
e7b07ceef2a650 Harry Wentland      2017-08-10  8624  				acrtc->otg_inst = status->primary_otg_inst;
e7b07ceef2a650 Harry Wentland      2017-08-10  8625  		}
e7b07ceef2a650 Harry Wentland      2017-08-10  8626  	}
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8627  #ifdef CONFIG_DRM_AMD_DC_HDCP
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8628  	for_each_oldnew_connector_in_state(state, connector, old_con_state, new_con_state, i) {
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8629  		struct dm_connector_state *dm_new_con_state = to_dm_connector_state(new_con_state);
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8630  		struct amdgpu_crtc *acrtc = to_amdgpu_crtc(dm_new_con_state->base.crtc);
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8631  		struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector);
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8632  
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8633  		new_crtc_state = NULL;
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8634  
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8635  		if (acrtc)
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8636  			new_crtc_state = drm_atomic_get_new_crtc_state(state, &acrtc->base);
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8637  
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8638  		dm_new_crtc_state = to_dm_crtc_state(new_crtc_state);
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8639  
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8640  		if (dm_new_crtc_state && dm_new_crtc_state->stream == NULL &&
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8641  		    connector->state->content_protection == DRM_MODE_CONTENT_PROTECTION_ENABLED) {
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8642  			hdcp_reset_display(adev->dm.hdcp_workqueue, aconnector->dc_link->link_index);
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8643  			new_con_state->content_protection = DRM_MODE_CONTENT_PROTECTION_DESIRED;
97f6c91787d9fc Bhawanpreet Lakha   2019-09-26  8644  			dm_new_con_state->update_hdcp = true;
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8645  			continue;
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8646  		}
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8647  
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8648  		if (is_content_protection_different(new_con_state, old_con_state, connector, adev->dm.hdcp_workqueue))
b1abe5586ffcb1 Bhawanpreet Lakha   2019-08-28  8649  			hdcp_update_display(
b1abe5586ffcb1 Bhawanpreet Lakha   2019-08-28  8650  				adev->dm.hdcp_workqueue, aconnector->dc_link->link_index, aconnector,
23eb41917fc9f2 Bhawanpreet Lakha   2019-08-29  8651  				new_con_state->hdcp_content_type,
0e86d3d4fc5233 Yang Li             2021-02-18  8652  				new_con_state->content_protection == DRM_MODE_CONTENT_PROTECTION_DESIRED);
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8653  	}
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8654  #endif
e7b07ceef2a650 Harry Wentland      2017-08-10  8655  
02d6a6fcdf68c4 David Francis       2018-12-18  8656  	/* Handle connector state changes */
c2cea7063b85fc Leo (Sunpeng  Li    2017-10-12  8657) 	for_each_oldnew_connector_in_state(state, connector, old_con_state, new_con_state, i) {
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8658) 		struct dm_connector_state *dm_new_con_state = to_dm_connector_state(new_con_state);
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8659) 		struct dm_connector_state *dm_old_con_state = to_dm_connector_state(old_con_state);
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8660) 		struct amdgpu_crtc *acrtc = to_amdgpu_crtc(dm_new_con_state->base.crtc);
263a4febd1cce6 Anson Jacob         2021-02-18  8661  		struct dc_surface_update dummy_updates[MAX_SURFACES];
19afd79951e630 Nathan Chancellor   2019-02-01  8662  		struct dc_stream_update stream_update;
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8663  		struct dc_info_packet hdr_packet;
e7b07ceef2a650 Harry Wentland      2017-08-10  8664  		struct dc_stream_status *status = NULL;
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8665  		bool abm_changed, hdr_changed, scaling_changed;
e7b07ceef2a650 Harry Wentland      2017-08-10  8666  
263a4febd1cce6 Anson Jacob         2021-02-18  8667  		memset(&dummy_updates, 0, sizeof(dummy_updates));
19afd79951e630 Nathan Chancellor   2019-02-01  8668  		memset(&stream_update, 0, sizeof(stream_update));
19afd79951e630 Nathan Chancellor   2019-02-01  8669  
44d09c6a577c8e Harry Wentland      2018-03-15  8670  		if (acrtc) {
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8671) 			new_crtc_state = drm_atomic_get_new_crtc_state(state, &acrtc->base);
44d09c6a577c8e Harry Wentland      2018-03-15  8672  			old_crtc_state = drm_atomic_get_old_crtc_state(state, &acrtc->base);
44d09c6a577c8e Harry Wentland      2018-03-15  8673  		}
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8674) 
e7b07ceef2a650 Harry Wentland      2017-08-10  8675  		/* Skip any modesets/resets */
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8676) 		if (!acrtc || drm_atomic_crtc_needs_modeset(new_crtc_state))
e7b07ceef2a650 Harry Wentland      2017-08-10  8677  			continue;
e7b07ceef2a650 Harry Wentland      2017-08-10  8678  
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8679) 		dm_new_crtc_state = to_dm_crtc_state(new_crtc_state);
c1ee92f94ce3b9 David Francis       2018-11-26  8680  		dm_old_crtc_state = to_dm_crtc_state(old_crtc_state);
c1ee92f94ce3b9 David Francis       2018-11-26  8681  
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8682  		scaling_changed = is_scaling_state_different(dm_new_con_state,
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8683  							     dm_old_con_state);
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8684  
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8685  		abm_changed = dm_new_crtc_state->abm_level !=
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8686  			      dm_old_crtc_state->abm_level;
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8687  
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8688  		hdr_changed =
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8689  			is_hdr_metadata_different(old_con_state, new_con_state);
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8690  
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8691  		if (!scaling_changed && !abm_changed && !hdr_changed)
c1ee92f94ce3b9 David Francis       2018-11-26  8692  			continue;
e7b07ceef2a650 Harry Wentland      2017-08-10  8693  
b6e881c947417e Dmytro Laktyushkin  2019-09-13  8694  		stream_update.stream = dm_new_crtc_state->stream;
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8695  		if (scaling_changed) {
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8696) 			update_stream_scaling_settings(&dm_new_con_state->base.crtc->mode,
b6e881c947417e Dmytro Laktyushkin  2019-09-13  8697  					dm_new_con_state, dm_new_crtc_state->stream);
e7b07ceef2a650 Harry Wentland      2017-08-10  8698  
02d6a6fcdf68c4 David Francis       2018-12-18  8699  			stream_update.src = dm_new_crtc_state->stream->src;
02d6a6fcdf68c4 David Francis       2018-12-18  8700  			stream_update.dst = dm_new_crtc_state->stream->dst;
02d6a6fcdf68c4 David Francis       2018-12-18  8701  		}
02d6a6fcdf68c4 David Francis       2018-12-18  8702  
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8703  		if (abm_changed) {
02d6a6fcdf68c4 David Francis       2018-12-18  8704  			dm_new_crtc_state->stream->abm_level = dm_new_crtc_state->abm_level;
02d6a6fcdf68c4 David Francis       2018-12-18  8705  
02d6a6fcdf68c4 David Francis       2018-12-18  8706  			stream_update.abm_level = &dm_new_crtc_state->abm_level;
02d6a6fcdf68c4 David Francis       2018-12-18  8707  		}
70e8ffc55b98f3 Harry Wentland      2017-11-10  8708  
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8709  		if (hdr_changed) {
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8710  			fill_hdr_info_packet(new_con_state, &hdr_packet);
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8711  			stream_update.hdr_static_metadata = &hdr_packet;
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8712  		}
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8713  
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8714) 		status = dc_stream_get_status(dm_new_crtc_state->stream);
e7b07ceef2a650 Harry Wentland      2017-08-10  8715  		WARN_ON(!status);
3be5262e353b8a Harry Wentland      2017-07-27  8716  		WARN_ON(!status->plane_count);
e7b07ceef2a650 Harry Wentland      2017-08-10  8717  
02d6a6fcdf68c4 David Francis       2018-12-18  8718  		/*
02d6a6fcdf68c4 David Francis       2018-12-18  8719  		 * TODO: DC refuses to perform stream updates without a dc_surface_update.
02d6a6fcdf68c4 David Francis       2018-12-18  8720  		 * Here we create an empty update on each plane.
02d6a6fcdf68c4 David Francis       2018-12-18  8721  		 * To fix this, DC should permit updating only stream properties.
02d6a6fcdf68c4 David Francis       2018-12-18  8722  		 */
02d6a6fcdf68c4 David Francis       2018-12-18  8723  		for (j = 0; j < status->plane_count; j++)
263a4febd1cce6 Anson Jacob         2021-02-18  8724  			dummy_updates[j].surface = status->plane_states[0];
98e6436d3af5fe Anthony Koo         2018-08-21  8725  
02d6a6fcdf68c4 David Francis       2018-12-18  8726  
02d6a6fcdf68c4 David Francis       2018-12-18  8727  		mutex_lock(&dm->dc_lock);
02d6a6fcdf68c4 David Francis       2018-12-18  8728  		dc_commit_updates_for_stream(dm->dc,
263a4febd1cce6 Anson Jacob         2021-02-18  8729  						     dummy_updates,
3be5262e353b8a Harry Wentland      2017-07-27  8730  						     status->plane_count,
02d6a6fcdf68c4 David Francis       2018-12-18  8731  						     dm_new_crtc_state->stream,
263a4febd1cce6 Anson Jacob         2021-02-18  8732  						     &stream_update,
263a4febd1cce6 Anson Jacob         2021-02-18  8733  						     dc_state);
02d6a6fcdf68c4 David Francis       2018-12-18  8734  		mutex_unlock(&dm->dc_lock);
e7b07ceef2a650 Harry Wentland      2017-08-10  8735  	}
e7b07ceef2a650 Harry Wentland      2017-08-10  8736  
b5e83f6fe1f003 Nicholas Kazlauskas 2019-04-08  8737  	/* Count number of newly disabled CRTCs for dropping PM refs later. */
e1fc2dca1295c4 Leo (Sunpeng  Li    2017-10-18  8738) 	for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state,
e1fc2dca1295c4 Leo (Sunpeng  Li    2017-10-18  8739) 				      new_crtc_state, i) {
fe2a19652918a5 Lyude Paul          2018-06-21  8740  		if (old_crtc_state->active && !new_crtc_state->active)
fe2a19652918a5 Lyude Paul          2018-06-21  8741  			crtc_disable_count++;
fe2a19652918a5 Lyude Paul          2018-06-21  8742  
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8743) 		dm_new_crtc_state = to_dm_crtc_state(new_crtc_state);
e1fc2dca1295c4 Leo (Sunpeng  Li    2017-10-18  8744) 		dm_old_crtc_state = to_dm_crtc_state(old_crtc_state);
66b0c973d7f74e Mario Kleiner       2019-03-29  8745  
585d450c76d1d5 Aurabindo Pillai    2020-08-12  8746  		/* For freesync config update on crtc state and params for irq */
585d450c76d1d5 Aurabindo Pillai    2020-08-12  8747  		update_stream_irq_parameters(dm, dm_new_crtc_state);
057be086603feb Nicholas Kazlauskas 2019-04-15  8748  
66b0c973d7f74e Mario Kleiner       2019-03-29  8749  		/* Handle vrr on->off / off->on transitions */
66b0c973d7f74e Mario Kleiner       2019-03-29  8750  		amdgpu_dm_handle_vrr_transition(dm_old_crtc_state,
66b0c973d7f74e Mario Kleiner       2019-03-29  8751  						dm_new_crtc_state);
e7b07ceef2a650 Harry Wentland      2017-08-10  8752  	}
e7b07ceef2a650 Harry Wentland      2017-08-10  8753  
8fe684e97c86e3 Nicholas Kazlauskas 2020-07-13  8754  	/**
8fe684e97c86e3 Nicholas Kazlauskas 2020-07-13  8755  	 * Enable interrupts for CRTCs that are newly enabled or went through
8fe684e97c86e3 Nicholas Kazlauskas 2020-07-13  8756  	 * a modeset. It was intentionally deferred until after the front end
8fe684e97c86e3 Nicholas Kazlauskas 2020-07-13  8757  	 * state was modified to wait until the OTG was on and so the IRQ
8fe684e97c86e3 Nicholas Kazlauskas 2020-07-13  8758  	 * handlers didn't access stale or invalid state.
8fe684e97c86e3 Nicholas Kazlauskas 2020-07-13  8759  	 */
8fe684e97c86e3 Nicholas Kazlauskas 2020-07-13  8760  	for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) {
8fe684e97c86e3 Nicholas Kazlauskas 2020-07-13  8761  		struct amdgpu_crtc *acrtc = to_amdgpu_crtc(crtc);
8e7b6fee9b03d6 Wayne Lin           2021-02-09  8762  #ifdef CONFIG_DEBUG_FS
86bc221918925a Wayne Lin           2021-03-02  8763  		bool configure_crc = false;
8e7b6fee9b03d6 Wayne Lin           2021-02-09  8764  		enum amdgpu_dm_pipe_crc_source cur_crc_src;
8e7b6fee9b03d6 Wayne Lin           2021-02-09  8765  #endif
585d450c76d1d5 Aurabindo Pillai    2020-08-12  8766  		dm_new_crtc_state = to_dm_crtc_state(new_crtc_state);
585d450c76d1d5 Aurabindo Pillai    2020-08-12  8767  
8fe684e97c86e3 Nicholas Kazlauskas 2020-07-13  8768  		if (new_crtc_state->active &&
8fe684e97c86e3 Nicholas Kazlauskas 2020-07-13  8769  		    (!old_crtc_state->active ||
8fe684e97c86e3 Nicholas Kazlauskas 2020-07-13  8770  		     drm_atomic_crtc_needs_modeset(new_crtc_state))) {
585d450c76d1d5 Aurabindo Pillai    2020-08-12  8771  			dc_stream_retain(dm_new_crtc_state->stream);
585d450c76d1d5 Aurabindo Pillai    2020-08-12  8772  			acrtc->dm_irq_params.stream = dm_new_crtc_state->stream;
8fe684e97c86e3 Nicholas Kazlauskas 2020-07-13  8773  			manage_dm_interrupts(adev, acrtc, true);
e2881d6d0a2653 Rodrigo Siqueira    2021-01-07  8774  

:::::: The code at line 8466 was first introduced by commit
:::::: 7578ecda14d521f39e74166103270c62b15af96d drm/amd/display: make a bunch of stuff in amdgpu_dm.c static

:::::: TO: Alex Deucher <alexander.deucher@amd.com>
:::::: CC: Dave Airlie <airlied@redhat.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 21794 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Nikola Cornij <nikola.cornij@amd.com>
Cc: kbuild-all@lists.01.org, clang-built-linux@googlegroups.com,
	linux-kernel@vger.kernel.org,
	Alex Deucher <alexander.deucher@amd.com>,
	Aurabindo Pillai <aurabindo.pillai@amd.com>
Subject: drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:8466:13: warning: stack frame size of 2112 bytes in function 'amdgpu_dm_atomic_commit_tail'
Date: Wed, 5 May 2021 20:26:36 +0800	[thread overview]
Message-ID: <202105052028.V7hP755T-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 30264 bytes --]

Hi Nikola,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   d665ea6ea86c785760ee4bad4543dab3267ad074
commit: a85ba00538cd4bb0655aaf57fe3ebf8cc21f4fea drm/amdgpu/display: re-enable freesync video patches
date:   6 weeks ago
config: powerpc-randconfig-r016-20210505 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 8f5a2a5836cc8e4c1def2bdeb022e7b496623439)
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 powerpc cross compiling tool for clang build
        # apt-get install binutils-powerpc-linux-gnu
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a85ba00538cd4bb0655aaf57fe3ebf8cc21f4fea
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout a85ba00538cd4bb0655aaf57fe3ebf8cc21f4fea
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=powerpc 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:8466:13: warning: stack frame size of 2112 bytes in function 'amdgpu_dm_atomic_commit_tail' [-Wframe-larger-than=]
   static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state)
               ^
   drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:8054:13: warning: stack frame size of 2352 bytes in function 'amdgpu_dm_commit_planes' [-Wframe-larger-than=]
   static void amdgpu_dm_commit_planes(struct drm_atomic_state *state,
               ^
   2 warnings generated.


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

e7b07ceef2a650 Harry Wentland      2017-08-10  8457  
b8592b48450b99 Leo Li              2018-09-14  8458  /**
b8592b48450b99 Leo Li              2018-09-14  8459   * amdgpu_dm_atomic_commit_tail() - AMDgpu DM's commit tail implementation.
b8592b48450b99 Leo Li              2018-09-14  8460   * @state: The atomic state to commit
b8592b48450b99 Leo Li              2018-09-14  8461   *
b8592b48450b99 Leo Li              2018-09-14  8462   * This will tell DC to commit the constructed DC state from atomic_check,
b8592b48450b99 Leo Li              2018-09-14  8463   * programming the hardware. Any failures here implies a hardware failure, since
b8592b48450b99 Leo Li              2018-09-14  8464   * atomic check should have filtered anything non-kosher.
b8592b48450b99 Leo Li              2018-09-14  8465   */
7578ecda14d521 Alex Deucher        2017-10-10 @8466  static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state)
e7b07ceef2a650 Harry Wentland      2017-08-10  8467  {
e7b07ceef2a650 Harry Wentland      2017-08-10  8468  	struct drm_device *dev = state->dev;
1348969ab68cb8 Luben Tuikov        2020-08-24  8469  	struct amdgpu_device *adev = drm_to_adev(dev);
e7b07ceef2a650 Harry Wentland      2017-08-10  8470  	struct amdgpu_display_manager *dm = &adev->dm;
e7b07ceef2a650 Harry Wentland      2017-08-10  8471  	struct dm_atomic_state *dm_state;
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8472  	struct dc_state *dc_state = NULL, *dc_state_temp = NULL;
e7b07ceef2a650 Harry Wentland      2017-08-10  8473  	uint32_t i, j;
5cc6dcbd45a60b Leo (Sunpeng  Li    2017-10-12  8474) 	struct drm_crtc *crtc;
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8475) 	struct drm_crtc_state *old_crtc_state, *new_crtc_state;
e7b07ceef2a650 Harry Wentland      2017-08-10  8476  	unsigned long flags;
e7b07ceef2a650 Harry Wentland      2017-08-10  8477  	bool wait_for_vblank = true;
e7b07ceef2a650 Harry Wentland      2017-08-10  8478  	struct drm_connector *connector;
c2cea7063b85fc Leo (Sunpeng  Li    2017-10-12  8479) 	struct drm_connector_state *old_con_state, *new_con_state;
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8480) 	struct dm_crtc_state *dm_old_crtc_state, *dm_new_crtc_state;
fe2a19652918a5 Lyude Paul          2018-06-21  8481  	int crtc_disable_count = 0;
6ee90e88b97674 hersen wu           2020-07-08  8482  	bool mode_set_reset_required = false;
e7b07ceef2a650 Harry Wentland      2017-08-10  8483  
e8a982355f9669 Rodrigo Siqueira    2020-09-04  8484  	trace_amdgpu_dm_atomic_commit_tail_begin(state);
e8a982355f9669 Rodrigo Siqueira    2020-09-04  8485  
e7b07ceef2a650 Harry Wentland      2017-08-10  8486  	drm_atomic_helper_update_legacy_modeset_state(dev, state);
e7b07ceef2a650 Harry Wentland      2017-08-10  8487  
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8488  	dm_state = dm_atomic_get_new_state(state);
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8489  	if (dm_state && dm_state->context) {
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8490  		dc_state = dm_state->context;
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8491  	} else {
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8492  		/* No state changes, retain current state. */
813d20dccf93f8 Aidan Wood          2019-02-22  8493  		dc_state_temp = dc_create_state(dm->dc);
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8494  		ASSERT(dc_state_temp);
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8495  		dc_state = dc_state_temp;
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8496  		dc_resource_state_copy_construct_current(dm->dc, dc_state);
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8497  	}
e7b07ceef2a650 Harry Wentland      2017-08-10  8498  
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8499  	for_each_oldnew_crtc_in_state (state, crtc, old_crtc_state,
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8500  				       new_crtc_state, i) {
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8501  		struct amdgpu_crtc *acrtc = to_amdgpu_crtc(crtc);
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8502  
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8503  		dm_old_crtc_state = to_dm_crtc_state(old_crtc_state);
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8504  
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8505  		if (old_crtc_state->active &&
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8506  		    (!new_crtc_state->active ||
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8507  		     drm_atomic_crtc_needs_modeset(new_crtc_state))) {
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8508  			manage_dm_interrupts(adev, acrtc, false);
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8509  			dc_stream_release(dm_old_crtc_state->stream);
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8510  		}
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8511  	}
6d90a208cfff94 Aurabindo Pillai    2020-09-11  8512  
8976f73b676eb9 Rodrigo Siqueira    2020-11-17  8513  	drm_atomic_helper_calc_timestamping_constants(state);
8976f73b676eb9 Rodrigo Siqueira    2020-11-17  8514  
e7b07ceef2a650 Harry Wentland      2017-08-10  8515  	/* update changed items */
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8516) 	for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) {
e7b07ceef2a650 Harry Wentland      2017-08-10  8517  		struct amdgpu_crtc *acrtc = to_amdgpu_crtc(crtc);
b830ebc910f641 Harry Wentland      2017-07-26  8518  
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8519) 		dm_new_crtc_state = to_dm_crtc_state(new_crtc_state);
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8520) 		dm_old_crtc_state = to_dm_crtc_state(old_crtc_state);
e7b07ceef2a650 Harry Wentland      2017-08-10  8521  
f1ad2f5efd29dc Harry Wentland      2017-09-12  8522  		DRM_DEBUG_DRIVER(
e7b07ceef2a650 Harry Wentland      2017-08-10  8523  			"amdgpu_crtc id:%d crtc_state_flags: enable:%d, active:%d, "
e7b07ceef2a650 Harry Wentland      2017-08-10  8524  			"planes_changed:%d, mode_changed:%d,active_changed:%d,"
e7b07ceef2a650 Harry Wentland      2017-08-10  8525  			"connectors_changed:%d\n",
e7b07ceef2a650 Harry Wentland      2017-08-10  8526  			acrtc->crtc_id,
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8527) 			new_crtc_state->enable,
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8528) 			new_crtc_state->active,
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8529) 			new_crtc_state->planes_changed,
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8530) 			new_crtc_state->mode_changed,
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8531) 			new_crtc_state->active_changed,
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8532) 			new_crtc_state->connectors_changed);
e7b07ceef2a650 Harry Wentland      2017-08-10  8533  
5c68c65295de0b Victor Lu           2020-10-23  8534  		/* Disable cursor if disabling crtc */
5c68c65295de0b Victor Lu           2020-10-23  8535  		if (old_crtc_state->active && !new_crtc_state->active) {
5c68c65295de0b Victor Lu           2020-10-23  8536  			struct dc_cursor_position position;
5c68c65295de0b Victor Lu           2020-10-23  8537  
5c68c65295de0b Victor Lu           2020-10-23  8538  			memset(&position, 0, sizeof(position));
5c68c65295de0b Victor Lu           2020-10-23  8539  			mutex_lock(&dm->dc_lock);
5c68c65295de0b Victor Lu           2020-10-23  8540  			dc_stream_set_cursor_position(dm_old_crtc_state->stream, &position);
5c68c65295de0b Victor Lu           2020-10-23  8541  			mutex_unlock(&dm->dc_lock);
5c68c65295de0b Victor Lu           2020-10-23  8542  		}
5c68c65295de0b Victor Lu           2020-10-23  8543  
27b3f4fc91e1df Leo (Sunpeng  Li    2017-11-10  8544) 		/* Copy all transient state flags into dc state */
27b3f4fc91e1df Leo (Sunpeng  Li    2017-11-10  8545) 		if (dm_new_crtc_state->stream) {
27b3f4fc91e1df Leo (Sunpeng  Li    2017-11-10  8546) 			amdgpu_dm_crtc_copy_transient_flags(&dm_new_crtc_state->base,
27b3f4fc91e1df Leo (Sunpeng  Li    2017-11-10  8547) 							    dm_new_crtc_state->stream);
27b3f4fc91e1df Leo (Sunpeng  Li    2017-11-10  8548) 		}
27b3f4fc91e1df Leo (Sunpeng  Li    2017-11-10  8549) 
e7b07ceef2a650 Harry Wentland      2017-08-10  8550  		/* handles headless hotplug case, updating new_state and
e7b07ceef2a650 Harry Wentland      2017-08-10  8551  		 * aconnector as needed
e7b07ceef2a650 Harry Wentland      2017-08-10  8552  		 */
e7b07ceef2a650 Harry Wentland      2017-08-10  8553  
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8554) 		if (modeset_required(new_crtc_state, dm_new_crtc_state->stream, dm_old_crtc_state->stream)) {
e7b07ceef2a650 Harry Wentland      2017-08-10  8555  
f1ad2f5efd29dc Harry Wentland      2017-09-12  8556  			DRM_DEBUG_DRIVER("Atomic commit: SET crtc id %d: [%p]\n", acrtc->crtc_id, acrtc);
e7b07ceef2a650 Harry Wentland      2017-08-10  8557  
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8558) 			if (!dm_new_crtc_state->stream) {
e7b07ceef2a650 Harry Wentland      2017-08-10  8559  				/*
e7b07ceef2a650 Harry Wentland      2017-08-10  8560  				 * this could happen because of issues with
e7b07ceef2a650 Harry Wentland      2017-08-10  8561  				 * userspace notifications delivery.
e7b07ceef2a650 Harry Wentland      2017-08-10  8562  				 * In this case userspace tries to set mode on
1f6010a96273c3 David Francis       2018-08-15  8563  				 * display which is disconnected in fact.
1f6010a96273c3 David Francis       2018-08-15  8564  				 * dc_sink is NULL in this case on aconnector.
e7b07ceef2a650 Harry Wentland      2017-08-10  8565  				 * We expect reset mode will come soon.
e7b07ceef2a650 Harry Wentland      2017-08-10  8566  				 *
e7b07ceef2a650 Harry Wentland      2017-08-10  8567  				 * This can also happen when unplug is done
e7b07ceef2a650 Harry Wentland      2017-08-10  8568  				 * during resume sequence ended
e7b07ceef2a650 Harry Wentland      2017-08-10  8569  				 *
e7b07ceef2a650 Harry Wentland      2017-08-10  8570  				 * In this case, we want to pretend we still
e7b07ceef2a650 Harry Wentland      2017-08-10  8571  				 * have a sink to keep the pipe running so that
e7b07ceef2a650 Harry Wentland      2017-08-10  8572  				 * hw state is consistent with the sw state
e7b07ceef2a650 Harry Wentland      2017-08-10  8573  				 */
f1ad2f5efd29dc Harry Wentland      2017-09-12  8574  				DRM_DEBUG_DRIVER("%s: Failed to create new stream for crtc %d\n",
e7b07ceef2a650 Harry Wentland      2017-08-10  8575  						__func__, acrtc->base.base.id);
e7b07ceef2a650 Harry Wentland      2017-08-10  8576  				continue;
e7b07ceef2a650 Harry Wentland      2017-08-10  8577  			}
e7b07ceef2a650 Harry Wentland      2017-08-10  8578  
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8579) 			if (dm_old_crtc_state->stream)
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8580) 				remove_stream(adev, acrtc, dm_old_crtc_state->stream);
e7b07ceef2a650 Harry Wentland      2017-08-10  8581  
97028037a38ae4 Lyude Paul          2018-06-04  8582  			pm_runtime_get_noresume(dev->dev);
97028037a38ae4 Lyude Paul          2018-06-04  8583  
e7b07ceef2a650 Harry Wentland      2017-08-10  8584  			acrtc->enabled = true;
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8585) 			acrtc->hw_mode = new_crtc_state->mode;
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8586) 			crtc->hwmode = new_crtc_state->mode;
6ee90e88b97674 hersen wu           2020-07-08  8587  			mode_set_reset_required = true;
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8588) 		} else if (modereset_required(new_crtc_state)) {
f1ad2f5efd29dc Harry Wentland      2017-09-12  8589  			DRM_DEBUG_DRIVER("Atomic commit: RESET. crtc id %d:[%p]\n", acrtc->crtc_id, acrtc);
e7b07ceef2a650 Harry Wentland      2017-08-10  8590  			/* i.e. reset mode */
6ee90e88b97674 hersen wu           2020-07-08  8591  			if (dm_old_crtc_state->stream)
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8592) 				remove_stream(adev, acrtc, dm_old_crtc_state->stream);
a85ba00538cd4b Nikola Cornij       2021-03-15  8593  
6ee90e88b97674 hersen wu           2020-07-08  8594  			mode_set_reset_required = true;
8c322309e48e9f Roman Li            2019-09-20  8595  		}
e7b07ceef2a650 Harry Wentland      2017-08-10  8596  	} /* for_each_crtc_in_state() */
e7b07ceef2a650 Harry Wentland      2017-08-10  8597  
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8598  	if (dc_state) {
6ee90e88b97674 hersen wu           2020-07-08  8599  		/* if there mode set or reset, disable eDP PSR */
6ee90e88b97674 hersen wu           2020-07-08  8600  		if (mode_set_reset_required)
6ee90e88b97674 hersen wu           2020-07-08  8601  			amdgpu_dm_psr_disable_all(dm);
6ee90e88b97674 hersen wu           2020-07-08  8602  
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8603  		dm_enable_per_frame_crtc_master_sync(dc_state);
674e78acae0dfb Nicholas Kazlauskas 2018-12-05  8604  		mutex_lock(&dm->dc_lock);
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8605  		WARN_ON(!dc_commit_state(dm->dc, dc_state));
674e78acae0dfb Nicholas Kazlauskas 2018-12-05  8606  		mutex_unlock(&dm->dc_lock);
fa2123dbccdc88 Mikita Lipski       2017-10-17  8607  	}
e7b07ceef2a650 Harry Wentland      2017-08-10  8608  
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8609) 	for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) {
e7b07ceef2a650 Harry Wentland      2017-08-10  8610  		struct amdgpu_crtc *acrtc = to_amdgpu_crtc(crtc);
b830ebc910f641 Harry Wentland      2017-07-26  8611  
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8612) 		dm_new_crtc_state = to_dm_crtc_state(new_crtc_state);
e7b07ceef2a650 Harry Wentland      2017-08-10  8613  
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8614) 		if (dm_new_crtc_state->stream != NULL) {
e7b07ceef2a650 Harry Wentland      2017-08-10  8615  			const struct dc_stream_status *status =
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8616) 					dc_stream_get_status(dm_new_crtc_state->stream);
e7b07ceef2a650 Harry Wentland      2017-08-10  8617  
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8618  			if (!status)
09f609c34fc8b9 Leo Li              2018-11-27  8619  				status = dc_stream_get_status_from_state(dc_state,
eb3dc8978596a0 Nicholas Kazlauskas 2018-11-22  8620  									 dm_new_crtc_state->stream);
e7b07ceef2a650 Harry Wentland      2017-08-10  8621  			if (!status)
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8622) 				DC_ERR("got no status for stream %p on acrtc%p\n", dm_new_crtc_state->stream, acrtc);
e7b07ceef2a650 Harry Wentland      2017-08-10  8623  			else
e7b07ceef2a650 Harry Wentland      2017-08-10  8624  				acrtc->otg_inst = status->primary_otg_inst;
e7b07ceef2a650 Harry Wentland      2017-08-10  8625  		}
e7b07ceef2a650 Harry Wentland      2017-08-10  8626  	}
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8627  #ifdef CONFIG_DRM_AMD_DC_HDCP
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8628  	for_each_oldnew_connector_in_state(state, connector, old_con_state, new_con_state, i) {
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8629  		struct dm_connector_state *dm_new_con_state = to_dm_connector_state(new_con_state);
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8630  		struct amdgpu_crtc *acrtc = to_amdgpu_crtc(dm_new_con_state->base.crtc);
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8631  		struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector);
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8632  
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8633  		new_crtc_state = NULL;
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8634  
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8635  		if (acrtc)
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8636  			new_crtc_state = drm_atomic_get_new_crtc_state(state, &acrtc->base);
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8637  
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8638  		dm_new_crtc_state = to_dm_crtc_state(new_crtc_state);
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8639  
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8640  		if (dm_new_crtc_state && dm_new_crtc_state->stream == NULL &&
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8641  		    connector->state->content_protection == DRM_MODE_CONTENT_PROTECTION_ENABLED) {
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8642  			hdcp_reset_display(adev->dm.hdcp_workqueue, aconnector->dc_link->link_index);
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8643  			new_con_state->content_protection = DRM_MODE_CONTENT_PROTECTION_DESIRED;
97f6c91787d9fc Bhawanpreet Lakha   2019-09-26  8644  			dm_new_con_state->update_hdcp = true;
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8645  			continue;
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8646  		}
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8647  
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8648  		if (is_content_protection_different(new_con_state, old_con_state, connector, adev->dm.hdcp_workqueue))
b1abe5586ffcb1 Bhawanpreet Lakha   2019-08-28  8649  			hdcp_update_display(
b1abe5586ffcb1 Bhawanpreet Lakha   2019-08-28  8650  				adev->dm.hdcp_workqueue, aconnector->dc_link->link_index, aconnector,
23eb41917fc9f2 Bhawanpreet Lakha   2019-08-29  8651  				new_con_state->hdcp_content_type,
0e86d3d4fc5233 Yang Li             2021-02-18  8652  				new_con_state->content_protection == DRM_MODE_CONTENT_PROTECTION_DESIRED);
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8653  	}
0c8620d63d41fb Bhawanpreet Lakha   2019-09-16  8654  #endif
e7b07ceef2a650 Harry Wentland      2017-08-10  8655  
02d6a6fcdf68c4 David Francis       2018-12-18  8656  	/* Handle connector state changes */
c2cea7063b85fc Leo (Sunpeng  Li    2017-10-12  8657) 	for_each_oldnew_connector_in_state(state, connector, old_con_state, new_con_state, i) {
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8658) 		struct dm_connector_state *dm_new_con_state = to_dm_connector_state(new_con_state);
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8659) 		struct dm_connector_state *dm_old_con_state = to_dm_connector_state(old_con_state);
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8660) 		struct amdgpu_crtc *acrtc = to_amdgpu_crtc(dm_new_con_state->base.crtc);
263a4febd1cce6 Anson Jacob         2021-02-18  8661  		struct dc_surface_update dummy_updates[MAX_SURFACES];
19afd79951e630 Nathan Chancellor   2019-02-01  8662  		struct dc_stream_update stream_update;
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8663  		struct dc_info_packet hdr_packet;
e7b07ceef2a650 Harry Wentland      2017-08-10  8664  		struct dc_stream_status *status = NULL;
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8665  		bool abm_changed, hdr_changed, scaling_changed;
e7b07ceef2a650 Harry Wentland      2017-08-10  8666  
263a4febd1cce6 Anson Jacob         2021-02-18  8667  		memset(&dummy_updates, 0, sizeof(dummy_updates));
19afd79951e630 Nathan Chancellor   2019-02-01  8668  		memset(&stream_update, 0, sizeof(stream_update));
19afd79951e630 Nathan Chancellor   2019-02-01  8669  
44d09c6a577c8e Harry Wentland      2018-03-15  8670  		if (acrtc) {
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8671) 			new_crtc_state = drm_atomic_get_new_crtc_state(state, &acrtc->base);
44d09c6a577c8e Harry Wentland      2018-03-15  8672  			old_crtc_state = drm_atomic_get_old_crtc_state(state, &acrtc->base);
44d09c6a577c8e Harry Wentland      2018-03-15  8673  		}
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8674) 
e7b07ceef2a650 Harry Wentland      2017-08-10  8675  		/* Skip any modesets/resets */
0bc9706db3a35b Leo (Sunpeng  Li    2017-10-12  8676) 		if (!acrtc || drm_atomic_crtc_needs_modeset(new_crtc_state))
e7b07ceef2a650 Harry Wentland      2017-08-10  8677  			continue;
e7b07ceef2a650 Harry Wentland      2017-08-10  8678  
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8679) 		dm_new_crtc_state = to_dm_crtc_state(new_crtc_state);
c1ee92f94ce3b9 David Francis       2018-11-26  8680  		dm_old_crtc_state = to_dm_crtc_state(old_crtc_state);
c1ee92f94ce3b9 David Francis       2018-11-26  8681  
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8682  		scaling_changed = is_scaling_state_different(dm_new_con_state,
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8683  							     dm_old_con_state);
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8684  
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8685  		abm_changed = dm_new_crtc_state->abm_level !=
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8686  			      dm_old_crtc_state->abm_level;
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8687  
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8688  		hdr_changed =
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8689  			is_hdr_metadata_different(old_con_state, new_con_state);
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8690  
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8691  		if (!scaling_changed && !abm_changed && !hdr_changed)
c1ee92f94ce3b9 David Francis       2018-11-26  8692  			continue;
e7b07ceef2a650 Harry Wentland      2017-08-10  8693  
b6e881c947417e Dmytro Laktyushkin  2019-09-13  8694  		stream_update.stream = dm_new_crtc_state->stream;
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8695  		if (scaling_changed) {
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8696) 			update_stream_scaling_settings(&dm_new_con_state->base.crtc->mode,
b6e881c947417e Dmytro Laktyushkin  2019-09-13  8697  					dm_new_con_state, dm_new_crtc_state->stream);
e7b07ceef2a650 Harry Wentland      2017-08-10  8698  
02d6a6fcdf68c4 David Francis       2018-12-18  8699  			stream_update.src = dm_new_crtc_state->stream->src;
02d6a6fcdf68c4 David Francis       2018-12-18  8700  			stream_update.dst = dm_new_crtc_state->stream->dst;
02d6a6fcdf68c4 David Francis       2018-12-18  8701  		}
02d6a6fcdf68c4 David Francis       2018-12-18  8702  
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8703  		if (abm_changed) {
02d6a6fcdf68c4 David Francis       2018-12-18  8704  			dm_new_crtc_state->stream->abm_level = dm_new_crtc_state->abm_level;
02d6a6fcdf68c4 David Francis       2018-12-18  8705  
02d6a6fcdf68c4 David Francis       2018-12-18  8706  			stream_update.abm_level = &dm_new_crtc_state->abm_level;
02d6a6fcdf68c4 David Francis       2018-12-18  8707  		}
70e8ffc55b98f3 Harry Wentland      2017-11-10  8708  
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8709  		if (hdr_changed) {
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8710  			fill_hdr_info_packet(new_con_state, &hdr_packet);
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8711  			stream_update.hdr_static_metadata = &hdr_packet;
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8712  		}
b232d4ed92eafb Nicholas Kazlauskas 2019-05-28  8713  
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8714) 		status = dc_stream_get_status(dm_new_crtc_state->stream);
e7b07ceef2a650 Harry Wentland      2017-08-10  8715  		WARN_ON(!status);
3be5262e353b8a Harry Wentland      2017-07-27  8716  		WARN_ON(!status->plane_count);
e7b07ceef2a650 Harry Wentland      2017-08-10  8717  
02d6a6fcdf68c4 David Francis       2018-12-18  8718  		/*
02d6a6fcdf68c4 David Francis       2018-12-18  8719  		 * TODO: DC refuses to perform stream updates without a dc_surface_update.
02d6a6fcdf68c4 David Francis       2018-12-18  8720  		 * Here we create an empty update on each plane.
02d6a6fcdf68c4 David Francis       2018-12-18  8721  		 * To fix this, DC should permit updating only stream properties.
02d6a6fcdf68c4 David Francis       2018-12-18  8722  		 */
02d6a6fcdf68c4 David Francis       2018-12-18  8723  		for (j = 0; j < status->plane_count; j++)
263a4febd1cce6 Anson Jacob         2021-02-18  8724  			dummy_updates[j].surface = status->plane_states[0];
98e6436d3af5fe Anthony Koo         2018-08-21  8725  
02d6a6fcdf68c4 David Francis       2018-12-18  8726  
02d6a6fcdf68c4 David Francis       2018-12-18  8727  		mutex_lock(&dm->dc_lock);
02d6a6fcdf68c4 David Francis       2018-12-18  8728  		dc_commit_updates_for_stream(dm->dc,
263a4febd1cce6 Anson Jacob         2021-02-18  8729  						     dummy_updates,
3be5262e353b8a Harry Wentland      2017-07-27  8730  						     status->plane_count,
02d6a6fcdf68c4 David Francis       2018-12-18  8731  						     dm_new_crtc_state->stream,
263a4febd1cce6 Anson Jacob         2021-02-18  8732  						     &stream_update,
263a4febd1cce6 Anson Jacob         2021-02-18  8733  						     dc_state);
02d6a6fcdf68c4 David Francis       2018-12-18  8734  		mutex_unlock(&dm->dc_lock);
e7b07ceef2a650 Harry Wentland      2017-08-10  8735  	}
e7b07ceef2a650 Harry Wentland      2017-08-10  8736  
b5e83f6fe1f003 Nicholas Kazlauskas 2019-04-08  8737  	/* Count number of newly disabled CRTCs for dropping PM refs later. */
e1fc2dca1295c4 Leo (Sunpeng  Li    2017-10-18  8738) 	for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state,
e1fc2dca1295c4 Leo (Sunpeng  Li    2017-10-18  8739) 				      new_crtc_state, i) {
fe2a19652918a5 Lyude Paul          2018-06-21  8740  		if (old_crtc_state->active && !new_crtc_state->active)
fe2a19652918a5 Lyude Paul          2018-06-21  8741  			crtc_disable_count++;
fe2a19652918a5 Lyude Paul          2018-06-21  8742  
54d76575246798 Leo (Sunpeng  Li    2017-10-12  8743) 		dm_new_crtc_state = to_dm_crtc_state(new_crtc_state);
e1fc2dca1295c4 Leo (Sunpeng  Li    2017-10-18  8744) 		dm_old_crtc_state = to_dm_crtc_state(old_crtc_state);
66b0c973d7f74e Mario Kleiner       2019-03-29  8745  
585d450c76d1d5 Aurabindo Pillai    2020-08-12  8746  		/* For freesync config update on crtc state and params for irq */
585d450c76d1d5 Aurabindo Pillai    2020-08-12  8747  		update_stream_irq_parameters(dm, dm_new_crtc_state);
057be086603feb Nicholas Kazlauskas 2019-04-15  8748  
66b0c973d7f74e Mario Kleiner       2019-03-29  8749  		/* Handle vrr on->off / off->on transitions */
66b0c973d7f74e Mario Kleiner       2019-03-29  8750  		amdgpu_dm_handle_vrr_transition(dm_old_crtc_state,
66b0c973d7f74e Mario Kleiner       2019-03-29  8751  						dm_new_crtc_state);
e7b07ceef2a650 Harry Wentland      2017-08-10  8752  	}
e7b07ceef2a650 Harry Wentland      2017-08-10  8753  
8fe684e97c86e3 Nicholas Kazlauskas 2020-07-13  8754  	/**
8fe684e97c86e3 Nicholas Kazlauskas 2020-07-13  8755  	 * Enable interrupts for CRTCs that are newly enabled or went through
8fe684e97c86e3 Nicholas Kazlauskas 2020-07-13  8756  	 * a modeset. It was intentionally deferred until after the front end
8fe684e97c86e3 Nicholas Kazlauskas 2020-07-13  8757  	 * state was modified to wait until the OTG was on and so the IRQ
8fe684e97c86e3 Nicholas Kazlauskas 2020-07-13  8758  	 * handlers didn't access stale or invalid state.
8fe684e97c86e3 Nicholas Kazlauskas 2020-07-13  8759  	 */
8fe684e97c86e3 Nicholas Kazlauskas 2020-07-13  8760  	for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) {
8fe684e97c86e3 Nicholas Kazlauskas 2020-07-13  8761  		struct amdgpu_crtc *acrtc = to_amdgpu_crtc(crtc);
8e7b6fee9b03d6 Wayne Lin           2021-02-09  8762  #ifdef CONFIG_DEBUG_FS
86bc221918925a Wayne Lin           2021-03-02  8763  		bool configure_crc = false;
8e7b6fee9b03d6 Wayne Lin           2021-02-09  8764  		enum amdgpu_dm_pipe_crc_source cur_crc_src;
8e7b6fee9b03d6 Wayne Lin           2021-02-09  8765  #endif
585d450c76d1d5 Aurabindo Pillai    2020-08-12  8766  		dm_new_crtc_state = to_dm_crtc_state(new_crtc_state);
585d450c76d1d5 Aurabindo Pillai    2020-08-12  8767  
8fe684e97c86e3 Nicholas Kazlauskas 2020-07-13  8768  		if (new_crtc_state->active &&
8fe684e97c86e3 Nicholas Kazlauskas 2020-07-13  8769  		    (!old_crtc_state->active ||
8fe684e97c86e3 Nicholas Kazlauskas 2020-07-13  8770  		     drm_atomic_crtc_needs_modeset(new_crtc_state))) {
585d450c76d1d5 Aurabindo Pillai    2020-08-12  8771  			dc_stream_retain(dm_new_crtc_state->stream);
585d450c76d1d5 Aurabindo Pillai    2020-08-12  8772  			acrtc->dm_irq_params.stream = dm_new_crtc_state->stream;
8fe684e97c86e3 Nicholas Kazlauskas 2020-07-13  8773  			manage_dm_interrupts(adev, acrtc, true);
e2881d6d0a2653 Rodrigo Siqueira    2021-01-07  8774  

:::::: The code at line 8466 was first introduced by commit
:::::: 7578ecda14d521f39e74166103270c62b15af96d drm/amd/display: make a bunch of stuff in amdgpu_dm.c static

:::::: TO: Alex Deucher <alexander.deucher@amd.com>
:::::: CC: Dave Airlie <airlied@redhat.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 21794 bytes --]

             reply	other threads:[~2021-05-05 12:26 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-05 12:26 kernel test robot [this message]
2021-05-05 12:26 ` drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:8466:13: warning: stack frame size of 2112 bytes in function 'amdgpu_dm_atomic_commit_tail' kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2021-05-05  3:47 kernel test robot
2021-05-05  3:47 ` kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202105052028.V7hP755T-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.