[Intel-gfx] [PATCH 2/2] drm/i915: Move modeset state checker calls.
Maarten Lankhorst
maarten.lankhorst at linux.intel.com
Fri Apr 8 09:38:55 UTC 2016
Op 08-04-16 om 01:23 schreef Matt Roper:
> On Wed, Mar 23, 2016 at 02:58:07PM +0100, Maarten Lankhorst wrote:
>> The modeset state checker no longer has full access to the hardware,
>> instead it should only check affected crtc's.
>>
>> Looking for disabled stuff can be checked immediately after all crtc
>> disables have completed, while each enabled crtc can be checked right
>> after being enabled.
>>
>> Signed-off-by: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
>> ---
>> drivers/gpu/drm/i915/intel_display.c | 24 +++++-------------------
>> 1 file changed, 5 insertions(+), 19 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
>> index 4148b262f2a7..b6a75aa32e5a 100644
>> --- a/drivers/gpu/drm/i915/intel_display.c
>> +++ b/drivers/gpu/drm/i915/intel_display.c
>> @@ -13027,28 +13027,13 @@ check_disabled_dpll_state(struct drm_device *dev)
>> }
>>
>> static void
>> -intel_modeset_check_disabled(struct drm_device *dev,
>> - struct drm_atomic_state *old_state)
>> +intel_modeset_check_disabled(struct drm_device *dev)
>> {
>> check_encoder_state(dev);
>> check_connector_state(dev, NULL);
>> check_disabled_dpll_state(dev);
>> }
>>
>> -static void
>> -intel_modeset_check_state(struct drm_device *dev,
>> - struct drm_atomic_state *old_state)
>> -{
>> - struct drm_crtc_state *old_crtc_state;
>> - struct drm_crtc *crtc;
>> - int i;
>> -
>> - for_each_crtc_in_state(old_state, crtc, old_crtc_state, i)
>> - intel_modeset_check_crtc(crtc, old_crtc_state, crtc->state);
>> -
>> - intel_modeset_check_disabled(dev, old_state);
>> -}
>> -
>> static void update_scanline_offset(struct intel_crtc *crtc)
>> {
>> struct drm_device *dev = crtc->base.dev;
>> @@ -13616,6 +13601,8 @@ static int intel_atomic_commit(struct drm_device *dev,
>> if (dev_priv->display.modeset_commit_cdclk &&
>> intel_state->dev_cdclk != dev_priv->cdclk_freq)
>> dev_priv->display.modeset_commit_cdclk(state);
>> +
>> + intel_modeset_check_disabled(dev);
> As noted on patch #1, since we're checking all disabled state (and not
> just the things that are newly-disabled by this transaction), we may not
> hold full locks over everything that's disabled here and might be racing
> with other updates. But we're no worse off than we were before.
>
> As a minor behavior change, it looks like we're also no longer calling
> this when we're doing non-modeset pipe updates, but that should be fine.
>
This is true, but enabling a pipe requires connection_mutex, which is always held if we do a modeset anyway..
More information about the Intel-gfx
mailing list