From mboxrd@z Thu Jan 1 00:00:00 1970 From: Greg Kroah-Hartman Subject: [PATCH 4.4 193/342] drm/nouveau/display: Enable vblank irqs after display engine is on again. Date: Tue, 01 Mar 2016 23:54:47 +0000 Message-ID: <20160301234534.173103133@linuxfoundation.org> References: <20160301234527.990448862@linuxfoundation.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail333.us4.mandrillapp.com (mail333.us4.mandrillapp.com [205.201.137.77]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7F7526E1E8 for ; Wed, 2 Mar 2016 00:09:50 +0000 (UTC) Received: from pmta03.dal05.mailchimp.com (127.0.0.1) by mail333.us4.mandrillapp.com id hqonks174no1 for ; Tue, 1 Mar 2016 23:54:47 +0000 (envelope-from ) In-Reply-To: <20160301234527.990448862@linuxfoundation.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , dri-devel@lists.freedesktop.org, stable@vger.kernel.org, Ben Skeggs , daniel.vetter@ffwll.ch, Dave Airlie List-Id: dri-devel@lists.freedesktop.org NC40LXN0YWJsZSByZXZpZXcgcGF0Y2guICBJZiBhbnlvbmUgaGFzIGFueSBvYmplY3Rpb25zLCBw bGVhc2UgbGV0IG1lIGtub3cuCgotLS0tLS0tLS0tLS0tLS0tLS0KCkZyb206IE1hcmlvIEtsZWlu ZXIgPG1hcmlvLmtsZWluZXIuZGVAZ21haWwuY29tPgoKY29tbWl0IGZmNjgzZGY3YmYzNGY5MDc2 NmE1MGM3ZTc0NTRlMjE5YWVmMjcxMGUgdXBzdHJlYW0uCgpJbiB0aGUgZGlzcGxheSByZXN1bWUg cGF0aCwgbW92ZSB0aGUgY2FsbHMgdG8gZHJtX3ZibGFua19vbigpCmFmdGVyIHRoZSBwb2ludCB3 aGVuIHRoZSBkaXNwbGF5IGVuZ2luZSBpcyBydW5uaW5nIGFnYWluLgoKU2luY2UgY2hhbmdlcyB3 ZXJlIG1hZGUgdG8gZHJtX3VwZGF0ZV92YmxhbmtfY291bnQoKSBpbiBMaW51eCA0LjQrCnRvIGVt dWxhdGUgaHcgdmJsYW5rIGNvdW50ZXJzIHZpYSB2YmxhbmsgdGltZXN0YW1waW5nLCB0aGUgZnVu Y3Rpb24KZHJtX3ZibGFua19vbigpIG5vdyBuZWVkcyB3b3JraW5nIGhpZ2ggcHJlY2lzaW9uIHZi bGFuayB0aW1lc3RhbXBpbmcKYW5kIHRoZXJlZm9yZSB3b3JraW5nIHNjYW5vdXQgcG9zaXRpb24g cXVlcmllcyBhdCB0aW1lIG9mIGNhbGwuClRoZXNlIGRvbid0IHdvcmsgYmVmb3JlIHRoZSBkaXNw bGF5IGVuZ2luZSBnZXRzIHJlc3RhcnRlZCwgY2F1c2luZwptaXNjYWxjdWxhdGlvbiBvZiB2Ymxh bmsgY291bnRlciBpbmNyZW1lbnRzIGFuZCB0aGVyZWJ5IGxhcmdlIGZvcndhcmQKanVtcHMgaW4g dmJsYW5rIGNvdW50IGF0IGRpc3BsYXkgcmVzdW1lLiBUaGVzZSBqdW1wcyBjYW4gY2F1c2UgY2xp ZW50CmhhbmdzIG9uIHJlc3VtZSwgb3IgZGVza3RvcCBoYW5ncyBpbiB0aGUgY2FzZSBvZiBjb21w b3NpdGVkIGRlc2t0b3BzLgoKRml4IHRoaXMgTGludXggNC40IHJlZ3Jlc3Npb24gYnkgcmVvcmRl cmluZyBjYWxscyBhY2NvcmRpbmdseS4KClNpZ25lZC1vZmYtYnk6IE1hcmlvIEtsZWluZXIgPG1h cmlvLmtsZWluZXIuZGVAZ21haWwuY29tPgpDYzogQmVuIFNrZWdncyA8YnNrZWdnc0ByZWRoYXQu Y29tPgpDYzogdmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20KQ2M6IGRhbmllbC52ZXR0ZXJA ZmZ3bGwuY2gKQ2M6IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKUmV2aWV3ZWQtYnk6 IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+ClNpZ25lZC1vZmYtYnk6IERh dmUgQWlybGllIDxhaXJsaWVkQHJlZGhhdC5jb20+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgt SGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+CgotLS0KIGRyaXZlcnMvZ3B1L2Ry bS9ub3V2ZWF1L25vdXZlYXVfZGlzcGxheS5jIHwgICAgOCArKysrLS0tLQogMSBmaWxlIGNoYW5n ZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCi0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9ub3V2ZWF1L25vdXZlYXVfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1 L25vdXZlYXVfZGlzcGxheS5jCkBAIC02MzQsMTAgKzYzNCw2IEBAIG5vdXZlYXVfZGlzcGxheV9y ZXN1bWUoc3RydWN0IGRybV9kZXZpY2UKIAkJbnZfY3J0Yy0+bHV0LmRlcHRoID0gMDsKIAl9CiAK LQkvKiBNYWtlIHN1cmUgdGhhdCBkcm0gYW5kIGh3IHZibGFuayBpcnFzIGdldCByZXN1bWVkIGlm IG5lZWRlZC4gKi8KLQlmb3IgKGhlYWQgPSAwOyBoZWFkIDwgZGV2LT5tb2RlX2NvbmZpZy5udW1f Y3J0YzsgaGVhZCsrKQotCQlkcm1fdmJsYW5rX29uKGRldiwgaGVhZCk7Ci0KIAkvKiBUaGlzIHNo b3VsZCBlbnN1cmUgd2UgZG9uJ3QgaGl0IGEgbG9ja2luZyBwcm9ibGVtIHdoZW4gc29tZW9uZQog CSAqIHdha2VzIHVzIHVwIHZpYSBhIGNvbm5lY3Rvci4gIFdlIHNob3VsZCBuZXZlciBnbyBpbnRv IHN1c3BlbmQKIAkgKiB3aGlsZSB0aGUgZGlzcGxheSBpcyBvbiBhbnl3YXlzLgpAQCAtNjQ3LDYg KzY0MywxMCBAQCBub3V2ZWF1X2Rpc3BsYXlfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlCiAKIAlk cm1faGVscGVyX3Jlc3VtZV9mb3JjZV9tb2RlKGRldik7CiAKKwkvKiBNYWtlIHN1cmUgdGhhdCBk cm0gYW5kIGh3IHZibGFuayBpcnFzIGdldCByZXN1bWVkIGlmIG5lZWRlZC4gKi8KKwlmb3IgKGhl YWQgPSAwOyBoZWFkIDwgZGV2LT5tb2RlX2NvbmZpZy5udW1fY3J0YzsgaGVhZCsrKQorCQlkcm1f dmJsYW5rX29uKGRldiwgaGVhZCk7CisKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNydGMsICZkZXYt Pm1vZGVfY29uZmlnLmNydGNfbGlzdCwgaGVhZCkgewogCQlzdHJ1Y3Qgbm91dmVhdV9jcnRjICpu dl9jcnRjID0gbm91dmVhdV9jcnRjKGNydGMpOwpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753951AbcCBAkK (ORCPT ); Tue, 1 Mar 2016 19:40:10 -0500 Received: from mail333.us4.mandrillapp.com ([205.201.137.77]:43800 "EHLO mail333.us4.mandrillapp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756158AbcCAX47 (ORCPT ); Tue, 1 Mar 2016 18:56:59 -0500 DomainKey-Signature: a=rsa-sha1; c=nofws; q=dns; s=mandrill; d=linuxfoundation.org; b=o+YmkZB2eZgNqR2ILmqWW5Zm5QD3EgAjyqDuDO5dn/0QYEgN/CHomdiFb0NpMpmno09WMcu/a1+1 aHIQ7YVFXgbOPIQJ5FeT/x1KqlvOFg5h+4ZaGlNpYJbyHZT8VPZbHd6KnVsacFZWzzWbUsxP5zY2 NFHIyLLSe0hz74g9Z2s=; From: Greg Kroah-Hartman Subject: [PATCH 4.4 193/342] drm/nouveau/display: Enable vblank irqs after display engine is on again. X-Mailer: git-send-email 2.7.2 To: Cc: Greg Kroah-Hartman , , Mario Kleiner , Ben Skeggs , , , , Dave Airlie Message-Id: <20160301234534.173103133@linuxfoundation.org> In-Reply-To: <20160301234527.990448862@linuxfoundation.org> References: <20160301234527.990448862@linuxfoundation.org> X-Report-Abuse: Please forward a copy of this message, including all headers, to abuse@mandrill.com X-Report-Abuse: You can also report abuse here: http://mandrillapp.com/contact/abuse?id=30481620.8bea02d0d43e436b98f8b5ca90d9b33c X-Mandrill-User: md_30481620 Date: Tue, 01 Mar 2016 23:54:48 +0000 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.4-stable review patch. If anyone has any objections, please let me know. ------------------ From: Mario Kleiner commit ff683df7bf34f90766a50c7e7454e219aef2710e upstream. In the display resume path, move the calls to drm_vblank_on() after the point when the display engine is running again. Since changes were made to drm_update_vblank_count() in Linux 4.4+ to emulate hw vblank counters via vblank timestamping, the function drm_vblank_on() now needs working high precision vblank timestamping and therefore working scanout position queries at time of call. These don't work before the display engine gets restarted, causing miscalculation of vblank counter increments and thereby large forward jumps in vblank count at display resume. These jumps can cause client hangs on resume, or desktop hangs in the case of composited desktops. Fix this Linux 4.4 regression by reordering calls accordingly. Signed-off-by: Mario Kleiner Cc: Ben Skeggs Cc: ville.syrjala@linux.intel.com Cc: daniel.vetter@ffwll.ch Cc: dri-devel@lists.freedesktop.org Reviewed-by: Daniel Vetter Signed-off-by: Dave Airlie Signed-off-by: Greg Kroah-Hartman --- drivers/gpu/drm/nouveau/nouveau_display.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) --- a/drivers/gpu/drm/nouveau/nouveau_display.c +++ b/drivers/gpu/drm/nouveau/nouveau_display.c @@ -634,10 +634,6 @@ nouveau_display_resume(struct drm_device nv_crtc->lut.depth = 0; } - /* Make sure that drm and hw vblank irqs get resumed if needed. */ - for (head = 0; head < dev->mode_config.num_crtc; head++) - drm_vblank_on(dev, head); - /* This should ensure we don't hit a locking problem when someone * wakes us up via a connector. We should never go into suspend * while the display is on anyways. @@ -647,6 +643,10 @@ nouveau_display_resume(struct drm_device drm_helper_resume_force_mode(dev); + /* Make sure that drm and hw vblank irqs get resumed if needed. */ + for (head = 0; head < dev->mode_config.num_crtc; head++) + drm_vblank_on(dev, head); + list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc);