I have been working on irq handlers using the regmap irq chip implementation. I have seen that there is high incosistency with the irq handlers execution. Especially if the irq is generated continuously during suspend. The irq chokes and never clears the interrupt source i.e handler never runs at times. Even if the handler runs half way and the system sleeps, it does not continue on resume.
我一直在使用regmap irq芯片实现irq处理程序。我已经看到irq处理程序执行存在很高的不兼容性。特别是如果在暂停期间连续产生irq。 irq扼流圈并且永远不会清除中断源,即处理程序从不运行。即使处理程序运行一半而系统处于休眠状态,它也不会在恢复时继续运行。
Its creating serious issues. How do I handle this?
它创造了严重的问题。我该如何处理?
1 个解决方案
#1
1
Regmap entirely uses threaded irqs. In addition, I was using i2c calls in the nested calls which are again threaded irqs. Due to this, I would always remain in user space and not in irq context. I2c tranfer has schedule in it and that brings in a completely different execution flow. In addition, there were problems in wake enabling the irq.
Regmap完全使用线程irqs。另外,我在嵌套调用中使用了i2c调用,这些调用又是线程irqs。因此,我将始终保留在用户空间而不是irq上下文中。 I2c转移有其中的计划,并带来完全不同的执行流程。此外,在启用irq时也存在问题。
#1
1
Regmap entirely uses threaded irqs. In addition, I was using i2c calls in the nested calls which are again threaded irqs. Due to this, I would always remain in user space and not in irq context. I2c tranfer has schedule in it and that brings in a completely different execution flow. In addition, there were problems in wake enabling the irq.
Regmap完全使用线程irqs。另外,我在嵌套调用中使用了i2c调用,这些调用又是线程irqs。因此,我将始终保留在用户空间而不是irq上下文中。 I2c转移有其中的计划,并带来完全不同的执行流程。此外,在启用irq时也存在问题。