早在 2015 年,linux 内核就已支持 x86/x86_64 的 uefi 镜像内存功能,而对于华为来说,为 aarch64 添加该功能也是他们一直在努力的事情。4 月 14 日,华为工程师 wupeng ma 发布了最新补丁集,实现了对 aarch64 硬件的这种 linux 镜像内存支持。
aarch64 是 armv8 架构的一种执行状态。这并不单纯只是一个 32 位 arm 构架扩充套件,而是完全基于 armv8 架构的 a64 指令集。uefi 允许设置基于地址范围的部分内存镜像,该镜像一直沿用到 uefi 2.5 规范。
镜像内存是一种将内存分成两个独立的技术通道的技术,通常用在存储设备上,比如服务器。通过镜像内存,一个通道可以被复制到另一个通道用以备份。这种方法使输入/输出(i/o)寄存器和内存出现在多个地址范围内,因为同一物理字节可在多个地址访问。使用内存镜像,可以实现更高的内存可靠性和更高级别的内存整合。而该功能对于 arm64 架构来说,同样适用。
根据平台设置,服务器可以提供完整镜像(保留 50% 用于镜像)或部分镜像,通常为 10~20%。如果低于/高于 4gb 还可以手动选择,甚至由操作系统决定镜像的内存地址范围。
efi_fake_mem 用于测试镜像功能,不会在生产环境中使用,此测试功能可以模拟内存的属性值。efi_fake_mem 支持之所以被放在首位,是因为由 bios 报告的内存的属性很难模拟。有了这种支持,任何支持 efi 的 arm64 机器都可以轻松测试镜像功能。
值得注意的是,wupeng ma 在邮件中有明确条件:“如果未指定 kernelcore,将禁用镜像功能。”
如想获知更多关于此功能的信息,请访问华为工程师 wupeng ma 发布的进行了解。
信息来源:
评论