From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751636AbdATIh4 (ORCPT ); Fri, 20 Jan 2017 03:37:56 -0500 Received: from mailout1.w1.samsung.com ([210.118.77.11]:63312 "EHLO mailout1.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751517AbdATIhx (ORCPT ); Fri, 20 Jan 2017 03:37:53 -0500 X-AuditID: cbfec7f5-f79d06d000004445-bf-5881cc5d5fe0 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: Fri, 20 Jan 2017 09:37:47 +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: Content-type: text/plain; charset=utf-8; format=flowed Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrAKsWRmVeSWpSXmKPExsWy7djPc7qxZxojDO6c1bfYfuQZq8Wk+xNY LN68XcNk0f/4NbPF+fMb2C02Pb7GanF51xw2i54NW1ktZpzfx2SxbNMfJovDb9pZLaZ++cBi cXxtuAOvx6ZVnWwed67tYfPYvKTeY0v/XXaPvi2rGD0+b5ILYIvisklJzcksSy3St0vgyrjx bRJrwSeNipd7HrA0MN6S62Lk5JAQMJF40NrCCmGLSVy4t56ti5GLQ0hgKaPEzJmz2SGcz4wS R7c9Z4HpWL55NyNEYhmjxI4Lb6GqnjNKbLnxgQ2kSlggVWLWi5tACQ4OEYFQiQ37bEFqmAWW Mkv8nn2DEaSGTcBQouttF1g9r4CdxJ95x9hBbBYBVYnHHbfAakQFYiQaTv1kh6gRlPgx+R7Y FZwCzhKfbrYzgdjMAlYSz/61skLY8hKb17xlBlkmIXCLXWLmivuMIEdICMhKbDrADPGBi8Sy x4uYIGxhiVfHt7BD2DISlyd3Q33ZzyjR1KoNYc9glDj3lhfCtpY4fPwi1C4+iUnbpjNDjOeV 6GgTgjA9JNZsyYQwHSW2/TeChM4/JonOlY1MExjlZyF5ZhaSB2YheWABI/MqRpHU0uLc9NRi U73ixNzi0rx0veT83E2MwHR0+t/xrzsYlx6zOsQowMGoxMO740RDhBBrYllxZe4hRgkOZiUR XrHjjRFCvCmJlVWpRfnxRaU5qcWHGKU5WJTEefcsuBIuJJCeWJKanZpakFoEk2Xi4JRqYIwO aO7jiY8xPOD/e/1BxTd7n7DeTf58q69tNkdm70kpxXV86bM82O+UPM6peS2fEKJRsSKp747a 20tCWzas5T/y6eYk01UM7BKdsvzRp9+dZJX0cdzmEO9SNntaYJiHr46pRnIA1+7TCxZFhh/P P5JeUluqLB4kxxB+Xqtg7oe9xUZZnVWtSizFGYmGWsxFxYkAkTQOdEMDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrCIsWRmVeSWpSXmKPExsVy+t/xq7oRZxojDKZuULfYfuQZq8Wk+xNY LN68XcNk0f/4NbPF+fMb2C02Pb7GanF51xw2i54NW1ktZpzfx2SxbNMfJovDb9pZLaZ++cBi cXxtuAOvx6ZVnWwed67tYfPYvKTeY0v/XXaPvi2rGD0+b5ILYItys8lITUxJLVJIzUvOT8nM S7dVCg1x07VQUshLzE21VYrQ9Q0JUlIoS8wpBfKMDNCAg3OAe7CSvl2CW8aNb5NYCz5pVLzc 84ClgfGWXBcjJ4eEgInE8s27GSFsMYkL99azdTFycQgJLGGUuHViJxOE85xRYkPjIrAqYYFU ia+zmthBbBGBUIl/F28zQhT9Y5K4uPYZC4jDLLCUWeLds9WsIFVsAoYSXW+72EBsXgE7iT/z joF1swioSjzuuAU2VVQgRuLt+uXsEDWCEj8m32MBsTkFnCU+3WxnArGZBcwkvrw8zAphy0ts XvOWeQKjwCwkLbOQlM1CUraAkXkVo0hqaXFuem6xkV5xYm5xaV66XnJ+7iZGYIxuO/Zzyw7G rnfBhxgFOBiVeHh3nGiIEGJNLCuuzD3EKMHBrCTCe+R0Y4QQb0piZVVqUX58UWlOavEhRlOg JyYyS4km5wPTR15JvKGJobmloZGxhYW5kZGSOO/UD1fChQTSE0tSs1NTC1KLYPqYODilGhgV pzA9/c4609Kt9cuylSq73K5O964LOqn4Z8FaDs34m8t1uB4EOKRPNTGfdPpKZHftNCbJP9MU 96/U//Xo98vG3bxGWk9Sk6vUH+aVnNwxr/Vw0NtLhtorz9TeSNv6yHoy/8N7ghdPX/cxz2n8 dm4Ox/Ta6RVyb3XFP3UEcHr+vjntW/EZd50cJZbijERDLeai4kQAhEzxaecCAAA= X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170120083749eucas1p210ae317b2e94938afbe947131d99c949 X-Msg-Generator: CA X-Sender-IP: 182.198.249.180 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> <842737f2-3faf-7b22-c480-93e183bbb670@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-19 18:51, Javier Martinez Canillas wrote: > On 01/19/2017 11:56 AM, Javier Martinez Canillas wrote: >> On 01/19/2017 11:17 AM, Marek Szyprowski wrote: > [snip] > >> Also when removing the exynos_gsc driver, I get the same error: >> >> # rmmod s5p_mfc >> [ 106.405972] s5p-mfc 11000000.codec: Removing 11000000.codec >> # rmmod exynos_gsc >> [ 227.008559] Unhandled fault: imprecise external abort (0x1c06) at 0x00048e14 >> [ 227.015116] pgd = ed5dc000 >> [ 227.017213] [00048e14] *pgd=b17c6835 >> [ 227.020889] Internal error: : 1c06 [#1] PREEMPT SMP ARM >> ... >> [ 227.241585] [] (gsc_wait_reset [exynos_gsc]) from [] (gsc_runtime_resume+0x9c/0xec [exynos_gsc]) >> [ 227.252331] [] (gsc_runtime_resume [exynos_gsc]) from [] (genpd_runtime_resume+0x120/0x1d4) >> [ 227.262294] [] (genpd_runtime_resume) from [] (__rpm_callback+0xc8/0x218) >> >> # cat /sys/kernel/debug/pm_genpd/pm_genpd_summary >> domain status slaves >> /device runtime status >> ---------------------------------------------------------------------- >> power-domain@100440C0 on >> /devices/platform/soc/14450000.mixer active >> /devices/platform/soc/14530000.hdmi active >> power-domain@10044120 on >> power-domain@10044060 off-0 >> power-domain@10044020 on >> power-domain@10044000 on >> /devices/platform/soc/13e00000.video-scaler suspended >> /devices/platform/soc/13e10000.video-scaler resuming >> >> This seems to be caused by some needed clocks to access the power domains >> to be gated, since I don't get these erros when passing clk_ignore_unused >> as parameter in the kernel command line. >> > I found the issue. The problem was that Exynos5422 needs not only the > CLK_ACLK_ 300_GSCL but also CLK_ACLK432_SCALER to be ungated in order > to access the GSCL IP block. > > The Exynos5422 manual shows in Figure 7-14 that ACLK_432_SCLAER is needed > for the internal buses. > > Exynos5420 only needs CLK_ACLK_ 300_GSCL to be ungated. > > With following hack, the issue goes away for the gsc_pd in the Odroid XU4: > > diff --git a/drivers/clk/samsung/clk-exynos5420.c b/drivers/clk/samsung/clk-exynos5420.c > index 8c8b495cbf0d..9876ec28b94c 100644 > --- a/drivers/clk/samsung/clk-exynos5420.c > +++ b/drivers/clk/samsung/clk-exynos5420.c > @@ -586,7 +586,7 @@ static const struct samsung_gate_clock exynos5800_gate_clks[] __initconst = { > GATE(CLK_ACLK550_CAM, "aclk550_cam", "mout_user_aclk550_cam", > GATE_BUS_TOP, 24, 0, 0), > GATE(CLK_ACLK432_SCALER, "aclk432_scaler", "mout_user_aclk432_scaler", > - GATE_BUS_TOP, 27, 0, 0), > + GATE_BUS_TOP, 27, CLK_IS_CRITICAL, 0), > }; > > # cat /sys/kernel/debug/pm_genpd/pm_genpd_summary > domain status slaves > /device runtime status > ---------------------------------------------------------------------- > power-domain@100440C0 on > /devices/platform/soc/14450000.mixer active > /devices/platform/soc/14530000.hdmi active > power-domain@10044120 on > power-domain@10044060 off-0 > /devices/platform/soc/11000000.codec suspended > power-domain@10044020 on > power-domain@10044000 off-0 > /devices/platform/soc/13e00000.video-scaler suspended > /devices/platform/soc/13e10000.video-scaler suspended > > # rmmod s5p_mfc > [ 82.885227] s5p-mfc 11000000.codec: Removing 11000000.codec > # rmmod exynos_gsc > > # cat /sys/kernel/debug/pm_genpd/pm_genpd_summary > domain status slaves > /device runtime status > ---------------------------------------------------------------------- > power-domain@100440C0 on > /devices/platform/soc/14450000.mixer active > /devices/platform/soc/14530000.hdmi active > power-domain@10044120 on > power-domain@10044060 off-0 > power-domain@10044020 on > power-domain@10044000 off-0 > > I'll post a proper patch for the exynos5800.dtsi, to override the > clocks in the gsc_pd device node. > > I also see that the two power domains that fail to be disabled msc_pd > (power-domain@10044120) and isp_pd (power-domain@10044020) don't have > clocks defined in the exynos54xx.dtsi. I'll add clocks for those too. Please send this patch instead of adding more clocks to the power domains. This way we will avoid adding more dependencies to userspace (DT ABI). Likely those clocks are also needed to access any device in that power domains. Later, once the runtime PM for clocks get merged, a patch for exynos542x clocks driver can be made to replace IS_CRITICAL with proper runtime handling. 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: Fri, 20 Jan 2017 09:37:47 +0100 Subject: [PATCH 2/2] [media] exynos-gsc: Fix imprecise external abort due disabled power domain In-Reply-To: References: <1484699402-28738-1-git-send-email-javier@osg.samsung.com> <1484699402-28738-2-git-send-email-javier@osg.samsung.com> <842737f2-3faf-7b22-c480-93e183bbb670@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-19 18:51, Javier Martinez Canillas wrote: > On 01/19/2017 11:56 AM, Javier Martinez Canillas wrote: >> On 01/19/2017 11:17 AM, Marek Szyprowski wrote: > [snip] > >> Also when removing the exynos_gsc driver, I get the same error: >> >> # rmmod s5p_mfc >> [ 106.405972] s5p-mfc 11000000.codec: Removing 11000000.codec >> # rmmod exynos_gsc >> [ 227.008559] Unhandled fault: imprecise external abort (0x1c06) at 0x00048e14 >> [ 227.015116] pgd = ed5dc000 >> [ 227.017213] [00048e14] *pgd=b17c6835 >> [ 227.020889] Internal error: : 1c06 [#1] PREEMPT SMP ARM >> ... >> [ 227.241585] [] (gsc_wait_reset [exynos_gsc]) from [] (gsc_runtime_resume+0x9c/0xec [exynos_gsc]) >> [ 227.252331] [] (gsc_runtime_resume [exynos_gsc]) from [] (genpd_runtime_resume+0x120/0x1d4) >> [ 227.262294] [] (genpd_runtime_resume) from [] (__rpm_callback+0xc8/0x218) >> >> # cat /sys/kernel/debug/pm_genpd/pm_genpd_summary >> domain status slaves >> /device runtime status >> ---------------------------------------------------------------------- >> power-domain at 100440C0 on >> /devices/platform/soc/14450000.mixer active >> /devices/platform/soc/14530000.hdmi active >> power-domain at 10044120 on >> power-domain at 10044060 off-0 >> power-domain at 10044020 on >> power-domain at 10044000 on >> /devices/platform/soc/13e00000.video-scaler suspended >> /devices/platform/soc/13e10000.video-scaler resuming >> >> This seems to be caused by some needed clocks to access the power domains >> to be gated, since I don't get these erros when passing clk_ignore_unused >> as parameter in the kernel command line. >> > I found the issue. The problem was that Exynos5422 needs not only the > CLK_ACLK_ 300_GSCL but also CLK_ACLK432_SCALER to be ungated in order > to access the GSCL IP block. > > The Exynos5422 manual shows in Figure 7-14 that ACLK_432_SCLAER is needed > for the internal buses. > > Exynos5420 only needs CLK_ACLK_ 300_GSCL to be ungated. > > With following hack, the issue goes away for the gsc_pd in the Odroid XU4: > > diff --git a/drivers/clk/samsung/clk-exynos5420.c b/drivers/clk/samsung/clk-exynos5420.c > index 8c8b495cbf0d..9876ec28b94c 100644 > --- a/drivers/clk/samsung/clk-exynos5420.c > +++ b/drivers/clk/samsung/clk-exynos5420.c > @@ -586,7 +586,7 @@ static const struct samsung_gate_clock exynos5800_gate_clks[] __initconst = { > GATE(CLK_ACLK550_CAM, "aclk550_cam", "mout_user_aclk550_cam", > GATE_BUS_TOP, 24, 0, 0), > GATE(CLK_ACLK432_SCALER, "aclk432_scaler", "mout_user_aclk432_scaler", > - GATE_BUS_TOP, 27, 0, 0), > + GATE_BUS_TOP, 27, CLK_IS_CRITICAL, 0), > }; > > # cat /sys/kernel/debug/pm_genpd/pm_genpd_summary > domain status slaves > /device runtime status > ---------------------------------------------------------------------- > power-domain at 100440C0 on > /devices/platform/soc/14450000.mixer active > /devices/platform/soc/14530000.hdmi active > power-domain at 10044120 on > power-domain at 10044060 off-0 > /devices/platform/soc/11000000.codec suspended > power-domain at 10044020 on > power-domain at 10044000 off-0 > /devices/platform/soc/13e00000.video-scaler suspended > /devices/platform/soc/13e10000.video-scaler suspended > > # rmmod s5p_mfc > [ 82.885227] s5p-mfc 11000000.codec: Removing 11000000.codec > # rmmod exynos_gsc > > # cat /sys/kernel/debug/pm_genpd/pm_genpd_summary > domain status slaves > /device runtime status > ---------------------------------------------------------------------- > power-domain at 100440C0 on > /devices/platform/soc/14450000.mixer active > /devices/platform/soc/14530000.hdmi active > power-domain at 10044120 on > power-domain at 10044060 off-0 > power-domain at 10044020 on > power-domain at 10044000 off-0 > > I'll post a proper patch for the exynos5800.dtsi, to override the > clocks in the gsc_pd device node. > > I also see that the two power domains that fail to be disabled msc_pd > (power-domain at 10044120) and isp_pd (power-domain at 10044020) don't have > clocks defined in the exynos54xx.dtsi. I'll add clocks for those too. Please send this patch instead of adding more clocks to the power domains. This way we will avoid adding more dependencies to userspace (DT ABI). Likely those clocks are also needed to access any device in that power domains. Later, once the runtime PM for clocks get merged, a patch for exynos542x clocks driver can be made to replace IS_CRITICAL with proper runtime handling. Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland