All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai] Disabling shared IRQ line
@ 2015-12-01  5:35 Алексей Герасёв
  2015-12-01  7:28 ` Jan Kiszka
  0 siblings, 1 reply; 2+ messages in thread
From: Алексей Герасёв @ 2015-12-01  5:35 UTC (permalink / raw)
  To: xenomai

Hello everyone!

I have x86_64 PC with CAN adapter served by PLX PCI driver on board. I've
installed Xenomai 3.0.1 Cobalt on Linux kernel 3.16.7 with
ipipe-core-3.16.7-x86-5 patch. My CAN adapter has two channels, and they're
registered on one IRQ line (in my case it's 19). Shared interrupts were
enabled. When one channel is up and other is down, I have strange error:
when I sent 500 and received 500 frames through one channel interface, the
IRQ line became disabled with message: '[Xenomai] xnintr_vec_handler: IRQ19
not handled. Disabling IRQ line'. When both channels are up, there is no
such error.

I've found in 'xnintr_vec_handler' in 'xenomai-3/kernel/cobalt/intr.c' file
of xenomai source that if at least one handler on shared IRQ line returns
'XN_IRQ_NONE', then 'vec->unhandled' counter is incremented, and when it
reaches 1000, the corresponding IRQ line is disabled. In my case the
handler of the first channel, which is up, returns 'XN_IRQ_HANDLED' but the
second one, which is down, returns 'XN_IRQ_NONE'.

The question is: is this behavior in 'xnintr_vec_handler' correct? Do I
always need to enable both channels although I use only one of them?

Best regards,
Alexey

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [Xenomai] Disabling shared IRQ line
  2015-12-01  5:35 [Xenomai] Disabling shared IRQ line Алексей Герасёв
@ 2015-12-01  7:28 ` Jan Kiszka
  0 siblings, 0 replies; 2+ messages in thread
From: Jan Kiszka @ 2015-12-01  7:28 UTC (permalink / raw)
  To: Алексей Герасёв,
	xenomai

On 2015-12-01 06:35, Алексей Герасёв wrote:
> Hello everyone!
> 
> I have x86_64 PC with CAN adapter served by PLX PCI driver on board. I've
> installed Xenomai 3.0.1 Cobalt on Linux kernel 3.16.7 with
> ipipe-core-3.16.7-x86-5 patch. My CAN adapter has two channels, and they're
> registered on one IRQ line (in my case it's 19). Shared interrupts were
> enabled. When one channel is up and other is down, I have strange error:
> when I sent 500 and received 500 frames through one channel interface, the
> IRQ line became disabled with message: '[Xenomai] xnintr_vec_handler: IRQ19
> not handled. Disabling IRQ line'. When both channels are up, there is no
> such error.
> 
> I've found in 'xnintr_vec_handler' in 'xenomai-3/kernel/cobalt/intr.c' file
> of xenomai source that if at least one handler on shared IRQ line returns
> 'XN_IRQ_NONE', then 'vec->unhandled' counter is incremented, and when it
> reaches 1000, the corresponding IRQ line is disabled. In my case the
> handler of the first channel, which is up, returns 'XN_IRQ_HANDLED' but the
> second one, which is down, returns 'XN_IRQ_NONE'.
> 
> The question is: is this behavior in 'xnintr_vec_handler' correct? Do I
> always need to enable both channels although I use only one of them?

No, this is a regression of aefaab5d03. I'll push a patch to fix this to
my upstream queue. Thanks for reporting!

Jan

-- 
Siemens AG, Corporate Technology, CT RTC ITP SES-DE
Corporate Competence Center Embedded Linux


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2015-12-01  7:28 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-12-01  5:35 [Xenomai] Disabling shared IRQ line Алексей Герасёв
2015-12-01  7:28 ` Jan Kiszka

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.