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

【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的内存
文章图片

但是 , 与其分别处理所有这些逻辑和除了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

    推荐阅读