* [radeon-alex:drm-next-4.21 64/142] drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:4942 amdgpu_dm_atomic_commit_tail() error: we previously assumed 'dc_state' could be null (see line 4927)
@ 2018-12-10 10:34 Dan Carpenter
0 siblings, 0 replies; only message in thread
From: Dan Carpenter @ 2018-12-10 10:34 UTC (permalink / raw)
To: kbuild, Nicholas Kazlauskas; +Cc: Alex Deucher, Leo Li, kbuild-all, dri-devel
tree: git://people.freedesktop.org/~agd5f/linux.git drm-next-4.21
head: 22666cc1481ae3814d9c7718418cc4a3aa7d90c3
commit: eb3dc8978596a045f469f13bb13271a707623ecb [64/142] drm/amd/display: Use private obj helpers for dm_atomic_state
New smatch warnings:
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:4942 amdgpu_dm_atomic_commit_tail() error: we previously assumed 'dc_state' could be null (see line 4927)
Old smatch warnings:
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:2979 create_stream_for_sink() error: we previously assumed 'preferred_mode' could be null (see line 2962)
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:4998 amdgpu_dm_atomic_commit_tail() error: we previously assumed 'dm_state' could be null (see line 4846)
git remote add radeon-alex git://people.freedesktop.org/~agd5f/linux.git
git remote update radeon-alex
git checkout eb3dc8978596a045f469f13bb13271a707623ecb
vim +/dc_state +4942 drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c
e7b07ceef Harry Wentland 2017-08-10 4817
b8592b484 Leo Li 2018-09-14 4818 /**
b8592b484 Leo Li 2018-09-14 4819 * amdgpu_dm_atomic_commit_tail() - AMDgpu DM's commit tail implementation.
b8592b484 Leo Li 2018-09-14 4820 * @state: The atomic state to commit
b8592b484 Leo Li 2018-09-14 4821 *
b8592b484 Leo Li 2018-09-14 4822 * This will tell DC to commit the constructed DC state from atomic_check,
b8592b484 Leo Li 2018-09-14 4823 * programming the hardware. Any failures here implies a hardware failure, since
b8592b484 Leo Li 2018-09-14 4824 * atomic check should have filtered anything non-kosher.
b8592b484 Leo Li 2018-09-14 4825 */
7578ecda1 Alex Deucher 2017-10-10 4826 static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state)
e7b07ceef Harry Wentland 2017-08-10 4827 {
e7b07ceef Harry Wentland 2017-08-10 4828 struct drm_device *dev = state->dev;
e7b07ceef Harry Wentland 2017-08-10 4829 struct amdgpu_device *adev = dev->dev_private;
e7b07ceef Harry Wentland 2017-08-10 4830 struct amdgpu_display_manager *dm = &adev->dm;
e7b07ceef Harry Wentland 2017-08-10 4831 struct dm_atomic_state *dm_state;
eb3dc8978 Nicholas Kazlauskas 2018-11-22 4832 struct dc_state *dc_state = NULL, *dc_state_temp = NULL;
e7b07ceef Harry Wentland 2017-08-10 4833 uint32_t i, j;
5cc6dcbd4 Leo (Sunpeng Li 2017-10-12 4834) struct drm_crtc *crtc;
0bc9706db Leo (Sunpeng Li 2017-10-12 4835) struct drm_crtc_state *old_crtc_state, *new_crtc_state;
e7b07ceef Harry Wentland 2017-08-10 4836 unsigned long flags;
e7b07ceef Harry Wentland 2017-08-10 4837 bool wait_for_vblank = true;
e7b07ceef Harry Wentland 2017-08-10 4838 struct drm_connector *connector;
c2cea7063 Leo (Sunpeng Li 2017-10-12 4839) struct drm_connector_state *old_con_state, *new_con_state;
54d765752 Leo (Sunpeng Li 2017-10-12 4840) struct dm_crtc_state *dm_old_crtc_state, *dm_new_crtc_state;
fe2a19652 Lyude Paul 2018-06-21 4841 int crtc_disable_count = 0;
e7b07ceef Harry Wentland 2017-08-10 4842
e7b07ceef Harry Wentland 2017-08-10 4843 drm_atomic_helper_update_legacy_modeset_state(dev, state);
e7b07ceef Harry Wentland 2017-08-10 4844
eb3dc8978 Nicholas Kazlauskas 2018-11-22 4845 dm_state = dm_atomic_get_new_state(state);
eb3dc8978 Nicholas Kazlauskas 2018-11-22 4846 if (dm_state && dm_state->context) {
eb3dc8978 Nicholas Kazlauskas 2018-11-22 4847 dc_state = dm_state->context;
eb3dc8978 Nicholas Kazlauskas 2018-11-22 4848 } else {
eb3dc8978 Nicholas Kazlauskas 2018-11-22 4849 /* No state changes, retain current state. */
eb3dc8978 Nicholas Kazlauskas 2018-11-22 4850 dc_state_temp = dc_create_state();
eb3dc8978 Nicholas Kazlauskas 2018-11-22 4851 ASSERT(dc_state_temp);
eb3dc8978 Nicholas Kazlauskas 2018-11-22 4852 dc_state = dc_state_temp;
eb3dc8978 Nicholas Kazlauskas 2018-11-22 4853 dc_resource_state_copy_construct_current(dm->dc, dc_state);
eb3dc8978 Nicholas Kazlauskas 2018-11-22 4854 }
dc_state can't be NULL after this if statement.
e7b07ceef Harry Wentland 2017-08-10 4855
e7b07ceef Harry Wentland 2017-08-10 4856 /* update changed items */
0bc9706db Leo (Sunpeng Li 2017-10-12 4857) for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) {
e7b07ceef Harry Wentland 2017-08-10 4858 struct amdgpu_crtc *acrtc = to_amdgpu_crtc(crtc);
b830ebc91 Harry Wentland 2017-07-26 4859
54d765752 Leo (Sunpeng Li 2017-10-12 4860) dm_new_crtc_state = to_dm_crtc_state(new_crtc_state);
54d765752 Leo (Sunpeng Li 2017-10-12 4861) dm_old_crtc_state = to_dm_crtc_state(old_crtc_state);
e7b07ceef Harry Wentland 2017-08-10 4862
f1ad2f5ef Harry Wentland 2017-09-12 4863 DRM_DEBUG_DRIVER(
e7b07ceef Harry Wentland 2017-08-10 4864 "amdgpu_crtc id:%d crtc_state_flags: enable:%d, active:%d, "
e7b07ceef Harry Wentland 2017-08-10 4865 "planes_changed:%d, mode_changed:%d,active_changed:%d,"
e7b07ceef Harry Wentland 2017-08-10 4866 "connectors_changed:%d\n",
e7b07ceef Harry Wentland 2017-08-10 4867 acrtc->crtc_id,
0bc9706db Leo (Sunpeng Li 2017-10-12 4868) new_crtc_state->enable,
0bc9706db Leo (Sunpeng Li 2017-10-12 4869) new_crtc_state->active,
0bc9706db Leo (Sunpeng Li 2017-10-12 4870) new_crtc_state->planes_changed,
0bc9706db Leo (Sunpeng Li 2017-10-12 4871) new_crtc_state->mode_changed,
0bc9706db Leo (Sunpeng Li 2017-10-12 4872) new_crtc_state->active_changed,
0bc9706db Leo (Sunpeng Li 2017-10-12 4873) new_crtc_state->connectors_changed);
e7b07ceef Harry Wentland 2017-08-10 4874
27b3f4fc9 Leo (Sunpeng Li 2017-11-10 4875) /* Copy all transient state flags into dc state */
27b3f4fc9 Leo (Sunpeng Li 2017-11-10 4876) if (dm_new_crtc_state->stream) {
27b3f4fc9 Leo (Sunpeng Li 2017-11-10 4877) amdgpu_dm_crtc_copy_transient_flags(&dm_new_crtc_state->base,
27b3f4fc9 Leo (Sunpeng Li 2017-11-10 4878) dm_new_crtc_state->stream);
27b3f4fc9 Leo (Sunpeng Li 2017-11-10 4879) }
27b3f4fc9 Leo (Sunpeng Li 2017-11-10 4880)
e7b07ceef Harry Wentland 2017-08-10 4881 /* handles headless hotplug case, updating new_state and
e7b07ceef Harry Wentland 2017-08-10 4882 * aconnector as needed
e7b07ceef Harry Wentland 2017-08-10 4883 */
e7b07ceef Harry Wentland 2017-08-10 4884
54d765752 Leo (Sunpeng Li 2017-10-12 4885) if (modeset_required(new_crtc_state, dm_new_crtc_state->stream, dm_old_crtc_state->stream)) {
e7b07ceef Harry Wentland 2017-08-10 4886
f1ad2f5ef Harry Wentland 2017-09-12 4887 DRM_DEBUG_DRIVER("Atomic commit: SET crtc id %d: [%p]\n", acrtc->crtc_id, acrtc);
e7b07ceef Harry Wentland 2017-08-10 4888
54d765752 Leo (Sunpeng Li 2017-10-12 4889) if (!dm_new_crtc_state->stream) {
e7b07ceef Harry Wentland 2017-08-10 4890 /*
e7b07ceef Harry Wentland 2017-08-10 4891 * this could happen because of issues with
e7b07ceef Harry Wentland 2017-08-10 4892 * userspace notifications delivery.
e7b07ceef Harry Wentland 2017-08-10 4893 * In this case userspace tries to set mode on
1f6010a96 David Francis 2018-08-15 4894 * display which is disconnected in fact.
1f6010a96 David Francis 2018-08-15 4895 * dc_sink is NULL in this case on aconnector.
e7b07ceef Harry Wentland 2017-08-10 4896 * We expect reset mode will come soon.
e7b07ceef Harry Wentland 2017-08-10 4897 *
e7b07ceef Harry Wentland 2017-08-10 4898 * This can also happen when unplug is done
e7b07ceef Harry Wentland 2017-08-10 4899 * during resume sequence ended
e7b07ceef Harry Wentland 2017-08-10 4900 *
e7b07ceef Harry Wentland 2017-08-10 4901 * In this case, we want to pretend we still
e7b07ceef Harry Wentland 2017-08-10 4902 * have a sink to keep the pipe running so that
e7b07ceef Harry Wentland 2017-08-10 4903 * hw state is consistent with the sw state
e7b07ceef Harry Wentland 2017-08-10 4904 */
f1ad2f5ef Harry Wentland 2017-09-12 4905 DRM_DEBUG_DRIVER("%s: Failed to create new stream for crtc %d\n",
e7b07ceef Harry Wentland 2017-08-10 4906 __func__, acrtc->base.base.id);
e7b07ceef Harry Wentland 2017-08-10 4907 continue;
e7b07ceef Harry Wentland 2017-08-10 4908 }
e7b07ceef Harry Wentland 2017-08-10 4909
54d765752 Leo (Sunpeng Li 2017-10-12 4910) if (dm_old_crtc_state->stream)
54d765752 Leo (Sunpeng Li 2017-10-12 4911) remove_stream(adev, acrtc, dm_old_crtc_state->stream);
e7b07ceef Harry Wentland 2017-08-10 4912
97028037a Lyude Paul 2018-06-04 4913 pm_runtime_get_noresume(dev->dev);
97028037a Lyude Paul 2018-06-04 4914
e7b07ceef Harry Wentland 2017-08-10 4915 acrtc->enabled = true;
0bc9706db Leo (Sunpeng Li 2017-10-12 4916) acrtc->hw_mode = new_crtc_state->mode;
0bc9706db Leo (Sunpeng Li 2017-10-12 4917) crtc->hwmode = new_crtc_state->mode;
0bc9706db Leo (Sunpeng Li 2017-10-12 4918) } else if (modereset_required(new_crtc_state)) {
f1ad2f5ef Harry Wentland 2017-09-12 4919 DRM_DEBUG_DRIVER("Atomic commit: RESET. crtc id %d:[%p]\n", acrtc->crtc_id, acrtc);
e7b07ceef Harry Wentland 2017-08-10 4920
e7b07ceef Harry Wentland 2017-08-10 4921 /* i.e. reset mode */
54d765752 Leo (Sunpeng Li 2017-10-12 4922) if (dm_old_crtc_state->stream)
54d765752 Leo (Sunpeng Li 2017-10-12 4923) remove_stream(adev, acrtc, dm_old_crtc_state->stream);
e7b07ceef Harry Wentland 2017-08-10 4924 }
e7b07ceef Harry Wentland 2017-08-10 4925 } /* for_each_crtc_in_state() */
e7b07ceef Harry Wentland 2017-08-10 4926
eb3dc8978 Nicholas Kazlauskas 2018-11-22 @4927 if (dc_state) {
^^^^^^^^
So this check can be removed.
eb3dc8978 Nicholas Kazlauskas 2018-11-22 4928 dm_enable_per_frame_crtc_master_sync(dc_state);
eb3dc8978 Nicholas Kazlauskas 2018-11-22 4929 WARN_ON(!dc_commit_state(dm->dc, dc_state));
fa2123dbc Mikita Lipski 2017-10-17 4930 }
e7b07ceef Harry Wentland 2017-08-10 4931
0bc9706db Leo (Sunpeng Li 2017-10-12 4932) for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) {
e7b07ceef Harry Wentland 2017-08-10 4933 struct amdgpu_crtc *acrtc = to_amdgpu_crtc(crtc);
b830ebc91 Harry Wentland 2017-07-26 4934
54d765752 Leo (Sunpeng Li 2017-10-12 4935) dm_new_crtc_state = to_dm_crtc_state(new_crtc_state);
e7b07ceef Harry Wentland 2017-08-10 4936
54d765752 Leo (Sunpeng Li 2017-10-12 4937) if (dm_new_crtc_state->stream != NULL) {
e7b07ceef Harry Wentland 2017-08-10 4938 const struct dc_stream_status *status =
54d765752 Leo (Sunpeng Li 2017-10-12 4939) dc_stream_get_status(dm_new_crtc_state->stream);
e7b07ceef Harry Wentland 2017-08-10 4940
e7b07ceef Harry Wentland 2017-08-10 4941 if (!status)
eb3dc8978 Nicholas Kazlauskas 2018-11-22 @4942 status = dc_state_get_stream_status(dc_state,
eb3dc8978 Nicholas Kazlauskas 2018-11-22 4943 dm_new_crtc_state->stream);
eb3dc8978 Nicholas Kazlauskas 2018-11-22 4944
eb3dc8978 Nicholas Kazlauskas 2018-11-22 4945 if (!status)
54d765752 Leo (Sunpeng Li 2017-10-12 4946) DC_ERR("got no status for stream %p on acrtc%p\n", dm_new_crtc_state->stream, acrtc);
e7b07ceef Harry Wentland 2017-08-10 4947 else
e7b07ceef Harry Wentland 2017-08-10 4948 acrtc->otg_inst = status->primary_otg_inst;
e7b07ceef Harry Wentland 2017-08-10 4949 }
e7b07ceef Harry Wentland 2017-08-10 4950 }
e7b07ceef Harry Wentland 2017-08-10 4951
c1ee92f94 David Francis 2018-11-26 4952 /* Handle scaling, underscan, and abm changes*/
c2cea7063 Leo (Sunpeng Li 2017-10-12 4953) for_each_oldnew_connector_in_state(state, connector, old_con_state, new_con_state, i) {
54d765752 Leo (Sunpeng Li 2017-10-12 4954) struct dm_connector_state *dm_new_con_state = to_dm_connector_state(new_con_state);
54d765752 Leo (Sunpeng Li 2017-10-12 4955) struct dm_connector_state *dm_old_con_state = to_dm_connector_state(old_con_state);
54d765752 Leo (Sunpeng Li 2017-10-12 4956) struct amdgpu_crtc *acrtc = to_amdgpu_crtc(dm_new_con_state->base.crtc);
e7b07ceef Harry Wentland 2017-08-10 4957 struct dc_stream_status *status = NULL;
e7b07ceef Harry Wentland 2017-08-10 4958
44d09c6a5 Harry Wentland 2018-03-15 4959 if (acrtc) {
0bc9706db Leo (Sunpeng Li 2017-10-12 4960) new_crtc_state = drm_atomic_get_new_crtc_state(state, &acrtc->base);
44d09c6a5 Harry Wentland 2018-03-15 4961 old_crtc_state = drm_atomic_get_old_crtc_state(state, &acrtc->base);
44d09c6a5 Harry Wentland 2018-03-15 4962 }
0bc9706db Leo (Sunpeng Li 2017-10-12 4963)
e7b07ceef Harry Wentland 2017-08-10 4964 /* Skip any modesets/resets */
0bc9706db Leo (Sunpeng Li 2017-10-12 4965) if (!acrtc || drm_atomic_crtc_needs_modeset(new_crtc_state))
e7b07ceef Harry Wentland 2017-08-10 4966 continue;
e7b07ceef Harry Wentland 2017-08-10 4967
e7b07ceef Harry Wentland 2017-08-10 4968
54d765752 Leo (Sunpeng Li 2017-10-12 4969) dm_new_crtc_state = to_dm_crtc_state(new_crtc_state);
c1ee92f94 David Francis 2018-11-26 4970 dm_old_crtc_state = to_dm_crtc_state(old_crtc_state);
c1ee92f94 David Francis 2018-11-26 4971
c1ee92f94 David Francis 2018-11-26 4972 /* Skip anything that is not scaling or underscan changes */
c1ee92f94 David Francis 2018-11-26 4973 if (!is_scaling_state_different(dm_new_con_state, dm_old_con_state) &&
c1ee92f94 David Francis 2018-11-26 4974 (dm_new_crtc_state->abm_level == dm_old_crtc_state->abm_level))
c1ee92f94 David Francis 2018-11-26 4975 continue;
e7b07ceef Harry Wentland 2017-08-10 4976
54d765752 Leo (Sunpeng Li 2017-10-12 4977) update_stream_scaling_settings(&dm_new_con_state->base.crtc->mode,
54d765752 Leo (Sunpeng Li 2017-10-12 4978) dm_new_con_state, (struct dc_stream_state *)dm_new_crtc_state->stream);
e7b07ceef Harry Wentland 2017-08-10 4979
70e8ffc55 Harry Wentland 2017-11-10 4980 if (!dm_new_crtc_state->stream)
70e8ffc55 Harry Wentland 2017-11-10 4981 continue;
70e8ffc55 Harry Wentland 2017-11-10 4982
54d765752 Leo (Sunpeng Li 2017-10-12 4983) status = dc_stream_get_status(dm_new_crtc_state->stream);
e7b07ceef Harry Wentland 2017-08-10 4984 WARN_ON(!status);
3be5262e3 Harry Wentland 2017-07-27 4985 WARN_ON(!status->plane_count);
e7b07ceef Harry Wentland 2017-08-10 4986
98e6436d3 Anthony Koo 2018-08-21 4987 dm_new_crtc_state->stream->adjust = dm_new_crtc_state->adjust;
98e6436d3 Anthony Koo 2018-08-21 4988 dm_new_crtc_state->stream->vrr_infopacket = dm_new_crtc_state->vrr_infopacket;
c1ee92f94 David Francis 2018-11-26 4989 dm_new_crtc_state->stream->abm_level = dm_new_crtc_state->abm_level;
98e6436d3 Anthony Koo 2018-08-21 4990
e7b07ceef Harry Wentland 2017-08-10 4991 /*TODO How it works with MPO ?*/
44d09c6a5 Harry Wentland 2018-03-15 4992 if (!commit_planes_to_stream(
e7b07ceef Harry Wentland 2017-08-10 4993 dm->dc,
3be5262e3 Harry Wentland 2017-07-27 4994 status->plane_states,
3be5262e3 Harry Wentland 2017-07-27 4995 status->plane_count,
44d09c6a5 Harry Wentland 2018-03-15 4996 dm_new_crtc_state,
44d09c6a5 Harry Wentland 2018-03-15 4997 to_dm_crtc_state(old_crtc_state),
bc6828e0e Bhawanpreet Lakha 2017-09-12 4998 dm_state->context))
e7b07ceef Harry Wentland 2017-08-10 4999 dm_error("%s: Failed to update stream scaling!\n", __func__);
e7b07ceef Harry Wentland 2017-08-10 5000 }
e7b07ceef Harry Wentland 2017-08-10 5001
e1fc2dca1 Leo (Sunpeng Li 2017-10-18 5002) for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state,
e1fc2dca1 Leo (Sunpeng Li 2017-10-18 5003) new_crtc_state, i) {
e7b07ceef Harry Wentland 2017-08-10 5004 /*
e7b07ceef Harry Wentland 2017-08-10 5005 * loop to enable interrupts on newly arrived crtc
e7b07ceef Harry Wentland 2017-08-10 5006 */
e1fc2dca1 Leo (Sunpeng Li 2017-10-18 5007) struct amdgpu_crtc *acrtc = to_amdgpu_crtc(crtc);
e1fc2dca1 Leo (Sunpeng Li 2017-10-18 5008) bool modeset_needed;
b830ebc91 Harry Wentland 2017-07-26 5009
fe2a19652 Lyude Paul 2018-06-21 5010 if (old_crtc_state->active && !new_crtc_state->active)
fe2a19652 Lyude Paul 2018-06-21 5011 crtc_disable_count++;
fe2a19652 Lyude Paul 2018-06-21 5012
54d765752 Leo (Sunpeng Li 2017-10-12 5013) dm_new_crtc_state = to_dm_crtc_state(new_crtc_state);
e1fc2dca1 Leo (Sunpeng Li 2017-10-18 5014) dm_old_crtc_state = to_dm_crtc_state(old_crtc_state);
e1fc2dca1 Leo (Sunpeng Li 2017-10-18 5015) modeset_needed = modeset_required(
e1fc2dca1 Leo (Sunpeng Li 2017-10-18 5016) new_crtc_state,
e1fc2dca1 Leo (Sunpeng Li 2017-10-18 5017) dm_new_crtc_state->stream,
e1fc2dca1 Leo (Sunpeng Li 2017-10-18 5018) dm_old_crtc_state->stream);
e1fc2dca1 Leo (Sunpeng Li 2017-10-18 5019)
e1fc2dca1 Leo (Sunpeng Li 2017-10-18 5020) if (dm_new_crtc_state->stream == NULL || !modeset_needed)
e1fc2dca1 Leo (Sunpeng Li 2017-10-18 5021) continue;
e7b07ceef Harry Wentland 2017-08-10 5022
e7b07ceef Harry Wentland 2017-08-10 5023 manage_dm_interrupts(adev, acrtc, true);
e7b07ceef Harry Wentland 2017-08-10 5024 }
e7b07ceef Harry Wentland 2017-08-10 5025
e7b07ceef Harry Wentland 2017-08-10 5026 /* update planes when needed per crtc*/
5cc6dcbd4 Leo (Sunpeng Li 2017-10-12 5027) for_each_new_crtc_in_state(state, crtc, new_crtc_state, j) {
54d765752 Leo (Sunpeng Li 2017-10-12 5028) dm_new_crtc_state = to_dm_crtc_state(new_crtc_state);
e7b07ceef Harry Wentland 2017-08-10 5029
54d765752 Leo (Sunpeng Li 2017-10-12 5030) if (dm_new_crtc_state->stream)
eb3dc8978 Nicholas Kazlauskas 2018-11-22 5031 amdgpu_dm_commit_planes(state, dc_state, dev,
eb3dc8978 Nicholas Kazlauskas 2018-11-22 5032 dm, crtc, &wait_for_vblank);
e7b07ceef Harry Wentland 2017-08-10 5033 }
e7b07ceef Harry Wentland 2017-08-10 5034
e7b07ceef Harry Wentland 2017-08-10 5035
e7b07ceef Harry Wentland 2017-08-10 5036 /*
e7b07ceef Harry Wentland 2017-08-10 5037 * send vblank event on all events not handled in flip and
e7b07ceef Harry Wentland 2017-08-10 5038 * mark consumed event for drm_atomic_helper_commit_hw_done
e7b07ceef Harry Wentland 2017-08-10 5039 */
e7b07ceef Harry Wentland 2017-08-10 5040 spin_lock_irqsave(&adev->ddev->event_lock, flags);
0bc9706db Leo (Sunpeng Li 2017-10-12 5041) for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) {
e7b07ceef Harry Wentland 2017-08-10 5042
0bc9706db Leo (Sunpeng Li 2017-10-12 5043) if (new_crtc_state->event)
0bc9706db Leo (Sunpeng Li 2017-10-12 5044) drm_send_event_locked(dev, &new_crtc_state->event->base);
e7b07ceef Harry Wentland 2017-08-10 5045
0bc9706db Leo (Sunpeng Li 2017-10-12 5046) new_crtc_state->event = NULL;
e7b07ceef Harry Wentland 2017-08-10 5047 }
e7b07ceef Harry Wentland 2017-08-10 5048 spin_unlock_irqrestore(&adev->ddev->event_lock, flags);
e7b07ceef Harry Wentland 2017-08-10 5049
e7b07ceef Harry Wentland 2017-08-10 5050
e7b07ceef Harry Wentland 2017-08-10 5051 if (wait_for_vblank)
320a12743 Andrey Grodzovsky 2017-11-14 5052 drm_atomic_helper_wait_for_flip_done(dev, state);
e7b07ceef Harry Wentland 2017-08-10 5053
717276b92 Shirish S 2018-09-24 5054 /*
717276b92 Shirish S 2018-09-24 5055 * FIXME:
717276b92 Shirish S 2018-09-24 5056 * Delay hw_done() until flip_done() is signaled. This is to block
717276b92 Shirish S 2018-09-24 5057 * another commit from freeing the CRTC state while we're still
717276b92 Shirish S 2018-09-24 5058 * waiting on flip_done.
717276b92 Shirish S 2018-09-24 5059 */
717276b92 Shirish S 2018-09-24 5060 drm_atomic_helper_commit_hw_done(state);
717276b92 Shirish S 2018-09-24 5061
e7b07ceef Harry Wentland 2017-08-10 5062 drm_atomic_helper_cleanup_planes(dev, state);
97028037a Lyude Paul 2018-06-04 5063
1f6010a96 David Francis 2018-08-15 5064 /*
1f6010a96 David Francis 2018-08-15 5065 * Finally, drop a runtime PM reference for each newly disabled CRTC,
97028037a Lyude Paul 2018-06-04 5066 * so we can put the GPU into runtime suspend if we're not driving any
97028037a Lyude Paul 2018-06-04 5067 * displays anymore
97028037a Lyude Paul 2018-06-04 5068 */
fe2a19652 Lyude Paul 2018-06-21 5069 for (i = 0; i < crtc_disable_count; i++)
97028037a Lyude Paul 2018-06-04 5070 pm_runtime_put_autosuspend(dev->dev);
fe2a19652 Lyude Paul 2018-06-21 5071 pm_runtime_mark_last_busy(dev->dev);
eb3dc8978 Nicholas Kazlauskas 2018-11-22 5072
eb3dc8978 Nicholas Kazlauskas 2018-11-22 5073 if (dc_state_temp)
eb3dc8978 Nicholas Kazlauskas 2018-11-22 5074 dc_release_state(dc_state_temp);
e7b07ceef Harry Wentland 2017-08-10 5075 }
e7b07ceef Harry Wentland 2017-08-10 5076
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2018-12-10 10:35 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-12-10 10:34 [radeon-alex:drm-next-4.21 64/142] drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:4942 amdgpu_dm_atomic_commit_tail() error: we previously assumed 'dc_state' could be null (see line 4927) 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.