Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp3033200imu; Mon, 19 Nov 2018 09:37:38 -0800 (PST) X-Google-Smtp-Source: AFSGD/V6U+EPp0P8E4hfsVP2vP2d3w5+V8PfgOS9eQXqLPTK11OapjInmtJbGd9RAqoRrxVIBeC9 X-Received: by 2002:a17:902:4d46:: with SMTP id o6mr2544509plh.302.1542649058230; Mon, 19 Nov 2018 09:37:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542649058; cv=none; d=google.com; s=arc-20160816; b=sARmXbbtcnBb3N8Fsd2+2DhPBVTjVwDmgTABD0e2TWAzZZG0WA7YknGAWKCAcoJ4f1 MxjuVDXZmx417Zk7eg3lx7ozXDkjEleYBUOA8iarHjr3skS1sFdsgG08ycmU5ZNVyzLr 36/YHS5XCZYDsvVkUgSiCCeHePEg2ppOlpnW/z/H2Y6e6bn2Ko/gj48dqvGf6P5VYQ0c ba++fY2ZwzdsU7kKq/1ysN9yk1WMMVvrCTnF2WUcuI4O8ZpFqj2XwSjBM3/8hX80rFdB 54nX49ZisuAeYqYz/i/JmZMQbBJq5NVCWy1GvfjL7bleJH/f+3mBxDZDvAVKNCly89Rh ZKHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=08GiGf7NOLkODRVTVIGI52/fN2XLMTxYDeUKLtXLb6s=; b=GE8CTSdxLF2aoQAutE8Gjd5+j0Oynk7pGvO8zG3w2m9pRT3wyvdvbtJn2mZqgNBEOI 9JzlBgLC2hDDKC+W0wb9+ZIfXaq0ihmj2Jj0wxixdhHOqfI78dDopMGSb2BOauXp+51O wB2S3owp8s0xwk7qOn+4eaQb4xLxDu3gzKmj3cdANiUpQ2ScbzmLYgoqMWu0dM1fMvW1 mfn1vy1Oq7Pz0JJQ2UY4hyLC3tW0YOMYXry6z1IhagUpW3HzGxssK+ar9sEW+jE7sq60 o5WJM+fMOtKDXp+1p9G/LJcjRBK1GYUrEaH0R2DgLpqDazzNs5Ne+S+JhMgYc5qmJUsc Qn1w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=MT4Rqhx5; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e34si13562470pgb.80.2018.11.19.09.37.02; Mon, 19 Nov 2018 09:37:38 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=MT4Rqhx5; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390370AbeKTDPz (ORCPT + 99 others); Mon, 19 Nov 2018 22:15:55 -0500 Received: from mail.kernel.org ([198.145.29.99]:53638 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2389340AbeKTDPy (ORCPT ); Mon, 19 Nov 2018 22:15:54 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id C1C89206BA; Mon, 19 Nov 2018 16:51:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1542646300; bh=ZXrCUiToWH/1O+0vZlUopyzCpnX8hWl8QMtJ81SlZEY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MT4Rqhx5gyTjP8m9IiFr686VMzZA58b5+NQRivOgEXEab5k265y1joiYZ/7PA62Py wB9NTJogjqkxCIk4QTxkK3n28uVDpW76202w02uc0xClME1d1C/BTM9ZVJCe82EDQM hqaXh8rjZVletFcwNjP6DE0IdqepeEg/RK/EzSyo= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Dennis , Peter Nowee , =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= , Daniel Vetter , Rodrigo Vivi Subject: [PATCH 4.14 112/124] drm/i915: Restore vblank interrupts earlier Date: Mon, 19 Nov 2018 17:29:26 +0100 Message-Id: <20181119162632.797685176@linuxfoundation.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181119162612.951907286@linuxfoundation.org> References: <20181119162612.951907286@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Ville Syrjälä commit 7cada4d0b7a0fb813dbc9777fec092e9ed0546e9 upstream. Plane sanitation needs vblank interrupts (on account of CxSR disable). So let's restore vblank interrupts earlier. v2: Make it actually build v3: Add comment to explain why we need this (Daniel) Cc: stable@vger.kernel.org Cc: Dennis Tested-by: Dennis Tested-by: Peter Nowee Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105637 Fixes: b1e01595a66d ("drm/i915: Redo plane sanitation during readout") Signed-off-by: Ville Syrjälä Reviewed-by: Daniel Vetter Link: https://patchwork.freedesktop.org/patch/msgid/20181003144951.4397-1-ville.syrjala@linux.intel.com (cherry picked from commit 68bc30deac625b8be8d3950b30dc93d09a3645f5) Signed-off-by: Rodrigo Vivi Signed-off-by: Greg Kroah-Hartman --- drivers/gpu/drm/i915/intel_display.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -14829,13 +14829,9 @@ static void intel_sanitize_crtc(struct i I915_READ(reg) & ~PIPECONF_FRAME_START_DELAY_MASK); } - /* restore vblank interrupts to correct state */ - drm_crtc_vblank_reset(&crtc->base); if (crtc->active) { struct intel_plane *plane; - drm_crtc_vblank_on(&crtc->base); - /* Disable everything but the primary plane */ for_each_intel_plane_on_crtc(dev, crtc, plane) { const struct intel_plane_state *plane_state = @@ -15148,7 +15144,6 @@ intel_modeset_setup_hw_state(struct drm_ struct drm_modeset_acquire_ctx *ctx) { struct drm_i915_private *dev_priv = to_i915(dev); - enum pipe pipe; struct intel_crtc *crtc; struct intel_encoder *encoder; int i; @@ -15167,15 +15162,23 @@ intel_modeset_setup_hw_state(struct drm_ /* HW state is read out, now we need to sanitize this mess. */ get_encoder_power_domains(dev_priv); - intel_sanitize_plane_mapping(dev_priv); + /* + * intel_sanitize_plane_mapping() may need to do vblank + * waits, so we need vblank interrupts restored beforehand. + */ + for_each_intel_crtc(&dev_priv->drm, crtc) { + drm_crtc_vblank_reset(&crtc->base); - for_each_intel_encoder(dev, encoder) { - intel_sanitize_encoder(encoder); + if (crtc->active) + drm_crtc_vblank_on(&crtc->base); } - for_each_pipe(dev_priv, pipe) { - crtc = intel_get_crtc_for_pipe(dev_priv, pipe); + intel_sanitize_plane_mapping(dev_priv); + + for_each_intel_encoder(dev, encoder) + intel_sanitize_encoder(encoder); + for_each_intel_crtc(&dev_priv->drm, crtc) { intel_sanitize_crtc(crtc, ctx); intel_dump_pipe_config(crtc, crtc->config, "[setup_hw_state]");