Race condition when entering Deep sleep mode

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Race condition when entering Deep sleep mode

1,052 次查看
gennadiykiryukh
Contributor III

What is the process for handling race conditions when an interrupt is generated right before the system goes to deep sleep mode under Linux?

For example, I have a GPIO rising edge interrupt enabled that my program waits on using epoll_wait() system call. My program determines that no pending action exists and goes to deep sleep by writing "mem" to /sys/power/state. While in deep sleep, a rising edge occurs on a pin that triggers an interrupt. This wakes up the system and my program resumes. At that point, epoll_wait() returns with an event indicating that an interrupt occurred. I set a flag in the program indicating that there is a pending action that prevents the system from going to sleep until the action is complete.

However, if an interrupt occurs at the beginning of writing "mem" to /sys/power/state, there appear to be no mechanism in place to prevent the system from going to sleep. An interrupt might be handled by the kernel driver right before "mem" is written, but after handling the interrupt the system will still go to sleep without giving user space program a chance to react to the interrupt.

How should this condition be handled?

标签 (2)
0 项奖励
回复
1 回复

985 次查看
igorpadykov
NXP Employee
NXP Employee

Hi Gennadiy

may be useful to look at ERR007265 CCM: When improper low-power sequence is used

in i.MX6DQ Errata document

https://www.nxp.com/docs/en/errata/IMX6DQCE.pdf

and implementation of nxp low power drivers described in Linux Manual in

Linux L4.14.78_1.0.0 Documentation

low power drivers

mach-imx\arm\arch - linux-imx - i.MX Linux kernel 

Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 项奖励
回复