linux-mips
[Top] [All Lists]

Re: [PATCH] Alchemy: fix edge irq handling

To: Manuel Lauss <mano@roarinelk.homelinux.net>
Subject: Re: [PATCH] Alchemy: fix edge irq handling
From: Kevin Hickey <khickey@rmicorp.com>
Date: Mon, 26 Jan 2009 20:18:45 -0600
Cc: Ralf Baechle <ralf@linux-mips.org>, Linux-MIPS <linux-mips@linux-mips.org>
In-reply-to: <20090121064856.GA27020@roarinelk.homelinux.net>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <20090120100353.GA18971@roarinelk.homelinux.net> <1232498838.3678.17.camel@kh-d820> <20090121064856.GA27020@roarinelk.homelinux.net>
Sender: linux-mips-bounce@linux-mips.org
I am still concerned about this patch.  Just last week we encountered
similar behavior that turned out to be a board design error.  I had a
similar patch in that kernel that allowed me to run without error.  Our
Windows CE developer, however, did not and ended up finding the board
bug.  Fixing the board improved performance and system stability - had
we not been running CE we probably would not have found the issue until
much later and with greater effort.

Your example below is similar - debouncing the switch in hardware seems
a better solution (albeit likely an expensive one) than patching the
mainline kernel.  And I reiterate: some devices send a lot of interrupts
by design; we should honor their requests, not mask them out.

=Kevin

On Wed, 2009-01-21 at 07:48 +0100, Manuel Lauss wrote:
> Hi Kevin,
> 
> > Have you actually seen this happen (outside of inducing it manually)?  I
> > have some concern that by doing this we may either miss interrupts on
> > devices that send a lot (by design) or miss a design bug in a system
> > because we are masking out some interrupts.  I know that system
> > stability is important, but I don't like hiding problems.
> 
> Yes, in a customer project.  A simple pushbutton which connects a pulled-up
> gpio pin to ground.  Push it, instant hang (handler called over and over
> again) when it is not debounced.  With a single edge and a much lower
> edge-frequency it obviously works fine (see timer).
> 
> (And, handle_edge_irq() _does_ call mask_ack() after all).

-- 
Kevin Hickey
Alchemy Solutions
RMI Corporation
khickey@rmicorp.com
P:  512.691.8044


<Prev in Thread] Current Thread [Next in Thread>