Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp1057157ybt; Fri, 26 Jun 2020 19:38:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyxdLdJy6UhxWB645NYu1+GbupWva2hDC0bD4EXZPCv5h9C6fO1tBJGhyPq4c5atQIaANkT X-Received: by 2002:aa7:c504:: with SMTP id o4mr6327793edq.311.1593225528044; Fri, 26 Jun 2020 19:38:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593225528; cv=none; d=google.com; s=arc-20160816; b=URKadEsrMYGpQNO0MYOudDhGg6X23I0FYJYJzpzrpYehbr18G121Rf+4yXthBe+5TN 3jLU/EzSvC1ne7Ua+UcCcsc1v+IvxXaDSK6krdUi1gEBiGZXZGnuutT/7hHPGQtbHAEe WzNb8LQ/UiTrpvBxrfarNSXlSrdvBjlNG47gm7RnZGYHdOrvlTjYYJ4yUcAh7ip9WdHo e5A5GHGEPcN1wjyIZrDiTe8LmXtiesnB3yt889arSsYSc94fE1rutGwgjZWVyFM2HnUC Rkrjjj7GIH1PIJtr/h3Bd14maSaCOEr6PuL79Z4JNdEXIt7/eLLP79yEEfbe6cBrQpAW SpSQ== 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:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=NuhOczASUchC8GUm/3CiqqnKPb7V9Alk231j5EmNiWw=; b=zrxbWOnL065xzRMiGHpwSTNmB6UYRx2LD/NmS9Dm4vgJv3CNd6BTpmvjsMvbDREN6P 46ZClczYmsuqCJHfCtLTdAuujK6DV0tn6fwuBNZgRJQJvSds0pGDNWI+kyzpkO8VBK6N DO/ti3qWlP1dqSU6qA6hWtsNTYQFTiUFlEAbQYWbBkw6e4Fn/6gdm4zNYblcWnmf9fUP fJpN1Fx0ouWN/HbZEnEnbqGYapETWtShGwYTLYwBG7LbdsnYY/hz1wCux9yTeeV2w340 K5M5TCF/bPOrSk1swmv3C+vZ5TLggPhnP6bWLBC6gkdHd69gmXRFt7/hoF62pA3RbQx7 OcLg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=RcLz9fwj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j12si13518814edn.287.2020.06.26.19.38.07; Fri, 26 Jun 2020 19:38:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=RcLz9fwj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726537AbgF0CgA (ORCPT + 99 others); Fri, 26 Jun 2020 22:36:00 -0400 Received: from mail.kernel.org ([198.145.29.99]:34870 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725992AbgF0Cf7 (ORCPT ); Fri, 26 Jun 2020 22:35:59 -0400 Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id D862A20CC7 for ; Sat, 27 Jun 2020 02:35:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1593225359; bh=tU0ZbN22a3NbtsWXdd7dOzD8damchBjamFVFeRZ8J54=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=RcLz9fwjyZCTlbXGEg1uhlK21xVGWDpa/NFDEddfO2GoH8eN4YTKhO0OL/OGsDE7r 92BeYFjijvqps/03BmOHDsIstqTjRXMkROajoX9my2pIgpr6SBkSx6NBbYfMSoKdGD wJk8Od2vw/6Uu0HKTLRIboThNj2Cby7c7PveIb40= Received: by mail-ed1-f47.google.com with SMTP id a8so7141080edy.1 for ; Fri, 26 Jun 2020 19:35:58 -0700 (PDT) X-Gm-Message-State: AOAM531Yc6a08bOIcEXDYlngefdKXIsjR09HX/3u6ti2k1kpgeEJNcR9 6xmep+haLRJ1ZLCaMuKamRYBIJnE6IH62ofikg== X-Received: by 2002:aa7:c3d6:: with SMTP id l22mr6451343edr.148.1593225357299; Fri, 26 Jun 2020 19:35:57 -0700 (PDT) MIME-Version: 1.0 References: <20200622155753.130181-1-hsinyi@chromium.org> In-Reply-To: <20200622155753.130181-1-hsinyi@chromium.org> From: Chun-Kuang Hu Date: Sat, 27 Jun 2020 10:35:46 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v4] drm/mediatek: check plane visibility in atomic_update To: Hsin-Yi Wang Cc: Linux ARM , Chun-Kuang Hu , Philipp Zabel , David Airlie , Daniel Vetter , Matthias Brugger , DRI Development , "moderated list:ARM/Mediatek SoC support" , linux-kernel , Yongqiang Niu , Tomasz Figa Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, Hsin-Yi: Hsin-Yi Wang =E6=96=BC 2020=E5=B9=B46=E6=9C=8822=E6= =97=A5 =E9=80=B1=E4=B8=80 =E4=B8=8B=E5=8D=8811:57=E5=AF=AB=E9=81=93=EF=BC= =9A > > Disable the plane if it's not visible. Otherwise mtk_ovl_layer_config() > would proceed with invalid plane and we may see vblank timeout. > Applied to mediatek-drm-next [1], thanks. [1] https://git.kernel.org/pub/scm/linux/kernel/git/chunkuang.hu/linux.git/= log/?h=3Dmediatek-drm-next Regards, Chun-Kuang. > Fixes: 119f5173628a ("drm/mediatek: Add DRM Driver for Mediatek SoC MT817= 3.") > Signed-off-by: Hsin-Yi Wang > Reviewed-by: Chun-Kuang Hu > Reviewed-by: Tomasz Figa > --- > v4: fix commit message > v3: Address comment > v2: Add fixes tag > --- > drivers/gpu/drm/mediatek/mtk_drm_plane.c | 25 ++++++++++++++---------- > 1 file changed, 15 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_plane.c b/drivers/gpu/drm/m= ediatek/mtk_drm_plane.c > index c2bd683a87c8..92141a19681b 100644 > --- a/drivers/gpu/drm/mediatek/mtk_drm_plane.c > +++ b/drivers/gpu/drm/mediatek/mtk_drm_plane.c > @@ -164,6 +164,16 @@ static int mtk_plane_atomic_check(struct drm_plane *= plane, > true, true); > } > > +static void mtk_plane_atomic_disable(struct drm_plane *plane, > + struct drm_plane_state *old_state) > +{ > + struct mtk_plane_state *state =3D to_mtk_plane_state(plane->state= ); > + > + state->pending.enable =3D false; > + wmb(); /* Make sure the above parameter is set before update */ > + state->pending.dirty =3D true; > +} > + > static void mtk_plane_atomic_update(struct drm_plane *plane, > struct drm_plane_state *old_state) > { > @@ -178,6 +188,11 @@ static void mtk_plane_atomic_update(struct drm_plane= *plane, > if (!crtc || WARN_ON(!fb)) > return; > > + if (!plane->state->visible) { > + mtk_plane_atomic_disable(plane, old_state); > + return; > + } > + > gem =3D fb->obj[0]; > mtk_gem =3D to_mtk_gem_obj(gem); > addr =3D mtk_gem->dma_addr; > @@ -200,16 +215,6 @@ static void mtk_plane_atomic_update(struct drm_plane= *plane, > state->pending.dirty =3D true; > } > > -static void mtk_plane_atomic_disable(struct drm_plane *plane, > - struct drm_plane_state *old_state) > -{ > - struct mtk_plane_state *state =3D to_mtk_plane_state(plane->state= ); > - > - state->pending.enable =3D false; > - wmb(); /* Make sure the above parameter is set before update */ > - state->pending.dirty =3D true; > -} > - > static const struct drm_plane_helper_funcs mtk_plane_helper_funcs =3D { > .prepare_fb =3D drm_gem_fb_prepare_fb, > .atomic_check =3D mtk_plane_atomic_check, > -- > 2.27.0.111.gc72c7da667-goog >