From patchwork Tue Dec 9 16:57:46 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nishanth Menon X-Patchwork-Id: 5464101 Return-Path: X-Original-To: patchwork-linux-omap@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 0F8B4BEEA8 for ; Tue, 9 Dec 2014 16:58:40 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id E6D4520155 for ; Tue, 9 Dec 2014 16:58:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id C997D20131 for ; Tue, 9 Dec 2014 16:58:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757584AbaLIQ6b (ORCPT ); Tue, 9 Dec 2014 11:58:31 -0500 Received: from devils.ext.ti.com ([198.47.26.153]:59301 "EHLO devils.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753826AbaLIQ63 (ORCPT ); Tue, 9 Dec 2014 11:58:29 -0500 Received: from dflxv15.itg.ti.com ([128.247.5.124]) by devils.ext.ti.com (8.13.7/8.13.7) with ESMTP id sB9GvlKs023640; Tue, 9 Dec 2014 10:57:47 -0600 Received: from DFLE72.ent.ti.com (dfle72.ent.ti.com [128.247.5.109]) by dflxv15.itg.ti.com (8.14.3/8.13.8) with ESMTP id sB9GvkFP020536; Tue, 9 Dec 2014 10:57:47 -0600 Received: from dflp33.itg.ti.com (10.64.6.16) by DFLE72.ent.ti.com (128.247.5.109) with Microsoft SMTP Server id 14.3.174.1; Tue, 9 Dec 2014 10:57:46 -0600 Received: from localhost (ileax41-snat.itg.ti.com [10.172.224.153]) by dflp33.itg.ti.com (8.14.3/8.13.8) with ESMTP id sB9GvkgM015043; Tue, 9 Dec 2014 10:57:46 -0600 Date: Tue, 9 Dec 2014 10:57:46 -0600 From: Nishanth Menon To: Kevin Hilman , Tomasz Figa , Marek Szyprowski , Russell King CC: linux-omap , "tony@atomide.com" , "linux-arm-kernel@lists.infradead.org" , linux-next , linux-samsung-soc Subject: Re: regression: OMAP4 (next-20141204) (bisect to: ARM: 8208/1: l2c: Refactor the driver to use commit-like) Message-ID: <20141209165746.GA29935@kahuna> References: <5481D913.9040109@ti.com> <5481D9BF.2090007@ti.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <5481D9BF.2090007@ti.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP On 10:13-20141205, Nishanth Menon wrote: > On 12/05/2014 10:10 AM, Nishanth Menon wrote: > > next-20141204 fails to boot, but next-20141203 boots fine with > > omap2plus_defconfig. > > > > Panda-ES(4460): > > https://github.com/nmenon/kernel-test-logs/blob/next-20141204/omap2plus_defconfig/pandaboard-es.txt > > Panda(4430): > > https://github.com/nmenon/kernel-test-logs/blob/next-20141204/omap2plus_defconfig/pandaboard-vanilla.txt > > > > at the point of hang (JTAG): > > pandaboard-es: > > cpu0: http://slexy.org/view/s2eIFqkRd5 > > cpu1: http://slexy.org/view/s2Tysb6gpL > > > > Case #1: > > Disabling CPUIDLE allows boot to proceed. there does not seem to have > > been any change in drivers/cpuidle and arch/arm/mach-omap2 w.r.t this. > > > > Case #2: Reverting the following allows boot. > > > > From next-20141204 > > 10df7d5 ARM: 8211/1: l2c: Add support for overriding prefetch settings > > revert this -> boot still fails > > > > d42ced0 ARM: 8210/1: l2c: Get outer cache .write_sec callback from > > mach_desc only if not NULL > > revert this -> boot still fails > > > > 46b9af8 ARM: 8209/1: l2c: Add interface to ask hypervisor to configure L2C > > revert this -> boot still fails > > > > c94e325 ARM: 8208/1: l2c: Refactor the driver to use commit-like > > revert this -> boot passed (first bad commit). > > > > > > + linux-samsung soc and updated Thomaz's mail ID (gmail now). Spend a few mins trying to track this down and it does look like commit c94e325 does a kmemdup for the data as part of l2x0_of_init->__l2c_init This fails since the invocation is in early_init. doing it a bit later as the following hack makes it work diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c index 608079a..0bc6bd9 100644 --- a/arch/arm/mach-omap2/board-generic.c +++ b/arch/arm/mach-omap2/board-generic.c @@ -170,12 +170,19 @@ static const char *const omap4_boards_compat[] __initconst = { NULL, }; + +static void tmp_init_irq(void) +{ + omap_l2_cache_init(); + omap_gic_of_init(); +} + DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)") .reserve = omap_reserve, .smp = smp_ops(omap4_smp_ops), .map_io = omap4_map_io, .init_early = omap4430_init_early, - .init_irq = omap_gic_of_init, + .init_irq = tmp_init_irq, .init_machine = omap_generic_init, .init_late = omap4430_init_late, .init_time = omap4_local_timer_init, diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c index 03cbb16..f97847d 100644 --- a/arch/arm/mach-omap2/io.c +++ b/arch/arm/mach-omap2/io.c @@ -627,7 +627,6 @@ void __init omap4430_init_early(void) omap44xx_clockdomains_init(); omap44xx_hwmod_init(); omap_hwmod_init_postsetup(); - omap_l2_cache_init(); omap_clk_soc_init = omap4xxx_dt_clk_init; } diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c index e5948c5..0ca90db 100644 --- a/arch/arm/mm/cache-l2x0.c +++ b/arch/arm/mm/cache-l2x0.c @@ -848,8 +848,11 @@ static int __init __l2c_init(const struct l2c_init_data *data, * context from callers can access the structure. */ l2x0_data = kmemdup(data, sizeof(*data), GFP_KERNEL); - if (!l2x0_data) + if (!l2x0_data) { + pr_err("%s no mem %d\n", __func__, sizeof(*data)); + dump_stack(); return -ENOMEM; + } /* * Sanity check the aux values. aux_mask is the bits we preserve @@ -1647,6 +1650,7 @@ int __init l2x0_of_init(u32 aux_val, u32 aux_mask) struct device_node *np; struct resource res; u32 cache_id, old_aux; + int r; np = of_find_matching_node(NULL, l2x0_ids); if (!np) @@ -1693,6 +1697,8 @@ int __init l2x0_of_init(u32 aux_val, u32 aux_mask) else cache_id = readl_relaxed(l2x0_base + L2X0_CACHE_ID); - return __l2c_init(data, aux_val, aux_mask, cache_id); + r = __l2c_init(data, aux_val, aux_mask, cache_id); + pr_err("%s: %d\n", __func__, r); + return r; }