之前耗了一段时间做SPDK下的vhost-user-nvme的开发,就是让VM内使用NVME存储。涉及到vhost-user-nvme设备的QEMU live迁移或者热升级的开发,碰到一个有意思的问题,值得写一下。 QEMU版本:https://github.com/spdk/qemu.git 最好用https://review.gerrithub.io/#/c/spdk/qemu/+/406011/ SPDK版本:https://githu...

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-5d5df35dcdf93185772491/] 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-3.16.37-git, qemu-v2.8-git 因为eventfd要与epoll配合使用,不清楚epoll的请参考epoll的linux内核工作机制。 一. Eventfd在QEMU下的使用 Eventfd在QEMU下的使用以这三个函数为基础:event_notifier_init和event_notifier_get_fd,以及event_notifier_set_handler。 在event_notifier_init中,初始化E...

源代码:linux-3.16.37-git, qemu-v2.7 1.vm启动时qemu的代码 virtio block的qemu cmd: [crayon-5d5df35dd0a7f595927552/] 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...