KVM初始化/创建虚拟机和vCPU

x86/kvm/vmc.c  // x86平台和CPU相关的虚拟化 VT-X

x86/kvm/x86.c  // x86平台kvm虚拟化

virt/kvm/kvm_main.c // 虚拟化模块(可类比xx-core)

简单几个重要数据结构。// 一个虚拟机,对应一个进程,一个虚拟vcpu,对应一个线程

kvm_host.h

struct kvm
{
    struct kvm_vcpu *vcpus[KVM_MAX_VCPUS];
    struct list_head vm_list; // 用于挂到全局vm_list列表
    struct kvm_arch arch; // 平台相关
}
// 和虚拟机一一对应。

x86
struct vcpu_vmx
{
    struct kvm_vcpu vcpu;
}
// 单个虚拟机的单个虚拟CPU。

struct vmcs {
	u32 revision_id;
	u32 abort;
	char data[0];
}; // 每个物理CPU一个 vmxarea

 kvm模块初始化

kvm_init()
{
    kvm_arch_init(); // 平台初始化
    kvm_irqfd_init(); // 创建kvm-irqfd-cleanup workqueue
    kvm_arch_hardware_setup();
    //检查每一个处理器的兼容性;
    //注册监听CPU up/down;
    //注册监听系统重启;
    //分配存放kvm_vcpu cache;
    //分配存放异步错误(pf)cache;
    //注册/dev/kvm;
    //注册syscore_ops;
    //注册类别为kvm_dev_type_vfio kvm_device_ops;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值