* [PATCH, RESEND] microblaze: Fix level interrupt ACKing
@ 2009-11-17 14:43 steve
2009-11-20 11:07 ` Michal Simek
0 siblings, 1 reply; 4+ messages in thread
From: steve @ 2009-11-17 14:43 UTC (permalink / raw)
To: microblaze-uclinux; +Cc: monstr, linux-kernel, Steven J. Magnani
Level interrupts need to be ack'd in the unmask handler, as in powerpc.
Among other issues, this bug causes the system clock to appear to run at
double-speed.
Signed-off-by: Steven J. Magnani <steve@digidescorp.com>
---
diff -uprN a/arch/microblaze/kernel/intc.c b/arch/microblaze/kernel/intc.c
--- a/arch/microblaze/kernel/intc.c 2009-06-02 15:26:28.000000000 -0500
+++ b/arch/microblaze/kernel/intc.c 2009-06-02 15:27:39.000000000 -0500
@@ -41,8 +41,16 @@ unsigned int nr_irq;
static void intc_enable_or_unmask(unsigned int irq)
{
+ unsigned long mask = 1 << irq;
pr_debug("enable_or_unmask: %d\n", irq);
- out_be32(INTC_BASE + SIE, 1 << irq);
+ out_be32(INTC_BASE + SIE, mask);
+
+ /* ack level irqs because they can't be acked during
+ * ack function since the handle_level_irq function
+ * acks the irq before calling the interrupt handler
+ */
+ if (irq_desc[irq].status & IRQ_LEVEL)
+ out_be32(INTC_BASE + IAR, mask);
}
static void intc_disable_or_mask(unsigned int irq)
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH, RESEND] microblaze: Fix level interrupt ACKing
2009-11-17 14:43 [PATCH, RESEND] microblaze: Fix level interrupt ACKing steve
@ 2009-11-20 11:07 ` Michal Simek
2009-11-20 18:49 ` Steven J. Magnani
0 siblings, 1 reply; 4+ messages in thread
From: Michal Simek @ 2009-11-20 11:07 UTC (permalink / raw)
To: steve; +Cc: microblaze-uclinux, monstr, linux-kernel
Hi Steve,
steve@digidescorp.com wrote:
> Level interrupts need to be ack'd in the unmask handler, as in powerpc.
> Among other issues, this bug causes the system clock to appear to run at
> double-speed.
Can you send me any step-by-step manual how to demonstrate me this
fault? If system clock runs at double-speed, then I should be able able
to see that time is two times faster. Or do you mean different behavior?
Thanks,
Michal
>
> Signed-off-by: Steven J. Magnani <steve@digidescorp.com>
> ---
> diff -uprN a/arch/microblaze/kernel/intc.c b/arch/microblaze/kernel/intc.c
> --- a/arch/microblaze/kernel/intc.c 2009-06-02 15:26:28.000000000 -0500
> +++ b/arch/microblaze/kernel/intc.c 2009-06-02 15:27:39.000000000 -0500
> @@ -41,8 +41,16 @@ unsigned int nr_irq;
>
> static void intc_enable_or_unmask(unsigned int irq)
> {
> + unsigned long mask = 1 << irq;
> pr_debug("enable_or_unmask: %d\n", irq);
> - out_be32(INTC_BASE + SIE, 1 << irq);
> + out_be32(INTC_BASE + SIE, mask);
> +
> + /* ack level irqs because they can't be acked during
> + * ack function since the handle_level_irq function
> + * acks the irq before calling the interrupt handler
> + */
> + if (irq_desc[irq].status & IRQ_LEVEL)
> + out_be32(INTC_BASE + IAR, mask);
> }
>
> static void intc_disable_or_mask(unsigned int 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/
--
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
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH, RESEND] microblaze: Fix level interrupt ACKing
2009-11-20 11:07 ` Michal Simek
@ 2009-11-20 18:49 ` Steven J. Magnani
2009-11-24 12:45 ` Michal Simek
0 siblings, 1 reply; 4+ messages in thread
From: Steven J. Magnani @ 2009-11-20 18:49 UTC (permalink / raw)
To: monstr; +Cc: microblaze-uclinux, linux-kernel
On Fri, 2009-11-20 at 12:07 +0100, Michal Simek wrote:
> Hi Steve,
>
> steve@digidescorp.com wrote:
> > Level interrupts need to be ack'd in the unmask handler, as in powerpc.
> > Among other issues, this bug causes the system clock to appear to run at
> > double-speed.
>
> Can you send me any step-by-step manual how to demonstrate me this
> fault? If system clock runs at double-speed, then I should be able able
> to see that time is two times faster. Or do you mean different behavior?
Unless there's a way to read jiffies_64 in userspace, the easiest way I
know of is to use the debugger. Stop the kernel soon after you boot it,
and read jiffies_64. Continue execution for some known amount of
wall-clock time, then stop the kernel again and recheck jiffies_64.
Without the patch, the number of elapsed jiffies is twice what you'd
expect based on HZ.
>
> Thanks,
> Michal
Regards,
------------------------------------------------------------------------
Steven J. Magnani "I claim this network for MARS!
www.digidescorp.com Earthling, return my space modulator!"
#include <standard.disclaimer>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH, RESEND] microblaze: Fix level interrupt ACKing
2009-11-20 18:49 ` Steven J. Magnani
@ 2009-11-24 12:45 ` Michal Simek
0 siblings, 0 replies; 4+ messages in thread
From: Michal Simek @ 2009-11-24 12:45 UTC (permalink / raw)
To: steve; +Cc: monstr, microblaze-uclinux, linux-kernel
Steven J. Magnani wrote:
> On Fri, 2009-11-20 at 12:07 +0100, Michal Simek wrote:
>> Hi Steve,
>>
>> steve@digidescorp.com wrote:
>>> Level interrupts need to be ack'd in the unmask handler, as in powerpc.
>>> Among other issues, this bug causes the system clock to appear to run at
>>> double-speed.
>> Can you send me any step-by-step manual how to demonstrate me this
>> fault? If system clock runs at double-speed, then I should be able able
>> to see that time is two times faster. Or do you mean different behavior?
>
> Unless there's a way to read jiffies_64 in userspace, the easiest way I
> know of is to use the debugger. Stop the kernel soon after you boot it,
> and read jiffies_64. Continue execution for some known amount of
> wall-clock time, then stop the kernel again and recheck jiffies_64.
> Without the patch, the number of elapsed jiffies is twice what you'd
> expect based on HZ.
yes, I saw that behavior. Just thinking what caused that jiffies was two
times faster.
But anyway. I added this patch to next branch.
Thanks,
Michal
>
>> Thanks,
>> Michal
>
> Regards,
> ------------------------------------------------------------------------
> Steven J. Magnani "I claim this network for MARS!
> www.digidescorp.com Earthling, return my space modulator!"
>
> #include <standard.disclaimer>
>
>
>
> --
> 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/
--
Michal Simek, Ing. (M.Eng)
PetaLogix - Linux Solutions for a Reconfigurable World
w: www.petalogix.com p: +61-7-30090663,+42-0-721842854 f: +61-7-30090663
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2009-11-24 12:45 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-17 14:43 [PATCH, RESEND] microblaze: Fix level interrupt ACKing steve
2009-11-20 11:07 ` Michal Simek
2009-11-20 18:49 ` Steven J. Magnani
2009-11-24 12:45 ` Michal Simek
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox