[ARM][Q]cpuidle wfi之前关中断后怎么被中断踢出wfi

cpuidle 中断疑惑点,为什么wfi之前local_irq_disable还能被中断把core踢出wfi?

GIC和各个CPU的接口包括两种硬件信号:

(a)触发CPU中断的信号。nIRQCPU和nFIQCPU信号线,熟悉ARM CPU的工程师对这两个信号线应该不陌生,主要用来触发ARM cpu进入IRQ mode和FIQ mode。

(b)Wake up信号。nFIQOUT和nIRQOUT信号线,去ARM CPU的电源管理模块,用来唤醒CPU的 。

因此disable了CPU的中断仅仅是堵死了中断这一个分支而已,wakeup信号仍在正常工作中。 关全局中断,意味着CPU不再处理(handler)GIC送来的中断,但并不说明GIC送来的中断不能唤醒CPU。 因此,suspend之后,产生中断,CPU醒来,继续执行,直到全局中断再次enable(arch_suspend_enable_irqs),CPU才会跳转到指定的中断handler中去处理中断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值