* [Adeos-main] Interrupt handling problem on Compulab EM-X270.
@ 2011-02-22 20:10 Nazarov Sergey
2011-02-22 20:21 ` Gilles Chanteperdrix
0 siblings, 1 reply; 3+ messages in thread
From: Nazarov Sergey @ 2011-02-22 20:10 UTC (permalink / raw)
To: adeos-main
Hi!
I'm trying to use i-pipe 1.18-01 on ARM XScale-PXA270 based Compulab EM-X270 board. Kernel version is 2.6.33.
With kernel, patched by i-pipe patch, network controller Davicom DM9000 standing unstable: sometimes a lot of packets are losing.
This happens with CONFIG_IPIPE disabled even. The reason is lost interrupts, I see. Network controller uses GPIO line to produce interrupts.
I have found that i-pipe patch changing irq handler handle_irq_edge to handle_irq_level (arch/arm/plat-pxa/gpio.c: pxa_init_gpio) without any conditions.
What's the reason for that changing? The back change to edge-type handler returns network controller to stable state.
Best regards, Sergey.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Adeos-main] Interrupt handling problem on Compulab EM-X270.
2011-02-22 20:10 [Adeos-main] Interrupt handling problem on Compulab EM-X270 Nazarov Sergey
@ 2011-02-22 20:21 ` Gilles Chanteperdrix
[not found] ` <437861298457092@domain.hid>
0 siblings, 1 reply; 3+ messages in thread
From: Gilles Chanteperdrix @ 2011-02-22 20:21 UTC (permalink / raw)
To: Nazarov Sergey; +Cc: adeos-main
Nazarov Sergey wrote:
> Hi! I'm trying to use i-pipe 1.18-01 on ARM XScale-PXA270 based
> Compulab EM-X270 board. Kernel version is 2.6.33. With kernel,
> patched by i-pipe patch, network controller Davicom DM9000 standing
> unstable: sometimes a lot of packets are losing. This happens with
> CONFIG_IPIPE disabled even. The reason is lost interrupts, I see.
> Network controller uses GPIO line to produce interrupts. I have found
> that i-pipe patch changing irq handler handle_irq_edge to
> handle_irq_level (arch/arm/plat-pxa/gpio.c: pxa_init_gpio) without
> any conditions. What's the reason for that changing? The back change
> to edge-type handler returns network controller to stable state. Best
> regards, Sergey.
Does it work with CONFIG_IPIPE enabled?
--
Gilles.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Adeos-main] Interrupt handling problem on Compulab EM-X270.
[not found] ` <41131298550043@domain.hid>
@ 2011-02-24 12:37 ` Gilles Chanteperdrix
0 siblings, 0 replies; 3+ messages in thread
From: Gilles Chanteperdrix @ 2011-02-24 12:37 UTC (permalink / raw)
To: Nazarov Sergey; +Cc: Adeos
Nazarov Sergey wrote:
> Test:
> non-RT load: dd if=/dev/zero of=/dev/null + ping flud from another host,
> RT-load: 3 latency tests (user, kernel and timer task) + switchtest,
> worked for 1 hour without visible problems (0% of ping packets lost).
> Sergey.
Ok. The problem is that on some machines, we get a lockup when using the
edge handler, because the edge handler does not mask the interrupt line,
and so the interrupt triggers again. I guess this must happens with
devices having a level semantic.
But anyway, I prefer some non real-time interrupts lost, than a complete
lockup, so, the code will stay the way it is, I suggest you modify the
board/driver code to change the flow handler of only the line you use.
This change could be integrated into the I-pipe patch.
--
Gilles.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2011-02-24 12:37 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-02-22 20:10 [Adeos-main] Interrupt handling problem on Compulab EM-X270 Nazarov Sergey
2011-02-22 20:21 ` Gilles Chanteperdrix
[not found] ` <437861298457092@domain.hid>
[not found] ` <4D64E2A4.7080105@domain.hid>
[not found] ` <661661298458316@domain.hid>
[not found] ` <4D64E810.4040005@domain.hid>
[not found] ` <549401298459119@domain.hid>
[not found] ` <4D64F94E.5040407@domain.hid>
[not found] ` <41131298550043@domain.hid>
2011-02-24 12:37 ` Gilles Chanteperdrix
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.