From patchwork Fri Oct 28 09:52:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Tretter X-Patchwork-Id: 13023325 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 41D06FA3741 for ; Fri, 28 Oct 2022 09:55:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=P8SE9b6BREu3ejE4dyUg4NiNjNPDsA6xlnxxHjpkjtg=; b=2bvLUTdj9sFoMM 9LFZObXYDyM+L1RO6fEWMrUNFPWFEjihPU6vh5yM5IFsxf6vbHf6QUCseT9bDAsgHm0EFTD5Yp+aG Cd/9KUgSyzhPO/H1PqFITFDa54Zuoks4ut+WP4CM7sopCb8hZXBxjlSIcouowPcw4Z66LsRTswSHd HYqd3pruo0Ne9rm9DimmuHo02nErP7otyA2i5/kREOt8CMkcOqPRIEGNZetkr9ylIkjMVRz056bXB uW7OqZa/ugvCrjZnUkkio5EGIhD9lJvHyodxV9t6+oKP5erIp669Z/lneGRI4p3QIFxsohcY/8ZvK XU2jzpLHFMPzzOL7kw9A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ooM3y-00GS71-9r; Fri, 28 Oct 2022 09:54:06 +0000 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ooM2J-00GRMy-BP for linux-arm-kernel@lists.infradead.org; Fri, 28 Oct 2022 09:52:25 +0000 Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ooM27-0005YU-0C; Fri, 28 Oct 2022 11:52:11 +0200 Received: from [2a0a:edc0:0:1101:1d::54] (helo=dude05.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1ooM24-000s2G-Al; Fri, 28 Oct 2022 11:52:07 +0200 Received: from mtr by dude05.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1ooM22-008xq9-NT; Fri, 28 Oct 2022 11:52:06 +0200 From: Michael Tretter To: dri-devel@lists.freedesktop.org Cc: linux-rockchip@lists.infradead.org, Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , kernel@pengutronix.de, Michael Riesch , linux-arm-kernel@lists.infradead.org, Chris Morgan , Sascha Hauer Subject: [PATCH 2/2] drm/rockchip: vop2: disable planes when disabling the crtc Date: Fri, 28 Oct 2022 11:52:06 +0200 Message-Id: <20221028095206.2136601-3-m.tretter@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20221028095206.2136601-1-m.tretter@pengutronix.de> References: <20221028095206.2136601-1-m.tretter@pengutronix.de> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: mtr@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-arm-kernel@lists.infradead.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221028_025223_412164_602DEBA2 X-CRM114-Status: GOOD ( 13.73 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The vop2 driver needs to explicitly disable the planes if the crtc is disabled. Unless the planes are explicitly disabled, the address of the last framebuffer is kept in the registers of the VOP2. When re-enabling the encoder after it has been disabled by the driver, the VOP2 will start and read the framebuffer that has been freed but is still pointed to by the register. The iommu will catch these read accesses and print errors. Explicitly disable the planes when the crtc is disabled to reset the registers. Signed-off-by: Michael Tretter --- drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c index 26f8a8489ded..105a548d0abe 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c @@ -877,10 +877,14 @@ static void vop2_crtc_atomic_disable(struct drm_crtc *crtc, { struct vop2_video_port *vp = to_vop2_video_port(crtc); struct vop2 *vop2 = vp->vop2; + struct drm_crtc_state *old_crtc_state; int ret; vop2_lock(vop2); + old_crtc_state = drm_atomic_get_old_crtc_state(state, crtc); + drm_atomic_helper_disable_planes_on_crtc(old_crtc_state, false); + drm_crtc_vblank_off(crtc); /*