From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752396AbdF0JNM (ORCPT ); Tue, 27 Jun 2017 05:13:12 -0400 Received: from mailout4.samsung.com ([203.254.224.34]:61039 "EHLO mailout4.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751504AbdF0JNH (ORCPT ); Tue, 27 Jun 2017 05:13:07 -0400 X-AuditID: b6c32a2d-f79866d0000012d5-40-595221a081b6 MIME-version: 1.0 Content-transfer-encoding: 8BIT Content-type: text/plain; charset="utf-8" Message-id: <5952219F.1030902@samsung.com> Date: Tue, 27 Jun 2017 18:13:03 +0900 From: Inki Dae User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 To: Andrzej Hajda , Shuah Khan , sw0312.kim@samsung.com, kyungmin.park@samsung.com, airlied@linux.ie, kgene@kernel.org, krzk@kernel.org, javier@osg.samsung.com Cc: linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] drm: exynos: dsi: release DSI_PORT_OUT node right after of_drm_find_bridge() In-reply-to: <5d308e03-e92a-7bac-f65e-23c2ccbe161a@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrDJsWRmVeSWpSXmKPExsWy7bCmuu4CxaBIg/cT2SxurTvHatF77iST xZWv79ks3rxdw2TR//g1s8X58xvYLc42vWG32PT4GqvF5V1z2CxmnN/HZDH1ywcWixmTX7I5 8HhsWtXJ5rH92wNWj/vdx5k8Ni+p99jSf5fdo2/LKkaPz5vkAtijUm0yUhNTUosUUvOS81My 89JtlbyD453jTc0MDHUNLS3MlRTyEnNTbZVcfAJ03TJzgA5VUihLzCkFCgUkFhcr6dvZFOWX lqQqZOQXl9gqRRsaGukZGpjrGRkZ6ZkYx1oZmQKVJKRmvNv8naVgmlBF+/ezLA2Mr/i6GDk5 JARMJI7/OsUCYYtJXLi3nq2LkYtDSGApo8Tp69uZIJzPjBK/1v1ggen4ubOdBSKxg1Fi/dMN rCAJXgFBiR+T7wElODiYBeQljlzKBgkzC2hKvPgyCar+HqPE5o5LTBD1WhKnnh1gA7FZBFQl lrb0gS1gA7InrrgPFhcViJDYOf8bO0iziMBlRon3d66CTWIW6GGUWHbsLiNIlbBAssSUDw1g UzkF7CX+vj0CdreEwCl2ia4331lBTpIQkJXYdIAZ4gUXiRuX70K9Iyzx6vgWdghbSqK7YxY7 RG87o0TbzDOsEE4Lo8T/nitQHcYSp7oamSCe45Po/f2ECWIBr0RHmxBEiYfE4s8TocodJbo3 /WSF+P8Io8S29XeZJjDKz0IKslmIIJuFFGQLGJlXMYqlFhTnpqcWmxYY6RUn5haX5qXrJefn bmIEp1Qt3R2MXxZ4H2IU4GBU4uHtEA+KFGJNLCuuzD3EKMHBrCTC+5sZKMSbklhZlVqUH19U mpNafIjRFBjiE5mlRJPzgek+ryTe0MTSwMTUzNjA2NDCUkmcV33ltQghgfTEktTs1NSC1CKY PiYOTqkGxvoKh412MmK3VQpOv4vc83bb9OyFv3Z9Tfl8py09KivzYOPpeKFYwRPVqTkf3Hf2 JHqI/6yfXMNxnmGuU5Lpy0PfbqToGc+tksi4U7z6nqzVv3/+jYfdgvj5J98JnDKJ032t0leD T3ZLPKV/vkvK+Fohtmfl0dUKu2x3y8xIeJg756+EiEHmZiWW4oxEQy3mouJEAPb0626/AwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrOIsWRmVeSWpSXmKPExsVy+t9jAd35ikGRBkfmylrcWneO1aL33Ekm iytf37NZvHm7hsmi//FrZovz5zewW5xtesNusenxNVaLy7vmsFnMOL+PyWLqlw8sFjMmv2Rz 4PHYtKqTzWP7twesHve7jzN5bF5S77Gl/y67R9+WVYwenzfJBbBHudlkpCampBYppOYl56dk 5qXbKoWGuOlaKCnkJeam2ipF6PqGBCkplCXmlAJ5RgZowME5wD1YSd8uwS3j3ebvLAXThCra v59laWB8xdfFyMkhIWAi8XNnOwuELSZx4d56ti5GLg4hgW2MEn/6noEleAUEJX5Mvgdkc3Aw C8hLHLmUDWGqS0yZkgtR/oBR4uTZ/YwQ5VoSp54dYAOxWQRUJZa29IGNYQOyJ664zwbSKyoQ IdF9ohKkV0TgIqNE16NFTCAOs0APo8TLiSuYQBqEBZIlpnxoYILYcIxR4smiT6wgCU4Be4m/ b48wTWAUmIXkvlkI981CuG8BI/MqRq7UguLc9NxiowKjTYzASNx2WCtgB2PTuehDjAIcjEo8 vBWcQZFCrIllxZW5hxglOJiVRHh/MwOFeFMSK6tSi/Lji0pzUosPMZoCvTSRWUo0OR+YJPJK 4g1NLI1MDMzMDI0MjM2UxHknBH6JEBJITyxJzU5NLUgtgulj4uCUamAseTtp+w4+p6cc1yZ1 Nb9/fbPTYEH8HenGHfzJ25ttJ6R83fJVo0551kKN+8lPeLrX37587Jev1t9O6bvmYdZN/2LN dNh7266XRfgLMIXzvo/x+KXZ//FusJ5JVnzIKYU9Xecfrd/QFXjqUGNYdGL90tdz81yOs8tH 3a48+lFomeqpX1ZrclKUWIozEg21mIuKEwFD2+9S2gIAAA== X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170627091303epcas5p381bf49f5a68255e19cd4e2ec8e72f4d6 X-Msg-Generator: CA X-Sender-IP: 182.195.42.80 X-Local-Sender: =?UTF-8?B?64yA7J246riwG1RpemVuIFBsYXRmb3JtIExhYihTL1fshLw=?= =?UTF-8?B?7YSwKRvsgrzshLHsoITsnpAbU2VuaW9yIEVuZ2luZWVy?= X-Global-Sender: =?UTF-8?B?SW5raSBEYWUbVGl6ZW4gUGxhdGZvcm0gTGFiLhtTYW1zdW5n?= =?UTF-8?B?IEVsZWN0cm9uaWNzG1NlbmlvciBFbmdpbmVlcg==?= X-Sender-Code: =?UTF-8?B?QzEwG1RFTEUbQzEwVjgxMTE=?= CMS-TYPE: 105P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20170626004946epcas4p40785020666ae6d43476822d067604baa X-RootMTR: 20170626004946epcas4p40785020666ae6d43476822d067604baa References: <20170624005628.5896-1-shuahkh@osg.samsung.com> <5d308e03-e92a-7bac-f65e-23c2ccbe161a@samsung.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Andrzej, 2017년 06월 26일 16:02에 Andrzej Hajda 이(가) 쓴 글: > Hi Shuah, > > > On 24.06.2017 02:56, Shuah Khan wrote: >> Fix to call of_node_put() right after of_drm_find_bridge() instead of >> holding on to it until exynos_dsi_remove(). > > I think the current implementation is OK, node is get in probe and put > in remove. > There could be many bind/unbind during lifetime of the bound driver. > For example, there is possible sequence: > 1. probe - > 2. bind > 3. unbind > 4. bind > > With this patch on 2nd bind (point 4) driver will call > of_drm_find_bridge on dsi->bridge_node which was put earlier (point 2.). > Right. This is a problem. How about moving of_drm_find_bridge function call to probe and keeping drm_bridge_attach call in bind for cleanup? Seems it doesn't need to call of_drm_find_bridge function every time bind callback is called. Thanks, Inki Dae > Regards > Andrzej > > >> >> Suggested-by: Inki Dae >> Signed-off-by: Shuah Khan >> --- >> drivers/gpu/drm/exynos/exynos_drm_dsi.c | 5 +---- >> 1 file changed, 1 insertion(+), 4 deletions(-) >> >> diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c >> index e337cd2..7513b88 100644 >> --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c >> +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c >> @@ -1689,6 +1689,7 @@ static int exynos_dsi_bind(struct device *dev, struct device *master, >> >> if (dsi->bridge_node) { >> bridge = of_drm_find_bridge(dsi->bridge_node); >> + of_node_put(dsi->bridge_node); >> if (bridge) >> drm_bridge_attach(encoder, bridge, NULL); >> } >> @@ -1807,10 +1808,6 @@ static int exynos_dsi_probe(struct platform_device *pdev) >> >> static int exynos_dsi_remove(struct platform_device *pdev) >> { >> - struct exynos_dsi *dsi = platform_get_drvdata(pdev); >> - >> - of_node_put(dsi->bridge_node); >> - >> pm_runtime_disable(&pdev->dev); >> >> component_del(&pdev->dev, &exynos_dsi_component_ops); > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > > > From mboxrd@z Thu Jan 1 00:00:00 1970 From: inki.dae@samsung.com (Inki Dae) Date: Tue, 27 Jun 2017 18:13:03 +0900 Subject: [PATCH] drm: exynos: dsi: release DSI_PORT_OUT node right after of_drm_find_bridge() In-Reply-To: <5d308e03-e92a-7bac-f65e-23c2ccbe161a@samsung.com> References: <20170624005628.5896-1-shuahkh@osg.samsung.com> <5d308e03-e92a-7bac-f65e-23c2ccbe161a@samsung.com> Message-ID: <5952219F.1030902@samsung.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Andrzej, 2017? 06? 26? 16:02? Andrzej Hajda ?(?) ? ?: > Hi Shuah, > > > On 24.06.2017 02:56, Shuah Khan wrote: >> Fix to call of_node_put() right after of_drm_find_bridge() instead of >> holding on to it until exynos_dsi_remove(). > > I think the current implementation is OK, node is get in probe and put > in remove. > There could be many bind/unbind during lifetime of the bound driver. > For example, there is possible sequence: > 1. probe - > 2. bind > 3. unbind > 4. bind > > With this patch on 2nd bind (point 4) driver will call > of_drm_find_bridge on dsi->bridge_node which was put earlier (point 2.). > Right. This is a problem. How about moving of_drm_find_bridge function call to probe and keeping drm_bridge_attach call in bind for cleanup? Seems it doesn't need to call of_drm_find_bridge function every time bind callback is called. Thanks, Inki Dae > Regards > Andrzej > > >> >> Suggested-by: Inki Dae >> Signed-off-by: Shuah Khan >> --- >> drivers/gpu/drm/exynos/exynos_drm_dsi.c | 5 +---- >> 1 file changed, 1 insertion(+), 4 deletions(-) >> >> diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c >> index e337cd2..7513b88 100644 >> --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c >> +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c >> @@ -1689,6 +1689,7 @@ static int exynos_dsi_bind(struct device *dev, struct device *master, >> >> if (dsi->bridge_node) { >> bridge = of_drm_find_bridge(dsi->bridge_node); >> + of_node_put(dsi->bridge_node); >> if (bridge) >> drm_bridge_attach(encoder, bridge, NULL); >> } >> @@ -1807,10 +1808,6 @@ static int exynos_dsi_probe(struct platform_device *pdev) >> >> static int exynos_dsi_remove(struct platform_device *pdev) >> { >> - struct exynos_dsi *dsi = platform_get_drvdata(pdev); >> - >> - of_node_put(dsi->bridge_node); >> - >> pm_runtime_disable(&pdev->dev); >> >> component_del(&pdev->dev, &exynos_dsi_component_ops); > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in > the body of a message to majordomo at vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > > >