Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932436AbXHaDI0 (ORCPT ); Thu, 30 Aug 2007 23:08:26 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1756751AbXHaDIQ (ORCPT ); Thu, 30 Aug 2007 23:08:16 -0400 Received: from deeprooted.net ([216.254.16.51]:52753 "EHLO paris.hilman.org" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756714AbXHaDIP (ORCPT ); Thu, 30 Aug 2007 23:08:15 -0400 Message-Id: <20070831030745.794000733@mvista.com> User-Agent: quilt/0.45-1 Date: Thu, 30 Aug 2007 20:07:45 -0700 From: Kevin Hilman To: Ingo Molnar , Thomas Gleixner Cc: LKML , RT-Users Subject: [PATCH 2.6.23-rc2-rt2] call IRQ-chip's end hook in thread_simple_irq() Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1031 Lines: 28 When using the 'simple' handler as a chained handler, the end hook should be called so the chained handler can properly ack/unmask etc. after the threaded handler has completed. In particular, the chained GPIO IRQ hander on OMAP uses the 'simple' handler since the GPIO IRQs can be dynamically configured either as edge or level. When using threaded IRQs, the only way to know when the handler is done and do the proper ack/unmask is via the end hook. Signed-off-by: Kevin Hilman --- linux-2.6.21.orig/kernel/irq/manage.c +++ linux-2.6.21/kernel/irq/manage.c @@ -637,6 +637,8 @@ static void thread_simple_irq(irq_desc_t note_interrupt(irq, desc, action_ret); } desc->status &= ~IRQ_INPROGRESS; + if (desc->chip->end) + desc->chip->end(irq); } /* -- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/