From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.2 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,USER_AGENT_SANE_2 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D89DBC43603 for ; Thu, 5 Dec 2019 07:13:19 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A69DB24249 for ; Thu, 5 Dec 2019 07:13:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="TYFI5JNr"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="RPKXGRp0" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A69DB24249 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=mediatek.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:Reply-To:List-Subscribe:List-Help: List-Post:List-Archive:List-Unsubscribe:List-Id:MIME-Version:References: In-Reply-To:Date:To:From:Subject:Message-ID:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=D3jWHutDxdFN3vojlTLydu9mMDjh1+FPSGANpMEVzSY=; b=TYFI5JNrFmOsSN X7srFGgKi9+Jw2yuT0U74LDBxOukAa7kJonB0txDnXAGKDMCL4BhLYxNHCVZ+PnikOveNQTx/obSR nTcWI62p/iJ+DgdTDm6IhX6s0mkr9PX9ybe4oOQ86c3x4+199XdlIFHcHOuKTpP1KU5PYaJODBrUV sKcGMuIu3NFH8JPXRuPq4bgJTWCtjEmS/LXxqe3LYvneAT9AEpM9JkZYO7WBkhA4QBNXAfzO5sQJJ FU9Svag7ejhSNszp1U3F/yTuFYQzfCVg3MhLj1Fa5PM7qSQ901lo7BPMzPXy6EcGUEVNyxGlsb+ze RUC1qjGiqdnqBo3+9Oaw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1iclK2-0001fk-Se; Thu, 05 Dec 2019 07:13:10 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1iclJy-0001dy-QT; Thu, 05 Dec 2019 07:13:08 +0000 X-UUID: 13d5eeac7ce047c399ccaccd10db84d8-20191204 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:MIME-Version:Content-Type:References:In-Reply-To:Date:CC:To:Reply-To:From:Subject:Message-ID; bh=MJF+2jLqtT0SflHvg6q5GPIgnEzdpyPSz7LF2tPU4/Y=; b=RPKXGRp0lPIS+PTXHCEJ1myLQp4YgW24OnbstvJXNsUNmgw67SivbzFhDdS91Pi2OtyVP/Ukkt6kF3ssXNJhddu8cY51BgMwHl3CnPQfUn+nZkdhBUV7ptTgNjJ3GE6kvZtsKiQvOEmayc2NcppfCgTc11l/vB4VCeZBfOq3I68=; X-UUID: 13d5eeac7ce047c399ccaccd10db84d8-20191204 Received: from mtkcas67.mediatek.inc [(172.29.193.45)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLS) with ESMTP id 1255473439; Wed, 04 Dec 2019 23:13:03 -0800 Received: from mtkmbs05n1.mediatek.inc (172.21.101.15) by MTKMBS62DR.mediatek.inc (172.29.94.18) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Wed, 4 Dec 2019 23:13:13 -0800 Received: from MTKCAS36.mediatek.inc (172.27.4.186) by mtkmbs05n1.mediatek.inc (172.21.101.15) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Thu, 5 Dec 2019 15:12:43 +0800 Received: from [10.17.3.153] (172.27.4.253) by MTKCAS36.mediatek.inc (172.27.4.170) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Thu, 5 Dec 2019 15:12:37 +0800 Message-ID: <1575529976.9400.4.camel@mhfsdcap03> Subject: Re: [v1,1/2] drm/mediatek: Fixup external display black screen issue From: Yongqiang Niu To: Hsin-Yi Wang Date: Thu, 5 Dec 2019 15:12:56 +0800 In-Reply-To: References: <1574817475-22378-2-git-send-email-yongqiang.niu@mediatek.com> X-Mailer: Evolution 3.10.4-0ubuntu2 MIME-Version: 1.0 X-MTK: N X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191204_231306_871810_91498A08 X-CRM114-Status: GOOD ( 17.12 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Yongqiang Niu Cc: Mark Rutland , Devicetree List , David Airlie , lkml , dri-devel@lists.freedesktop.org, CK Hu , Rob Herring , linux-mediatek@lists.infradead.org, Philipp Zabel , Matthias Brugger , "moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE" Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Thu, 2019-12-05 at 14:15 +0800, Hsin-Yi Wang wrote: > On Wed, Nov 27, 2019 at 1:17 AM wrote: > > > > From: Yongqiang Niu > > > > Problem: > > overlay hangup when external display hotplut test > > > > Fix: > > disable overlay when crtc disable > > > > Signed-off-by: Yongqiang Niu > > --- > > drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 39 +++++++++++++++++++++------------ > > 1 file changed, 25 insertions(+), 14 deletions(-) > > > > -- > > 1.8.1.1.dirty > > > > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c > > index 4fb346c..7eca02f 100644 > > --- a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c > > +++ b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c > > @@ -369,6 +369,20 @@ static int mtk_crtc_ddp_hw_init(struct mtk_drm_crtc *mtk_crtc) > > mtk_disp_mutex_add_comp(mtk_crtc->mutex, mtk_crtc->ddp_comp[i]->id); > > mtk_disp_mutex_enable(mtk_crtc->mutex); > > > > + /* Initially configure all planes */ > > + for (i = 0; i < mtk_crtc->layer_nr; i++) { > > + struct drm_plane *plane = &mtk_crtc->planes[i]; > > + struct mtk_plane_state *plane_state; > > + struct mtk_ddp_comp *comp; > > + unsigned int local_layer; > > + > > + plane_state = to_mtk_plane_state(plane->state); > > + comp = mtk_drm_ddp_comp_for_plane(crtc, plane, &local_layer); > > + if (comp) > > + mtk_ddp_comp_layer_config(comp, local_layer, > > + plane_state, NULL); > > + } > > + > > for (i = 0; i < mtk_crtc->ddp_comp_nr; i++) { > > struct mtk_ddp_comp *comp = mtk_crtc->ddp_comp[i]; > > enum mtk_ddp_comp_id prev; > > @@ -385,20 +399,6 @@ static int mtk_crtc_ddp_hw_init(struct mtk_drm_crtc *mtk_crtc) > > mtk_ddp_comp_start(comp); > > } > > > > - /* Initially configure all planes */ > > - for (i = 0; i < mtk_crtc->layer_nr; i++) { > > - struct drm_plane *plane = &mtk_crtc->planes[i]; > > - struct mtk_plane_state *plane_state; > > - struct mtk_ddp_comp *comp; > > - unsigned int local_layer; > > - > > - plane_state = to_mtk_plane_state(plane->state); > > - comp = mtk_drm_ddp_comp_for_plane(crtc, plane, &local_layer); > > - if (comp) > > - mtk_ddp_comp_layer_config(comp, local_layer, > > - plane_state, NULL); > > - } > > - > > return 0; > > > > err_mutex_unprepare: > > @@ -607,10 +607,21 @@ static void mtk_drm_crtc_atomic_disable(struct drm_crtc *crtc, > > for (i = 0; i < mtk_crtc->layer_nr; i++) { > > struct drm_plane *plane = &mtk_crtc->planes[i]; > > struct mtk_plane_state *plane_state; > > + struct mtk_ddp_comp *comp = mtk_crtc->ddp_comp[0]; > > + unsigned int comp_layer_nr = mtk_ddp_comp_layer_nr(comp); > > + unsigned int local_layer; > > > > plane_state = to_mtk_plane_state(plane->state); > > plane_state->pending.enable = false; > > plane_state->pending.config = true; > > + > > + if (i >= comp_layer_nr) { > > + comp = mtk_crtc->ddp_comp[1]; > > + local_layer = i - comp_layer_nr; > > + } else > > + local_layer = i; > > + mtk_ddp_comp_layer_config(comp, local_layer, > > + plane_state, NULL); > This part should be moved to mtk_crtc_ddp_hw_fini(), or at least > called after drm_crtc_vblank_off(). Otherwise we would see > drm_wait_one_vblank warnings on 8173 when display turns off. > > [ 25.696182] Call trace: > [ 25.698624] drm_wait_one_vblank+0x1f0/0x1fc > [ 25.702886] drm_crtc_wait_one_vblank+0x20/0x2c > [ 25.707415] mtk_drm_crtc_atomic_disable+0xf0/0x308 > [ 25.712287] drm_atomic_helper_commit_modeset_disables+0x1b8/0x3c0 > [ 25.718461] mtk_atomic_complete+0x88/0x16c > [ 25.722638] mtk_atomic_commit+0xa8/0xb0 > [ 25.726553] drm_atomic_commit+0x50/0x5c > [ 25.730469] drm_atomic_helper_set_config+0x98/0xa0 > [ 25.735341] drm_mode_setcrtc+0x280/0x608 > [ 25.739344] drm_ioctl_kernel+0xcc/0x10c > [ 25.743261] drm_ioctl+0x240/0x3c0 > [ 25.746658] drm_compat_ioctl+0xd8/0xe8 > [ 25.750487] __se_compat_sys_ioctl+0x100/0x26fc > [ 25.755009] __arm64_compat_sys_ioctl+0x20/0x2c > [ 25.759534] el0_svc_common+0xa4/0x154 > [ 25.763277] el0_svc_compat_handler+0x2c/0x38 > [ 25.767628] el0_svc_compat+0x8/0x18 > [ 25.771195] ---[ end trace f4619fdac8f1c0ff ]--- > > > please double confirm is this dump stack log is ruining on MT8173 real IC or not. if yes, that may caused ovl hang when disable layer not in blanking, then cause vblank time out. i will disable overlay with cmdq in next version. > > _______________________________________________ > Linux-mediatek mailing list > Linux-mediatek@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-mediatek _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel