From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH v2 13/20] drm/i915: Always reset in intel_crtc_restore_mode
Date: Tue, 07 Jul 2015 12:48:36 +0200 [thread overview]
Message-ID: <559BAE84.4030606@linux.intel.com> (raw)
In-Reply-To: <20150707101744.GG7568@phenom.ffwll.local>
Op 07-07-15 om 12:17 schreef Daniel Vetter:
> On Tue, Jul 07, 2015 at 09:08:24AM +0200, Maarten Lankhorst wrote:
>> And get rid of things that are no longer true. This function is only
>> used for forcing a modeset when encoder properties are changed.
>>
>> All the existing state is fine in this case, only setting mode_changed
>> will force a full recalculation here, and take all the state needed.
>>
>> The previous commit will prevent unneeded modesets anyway.
>>
>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
>> ---
>> drivers/gpu/drm/i915/intel_display.c | 58 ++++++++++--------------------------
>> 1 file changed, 16 insertions(+), 42 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
>> index 16373309dcae..f7b1fc28142c 100644
>> --- a/drivers/gpu/drm/i915/intel_display.c
>> +++ b/drivers/gpu/drm/i915/intel_display.c
>> @@ -13260,63 +13260,37 @@ void intel_crtc_restore_mode(struct drm_crtc *crtc)
>> {
>> struct drm_device *dev = crtc->dev;
>> struct drm_atomic_state *state;
>> - struct intel_encoder *encoder;
>> - struct intel_connector *connector;
>> - struct drm_connector_state *connector_state;
>> - struct intel_crtc_state *crtc_state;
>> + struct drm_crtc_state *crtc_state;
>> int ret;
>>
>> state = drm_atomic_state_alloc(dev);
>> if (!state) {
>> - DRM_DEBUG_KMS("[CRTC:%d] mode restore failed, out of memory",
>> + DRM_DEBUG_KMS("[CRTC:%d] crtc restore failed, out of memory",
>> crtc->base.id);
>> return;
>> }
>>
>> - state->acquire_ctx = dev->mode_config.acquire_ctx;
>> -
>> - /* The force restore path in the HW readout code relies on the staged
>> - * config still keeping the user requested config while the actual
>> - * state has been overwritten by the configuration read from HW. We
>> - * need to copy the staged config to the atomic state, otherwise the
>> - * mode set will just reapply the state the HW is already in. */
>> - for_each_intel_encoder(dev, encoder) {
>> - if (encoder->base.crtc != crtc)
>> - continue;
>> + state->acquire_ctx = drm_modeset_legacy_acquire_ctx(crtc);
>>
>> - for_each_intel_connector(dev, connector) {
>> - if (connector->base.state->best_encoder !=
>> - &encoder->base)
>> - continue;
>> -
>> - connector_state = drm_atomic_get_connector_state(state, &connector->base);
>> - if (IS_ERR(connector_state)) {
>> - DRM_DEBUG_KMS("Failed to add [CONNECTOR:%d:%s] to state: %ld\n",
>> - connector->base.base.id,
>> - connector->base.name,
>> - PTR_ERR(connector_state));
>> - continue;
>> - }
>> +retry:
>> + crtc_state = drm_atomic_get_crtc_state(state, crtc);
>> + ret = PTR_ERR_OR_ZERO(crtc_state);
>> + if (!ret) {
>> + if (!crtc_state->active)
>> + goto out;
>>
>> - connector_state->crtc = crtc;
>> - }
>> + crtc_state->mode_changed = true;
>> + ret = intel_set_mode(state);
> I think here (instead of the hw state readout/restore code) we must do a
> full compute config of the pipe state - most of the connector properties
> need that to get reflected. Should be easy to test by changing the panel
> upscaling property. Hence I think we should be able to run a full-blown
> drm_atomic_commit here.
Which is what this code does?
Together with the previous commit at least, without it it just performs a full modeset and recalculation.
>> }
>>
>> - crtc_state = intel_atomic_get_crtc_state(state, to_intel_crtc(crtc));
>> - if (IS_ERR(crtc_state)) {
>> - DRM_DEBUG_KMS("Failed to add [CRTC:%d] to state: %ld\n",
>> - crtc->base.id, PTR_ERR(crtc_state));
>> - drm_atomic_state_free(state);
>> - return;
>> + if (ret == -EDEADLK) {
>> + drm_atomic_state_clear(state);
>> + drm_modeset_backoff(state->acquire_ctx);
>> + goto retry;
>> }
>>
>> - drm_mode_copy(&crtc_state->base.mode, &crtc->mode);
>> -
>> - intel_modeset_setup_plane_state(state, crtc, &crtc->mode,
>> - crtc->primary->fb, crtc->x, crtc->y);
>> -
>> - ret = intel_set_mode(state);
>> if (ret)
>> +out:
>> drm_atomic_state_free(state);
>> }
>>
>> --
>> 2.1.0
>>
>> _______________________________________________
>> Intel-gfx mailing list
>> Intel-gfx@lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2015-07-07 10:48 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-07 7:08 [PATCH v2 00/20] Convert to atomic, part 4 Maarten Lankhorst
2015-07-07 7:08 ` [PATCH v2 01/20] drm/atomic: add connectors_changed to separate it from mode_changed Maarten Lankhorst
2015-07-07 8:59 ` Daniel Vetter
2015-07-07 10:05 ` Maarten Lankhorst
2015-07-07 12:03 ` Daniel Vetter
2015-07-07 7:08 ` [PATCH v2 02/20] drm: Don't update plane properties for atomic planes if it stays the same Maarten Lankhorst
2015-07-07 9:18 ` [Intel-gfx] " Daniel Vetter
2015-07-07 10:20 ` Maarten Lankhorst
2015-07-07 12:10 ` [Intel-gfx] " Daniel Vetter
2015-07-07 14:32 ` Maarten Lankhorst
2015-07-07 16:40 ` Daniel Vetter
2015-07-07 15:08 ` Maarten Lankhorst
2015-07-07 16:43 ` Daniel Vetter
2015-07-08 8:00 ` [Intel-gfx] " Maarten Lankhorst
2015-07-08 8:55 ` Daniel Vetter
2015-07-08 16:35 ` Maarten Lankhorst
2015-07-08 17:52 ` [Intel-gfx] " Daniel Vetter
2015-07-08 18:25 ` Maarten Lankhorst
2015-07-08 20:12 ` Daniel Vetter
2015-07-13 8:59 ` Maarten Lankhorst
2015-07-13 9:13 ` [Intel-gfx] " Daniel Vetter
2015-07-13 9:23 ` Maarten Lankhorst
2015-07-13 9:45 ` Daniel Vetter
2015-07-13 9:49 ` Maarten Lankhorst
2015-07-13 10:06 ` [Intel-gfx] " Daniel Vetter
2015-07-07 7:08 ` [PATCH v2 03/20] drm/i915: Fix noatomic crtc disabling Maarten Lankhorst
2015-07-07 9:18 ` Daniel Vetter
2015-07-07 10:22 ` Maarten Lankhorst
2015-07-07 12:39 ` Patrik Jakobsson
2015-07-07 14:14 ` Maarten Lankhorst
2015-07-08 8:12 ` Patrik Jakobsson
2015-07-08 8:50 ` Maarten Lankhorst
2015-07-07 7:08 ` [PATCH v2 04/20] drm/i915: Do not update pfit state when toggling crtc enabled Maarten Lankhorst
2015-07-07 9:26 ` Daniel Vetter
2015-07-07 10:46 ` Maarten Lankhorst
2015-07-07 7:08 ` [PATCH v2 05/20] drm/i915: Do not use plane_config in intel_fbdev.c Maarten Lankhorst
2015-07-07 7:08 ` [PATCH v2 06/20] drm/i915: Allow fuzzy matching in pipe_config_compare Maarten Lankhorst
2015-07-07 10:11 ` Daniel Vetter
2015-07-08 8:38 ` Maarten Lankhorst
2015-07-08 9:09 ` Daniel Vetter
2015-07-08 9:18 ` Maarten Lankhorst
2015-07-08 9:33 ` Daniel Vetter
2015-07-07 7:08 ` [PATCH v2 07/20] drm/i915: Rework primary plane stuff slightly Maarten Lankhorst
2015-07-07 11:16 ` Daniel Vetter
2015-07-07 14:02 ` Maarten Lankhorst
2015-07-08 9:27 ` Daniel Vetter
2015-07-08 12:36 ` Maarten Lankhorst
2015-07-07 7:08 ` [PATCH v2 08/20] drm/i915: fill in more mode members Maarten Lankhorst
2015-07-07 7:08 ` [PATCH v2 09/20] drm/i915: Fill in more crtc state, v2 Maarten Lankhorst
2015-07-07 10:28 ` Daniel Vetter
2015-07-13 9:32 ` Maarten Lankhorst
2015-07-13 9:48 ` Daniel Vetter
2015-07-07 7:08 ` [PATCH v2 10/20] drm/i915: Convert suspend/resume to atomic Maarten Lankhorst
2015-07-07 9:57 ` Daniel Vetter
2015-07-07 10:33 ` Maarten Lankhorst
2015-07-07 13:14 ` Daniel Vetter
2015-07-07 13:20 ` Daniel Vetter
2015-07-07 7:08 ` [PATCH v2 11/20] drm/i915: Update power domains on readout Maarten Lankhorst
2015-07-07 7:08 ` [PATCH v2 12/20] drm/i915: skip modeset if compatible, and enable fastboot for everyone, v2 Maarten Lankhorst
2015-07-07 10:14 ` Daniel Vetter
2015-07-07 10:34 ` Maarten Lankhorst
2015-07-07 7:08 ` [PATCH v2 13/20] drm/i915: Always reset in intel_crtc_restore_mode Maarten Lankhorst
2015-07-07 10:17 ` Daniel Vetter
2015-07-07 10:48 ` Maarten Lankhorst [this message]
2015-07-07 13:16 ` Daniel Vetter
2015-07-07 7:08 ` [PATCH v2 14/20] drm/i915: Make intel_display_suspend atomic, try 2 Maarten Lankhorst
2015-07-07 9:48 ` Daniel Vetter
2015-07-07 10:50 ` Maarten Lankhorst
2015-07-07 13:21 ` Daniel Vetter
2015-07-07 7:08 ` [PATCH v2 15/20] drm/i915: Use full atomic modeset Maarten Lankhorst
2015-07-07 7:08 ` [PATCH v2 16/20] drm/i915: Call plane update functions directly from intel_atomic_commit Maarten Lankhorst
2015-07-07 7:08 ` [PATCH v2 17/20] drm/i915: always disable irqs in intel_pipe_update_start Maarten Lankhorst
2015-07-07 7:08 ` [PATCH v2 18/20] drm/i915: Only commit planes on crtc's that have changed planes Maarten Lankhorst
2015-07-07 9:33 ` Daniel Vetter
2015-07-07 10:51 ` Maarten Lankhorst
2015-07-07 13:22 ` Daniel Vetter
2015-07-07 7:08 ` [PATCH v2 19/20] drm/i915: Remove use of runtime pm in atomic commit functions Maarten Lankhorst
2015-07-07 10:19 ` Daniel Vetter
2015-07-07 7:08 ` [PATCH v2 20/20] drm/i915: Skip modeset checks when modeset is prevented Maarten Lankhorst
2015-07-07 13:42 ` [PATCH v2 00/20] Convert to atomic, part 4 Daniel Vetter
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=559BAE84.4030606@linux.intel.com \
--to=maarten.lankhorst@linux.intel.com \
--cc=daniel@ffwll.ch \
--cc=intel-gfx@lists.freedesktop.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.