gpt4 book ai didi

linux - 设置中断标志 (sti) 使 linux 内核崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:16:19 25 4
gpt4 key购买 nike

我写了一个简单的字符设备用于测试目的 (Linux)。我有一个有 2 个内核的 VM。CPU0 和 CPU1。

我在字符设备中有这段代码:

native_irq_enable();
smp_call_function_single(#Other CPU#,native_irq_enable);

如果我在没有 smp_call 的情况下编译字符设备,一切正常。例如,如果我调用另一个函数:smp_call_function_single(#Othe CPU#,native_halt()),内核不会崩溃。但是如果我调用 smp_call_function_single(#Othe CPU#,native_safe_halt()) 内核将会崩溃,因为我设置了 IF(中断标志)。

当我从第二个 CPU 设置 IF 时,内核崩溃有什么原因吗?(如果我从 CPU0 设置 IF,内核将不会崩溃。)

谢谢

最佳答案

当您使用 smp_call_function_single发送一个函数到另一个 CPU 时,它将由 IPI 处理程序执行,重新启用一个内部的所有中断中断处理程序不是您想做的事情。特别是执行函数的函数文档 explicitly states that all IRQs must be disabled .

当 CPU 相同时,您的函数会被简单地执行,而不会发送 IPI,因此 generic_smp_call_function_single_interrupt 和中断处理程序限制不适用。

关于linux - 设置中断标志 (sti) 使 linux 内核崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51321272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com