Linux x86/x86_64現在將始終保留前1MB的內存
Linux x86/x86_64內核代碼已經有了保留前1MB內存部分的邏輯,以避免BIOS或內核有可能破壞這些空間,而自Linux 5.13開始將無條件地始終保留前1MB內存。Linux內核已經滿足了英特爾Sandy Bridge圖形訪問低於1MB的內存,已知前64K的內存被一些BIOS損壞,以及類似的問題出現在內存的低區域。
但是,與其分別處理所有這些邏輯和除了EGA/VGA幀緩衝區和BIOS之外的其他可能的小眾情況,內核團隊更願意做出一些保守的做法,例如總是保留前1MB的內存,這樣它就不會被內核破壞。
現在,Linux 5.13的做法是為Linux x86/x86_64無條件保留1MB,這一決定源於一個關於AMD Ryzen系統在Linux 5.13上無法啟動的錯誤報告,因為該報告整合了其早期內存保留處理,而只需要無條件地做第一個1MB的保留,事情處理起來更簡單,而且潛在解決了其它的問題。
這個變化是今天早上作為x86/urgent的緊急改進請求被送進來的。團隊認為,”摒棄所有在第一個MB中預留一定量的內存以防止BIOS損壞的愚蠢做法,簡單無條件地預留整個MB是最好的做法。”
今天上午的x86拉動請求還包括禁用英特爾即將推出的Sapphire Rapids服務器CPU的新ENQCMD功能,直到該內核代碼能夠被適當清理和修復。x86版本還涉及第一代Hygon(基於AMD Zen)CPU不支持AMD64_SEV MSR的問題,因此Linux AMD SEV代碼首先會檢查CPUID位。
了解更多:
https://lore.kernel.org/lkml/YLx% 2FiA8xeRzwhXJn@zn.tnic /T/#u