From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752968AbdASOSA (ORCPT ); Thu, 19 Jan 2017 09:18:00 -0500 Received: from mailout1.w1.samsung.com ([210.118.77.11]:43413 "EHLO mailout1.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753079AbdASORU (ORCPT ); Thu, 19 Jan 2017 09:17:20 -0500 X-AuditID: cbfec7f1-f793f6d000007796-c0-5880ca6bb265 Subject: Re: [PATCH 2/2] [media] exynos-gsc: Fix imprecise external abort due disabled power domain To: Javier Martinez Canillas , linux-kernel@vger.kernel.org Cc: Inki Dae , Andi Shyti , Shuah Khan , Mauro Carvalho Chehab , Kukjin Kim , linux-samsung-soc@vger.kernel.org, Sylwester Nawrocki , linux-media@vger.kernel.org, Krzysztof Kozlowski , linux-arm-kernel@lists.infradead.org, Ulf Hansson From: Marek Szyprowski Message-id: Date: Thu, 19 Jan 2017 15:17:13 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-version: 1.0 In-reply-to: <1484699402-28738-2-git-send-email-javier@osg.samsung.com> Content-type: text/plain; charset=utf-8; format=flowed Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrLKsWRmVeSWpSXmKPExsWy7djP87rZpxoiDNqOsFtsP/KM1WLS/Qks Fm/ermGy6H/8mtni/PkN7BabHl9jtbi8aw6bRc+GrawWM87vY7JYtukPk8XhN+2sFlO/fGCx OL423IHXY9OqTjaPO9f2sHlsXlLvsaX/LrtH35ZVjB6fN8kFsEVx2aSk5mSWpRbp2yVwZUxb 9YGx4JF4xfwfaQ2ME4W7GDk5JARMJO6fecUGYYtJXLi3Hsjm4hASWMoosfv/dUaQhJDAZ0aJ dxP9YRpmLOxngihaxihx8dZhVgjnOaPEvI/rmECqhAVSJWa9uMnexcjBISIQKrFhny1IDbPA UmaJ37NvgE1lEzCU6HrbBbaaV8BO4tqCl2BxFgFViaft88HmiArESDSc+skOUSMo8WPyPRYQ m1PAXeL63oVgNrOAlcSzf62sELa8xOY1b5lBlkkIXGOX+LfvKRPIERICshKbDjBDfOAisfBH MyOELSzx6vgWdghbRqKz4yAThN3PKNHUqg1hz2CUOPeWF8K2ljh8/CLULj6JSdumM0OM55Xo aBOCMD0k1mzJhDAdJbb9N4IE4XVGiQO7tCYwys9C8sssJPfPQnL/AkbmVYwiqaXFuempxUZ6 xYm5xaV56XrJ+bmbGIGJ6PS/4x93ML4/YXWIUYCDUYmHN+FYQ4QQa2JZcWXuIUYJDmYlEV7v I0Ah3pTEyqrUovz4otKc1OJDjNIcLErivHsWXAkXEkhPLEnNTk0tSC2CyTJxcEo1MIZm/urc 77Xp1KRkm4bJPGunzpBRDXF3aIv3kLx0lPeGrefrHKvm18ISPotbzE4/3fNm5uaCcqtzQfYr 598We13/THxNWrgUd5aq2pZ/t6szgn5eqQy5vivm5NOCink2PIEzanxfin19tnhH06G15/Zt nmS+pOHrCnHv2sf/IvstnxR+E7t94J0SS3FGoqEWc1FxIgD46qhFQAMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrMIsWRmVeSWpSXmKPExsVy+t/xy7pLTzVEGKzo4rXYfuQZq8Wk+xNY LN68XcNk0f/4NbPF+fMb2C02Pb7GanF51xw2i54NW1ktZpzfx2SxbNMfJovDb9pZLaZ++cBi cXxtuAOvx6ZVnWwed67tYfPYvKTeY0v/XXaPvi2rGD0+b5ILYItys8lITUxJLVJIzUvOT8nM S7dVCg1x07VQUshLzE21VYrQ9Q0JUlIoS8wpBfKMDNCAg3OAe7CSvl2CW8a0VR8YCx6JV8z/ kdbAOFG4i5GTQ0LARGLGwn4mCFtM4sK99WxdjFwcQgJLGCW+r/sA5TxnlPjy8QILSJWwQKrE 11lN7CC2iECoxL+Ltxkhiq4zStz4eZIFxGEWWMos8e7ZalaQKjYBQ4mut11sIDavgJ3EtQUv GUFsFgFViaft88F2iwrESLxdv5wdokZQ4sfke2DbOAXcJa7vXQhmMwuYSXx5eZgVwpaX2Lzm LfMERoFZSFpmISmbhaRsASPzKkaR1NLi3PTcYkO94sTc4tK8dL3k/NxNjMAI3Xbs5+YdjJc2 Bh9iFOBgVOLhTTjWECHEmlhWXJl7iFGCg1lJhNf7CFCINyWxsiq1KD++qDQntfgQoynQExOZ pUST84HJI68k3tDE0NzS0MjYwsLcyEhJnLfkw5VwIYH0xJLU7NTUgtQimD4mDk6pBsa22Yyy noxXObP7suSbOuQ+HVmqtOBoqG7zoR+z7jZKFlyzKr3ewPMy7mhTfojtGZ4/chnWJ+6Ui8/k ZtVemdapdoPlUMn0gKuPfrEnNDTKHJXVmrLn9d97Jt7CWn+unE5+er7xVq+4mNWWgMur5zyd Ops5yGZJXG7dF+nDR8QjP7IWrhZcGKHEUpyRaKjFXFScCABY3m9/5gIAAA== X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170119141714eucas1p1f9735c6c71d7cbca4f2077044e0fe446 X-Msg-Generator: CA X-Sender-IP: 182.198.249.179 X-Local-Sender: =?UTF-8?B?TWFyZWsgU3p5cHJvd3NraRtTUlBPTC1LZXJuZWwgKFRQKRs=?= =?UTF-8?B?7IK87ISx7KCE7J6QG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Global-Sender: =?UTF-8?B?TWFyZWsgU3p5cHJvd3NraRtTUlBPTC1LZXJuZWwgKFRQKRtT?= =?UTF-8?B?YW1zdW5nIEVsZWN0cm9uaWNzG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Sender-Code: =?UTF-8?B?QzEwG0VIURtDMTBDRDAyQ0QwMjczOTI=?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20170118003022epcas3p34cf03bb6feb830c4fa231497f2536d0e X-RootMTR: 20170118003022epcas3p34cf03bb6feb830c4fa231497f2536d0e References: <1484699402-28738-1-git-send-email-javier@osg.samsung.com> <1484699402-28738-2-git-send-email-javier@osg.samsung.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Javier, On 2017-01-18 01:30, Javier Martinez Canillas wrote: > Commit 15f90ab57acc ("[media] exynos-gsc: Make driver functional when > CONFIG_PM is unset") removed the implicit dependency that the driver > had with CONFIG_PM, since it relied on the config option to be enabled. > > In order to work with !CONFIG_PM, the GSC reset logic that happens in > the runtime resume callback had to be executed on the probe function. > > The problem is that if CONFIG_PM is enabled, the power domain for the > GSC could be disabled and so an attempt to write to the GSC_SW_RESET > register leads to an unhandled fault / imprecise external abort error: Driver core ensures that driver's probe() is called with respective power domain turned on, so this is not the right reason for the proposed change. > [ 10.178825] Unhandled fault: imprecise external abort (0x1406) at 0x00000000 > [ 10.186982] pgd = ed728000 > [ 10.190847] [00000000] *pgd=00000000 > [ 10.195553] Internal error: : 1406 [#1] PREEMPT SMP ARM > [ 10.229761] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree) > [ 10.237134] task: ed49e400 task.stack: ed724000 > [ 10.242934] PC is at gsc_wait_reset+0x5c/0x6c [exynos_gsc] > [ 10.249710] LR is at gsc_probe+0x300/0x33c [exynos_gsc] > [ 10.256139] pc : [] lr : [] psr: 60070013 > [ 10.256139] sp : ed725d30 ip : 00000000 fp : 00000001 > [ 10.271492] r10: eea74800 r9 : ecd6a2c0 r8 : ed7d8854 > [ 10.277912] r7 : ed7d8c08 r6 : ed7d8810 r5 : ffff8ecd r4 : c0c03900 > [ 10.285664] r3 : 00000000 r2 : 00000001 r1 : ed7d8b98 r0 : ed7d8810 > > So only do a GSC reset if CONFIG_PM is disabled, since if is enabled the > runtime PM resume callback will be called by the VIDIOC_STREAMON ioctl, > making the reset in probe unneeded. > > Fixes: 15f90ab57acc ("[media] exynos-gsc: Make driver functional when CONFIG_PM is unset") > Signed-off-by: Javier Martinez Canillas Frankly, I don't get why this change is needed. > > --- > > I-ve only tested with CONFIG_PM enabled since my Exynos5422 Odroid > XU4 board fails to boot when the config option is disabled. > > Best regards, > Javier > > drivers/media/platform/exynos-gsc/gsc-core.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/platform/exynos-gsc/gsc-core.c b/drivers/media/platform/exynos-gsc/gsc-core.c > index 83272f10722d..42e1e09ea915 100644 > --- a/drivers/media/platform/exynos-gsc/gsc-core.c > +++ b/drivers/media/platform/exynos-gsc/gsc-core.c > @@ -1083,8 +1083,10 @@ static int gsc_probe(struct platform_device *pdev) > > platform_set_drvdata(pdev, gsc); > > - gsc_hw_set_sw_reset(gsc); > - gsc_wait_reset(gsc); > + if (!IS_ENABLED(CONFIG_PM)) { > + gsc_hw_set_sw_reset(gsc); > + gsc_wait_reset(gsc); > + } > > vb2_dma_contig_set_max_seg_size(dev, DMA_BIT_MASK(32)); > Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marek Szyprowski Subject: Re: [PATCH 2/2] [media] exynos-gsc: Fix imprecise external abort due disabled power domain Date: Thu, 19 Jan 2017 15:17:13 +0100 Message-ID: References: <1484699402-28738-1-git-send-email-javier@osg.samsung.com> <1484699402-28738-2-git-send-email-javier@osg.samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: In-reply-to: <1484699402-28738-2-git-send-email-javier@osg.samsung.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Javier Martinez Canillas , linux-kernel@vger.kernel.org Cc: Ulf Hansson , linux-samsung-soc@vger.kernel.org, Shuah Khan , Andi Shyti , Inki Dae , Kukjin Kim , Krzysztof Kozlowski , Sylwester Nawrocki , Mauro Carvalho Chehab , linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org List-Id: linux-samsung-soc@vger.kernel.org Hi Javier, On 2017-01-18 01:30, Javier Martinez Canillas wrote: > Commit 15f90ab57acc ("[media] exynos-gsc: Make driver functional when > CONFIG_PM is unset") removed the implicit dependency that the driver > had with CONFIG_PM, since it relied on the config option to be enabled. > > In order to work with !CONFIG_PM, the GSC reset logic that happens in > the runtime resume callback had to be executed on the probe function. > > The problem is that if CONFIG_PM is enabled, the power domain for the > GSC could be disabled and so an attempt to write to the GSC_SW_RESET > register leads to an unhandled fault / imprecise external abort error: Driver core ensures that driver's probe() is called with respective power domain turned on, so this is not the right reason for the proposed change. > [ 10.178825] Unhandled fault: imprecise external abort (0x1406) at 0x00000000 > [ 10.186982] pgd = ed728000 > [ 10.190847] [00000000] *pgd=00000000 > [ 10.195553] Internal error: : 1406 [#1] PREEMPT SMP ARM > [ 10.229761] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree) > [ 10.237134] task: ed49e400 task.stack: ed724000 > [ 10.242934] PC is at gsc_wait_reset+0x5c/0x6c [exynos_gsc] > [ 10.249710] LR is at gsc_probe+0x300/0x33c [exynos_gsc] > [ 10.256139] pc : [] lr : [] psr: 60070013 > [ 10.256139] sp : ed725d30 ip : 00000000 fp : 00000001 > [ 10.271492] r10: eea74800 r9 : ecd6a2c0 r8 : ed7d8854 > [ 10.277912] r7 : ed7d8c08 r6 : ed7d8810 r5 : ffff8ecd r4 : c0c03900 > [ 10.285664] r3 : 00000000 r2 : 00000001 r1 : ed7d8b98 r0 : ed7d8810 > > So only do a GSC reset if CONFIG_PM is disabled, since if is enabled the > runtime PM resume callback will be called by the VIDIOC_STREAMON ioctl, > making the reset in probe unneeded. > > Fixes: 15f90ab57acc ("[media] exynos-gsc: Make driver functional when CONFIG_PM is unset") > Signed-off-by: Javier Martinez Canillas Frankly, I don't get why this change is needed. > > --- > > I-ve only tested with CONFIG_PM enabled since my Exynos5422 Odroid > XU4 board fails to boot when the config option is disabled. > > Best regards, > Javier > > drivers/media/platform/exynos-gsc/gsc-core.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/platform/exynos-gsc/gsc-core.c b/drivers/media/platform/exynos-gsc/gsc-core.c > index 83272f10722d..42e1e09ea915 100644 > --- a/drivers/media/platform/exynos-gsc/gsc-core.c > +++ b/drivers/media/platform/exynos-gsc/gsc-core.c > @@ -1083,8 +1083,10 @@ static int gsc_probe(struct platform_device *pdev) > > platform_set_drvdata(pdev, gsc); > > - gsc_hw_set_sw_reset(gsc); > - gsc_wait_reset(gsc); > + if (!IS_ENABLED(CONFIG_PM)) { > + gsc_hw_set_sw_reset(gsc); > + gsc_wait_reset(gsc); > + } > > vb2_dma_contig_set_max_seg_size(dev, DMA_BIT_MASK(32)); > Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland From mboxrd@z Thu Jan 1 00:00:00 1970 From: m.szyprowski@samsung.com (Marek Szyprowski) Date: Thu, 19 Jan 2017 15:17:13 +0100 Subject: [PATCH 2/2] [media] exynos-gsc: Fix imprecise external abort due disabled power domain In-Reply-To: <1484699402-28738-2-git-send-email-javier@osg.samsung.com> References: <1484699402-28738-1-git-send-email-javier@osg.samsung.com> <1484699402-28738-2-git-send-email-javier@osg.samsung.com> Message-ID: To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Javier, On 2017-01-18 01:30, Javier Martinez Canillas wrote: > Commit 15f90ab57acc ("[media] exynos-gsc: Make driver functional when > CONFIG_PM is unset") removed the implicit dependency that the driver > had with CONFIG_PM, since it relied on the config option to be enabled. > > In order to work with !CONFIG_PM, the GSC reset logic that happens in > the runtime resume callback had to be executed on the probe function. > > The problem is that if CONFIG_PM is enabled, the power domain for the > GSC could be disabled and so an attempt to write to the GSC_SW_RESET > register leads to an unhandled fault / imprecise external abort error: Driver core ensures that driver's probe() is called with respective power domain turned on, so this is not the right reason for the proposed change. > [ 10.178825] Unhandled fault: imprecise external abort (0x1406) at 0x00000000 > [ 10.186982] pgd = ed728000 > [ 10.190847] [00000000] *pgd=00000000 > [ 10.195553] Internal error: : 1406 [#1] PREEMPT SMP ARM > [ 10.229761] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree) > [ 10.237134] task: ed49e400 task.stack: ed724000 > [ 10.242934] PC is at gsc_wait_reset+0x5c/0x6c [exynos_gsc] > [ 10.249710] LR is at gsc_probe+0x300/0x33c [exynos_gsc] > [ 10.256139] pc : [] lr : [] psr: 60070013 > [ 10.256139] sp : ed725d30 ip : 00000000 fp : 00000001 > [ 10.271492] r10: eea74800 r9 : ecd6a2c0 r8 : ed7d8854 > [ 10.277912] r7 : ed7d8c08 r6 : ed7d8810 r5 : ffff8ecd r4 : c0c03900 > [ 10.285664] r3 : 00000000 r2 : 00000001 r1 : ed7d8b98 r0 : ed7d8810 > > So only do a GSC reset if CONFIG_PM is disabled, since if is enabled the > runtime PM resume callback will be called by the VIDIOC_STREAMON ioctl, > making the reset in probe unneeded. > > Fixes: 15f90ab57acc ("[media] exynos-gsc: Make driver functional when CONFIG_PM is unset") > Signed-off-by: Javier Martinez Canillas Frankly, I don't get why this change is needed. > > --- > > I-ve only tested with CONFIG_PM enabled since my Exynos5422 Odroid > XU4 board fails to boot when the config option is disabled. > > Best regards, > Javier > > drivers/media/platform/exynos-gsc/gsc-core.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/platform/exynos-gsc/gsc-core.c b/drivers/media/platform/exynos-gsc/gsc-core.c > index 83272f10722d..42e1e09ea915 100644 > --- a/drivers/media/platform/exynos-gsc/gsc-core.c > +++ b/drivers/media/platform/exynos-gsc/gsc-core.c > @@ -1083,8 +1083,10 @@ static int gsc_probe(struct platform_device *pdev) > > platform_set_drvdata(pdev, gsc); > > - gsc_hw_set_sw_reset(gsc); > - gsc_wait_reset(gsc); > + if (!IS_ENABLED(CONFIG_PM)) { > + gsc_hw_set_sw_reset(gsc); > + gsc_wait_reset(gsc); > + } > > vb2_dma_contig_set_max_seg_size(dev, DMA_BIT_MASK(32)); > Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland