gpt4 book ai didi

linux - domU 内核的 Xen E820 内存映射

转载 作者:太空狗 更新时间:2023-10-29 12:31:30 25 4
gpt4 key购买 nike

xen 如何处理 domU 内核的 E820 内存映射?在我的特定问题中,我试图将非 volatile RAM 映射到 domU 内核。 dom0 内存映射返回以下相关部分。

100000000-17fffffff:系统内存(4GB 到 6GB)

180000000-37fffffff :保留(6GB 到 14GB)

第二行对应NVRAM,是dom0内核中6GB到14GB的区域。我如何将此 NVRAM 区域映射到根本不映射此区域的 domU 内核。

最终我希望 nvram 区域在其他 domU 虚拟机中可用,因此任何解决方案或建议都会非常有帮助。

附言::如果我尝试从 domU 内核写入此区域,Xen 将拦截此写入操作。实际上这只是一个内存区域写入,应该不是问题,但它可能表现为硬件访问。

最佳答案

Xen 中的 guest 域有两种不同的 x86 模型:1. 硬件虚拟机(HVM):它利用 Intel VT 或 AMD SVM 扩展来在 x86 平台上实现真正的虚拟化2. Paravirtualized (PV) :此模式在操作系统的源代码中添加修改,以摆脱 x86 虚拟化问题,并增加系统性能。

这两种不同的型号以不同方式处理 E820 内存映射。 E820 内存映射基本上为操作系统提供了可操作的物理地址空间以及 I/O 设备的位置。在 PV 模式下,I/O 设备可通过 Xenstore 获得。 domain builder 仅在 pv guest 引导期间提供控制台设备。 guest 必须映射所有其他 I/O 设备。此模式下的客户机在保护模式下开始执行,而不是 x86 的实模式。域构建器将 start_info 页面映射到 guest 域的物理地址空间。此 start_info 页包含初始化内核的大部分信息,例如可用页数、CPU 数、控制台信息、Xenstore 等。此上下文中的 E820 内存映射仅包含可用内存页数,因为未模拟 BIOS和 I/O 设备信息通过 Xenstore 单独提供。

另一方面,在 HVM 中, guest BIOS 和其他设备必须由 Xen 模拟。这种模式应该支持任何未修改的操作系统,因此我们不能使用以前的方法。 BIOS 模拟是通过从 Bochs 借来的代码完成的,而设备是使用 QEMU 代码模拟的。此处为操作系统提供了 E820 内存映射,由域构建器构建。 HVM 域构建器通常会将内存布局信息传递给 Bochs 仿真器,然后后者执行所需的任务。

要获取 NVRAM 页面,您必须为 NVRAM 构建一个单独的 MMU。这个 MMU 应该处理所有 NVM 页面,并像 RAM 页面一样按需分配/释放它。这是很多工作。

关于linux - domU 内核的 Xen E820 内存映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25471260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com