QEMU block cache参数分析

代码:git://git.qemu-project.org/qemu.git  v2.9.0 在QEMU doc描述的块设备cache参数: cache is "none", "writeback", "unsafe", "directsync" or "writethrough" and controls how the host cache is used to access block data. cache mode cache.writeback cache.direct cache.no-flush writeback ...

virtIO vring工作机制分析

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 typedef struct VRing {//vring中最多有多少各request unsigned int num; unsigned int num_default; //数据对齐比例尺 unsigned int al...

CENTOS 7.3 hd630 graphic driver

Current graphic driver of CentOS 7.3 doesn't fully support HD GRAPHICS 630 of I7-7700K CPU, you should download and install the rpm software from the link https://pan.baidu.com/s/1qYLlBkw, the pass code is qrdg. The issue "USE I7-7700K (HD GRAPHICS 630) ON CENTOS 7" of 01.org will be fixed. Th...

QEMU下的内存结构MemoryRegion和AddressSpace

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

KVM MMU page释放机制

KVM tree commit id:2868b2513aa732a99ea4a0a6bf10dc93c1f3dac2 v4.11.0 kvm_mmu_free_page释放MMU page, kvm_mmu_commit_zap_page负责具体的任务,需要被释放的MMU page都挂在invalid_list链表上,而invalid_list生成方式主要有这几种:kvm_sync_page, kvm_sync_pages,kvm_mmu_prepare_zap_page,prepare_zap_olde...

QEMU Object Model树状图

下面是QEMU object Model(QOM)的树状图,使用bash脚本生成的 #!/bin/bash INFO_FILE="$(pwd)/test.txt" function catfile() { local dir dir="$1" cat $INFO_FILE | grep "^$dir " | awk -F " -> " '{print $2}' | xargs mkdir if [ $(ls * | wc -w) -eq 0 ];then return fi for i in * d...

博客访问者的一些有趣数据

看Google analytics分析的时候,突然想到之前的一件事,那就是360刚刚做搜索的时候,很多人质疑它宣布的15%的市场占比,后来360股价暴涨后,想到使用CNZZ统计数据的估计能提前预知到这点吧,于是我把最近一段时间内的访问者信息抽象出来,发现了很多有意思的事情。 首先要明确博客受众主要是Linux内核和虚拟化开发人...

QEMU虚拟网络E1000源代码分析

代码版本:QEMU git release v2.8 x86_64-softmmu/qemu-system-x86_64 -enable-kvm -M q35  -m 256 -smp 1 -drive file=/workspace/kvm_auto_test/kvm_test.qcow2,format=qcow2 -netdev tap,fd=26,id=hostnet0 -device e1000,netdev=hostnet0,id=net0,mac=52:54:00:f1:ec:ba,bus=pcie.0 e1000_class_init是网络设备初...

Linux E1000网络驱动源代码分析

kernel源代码版本:git-v3.16.39 1.初始化 e1000_init_module下pci_register_driver注册驱动, static struct pci_driver e1000_driver = { .probe    = e1000_probe, .remove   = e1000_remove, .shutdown = e1000_shutdown, }; 在e1000_probe下,e1000_is_need_ioport为真时,执行 //PCI 6个bar空间...

QEMU/KVM下VCPU同步引发的死锁

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