From patchwork Wed May 27 22:55:53 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tony Lindgren X-Patchwork-Id: 6495321 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.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id D888AC0020 for ; Wed, 27 May 2015 22:55:59 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 03BA8206F6 for ; Wed, 27 May 2015 22:55:59 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 01BB7206E9 for ; Wed, 27 May 2015 22:55:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751592AbbE0Wz5 (ORCPT ); Wed, 27 May 2015 18:55:57 -0400 Received: from muru.com ([72.249.23.125]:54214 "EHLO muru.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751055AbbE0Wz4 (ORCPT ); Wed, 27 May 2015 18:55:56 -0400 Received: from atomide.com (localhost [127.0.0.1]) by muru.com (Postfix) with ESMTPS id 8F984819D; Wed, 27 May 2015 22:57:28 +0000 (UTC) Date: Wed, 27 May 2015 15:55:53 -0700 From: Tony Lindgren To: Kevin Hilman Cc: linux-omap@vger.kernel.org, Arnd Bergmann , Dave Martin , linux-arm-kernel@lists.infradead.org, tyler.baker@linaro.org, Stephen Boyd Subject: Re: [RFC] Fix omap3 booting with thumb2 compiled kernel Message-ID: <20150527225553.GC30984@atomide.com> References: <20150527215545.GA30984@atomide.com> <7h7frtmzoh.fsf@deeprootsystems.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <7h7frtmzoh.fsf@deeprootsystems.com> User-Agent: Mutt/1.5.23 (2014-03-12) 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 * Kevin Hilman [150527 15:20]: > [ fix email for Dave Martin, +Tyler ] > > Tony Lindgren writes: > > > The power management related assembly needs to interact with > > ARM mode bootrom code, so we need to keep most of the related > > assembly in ARM mode. > > > > Currently we are entering into and ARM mode assembly function > > from thumb2 mode, so we need to make sure we switch to ARM > > mode. And we need to do that again after the cache flush. > > > > --- > > > > Kevin told me about this earlier today.. > > > And for full boot log/panics, see the kernelci.org thumb2 kernel boots > that fail: http://kernelci.org/boot/?THUMB2_KERNEL&fail > > > Anybody got better ideas for a fix here? > > FWIW, a quick test of this patch makes my omap3-beagle-xm pass a simple > boot test, but it fails with off idle. Thanks to Stephen Boyd's suggestion of checking the missing ENDPROC, here's a better fix :) Now off idle works too. Regards, Tony 8 <---------------------- From: Tony Lindgren Date: Wed, 27 May 2015 15:33:57 -0700 Subject: [PATCH] ARM: OMAP3: Fix booting with thumb2 kernel We get a NULL pointer dereference on omap3 for thumb2 compiled kernels: Internal error: Oops: 80000005 [#1] SMP THUMB2 ... [] (_raw_spin_unlock_irqrestore) from [] (omap3_enter_idle_bm+0xc5/0x178) [] (omap3_enter_idle_bm) from [] (cpuidle_enter_state+0x77/0x27c) [] (cpuidle_enter_state) from [] (cpu_startup_entry+0x155/0x23c) [] (cpu_startup_entry) from [] (start_kernel+0x32f/0x338) [] (start_kernel) from [<8000807f>] (0x8000807f) The power management related assembly on moaps needs to interact with ARM mode bootrom code, so we need to keep most of the related assembly in ARM mode. Turns out this error is because of missing ENDPROC for assembly code as suggested by Stephen Boyd . Let's add the missing ENDPROC in two places to sleep34xx.S, and also remove the earlier mystery code that was probably also caused by missing ENDPROC for earlier kernels. Reported-by: Kevin Hilman Signed-off-by: Tony Lindgren Tested-by: Kevin Hilman --- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html --- a/arch/arm/mach-omap2/sleep34xx.S +++ b/arch/arm/mach-omap2/sleep34xx.S @@ -203,23 +203,8 @@ save_context_wfi: */ ldr r1, kernel_flush blx r1 - /* - * The kernel doesn't interwork: v7_flush_dcache_all in particluar will - * always return in Thumb state when CONFIG_THUMB2_KERNEL is enabled. - * This sequence switches back to ARM. Note that .align may insert a - * nop: bx pc needs to be word-aligned in order to work. - */ - THUMB( .thumb ) - THUMB( .align ) - THUMB( bx pc ) - THUMB( nop ) - .arm - b omap3_do_wfi - -/* - * Local variables - */ +ENDPROC(omap34xx_cpu_suspend) omap3_do_wfi_sram_addr: .word omap3_do_wfi_sram kernel_flush: @@ -364,10 +349,7 @@ exit_nonoff_modes: * =================================== */ ldmfd sp!, {r4 - r11, pc} @ restore regs and return - -/* - * Local variables - */ +ENDPROC(omap3_do_wfi) sdrc_power: .word SDRC_POWER_V cm_idlest1_core: