UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Explorer
Explorer
642 Views
Registered: ‎01-13-2016

Linux stops acknowledging interrupts

I have a simple interrupt that goes to the Zynq processor every 100 us or so, whenever my HDL finishes what its doing.

 

I have a simple IRQ handler that just does this:

 

irqreturn_t moabb_pixel_irq(int irq,void *ptr, struct pt_regs *regs){
	irqcount ++;
	return IRQ_HANDLED;
}

I just want to verify that the interrupt gets through before I do the actual code.

 

 

If I leave the processor on for a bit, and then read irqcount, it comes out as some small number like 8, but never any more. It seems like after that the processor stops acknowledging the interrupts and never goes to the IRQ handler.

 

My guess is that I need to do something else like clear some extra flag first to tell the kernel to keep taking in interrupts, and I just haven't done that. Does anyone know if there is something like this that needs to be done?

0 Kudos
2 Replies
Explorer
Explorer
619 Views
Registered: ‎10-04-2017

Re: Linux stops acknowledging interrupts

You should not have to do anything like that in the kernel.  The problem is more likely in the device generating the interrupt.  What device is that?  Have you put a scope or ILA on the interrupt to see how many are actually generated.

0 Kudos
Explorer
Explorer
617 Views
Registered: ‎01-13-2016

Re: Linux stops acknowledging interrupts

Its a custom HDL that outputs an interrupt whenever it finishes with its current data.

I have indeed used an ILA and seen that there is a regular interrupt pulse sent out periodically. I would understand it if maybe I just wasn't getting any interrupts at all, because that might mean I had something connected poorly, but the strange thing is that I get a few interrupts, and then they stop registering.
0 Kudos