英特尔和 AMD 提出 x86 中断处理的不同替代,Linus 建议两个都搞

Linux AMD Intel
WinterIsComing (31822)发表于 2021年06月05日 16时00分 星期六
来自部门
从 286 时代起,x86 处理器都是使用一个拜占庭系统去管理中断、故障和异常,它组合使用了查询表、权限检查等,可能会让人困惑,但大部分情况下能正常工作。不可避免的是,中断描述符表存在一些 bug,竞争条件、死锁、无限循环和权限冲突等问题虽然罕见但却难以避开。英特尔和 AMD 都各自提出一种方案去简化 x86 处理器的中断处理。两家公司的方案是互相不兼容的,英特尔野心更大,但将需要程序员重写程序才能利用新的机制,而 AMD 的方案更像是补丁而不是彻底改变,因此更简单。英特尔提出了 FRED (Flexible Return and Event Delivery) 去替代中断描述符表及其中断描述符,将权限级别的数量从 4 个减少到 2 个。FRED 是一个可选的系统,能与现有的方法共存,你需要在启动时候启用 FRED。AMD 的方案称为 Supervisor Entry Extensions (SEE),保留了现有的中断描述符表和权限数量,它调整了现有的 SYSCALL 指令,添加了一个状态位标记中断处理程序为可重入,它寻求堵上一些漏洞。Linux 作者 Linus Torvalds 认为这两个方案都是好主意,建议都实现一下。两个方案并非完全互相排斥的。