早在 2015 年,Linux 内核就已支持 x86/x86_64 的 UEFI 镜像内存功能,而对于华为来说,为 AArch64 添加该功能也是他们一直在努力的事情。4 月 14 日,华为工程师 Wupeng Ma 发布了最新补丁集,实现了对 AArch64 硬件的这种 Linux 镜像内存支持。
图:Wupeng Ma 发布的 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 发布的 Linux 内核邮件截图
如想获知更多关于此功能的信息,请访问华为工程师 Wupeng Ma 发布的 Linux 内核邮件进行了解。
信息来源:
https://lore.kernel.org/lkml/20220414101314.1250667-1-mawupeng1@huawei.com/