【问题标题】:Xen E820 memory map for domU kernelsdomU 内核的 Xen E820 内存映射
【发布时间】:2015-01-16 14:58:13
【问题描述】:

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

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

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

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

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

附: :: 如果我试图从 domU 内核写入这个区域,Xen 会拦截这个写入操作。实际上,这只是一个内存区域写入,应该没有问题,但它可能会显示为硬件访问。

【问题讨论】:

    标签: linux memory virtualization boot xen


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-07-01
      • 2020-05-17
      • 1970-01-01
      • 2014-02-15
      • 1970-01-01
      • 2015-10-05
      • 2023-04-09
      • 2016-05-05
      • 1970-01-01
      相关资源
      最近更新 更多