From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michal Simek Date: Wed, 22 Feb 2012 09:06:48 +0100 Subject: [U-Boot] [PATCH] microblaze: avoid interrupt race conditions In-Reply-To: <1329516667-23929-1-git-send-email-linz@li-pro.net> References: <1329516667-23929-1-git-send-email-linz@li-pro.net> Message-ID: <4F44A218.8070100@monstr.eu> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Stephan Linz wrote: > The interrupt acknowledge action have to run after the > registered interrupt handler. So we have a chance to > bear out the corresponding interrupt request in the > corresponding controller hardware. > > With this reorderng, we optain a proper interrupt obtain > handling for level triggerd interrupt sources -- for triggered > example the new axi_timer v1.02.a introduced in ISE 13.2 > > Signed-off-by: Stephan Linz > --- > arch/microblaze/cpu/interrupts.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/microblaze/cpu/interrupts.c b/arch/microblaze/cpu/interrupts.c > index 5a13211..e7ca859 100644 > --- a/arch/microblaze/cpu/interrupts.c > +++ b/arch/microblaze/cpu/interrupts.c > @@ -155,8 +155,6 @@ void interrupt_handler (void) > #endif > struct irq_action *act = vecs + irqs; > > - intc->iar = mask << irqs; > - > #ifdef DEBUG_INT > printf > ("Jumping to interrupt handler rutine addr %x,count %x,arg %x\n", > @@ -165,6 +163,8 @@ void interrupt_handler (void) > act->handler (act->arg); > act->count++; > > + intc->iar = mask << irqs; > + > #ifdef DEBUG_INT > printf ("Dump INTC reg, isr %x, ier %x, iar %x, mer %x\n", intc->isr, > intc->ier, intc->iar, intc->mer); Agree. This is good patch. Please fix that commit message and add my Acked-by: Michal Simek Thanks, Michal -- Michal Simek, Ing. (M.Eng) w: www.monstr.eu p: +42-0-721842854 Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/ Microblaze U-BOOT custodian