Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp2199853imm; Mon, 28 May 2018 03:48:15 -0700 (PDT) X-Google-Smtp-Source: ADUXVKKVaVgLwR3IXRqU/T0v34usF4+ZP444KeO9yBWRUDVirlRljDK5IeVVpmNxeFh4220fakDU X-Received: by 2002:a62:4a0c:: with SMTP id x12-v6mr775092pfa.142.1527504495417; Mon, 28 May 2018 03:48:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527504495; cv=none; d=google.com; s=arc-20160816; b=wRoebhUh3ZbPqi1dipFU88zXOqo+iuZDi6ineJYLQNtpW6xCQ3hxzWR+SmF+Oz6Ajr VBvN4JH7bSxeta7gHfvD7DLPzeharB4lnePKlG0xQMipY0I9M2EYimX1+VftWpg0le5V Kf4SAcRFvuR3ou41/qlW7Pa8+g9xnVBikFZKYa8G12D6OW0wu7aS5THXoHxu73kKsY3h gTBw7X7E2vBNrWTe3id40z4mCMIoUTRS8M6la+Aaz3+/wUv/WUwiFmnLQ8tpOFxfl1rb DXqj41HhI6ayj07/zhsWv+1hWMoQWvWFji6XA/xORzew3V4ksBc8W40Z0EVJSdfjH1t+ 92Zg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=sE2eRHH5SN5zSHwRL+ffsNkNVKoe+SklJQruG1e+EHc=; b=L0I9+sSyEx7GeVaVkAYZZLMKoKzdPIYIE7p2YtNftBnWTDCkS1unfgrQj5xLEaJBY+ hxyqCoC7iQTuHuJIeQe+mZrl1PcCkK2wOLQzNkZfhTSBA6vOjaQaQkPHgEi5FK0bHyBi DDymZ59Hda4yzGipvRHcIfoD0+mnVLrSDYWfjOXnBE326Me7G55JBmnejoJJNWRJ6VXB gAUfYfFTqP3nU9vm91b+gOEz3ttOjjKNuoq7FDTBgPWubDlCr1c/0lTT+J2FmXqVsfWZ hNm/H9J+m/1l9PUgYhypQPDr4V3NIclaHzz4olia0VmXxVNZQELC7xbdjAZJoJmvI/as JKXA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=hBGgB6yC; 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 i135-v6si5296154pgc.118.2018.05.28.03.48.00; Mon, 28 May 2018 03:48:15 -0700 (PDT) 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=hBGgB6yC; 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 S1034288AbeE1Kro (ORCPT + 99 others); Mon, 28 May 2018 06:47:44 -0400 Received: from mail.kernel.org ([198.145.29.99]:37710 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1163272AbeE1Krj (ORCPT ); Mon, 28 May 2018 06:47:39 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) (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 E153220844; Mon, 28 May 2018 10:47:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1527504458; bh=h3LgBVCepcOoUsA50dsCmUWWoI0EXt77qsaa9ThyUag=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hBGgB6yCHu7o0VwLnSSoAkcG8lwlo2GgYzJ5tFr/yei8D2/R2hFMS0yxeSTlcVkcF Shv/8xSHr8os8XCV+eKNSQDz2j0ilzzWzLyd+3mmMRFlBGzabWq8OXamOWiW+1Ohlj Vpz6gZFjqiRJcy6eW+bIaLuAUtg7qjYhZb09kZ+E= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Michal Lazo , Neil Armstrong , Daniel Vetter , Sasha Levin Subject: [PATCH 4.14 103/496] drm/meson: fix vsync buffer update Date: Mon, 28 May 2018 11:58:08 +0200 Message-Id: <20180528100324.186606161@linuxfoundation.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180528100319.498712256@linuxfoundation.org> References: <20180528100319.498712256@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 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: Neil Armstrong [ Upstream commit e88230a3744a71a0b5ecfb45e08ddfe1c884e50d ] The plane buffer address/stride/height was incorrectly updated in the plane_atomic_update operation instead of the vsync irq. This patch delays this operation in the vsync irq along with the other plane delayed setup. This issue was masked using legacy framebuffer and X11 modesetting, but is clearly visible using gbm rendering when buffer is submitted late after vblank, like using software decoding and OpenGL rendering in Kodi. With this patch, tearing and other artifacts disappears completely. Cc: Michal Lazo Fixes: bbbe775ec5b5 ("drm: Add support for Amlogic Meson Graphic Controller") Signed-off-by: Neil Armstrong Acked-by: Daniel Vetter Link: https://patchwork.freedesktop.org/patch/msgid/1518689976-23292-1-git-send-email-narmstrong@baylibre.com Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- drivers/gpu/drm/meson/meson_crtc.c | 6 ++++++ drivers/gpu/drm/meson/meson_drv.h | 3 +++ drivers/gpu/drm/meson/meson_plane.c | 7 +++---- 3 files changed, 12 insertions(+), 4 deletions(-) --- a/drivers/gpu/drm/meson/meson_crtc.c +++ b/drivers/gpu/drm/meson/meson_crtc.c @@ -36,6 +36,7 @@ #include "meson_venc.h" #include "meson_vpp.h" #include "meson_viu.h" +#include "meson_canvas.h" #include "meson_registers.h" /* CRTC definition */ @@ -192,6 +193,11 @@ void meson_crtc_irq(struct meson_drm *pr } else meson_vpp_disable_interlace_vscaler_osd1(priv); + meson_canvas_setup(priv, MESON_CANVAS_ID_OSD1, + priv->viu.osd1_addr, priv->viu.osd1_stride, + priv->viu.osd1_height, MESON_CANVAS_WRAP_NONE, + MESON_CANVAS_BLKMODE_LINEAR); + /* Enable OSD1 */ writel_bits_relaxed(VPP_OSD1_POSTBLEND, VPP_OSD1_POSTBLEND, priv->io_base + _REG(VPP_MISC)); --- a/drivers/gpu/drm/meson/meson_drv.h +++ b/drivers/gpu/drm/meson/meson_drv.h @@ -43,6 +43,9 @@ struct meson_drm { bool osd1_commit; uint32_t osd1_ctrl_stat; uint32_t osd1_blk0_cfg[5]; + uint32_t osd1_addr; + uint32_t osd1_stride; + uint32_t osd1_height; } viu; struct { --- a/drivers/gpu/drm/meson/meson_plane.c +++ b/drivers/gpu/drm/meson/meson_plane.c @@ -164,10 +164,9 @@ static void meson_plane_atomic_update(st /* Update Canvas with buffer address */ gem = drm_fb_cma_get_gem_obj(fb, 0); - meson_canvas_setup(priv, MESON_CANVAS_ID_OSD1, - gem->paddr, fb->pitches[0], - fb->height, MESON_CANVAS_WRAP_NONE, - MESON_CANVAS_BLKMODE_LINEAR); + priv->viu.osd1_addr = gem->paddr; + priv->viu.osd1_stride = fb->pitches[0]; + priv->viu.osd1_height = fb->height; spin_unlock_irqrestore(&priv->drm->event_lock, flags); }