AnsweredAssumed Answered

imx6Q: sdma produces a large number of interrupts

Question asked by George Kang on Jul 6, 2016
Latest reply on Jul 7, 2016 by igorpadykov

Hi all,

Sometimes, sdma produces a large number of interrupts without a stop, and Linux kernel might freeze. This situation

happens in kernel with PREEMPT_RT in some specific configuration for islocpu. Currently, the kernel in my test in Linux 4.1.15-rt17 and its kernel command is

console=ttymxc0,115200 root=/dev/mmcblk0p2 rootwait rw nohz_full=3 isolcpus=1,2 nohz=on

 

After booting, the kernel will freeze and the last messages are:

imx-weim 21b8000.weim: Driver registered.
imx-sdma 20ec000.sdma: failed to get firmware from device tree
imx-sdma 20ec000.sdma: initialized
2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 24, base_baud =
5000000) is a IMX
console [ttymxc0] enabled
random: nonblocking pool is initialized

 

The last line give me a hint and I find add_interrupt_randomness() from irq_thread is called continuously

Then I insert a printk in irq_thread(void *data) to identify the interrupt source for this issue.

static int irq_thread(void *data)
 ...
 #ifdef CONFIG_PREEMPT_RT_FULL
                migrate_disable();
+               printk(KERN_ERR"%d\n", action->irq);
                add_interrupt_randomness(action->irq, 0,
                                 desc->random_ip ^ (unsigned long) action);
                migrate_enable();
...

 

It shows 281, which is the interrupt number of sdma, and never stops.

However, the number of sdma interrupt is only two in ordinary booting. In my root fs, the firmware for sdma does not

exist, sdma should not work even its driver is built in kernel.

 

Is there any suggestion to investigate this issue?

Thanks a lot.

 

Best Regards,

George Kang

Outcomes