Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
7 years ago

Unexpected IRQ trap at vector xxx, Arria 10 SoC, Linux

Are interrupts implemented correctly in the socfpga Linux source??? git tag ACDS17.1_REL_GSRD_UPDATE1_PR

I will ultimately be performing interrupt driven data transfer from the FPGA to the HPS, but right now I'm just getting used to how interrupts work.

I'm requesting an interrupt for the first push button on the Arria 10 SoC dev board using the following sequence in my kernel module:


gpio_request(448, "blah")
int_number = gpio_to_irq(448)
request_irq(int_number, int_handler, 0, "blahint", intcharDevice);

Linux seems happy when inserting the module:


insmod interrupts.ko
 intchar: Initializing intchar driver
 intchar: registered correctly with major number 248
 intchar: device class registered correctly
 intchar: device class created correctly
 intchar: gpio 448, result 0
 intchar: gpio_to_irq result 39
 intchar: request_irq result 0
root@arria10:~# cat /proc/interrupts 
           CPU0       CPU1       
 16:     476620     490875     GIC-0  29 Level     twd
 17:          0          0     GIC-0 147 Level     timer
 22:          0          0     GIC-0 115 Level     ffda1000.dma
 31:       4627          0     GIC-0 143 Level     serial
 32:      33852          0     GIC-0 124 Level     eth0
 33:          0          0     GIC-0 134 Level     dw_spi65535
 34:         75          0     GIC-0 138 Level     ffc02300.i2c
 35:    4293572          0     GIC-0 130 Level     dw-mci
 36:          0          0     GIC-0 127 Level     ffb00000.usb, ffb00000.usb, dwc2_hsotg:usb1
 39:         29          0  altera-gpio   0 Edge      blahint
IPI0:          0          0  CPU wakeup interrupts
IPI1:          0          0  Timer broadcast interrupts
IPI2:       4700     592576  Rescheduling interrupts
IPI3:          9          5  Function call interrupts
IPI4:          0          0  CPU stop interrupts
IPI5:          0          0  IRQ work interrupts
IPI6:          0          0  completion interrupts
Err:         29

However, when I press the button I get this:


 irq 39, desc: ef238c00, depth: 0, count: 0, unhandled: 0
 ->handle_irq():  c016ec60,  handle_bad_irq+0x0/0x288
 ->irq_data.chip(): c0b47ff8,  0xc0b47ff8
 ->action(): eebe2380
 ->action->handler(): bf018000,  int_handler+0x0/0x28 
    IRQ_NOPROBE set
 unexpected IRQ trap at vector 27

I've tried all different combinations of the flags parameter when requesting the interrupt, for example IRQF_SHARED, IRQF_PROBE_SHARED. Nothing helps.

I was trying to use the exact git tag that was specified for the GSRD 17.1, but that tag seems to be COMPLETELY MISSING. How exactly should I be interpreting that?

Anybody else successfully using interrupts in Linux with the Arria 10 SoC? Any pointers appreciated.

Thanks.
No RepliesBe the first to reply