博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
kvm的vmcall
阅读量:7281 次
发布时间:2019-06-30

本文共 1345 字,大约阅读时间需要 4 分钟。

这几个接口的区别在于参数个数的不用,本质是一样的。挑个参数最多的看下:
static inline long kvm_hypercall4(unsigned int nr, unsigned long p1,unsigned long p2, unsigned long p3, unsigned long p4)
{
    long ret;
    asm volatile(KVM_HYPERCALL
             : "=a"(ret)
             : "a"(nr), "b"(p1), "c"(p2), "d"(p3), "S"(p4)
             : "memory"); return ret;
}将由客户机调用该函数发生vmexit
 
执行asm汇编代码时,首先将 "a"(nr), "b"(p1), "c"(p2), "d"(p3), "S"(p4)输入,当执行KVM_HYPERCALL时,#define KVM_HYPERCALL ".byte 0x0f,0x01,0xc1",表示该指令序列为0F01C1,此时VMM根据vmx.c中的kvm_vmx_exit_handlers中将会调用handle_vmcall,调用kvm_emulate_hypercall进行相应操作,并将结果返回给RAX寄存器,并返回"=a"(ret)。hypercall是同步执行的,如果host中kvm_emulate_hypercall不返回(比如睡眠10秒),那么guest中kvm_hypercall也不会返回,直到host里睡眠结束。
 
如果想要在非根模式下运行的客户机的每一个IO指令都产生VM-Exit,那么可以将Use I/O bitmaps 比特位所在字段设置为0,同时将Unconditional I/O exiting字段设为1即可。这样的话在客户机中运行的每一个IO指令(IN, INS, INSB, etc, etc...)都将导致VM-Exit从而陷入到VMM中。但是如果我们将Use I/O bitmaps字段置1,则Unconditional I/O exiting就无效了。此时在客户机中运行的IO指令是否陷入到VMM中由IO位图(bitmap)来指定:如果IO指令访问的某一端口地址在IO bitmap中对应位为1,则该条指令导致VM-Exit,否则意味着该端口可以被客户机直接所访问而无需VMM的介入。
在vmx_init中,将vmx_io_bitmap_a设置为0xff全1(memset(vmx_io_bitmap_a, 0xff, PAGE_SIZE)),在vmx_vcpu_setup中将vmx_io_bitmap_a读入IO_BITMAP_A(vmcs_write64(IO_BITMAP_A, __pa(vmx_io_bitmap_a))),则将端口地址对应IO bitmap位设为1,执行该指令将导师vm-exit。
 
host对于即将到来的根模式非根模式切换所做的准备,vmx_create_vcpu->vmx_vcpu_setup->vmx_set_constant_host_state

转载于:https://www.cnblogs.com/scu-cjx/p/6878309.html

你可能感兴趣的文章
ajax请求code:200但是进入error函数
查看>>
软件图标显示不正常的问题
查看>>
Golang websocket
查看>>
关于编码:Unicode/UTF-8/UTF-16/UTF-32
查看>>
C++ OpenSSL 之三:生成CSR文件
查看>>
amaze ui响应式辅助
查看>>
C++getline使用
查看>>
Spinner使用二
查看>>
android 隐藏输入法键盘
查看>>
Android jni 中打印logcat日志
查看>>
SSL和keystore生成、导入等配置
查看>>
The Eagles Hotel California Lyrics
查看>>
软件工程——课程评价
查看>>
OpenStack Placement Project
查看>>
微信支付问题
查看>>
购买类目的概率预测
查看>>
Ajax Step By Step2
查看>>
codeforces 701 B. Cells Not Under Attack
查看>>
当同时安装Python2和Python3后,如何兼容并切换使用详解(比如pip使用)
查看>>
Creating a Custom Page Layout in SharePoint 2013
查看>>