395 Star 1.4K Fork 1.3K

GVPopenEuler / kernel

 / 详情

[OLK-5.10][openEuler 1.0 LTS] arm64: Fix wrong logic in gic_arch_restore_irqs()

已完成
任务 成员
创建于  
2022-05-21 16:03

static inline void gic_arch_restore_irqs(unsigned long flags)
{
if (gic_supports_nmi())
asm volatile ("msr daif, %0" : : "r" (flags >> 32)
: "memory");
}
当前flags的高32位恒为0,该函数并没有实现根据flags恢复中断状态,而是强制把daif都打开了。

评论 (2)

Hi stkid, welcome to the openEuler Community.
I'm the Bot here serving you. You can find the instructions on how to interact with me at Here.
If you have any questions, please contact the SIG: Kernel, and any of the maintainers: @YangYingliang , @pi3orama , @成坚 (CHENG Jian) , @jiaoff , @zhengzengkai , @Qiuuuuu , @刘勇强 , @Xie XiuQi

Wei Li 创建了任务
openeuler-ci-bot 添加了
 
sig/Kernel
标签
Wei Li 修改了描述
Wei Li 修改了标题
Wei Li 修改了描述
展开全部操作日志

The gic_arch_restore_irqs() depends on commit e7e6a881f797 ("arm64:
irqflags: fix incomplete save & restore"). While it is reverted in commit
2e680920c2e7 ("Revert "arm64: irqflags: fix incomplete save & restore""),
and backported the upstreamed fix patches later:
680d0f96393c arm64: Lower priority mask for GIC_PRIO_IRQON
a6df44e97db2 arm64: irqflags: Introduce explicit debugging for IRQ priorities
a80102bd22af arm64: Fix incorrect irqflag restore for priority masking
8b1d3c9e913c arm64: Fix interrupt tracing in the presence of NMIs

So we should update the logic here:
Currently the upper 32 bits of 'flags' is always zero, change to use
'GIC_PRIO_PSR_I_SET' to indicate the interrupt enabling status.

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(2)
5329419 openeuler ci bot 1632792936 5625574 stkid 1587900794
C
1
https://gitee.com/openeuler/kernel.git
git@gitee.com:openeuler/kernel.git
openeuler
kernel
kernel

搜索帮助