Linux|Linux x86/x86_64现在将始终保留前1MB的内存

Linux x86/x86_64内核代码已经有了保留前1MB内存部分的逻辑,以避免BIOS或内核有可能破坏这些空间,而自Linux 5.13开始将无条件地始终保留前1MB内存 。Linux内核已经满足了英特尔Sandy Bridge图形访问低于1MB的内存,已知前64K的内存被一些BIOS损坏,以及类似的问题出现在内存的低区域 。

Linux|Linux x86/x86_64现在将始终保留前1MB的内存
文章图片

【Linux|Linux x86/x86_64现在将始终保留前1MB的内存】但是,与其分别处理所有这些逻辑和除了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

    推荐阅读