Linuxx86/x86_64内核代码已经具有保留前1MB内存的逻辑,以避免BIOS或内核破坏这些空间的可能性,并且自Linux5.13以来它将无条件地保留前1MB内存。Linux内核已满足IntelSandyBridge图形访问不到1MB内存的需求,已知前64K内存已被某些BIOS损坏,类似的问题也发生在内存的低端区域。但是,除了EGA/VGA帧缓冲区和BIOS之外,内核团队没有单独处理所有这些逻辑和可能的其他小众情况,而是更喜欢做一些保守的事情,比如总是保留前1MB的内存,这样它就不会被内核破坏。Linux5.13现在的做法是无条件地为Linuxx86/x86_64预留1MB,这个决定源于一个关于AMDRyzen系统无法在Linux5.13上启动的错误报告,因为它集成了其早期的内存预留处理,而只需要做第一个1MB无条件保留让事情变得更容易,并可能解决其他问题。此更改是在今天早上作为x86/urgent的紧急改进请求发送的。该团队认为,“放弃在第一个MB中保留一定数量的内存以防止BIOS损坏的所有愚蠢行为,而简单地无条件地保留整个MB是最佳实践。”今天早上的x86pullrequest还包括为即将推出的SapphireRapids服务器CPU禁用英特尔的一项新ENQCMD功能,直到可以正确清理和修复此内核代码。x86版本还处理不支持AMD64_SEVMSR的第一代Hygon(基于AMDZen的)CPU,因此LinuxAMDSEV代码首先检查CPUID位。
