From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932266AbdGKJzF (ORCPT ); Tue, 11 Jul 2017 05:55:05 -0400 Received: from Galois.linutronix.de ([146.0.238.70]:42858 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755746AbdGKJzF (ORCPT ); Tue, 11 Jul 2017 05:55:05 -0400 Date: Tue, 11 Jul 2017 11:55:02 +0200 (CEST) From: Thomas Gleixner To: Sebastian Reichel cc: Linus Torvalds , LKML , Andrew Morton , Ingo Molnar , "H. Peter Anvin" , Tony Lindgren , Pavel Machek , Marc Zyngier Subject: Re: [GIT pull] irq updates for 4.13 In-Reply-To: <20170711092639.jmfg775bf2k7vwen@earth> Message-ID: References: <20170710133505.eo6w73kq2327n34p@earth> <20170711092639.jmfg775bf2k7vwen@earth> User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 11 Jul 2017, Sebastian Reichel wrote: > There you go (this is basically 9967468c0a10). The referenced > cpcap is a PMIC, that uses one of OMAP's GPIOs to generate > interrupts and (among other things) provides an interrupt > controller. > > [ 1.328521] cpcap-core spi1.0: CPCAP vendor: ST rev: 2.10 (1a) > [ 1.336334] Unhandled fault: imprecise external abort (0x1406) at 0x00000000 > [ 1.343536] pgd = c0004000 > [ 1.346282] [00000000] *pgd=00000000 > [ 1.349914] Internal error: : 1406 [#1] SMP ARM > [ 1.354492] Modules linked in: > [ 1.357574] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.12.0-10625-gcb473a1c6f03 #531 > [ 1.365447] Hardware name: Generic OMAP4 (Flattened Device Tree) > [ 1.371520] task: ee8aae00 task.stack: ee8ac000 > [ 1.376098] PC is at do_raw_spin_unlock+0x58/0x120 > [ 1.380920] LR is at _raw_spin_unlock_irqrestore+0x24/0x44 > [ 1.386444] pc : [] lr : [] psr: 60000093 > [ 1.392761] sp : ee8adba0 ip : c10fe40c fp : eea0ac10 > [ 1.398040] r10: eea0ac00 r9 : c061f764 r8 : eea0ad04 > [ 1.403289] r7 : 00000007 r6 : eea07e64 r5 : ffffe000 r4 : eea07e64 > [ 1.409881] r3 : ffffffff r2 : 00000000 r1 : ee8aae00 r0 : eea07e64 > [ 1.416442] Flags: nZCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment none > [ 1.423736] Control: 10c5387d Table: 8000404a DAC: 00000051 > [ 1.429534] Process swapper/0 (pid: 1, stack limit = 0xee8ac218) > [ 1.435577] Stack: (0xee8adba0 to 0xee8ae000) > [ 1.728546] [] (do_raw_spin_unlock) from [] (_raw_spin_unlock_irqrestore+0x24/0x44) > [ 1.738037] [] (_raw_spin_unlock_irqrestore) from [] (omap_gpio_get_direction+0x38/0x44) > [ 1.747955] [] (omap_gpio_get_direction) from [] (gpiochip_lock_as_irq+0x98/0xe4) > [ 1.757232] [] (gpiochip_lock_as_irq) from [] (gpiochip_irq_reqres+0x2c/0x6c) > [ 1.766174] [] (gpiochip_irq_reqres) from [] (__setup_irq+0x478/0x6ec) > [ 1.774536] [] (__setup_irq) from [] (request_threaded_irq+0xcc/0x14c) So this crashes in do_raw_spin_unlock_irqrestore() !?! I just have to wonder how the raw_spin_lock() succeeded. That does not make any sense. Thanks, tglx