From patchwork Thu Jan 19 17:51:02 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Javier Martinez Canillas X-Patchwork-Id: 9526571 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id AEB1C60113 for ; Thu, 19 Jan 2017 17:52:16 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A01CE284D5 for ; Thu, 19 Jan 2017 17:52:16 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 94D822853E; Thu, 19 Jan 2017 17:52:16 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.1 required=2.0 tests=BAYES_00,RDNS_NONE autolearn=no version=3.3.1 Received: from bombadil.infradead.org (unknown [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 27166284D5 for ; Thu, 19 Jan 2017 17:52:15 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1cUGsV-0006aK-Uu; Thu, 19 Jan 2017 17:52:03 +0000 Received: from ec2-52-27-115-49.us-west-2.compute.amazonaws.com ([52.27.115.49] helo=osg.samsung.com) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1cUGs6-0006Sa-RT for linux-arm-kernel@lists.infradead.org; Thu, 19 Jan 2017 17:51:40 +0000 Received: from localhost (localhost [127.0.0.1]) by osg.samsung.com (Postfix) with ESMTP id A3819A1314; Thu, 19 Jan 2017 17:51:31 +0000 (UTC) X-Virus-Scanned: amavisd-new at osg.samsung.com Received: from osg.samsung.com ([127.0.0.1]) by localhost (s-opensource.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id tEkF92VVnv7c; Thu, 19 Jan 2017 17:51:31 +0000 (UTC) Received: from [192.168.0.58] (unknown [181.121.136.80]) by osg.samsung.com (Postfix) with ESMTPSA id 8B1C3A0DE2; Thu, 19 Jan 2017 17:51:26 +0000 (UTC) Subject: Re: [PATCH 2/2] [media] exynos-gsc: Fix imprecise external abort due disabled power domain To: Marek Szyprowski , linux-kernel@vger.kernel.org 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> From: Javier Martinez Canillas Message-ID: Date: Thu, 19 Jan 2017 14:51:02 -0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0 MIME-Version: 1.0 In-Reply-To: <842737f2-3faf-7b22-c480-93e183bbb670@osg.samsung.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170119_095138_946799_76FF5395 X-CRM114-Status: GOOD ( 17.27 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP Hello Marek, 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: 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. Best regards, 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