Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S941310AbcJXQ5z (ORCPT ); Mon, 24 Oct 2016 12:57:55 -0400 Received: from Galois.linutronix.de ([146.0.238.70]:58623 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750747AbcJXQ5x (ORCPT ); Mon, 24 Oct 2016 12:57:53 -0400 Date: Mon, 24 Oct 2016 18:55:22 +0200 (CEST) From: Thomas Gleixner To: Mason cc: Marc Zyngier , Jason Cooper , LKML , Linux ARM , Sebastian Frias Subject: Re: Disabling an interrupt in the handler locks the system up In-Reply-To: <580E3308.4050507@free.fr> Message-ID: References: <580A4460.2090306@free.fr> <580A60ED.3030307@free.fr> <20161021201448.3f4a0a7a@arm.com> <580A70B9.8060507@free.fr> <580A7A2B.5000702@free.fr> <20161022123713.6dc788b3@arm.com> <580BF1D4.2030509@free.fr> <580E3308.4050507@free.fr> 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 Content-Length: 553 Lines: 21 On Mon, 24 Oct 2016, Mason wrote: > > For the record, setting the IRQ_DISABLE_UNLAZY flag for this device > makes the system lock-up disappear. The way how lazy irq disabling works is: 1) Interrupt is marked disabled in software, but the hardware is not masked 2) If the interrupt fires befor the interrupt is reenabled, then it's masked at the hardware level in the low level interrupt flow handler. I have no idea why that does not work on your hardware. You might instrument handle_level_irq() to see what effect that has. Thanks, tglx