AArch64 ESR陷阱WFI或WFE指令执行

问题描述

我对ARM文档中ESR_EL1的以下条目感到困惑:

EC,位[31:26] 0b000001被困的WFI或WFE指令执行。

被困WFI或WFE到底意味着什么?如果在Linux下发生这种情况是什么意思?这会导致内核崩溃吗?

解决方法

这意味着SCTLR_EL1.nTWI(第16位)或SCTLR_EL1.nTWE(第18位)被设置为0,并且在EL0上运行的某个程序执行了WFI或{{1 }}指令。

Linux AArch64用户空间显然被允许执行WFE / WFI直到this patch为止,后者在内核中安装了一个异常处理程序,它将跳过指令,有效地将它们转换为{{1 }}。