http://git.qemu.org/git/qemu.git v2.8.0 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git 4.4.70 1.VRing的初始化 QEMU下的VRing [crayon-5d5df2d51d595424718684/] VirtQueue在QEMU端的初始化,即virtio_add_queue, virtio最多有1024个虚拟队列,且每个队列最多容纳1024个request单位...

QEMU下的内存结构体很多了,RAMBlock,MemoryRegion,AddressSpace,MemoryRegionSection,KVMSlot和kvm_userspace_memory_region,很多时候看代码时候都会被搅合成一坨,虽然很早时候在KVM源代码分析2:虚拟机的创建与运行和KVM源代码分析4:内存虚拟化都提到了内存虚拟化的过程,但实际上这几个结构体之间的关系并没有理...

问题不是出在upstream的版本上,而是内部开发的一个产品。在KVM这个系统里面,很多时候牵一发动全身,某些改动貌似是正确的,其实则不然,内核的其他模块也是类似的系统化,Jike说的“正是内核的开发门槛很高才保证了内核当前的质量”也是有道理的。 进入正题,产品要求VCPU进入guest之前需要等待响应,当存在响应的时...

代码版本:linux-git v4.10.0-rc3 1.kvm clock时钟 [crayon-5d5df2d51fe9b811767457/] 1)KVM clock 在guest中: kvmclock_init负责在guest启动过程中初始化kvm clock,首先更新了两个MSR值: #define MSR_KVM_WALL_CLOCK_NEW 0x4b564d00 #define MSR_KVM_SYSTEM_TIME_NEW 0x4b564d01 然后为每个CPU分配struct...

源代码:linux-3.16.37-git, qemu-v2.7 1.vm启动时qemu的代码 virtio block的qemu cmd: [crayon-5d5df2d5206fb929034133/] qemu中virtio blk代码所在的重点文件如下: hw\virtio\virtio.c hw\virtio\virtio-bus.c hw\virtio\virtio-rng.c hw\block\virtio-blk.c hw\net\virtio-net.c 在type_ini...

源代码:git tag, kernel v3.16.37 qemu v2.7 ,上一篇:KVM源代码分析4:内存虚拟化–OenHan 1. PIO指令介绍 80386的I/O指令使得处理器可以访问I/O端口,以便从外设输入数据,或者向外设发送数据。这些指令有一个指定I/O空间端口地址的操作数。有两类的I/O指令: 1、 在寄存器指定的地址传送一个数据(字节、字、双字...

KVM下steal_time源代码分析 代码版本:https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git branch v4.3 刚好有人在其他文章评论下问到steal_time机制,顺便看了一下,总结如下。 steal_time原意是指在虚拟化环境下,hypervisor窃取的vm中的时间,严格讲就是VCPU没有运行的时间。 在guest中执...