Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从kvm_vm_ioctl更新vmcs时发生Vmwrite错误_C_Linux Kernel_Virtualization_Kvm - Fatal编程技术网

从kvm_vm_ioctl更新vmcs时发生Vmwrite错误

从kvm_vm_ioctl更新vmcs时发生Vmwrite错误,c,linux-kernel,virtualization,kvm,C,Linux Kernel,Virtualization,Kvm,我正在KVM之上实现一个应用程序,在这个应用程序中,我需要捕获对CR3的写入 当我使用:vmcs\u set\u位(基于CPU的\u VM\u EXEC\u控制、基于CPU的\u CR3\u LOAD\u EXIT)处理VM退出时执行此操作时,,它工作正常,我可以在日志文件中看到陷阱 现在,当我在收到Qemu的命令后执行相同的操作时(通过调用我添加到kvm_x86_ops vmx_x86_ops的函数,在kvm_vm_ioctl中处理该命令),我会得到一个vmwrite错误 在错误日志之后: [

我正在KVM之上实现一个应用程序,在这个应用程序中,我需要捕获对CR3的写入

当我使用:
vmcs\u set\u位(基于CPU的\u VM\u EXEC\u控制、基于CPU的\u CR3\u LOAD\u EXIT)处理VM退出时执行此操作时,
,它工作正常,我可以在日志文件中看到陷阱

现在,当我在收到Qemu的命令后执行相同的操作时(通过调用我添加到
kvm_x86_ops vmx_x86_ops
的函数,在
kvm_vm_ioctl中处理该命令),我会得到一个vmwrite错误

在错误日志之后:

[  290.559474] start_vmi
[  290.559477] vmi: vmx.c: vmx_vmi_start_cr3_store_trapping: vmcs_read32(CPU_BASED_VM_EXEC_CONTROL) & CPU_BASED_CR3_LOAD_EXITING = 0
[  290.559480] vmwrite error: reg 4002 value c002 (err 16386)
[  290.559485] CPU: 0 PID: 3376 Comm: qemu-system-i38 Tainted: GF          O 3.13.0-32-generic #57~precise1-Ubuntu

[  290.559513] Call Trace:
[  290.559525]  [<c1680147>] dump_stack+0x41/0x52
[  290.559533]  [<f89f289a>] vmwrite_error+0x35/0x3b [kvm_intel]
[  290.559538]  [<f89e6b95>] vmcs_writel+0x25/0x30 [kvm_intel]
[  290.559542]  [<f89e6c27>] vmcs_set_bits+0x27/0x40 [kvm_intel]
[  290.559547]  [<f89e6c83>] vmx_vmi_start_cr3_store_trapping+0x43/0x50 [kvm_intel]
[  290.559564]  [<fbf861a5>] kvm_vm_ioctl+0x3b5/0x740 [kvm]
[  290.559570]  [<c1150747>] ? __handle_mm_fault+0x127/0x280
[  290.559574]  [<c115093a>] ? handle_mm_fault+0x9a/0x150
[  290.559580]  [<c168ec77>] ? __do_page_fault+0x287/0x520
[  290.559593]  [<fbf85df0>] ? kvm_vm_release+0x20/0x20 [kvm]
[  290.559600]  [<c1194ae2>] do_vfs_ioctl+0x72/0x2e0
[  290.559604]  [<c1194de7>] SyS_ioctl+0x97/0xa0
[  290.559609]  [<c1692b4d>] sysenter_do_call+0x12/0x28
[  290.559614]  [<c1680000>] ? cfq_arm_slice_timer+0x14e/0x254
[290.559474]启动供应商管理库存
[290.559477]vmi:vmx.c:vmx_vmi_启动_cr3_存储_捕获:vmcs_read32(基于CPU的_VM_执行控制)&基于CPU的_cr3_加载_退出=0
[290.559480]vmwrite错误:reg 4002值c002(错误16386)
[290.559485]CPU:0 PID:3376通信:qemu-system-i38受污染:GF O 3.13.0-32-generic#57~精度1 Ubuntu
[290.559513]呼叫跟踪:
[290.559525][]转储堆栈+0x41/0x52
[290.559533][]vmwrite_错误+0x35/0x3b[kvm_英特尔]
[290.559538][]vmcs_writel+0x25/0x30[kvm_intel]
[290.559542][]vmcs_设置位+0x27/0x40[kvm_英特尔]
[290.559547][]vmx_vmi_开始_cr3_存储_陷阱+0x43/0x50[kvm_英特尔]
[290.559564][]kvm_vm_ioctl+0x3b5/0x740[kvm]
[  290.559570]  [] ? __处理\u mm\u故障+0x127/0x280
[  290.559574]  [] ? 处理\u mm\u故障+0x9a/0x150
[  290.559580]  [] ? __do_page_故障+0x287/0x520
[  290.559593]  [] ? kvm_vm_发布+0x20/0x20[kvm]
[290.559600][]执行vfs\u ioctl+0x72/0x2e0
[290.559604][]系统ioctl+0x97/0xa0
[290.559609][]sysenter\u do\u call+0x12/0x28
[  290.559614]  [] ? cfq_臂_片_定时器+0x14e/0x254
有人知道为什么会有问题吗?如果有任何答复,我将不胜感激