From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755660AbcIRBuv (ORCPT ); Sat, 17 Sep 2016 21:50:51 -0400 Received: from regular1.263xmail.com ([211.150.99.137]:58284 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755050AbcIRBuu (ORCPT ); Sat, 17 Sep 2016 21:50:50 -0400 X-263anti-spam: KSV:0;BIG:0;ABS:1;DNS:0;ATT:0;SPF:S; X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-KSVirus-check: 0 X-ABS-CHECKED: 1 X-SKE-CHECKED: 1 X-ADDR-CHECKED4: 1 X-RL-SENDER: mark.yao@rock-chips.com X-FST-TO: djkurtz@chromium.org X-SENDER-IP: 103.29.142.67 X-LOGIN-NAME: mark.yao@rock-chips.com X-UNIQUE-TAG: <4b70aba02c9483809d7a9741dc28a390> X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 Subject: Re: [PATCH 2/8] drm/rockchip: Get rid of some unnecessary code To: Tomasz Figa , dri-devel@lists.freedesktop.org References: <1473857701-9250-1-git-send-email-tfiga@chromium.org> <1473857701-9250-3-git-send-email-tfiga@chromium.org> Cc: linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Heiko Stuebner , David Airlie , Sean Paul , Daniel Kurtz From: Mark yao Message-ID: <57DDF2EE.5060807@rock-chips.com> Date: Sun, 18 Sep 2016 09:50:38 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: <1473857701-9250-3-git-send-email-tfiga@chromium.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2016年09月14日 20:54, Tomasz Figa wrote: > Current code implements prepare_fb and cleanup_fb callbacks only to > grab/release fb references, which is already done by atomic framework > when creating/destryoing plane state. Let's remove these > unused bits. > > Signed-off-by: Tomasz Figa > --- > drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 18 ------------------ > 1 file changed, 18 deletions(-) Hi Tomasz I think we can't get rid of the prepare_fb and cleanup_fb see the reason: commit 44d0237a26395ac94160cf23f32769013b365590 Author: Mark Yao Date: Fri Apr 29 11:37:20 2016 +0800 drm/rockchip: vop: fix iommu crash with async atomic After async atomic_commit callback, drm_atomic_clean_old_fb will clean all old fb, but because async, the old fb may be also on the vop hardware, dma will access the old fb buffer, clean old fb will cause iommu page fault. Reference the fb and unreference it when the fb actuall swap out from vop hardware. > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c > index 7e811cf..68988c6 100644 > --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c > @@ -641,22 +641,6 @@ static void vop_plane_destroy(struct drm_plane *plane) > drm_plane_cleanup(plane); > } > > -static int vop_plane_prepare_fb(struct drm_plane *plane, > - struct drm_plane_state *new_state) > -{ > - if (plane->state->fb) > - drm_framebuffer_reference(plane->state->fb); > - > - return 0; > -} > - > -static void vop_plane_cleanup_fb(struct drm_plane *plane, > - struct drm_plane_state *old_state) > -{ > - if (old_state->fb) > - drm_framebuffer_unreference(old_state->fb); > -} > - > static int vop_plane_atomic_check(struct drm_plane *plane, > struct drm_plane_state *state) > { > @@ -849,8 +833,6 @@ static void vop_plane_atomic_update(struct drm_plane *plane, > } > > static const struct drm_plane_helper_funcs plane_helper_funcs = { > - .prepare_fb = vop_plane_prepare_fb, > - .cleanup_fb = vop_plane_cleanup_fb, > .atomic_check = vop_plane_atomic_check, > .atomic_update = vop_plane_atomic_update, > .atomic_disable = vop_plane_atomic_disable, -- Mark Yao