gpt4 book ai didi

linux - 具有无效控制字段的 VM 条目 (vmlaunch)

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:04:44 25 4
gpt4 key购买 nike

我正在使用基于 Linux 的 VMM 学习 Intel VMX。
我发现“vmlaunch”指令失败,vm 指令错误为 7。
我检查了 Intel 的 SDM,它的意思是“VM entry with invalid control field”。
我仔细检查了 VM_entry_control、VM_exit_control、VM_exec_control,但没有发现任何错误。我正在使用 EPTP 执行 VM(VM 处于实模式)。下面是控制字段和 VMX 功能。主机CPU信息如下。
Linux 内核是 3.10 和 4.4.0。

    processor       : 1    vendor_id       : GenuineIntel    cpu family      : 6    model           : 63    model name      : Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz    stepping        : 2    microcode       : 0x37    cpu MHz         : 2391.223    cache size      : 15360 KB    fpu             : yes    fpu_exception   : yes    cpuid level     : 13    wp              : yes    
<pre>
0x0000001F = control_VMX_pin_based
0xA50061F2 = control_VMX_cpu_based
0x00000082 = control_VMX_proc2_based
0x00000000 = control_exception_bitmap
0x00000000 = control_pagefault_errorcode_mask
0xFFFFFFFF = control_pagefault_errorcode_match
0x00000002 = control_CR3_target_count
0x00036FFB = control_VM_exit_controls
0x000011FB = control_VM_entry_controls
0x00000000 = control_VM_entry_interruption_information
0x00000000 = control_VM_entry_exception_errorcode
0x00000000 = control_VM_entry_instruction_length

0x0000000000000020 = control_CR0_mask
0x0000000000002000 = control_CR4_mask
0x0000000000000020 = control_CR0_shadow
0x0000000000002000 = control_CR4_shadow
0x0000000000000000 = control_CR3_target0
0x0000000124FCE000 = control_CR3_target1
0x0000000000000000 = control_CR3_target2
0x0000000000000000 = control_CR3_target3

主机VMX能力如下,

 VMX-Capability Model-Specific Registers     00D8100000000001 = IA32_VMX_BASIC_MSR     0000003F00000016 = IA32_VMX_PINBASED_CTLS_MSR     FFF9FFFE0401E172 = IA32_VMX_PROCBASED_CTLS_MSR     0033FFFF00036DFF = IA32_VMX_EXIT_CTLS_MSR     0000B3FF000011FF = IA32_VMX_ENTRY_CTLS_MSR     00000000000401E0 = IA32_VMX_MISC_MSR     0000000080000021 = IA32_VMX_CR0_FIXED0_MSR     00000000FFFFFFFF = IA32_VMX_CR0_FIXED1_MSR     0000000000002000 = IA32_VMX_CR4_FIXED0_MSR     00000000000427FF = IA32_VMX_CR4_FIXED1_MSR     000000000000005A = IA32_VMX_VMCS_ENUM_MSR     000000EE00000000 = IA32_VMX_PROCBASED_CTLS2     00000F0106114041 = IA32_VMX_EPT_VPID_CAP     0000003F00000016 = IA32_VMX_TRUE_PINBASED_CTLS     FFF9FFFE04006172 = IA32_VMX_TRUE_PROCBASED_CTLS     0033FFFF00036DFB = IA32_VMX_TRUE_EXIT_CTLS     0000B3FF000011FB = IA32_VMX_TRUE_ENTRY_CTLS

最佳答案

我没有看到你提供的字段有什么问题,但是对你没有列出的字段还有更多的检查。比如Use MSR bitmap是1,但是你不显示MSR位图地址的值。

您应该完成第 26.2.1 节中的所有检查。

我还建议查看与不受限制的 guest 相关的任何检查。建议您在出入口控件中将控件设置为保存和恢复 EFER。

关于linux - 具有无效控制字段的 VM 条目 (vmlaunch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49246983/

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