簡體   English   中英

設置中斷標志(STI)使Linux內核崩潰

[英]Set Interrupt Flag (sti) crashes linux kernel

我編寫了一個用於測試目的的簡單字符設備(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處理程序執行,您不需要執行重新啟用中斷處理程序中的所有中斷的操作。 特別是,執行您的函數的函數文檔明確指出必須禁用所有IRQ

當CPU相同時,只需執行函數即可,而無需發送IPI,因此, generic_smp_call_function_single_interrupt和中斷處理程序的限制不適用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM