[虚拟化/云] kvm的架构分析

时间:2023-03-09 08:29:54
[虚拟化/云] kvm的架构分析

预备知识

1. 客户机物理页框到宿主机虚拟地址转换

http://blog.****.net/zhuriyuxiao/article/details/8968781

http://www.tuicool.com/articles/NjY3uu

2. KVM API

简单的API例子

http://smilejay.com/2013/03/use-kvm-api/

hejie 同学的《使用KVM API实现Emulator Demo》
http://soulxu.github.io/blog/2014/08/11/use-kvm-api-write-emulator/

3. wenyi 同学的 《KVM 内存虚拟化及其实现》

http://www.ibm.com/developerworks/cn/linux/l-cn-kvm-mem/

4. KVM 官方文档

$ git clone http://git.kernel.org/pub/scm/virt/kvm/kvm.git

$ vim Documentation/virtual/kvm/api.txt

实战

该实例由Mark Wu同学提供。

KVM API General Description

• The kvm API is centered around file descriptors.
• An initial open("/dev/kvm") obtains a handle to the kvm subsystem; this handle can be used to issue system ioctls.
• A KVM_CREATE_VM ioctl on this handle will create a VM file descriptor which can be used to issue VM ioctls.
• A KVM_CREATE_VCPU ioctl on a VM fd will create a virtual cpu and return a file descriptor pointing to it.
• Finally, ioctls on a vcpu fd can be used to control the vcpu, including the important task of actually running guest code.

• KVM related file descriptors in qemu.

 (gdb) p kvm_state->fd
$ =
(gdb) p kvm_state->vmfd
$ =
(gdb) info threads
Thread 0x7f86a60f0700 (LWP ) 0x00007f86ad0803dc in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.
Thread 0x7f86a56ef700 (LWP ) 0x00007f86ad0803dc in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.
Thread 0x7f86a6af1700 (LWP ) 0x00007f86ad08075b in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.
* Thread 0x7f86ae478940 (LWP ) 0x00007f86a97772f3 in select () from /lib64/libc.so.
(gdb) t
[Switching to thread (Thread 0x7f86a56ef700 (LWP ))]# 0x00007f86ad0803dc in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.
(gdb) bt
# 0x00007f86ad0803dc in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.
# 0x00007f86ae60a2e9 in qemu_cond_wait (cond=<value optimized out>, mutex=<value optimized out>) at qemu-thread-posix.c:
# 0x00007f86ae67772f in qemu_kvm_wait_io_event (arg=0x7f86b10a0930) at /home/mark/Work/qemu/qemu/cpus.c:
# qemu_kvm_cpu_thread_fn (arg=0x7f86b10a0930) at /home/mark/Work/qemu/qemu/cpus.c:
# 0x00007f86ad07c7f1 in start_thread () from /lib64/libpthread.so.
# 0x00007f86a977e70d in clone () from /lib64/libc.so.
(gdb) p ((CPUX86State *)0x7f86b10a0930)->kvm_fd
$ =
(gdb) t
[Switching to thread (Thread 0x7f86a60f0700 (LWP ))]# 0x00007f86ad0803dc in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.
(gdb) bt
# 0x00007f86ad0803dc in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.
# 0x00007f86ae60a2e9 in qemu_cond_wait (cond=<value optimized out>, mutex=<value optimized out>) at qemu-thread-posix.c:
# 0x00007f86ae67772f in qemu_kvm_wait_io_event (arg=0x7f86b1088a00) at /home/mark/Work/qemu/qemu/cpus.c:
# qemu_kvm_cpu_thread_fn (arg=0x7f86b1088a00) at /home/mark/Work/qemu/qemu/cpus.c:
# 0x00007f86ad07c7f1 in start_thread () from /lib64/libpthread.so.
# 0x00007f86a977e70d in clone () from /lib64/libc.so.
(gdb) p ((CPUX86State *)0x7f86b1088a00)->kvm_fd
$ =

• Dump KVM related files via crash

 crash> files
PID: TASK: ffff880053ea0100 CPU: COMMAND: "qemu-system-x86"
ROOT: / CWD: /home/mark/Work/qemu/qemu
FD FILE DENTRY INODE TYPE PATH
ffff880050b8c8c0 ffff88000ad77a80 ffff880134d13318 CHR /dev/pts/
ffff880050b8c8c0 ffff88000ad77a80 ffff880134d13318 CHR /dev/pts/
ffff880050b8c8c0 ffff88000ad77a80 ffff880134d13318 CHR /dev/pts/
ffff88008491fa80 ffff880134c9b0c0 ffff88013b372a78 CHR /dev/kvm
ffff88012eb52140 ffff8800ae376e40 ffff88013b71e2d8 REG anon_inode:/kvm-vm
ffff8801357e7180 ffff8800ae3760c0 ffff88013b71e2d8 REG anon_inode:/[signalfd]
ffff880014255a80 ffff8800ae376180 ffff88013b71e2d8 REG anon_inode:/[eventfd]
ffff880014255a80 ffff8800ae376180 ffff88013b71e2d8 REG anon_inode:/[eventfd]
ffff880136751bc0 ffff880089da2c80 ffff88003f6490c0 REG /home/mark/Work/qemu/images/fedora.img
ffff8800a3c4d480 ffff8800ae376300 ffff880134cb1358 FIFO
ffff88008adc6980 ffff8800ae376300 ffff880134cb1358 FIFO
ffff88008ae865c0 ffff88012256f440 ffff88013b71e2d8 REG anon_inode:/kvm-vcpu
ffff88007bb11ec0 ffff88012256f2c0 ffff88013b71e2d8 REG anon_inode:/kvm-vcpu
crash> p ((struct file *)0xffff88008491fa80)->f_op
$ = (const struct file_operations *) 0xffffffffa04f0e40
crash> sym 0xffffffffa04f0e40
ffffffffa04f0e40 (d) kvm_chardev_ops [kvm]
crash> px *((struct file*)0xffff88007bb11ec0)->f_op
$ = {
owner = 0xffffffffa05249a0,
llseek = ,
read = ,
write = ,
:
ioctl = ,
unlocked_ioctl = 0xffffffffa04bae00,
compat_ioctl = 0xffffffffa04bae00,
mmap = 0xffffffffa04b9220,
open = ,
flush = ,
release = 0xffffffffa04bd830,
fsync = ,
aio_fsync = ,
:
setlease =
}
crash> sym 0xffffffffa04bae00
ffffffffa04bae00 (t) kvm_vcpu_ioctl [kvm]
crash> sym 0xffffffffa04b9220
ffffffffa04b9220 (t) kvm_vcpu_mmap [kvm]
crash> px ((struct file *)0xffff88012eb52140)->private_data
$ = (void *) 0xffff880137c6c000
crash> px vm_list
vm_list = $ = {
next = 0xffff880137c6c280,
prev = 0xffff880137c6c280
}
crash> sym vm_list
ffffffffa04f0aa0 (D) vm_list [kvm]
crash> px ((struct kvm*)0xffff880137c6c000)->vm_list
$ = {
next = 0xffffffffa04f0aa0,
prev = 0xffffffffa04f0aa0
}

CPU Virtulization

aaarticlea/png;base64,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NDjT+vRReRIgARIgARIgARIgARIgARJIXQI0OFP33FAzEkhLAj/88IO8/PLLcvDgwbTUn0qTAAmQAAnERmDq1Kny9ttvx9aYrUiABDKWAA3OjD21nBgJJIfAhx9+KP3795d9+/YlRwGOSgIkQAIkkBQCo0aNknvuuScpY3NQEiCB1CVAgzN1zw01IwESIAESIAESIAESIAESIIG0JkCDM61PH5UnARIgARIgARIgARIgARIggdQlQIMzdc8NNSMBEiABEiABEiABEiABEiCBtCZAgzOtTx+VJwESIAESIAESIAESIAESIIHUJUCDM3XPDTUjgbQkUKJECalQoYIUKFAgLfWn0iRAAiRAArERKF26tJQrVy62xmxFAiSQsQQKWEoydnacGAmQAAmQAAmQAAmQAAmQAAmQQNII0MOZNPQcmARIgARIgARIgARIgARIgAQymwANzsw+v5wdCZAACZAACZAACZAACZAACSSNAA3OpKHnwCRAAiRAAiRAAiRAAiRAAiSQ2QQKp+P0HnzwQRk+fLjUqFEjHdWnziSQUAI7d+6UypUry48//igI2JBsWbRokSxbtkx69OghRYoUSbY6HJ8ESIAESCCfCMyaNUt27Ngh3bt3z6cROQwJkEA6EEhLg/PLL7+UgwcPSsuWLdOBMXUkgTwlMGHCBNm8ebOsXr1amjZtmqdjRdL522+/rR8Ibd++ndEKIwHGOiRAAiSQIQRw7cdDx99//z1DZsRpkAAJJIJAWhqcmDhurN9///1EMGAfJJDWBF588UW5+eab03oOVJ4ESIAESIAESIAESCAzCXAPZ2aeV86KBEiABEiABEiABEiABEiABJJOgAZn0k8BFSABEiABEiABEiABEiABEiCBzCRAgzMzzytnRQIkQAIkQAIkQAIkQAIkQAJJJ0CDM+mngAqQAAmQAAmQAAmQAAmQAAmQQGYSoMGZmeeVsyKBpBF44IEHZOvWrVK2bNmk6cCBSYAESIAE8p/Au+++KwsXLsz/gTkiCZBAShNI2yi1KU2VypFAFhMoUaKE4EUhARIgARLILgKpkAs6u4hztiSQHgTo4UyP80QtSYAESIAESIAESIAESIAESCDtCNDgTLtTRoVJgARIgARIgARIgARIgARIID0I0OBMj/NELUkgbQisX79e5s2bJ0eOHEkbnakoCZAACZBA/ARWrlwp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FtVyPLzv3r27ugzBDS+r7n3Xrxv14TXPEKDg9AxXjkoCJEACJEACJEACJEACHieAM5zwXqL8BryXloaQW1iRIkUsb8X4XvcmRkRExNjWskHt2rWVuN26dasK4dUy60rGjBmlTp06lk1ViRTYrFmzrO65egGiFd5bnF1t1aqVaJU15M0331QlZWjeJUDB6V3enI0ESIAESIAESIAESIAE3EZAK5miziTCi4ewVUvLnj27urR69WqzW0+ePJFJkybJpk2bLLtEv0cWW9j69etttrF1A8mDcGYU9t5776nanHiP65aGM584W4msssOGDVOhsJa2Y8cO6dGjh+Vlu++RHAi2aNEi9RP1PWneJ0DB6X3mnJEEApoACktrdcECeo/cHAmQAAmQgDUBJKDRs3Ja3+UVTxIYPny4Ckc1MmRshY0ePVqdq+zdu7fy+KF0CAQcsrrasoYNG6pbSPIDsdi3b1+VqAilRRwxCEmMj3Io+GmZLEgfA57PmTNnKjEKj22BAgXU2rAvhODiffny5QWi0xnDOU78XgLT6nJKrVq1nOnOtm4iYPsT5qYJOAwJkEBwERg5cqScOHEiuDbN3ZIACZAACSgP2g8//EAScUAAYl/35llOjzOen332mRKk8FQioy1CV9OkSaM8ipUqVbLsEv0epUWQZAfeSZwFHT9+vPz6668221vegKiFQIXhJ97bsvr166vw26pVq6rfI+B9xe8UU6ZMkePHj6uw2wEDBtjqbngdZXr0/XXt2tWuuDYcgBfdQoB1ON2CkYOQAAmQAAmQAAmQAAmQgGcIIKNsTDZu3DjBy8j+97//qVqdu3btksePH6sssQULFlRNa9SoYdRFXYNgg+cRQhMiEGc6EcWUIkUKdR9huTEZRK2jhjOXqOeN7LbYM34ioyzWmixZMqthYpofpVDwRUhYWJigVEpszGiukJAQVe7FnsV0317fQLlHwRkoT5L7IAESIAESIAESIAESIAEbBODRtCcubXRTl1FmBC9vGQStO8q1oOYovLMI7U2dOrW3ls95LAgwpJYfCRIgARIgARIgARIgARIggYAigJqbEJwwZ5MNBRQIH9gMBacPPAQugQQCiQDOX0ydOjWQtsS9kAAJkAAJOEAAmUCXL1/uQEs2IQHPE5gzZ45cvnxZnf10pSSM51cYPDNQcAbPs+ZOScArBObNmyd6sWev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N29en+fCA0iABEiABEggnAkwhzOcrx7nTgIhSGDZsmWCMMImTZqE4Oz8PyXmcPqfaaiOeOzYMS0oP/vsMzlw4IAgFBcFiOrVqyerVq2SiRMnypkzZyRfvnzy7LPPag9n4cKFQ3U5nBcJ+J3ArFmzdKVl3HShkQAJkIBBgIKT7wUSIAG/EmjatKmu/okv5NFgFJzRcJXt13j9+nWZO3eufPLJJ/p/tDdBeCyEJwoNIUczTZo00QeGK456Aih+hZuNaD1EIwESIAGDAENq+V4gARIgARIgAR8IIK8TN1Zmz54t3333nT4ShYX++OMPadmyJcWmDyy5KwmQAAmQQOQToOCM/GvMFZIACZAACQSIAMJnYQgjpJEACZAACZAACTgSoOB0ZMItJEACJEACJEACJEACJEACJEACfiBAwekHiByCBEiABEiABEiABEiABEiABEjAkQAFpyMTbiEBEiABEiABEiABEiABEiABEvADgdR+GINDkAAJkICNAJrao4onjQRIgARIILoI7N+/n0WzouuSc7Uk4BUBCk6vMHEnEiABbwmgNyGNBEiABEgg+gigLQqNBEiABKwEGFJrJcLnJEACJEACJEACJEACJEACJEACfiFAwekXjByEBEiABEiABEiABEiABEiABEjASoCC00qEz0mABJJEYPfu3bJ58+YkjcGDSYAESIAEwo/Ahg0bZN++feE3cc6YBEggoAQoOAOKl4OTQPQR6NGjhzRt2jT6Fs4VkwAJkECUE6hbt67069cvyilw+SRAAlYCFJxWInxOAiRAAiRAAiRAAiRAAiRAAiTgFwIUnH7ByEFIgARIgARIgARIgARIgARIgASsBCg4rUT4nARIgARIgARIgARIgARIgARIwC8EKDj9gpGDkAAJkAAJkAAJkAAJkAAJkAAJWAmktm7gcxIgARIgARIgARIgARJwRWDcuHHy448/6pcLFCggX3zxhaRIkcLp7ufOnRNUL8f/N27ckIwZM0rBggUlf/78Lo9xOhA3kgAJhC0BejjD9tJx4iQQmgTwxWPp0qWhOTnOigRIgARCnMDEiRO1EDMe5cqVcznja9euSdmyZe32b9Kkid1z81jufr7//vtdnsf8woEDB+TVV1+VX3/9VT8eeOABm3BEW5QRI0bI2bNn5e2335by5ctL1qxZpVq1alKvXj2pX7++1KxZU4tU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EF3ObmJBND777LMez2sVU/Dy4b3qya5du2ZXKAjtTFz1+DTGMuaJMNzu3btrD2K5cuWkUKFCurLtiRMn5K+//rIrYISiQv/73/+cTicxa7eu1+zhxE1BPMy2f/9++eeff2ybcOPIW0HudNLcSAIk4JIABadLNHyBBEiABLwjgC9UzloBeHc09yIBEiABRwLWXEbsgYI/8DYiP9KTuRNg7o4dPXq0bN26Ve+SN29eQb6jJ7PmYkK0btq0ST+cGbyMqLibLVs2Zy+Lr2uPi4sTVOQ1DK1XrHmb1hNZ+UBsOgvxtR7H5yRAAr4T8PyJ5fuYPIIESIAESIAESIAESCAJBJyJro4dO0r16tW9GtUqqLzpv3n06FG7SrTDhw932ePTPInPPvtMunXrpqvRuqqCizBWhNB++umnWtCWL1/e5Tp8XTt6jaKKr2He5Kpa+XhzjMsJ8wUSIAG3BFKo5sEJ3YPd7soXSYAESMAzgaZNm+pS80aBBs9HcA8SIAESIIFQIIDCQCj8A4M4XLp0qU/TgsfywQcflN69e+sem/A8Iow3d+7cOs+ZHkSfcHJnEogYAgypjZhLyYWQAAmQAAmQAAmQQOIIQFwaYhPeyDFjxiRqIKQYRFvxuESB4kEkEEUEGFIbRRebSyUBEiABEiABEiABK4Hr169Lly5dbJtffPFFqVy5snU3PicBEiCBRBGghzNR2HgQCZAACZAACZAACUQGAaRAtGrVSj+Qg2kWn5GxQq6CBEggOQlQcCYnfZ6bBEiABEiABEiABJKZAIr09OvXL5lnwdOTAAlEKgGG1EbqleW6SIAESIAESIAESIAESIAESCCZCdDDmcwXgKcngUgjgCbhp06dirRlcT0kQAIkQAIeCIwcOVIKFSrkYS++TAIkEG0E2BYl2q4410sCJEACJEACJEACJEACJEACQSLAkNoggeZpSIAESIAESIAESIAESIAESCDaCFBwRtsV53pJgARIgARIgARIgARIgARIIEgEKDiDBJqnIQESIAESIAESIAESIAESIIFoI0DBGW1XnOslARIgARIgARIgARIgARIggSARoOAMEmiehgRIgARIgARIgARIgARIgASijQAFZ7Rdca6XBEiABEiABEiABEiABEiABIJEgIIzSKB5GhIgARIgARIgARIgARIgARKINgIUnNF2xbleEiABEiABEiABEiABEiABEggSAQrOIIHmaUiABEiABEiABEiABEiABEgg2ghQcEbbFed6SYAESIAESIAESIAESIAESCBIBCg4gwSapyEBEiABEiABEiABEiABEiCBaCPwf13qH9QhHc4wAAAAAElFTkSuQmCC" alt="" />

vCPU initilization

• qemu-kvm backtrace of vcpu initlizaton

 (gdb) bt
# qemu_init_vcpu (_env=0x7ffff8b18a00) at /home/mark/Work/qemu/qemu/cpus.c:
# 0x00007ffff7e9f869 in cpu_x86_init (cpu_model=0x7ffff7f8fca9 "qemu64") at /home/mark/Work/qemu/qemu/target-i386/helper.c:
# 0x00007ffff7ee1de0 in pc_new_cpu (cpu_model=0x7ffff7f8fca9 "qemu64") at /home/mark/Work/qemu/qemu/hw/pc.c:
# pc_cpus_init (cpu_model=0x7ffff7f8fca9 "qemu64") at /home/mark/Work/qemu/qemu/hw/pc.c:
# 0x00007ffff7ee297c in pc_init1 (system_memory=0x7ffff8b113f0, system_io=0x7ffff8b114f0, ram_size=, boot_device=0x7fffffffdf10 "cad",
kernel_filename=0x0, kernel_cmdline=0x7ffff7f668eb "", initrd_filename=0x0, cpu_model=0x0, pci_enabled=, kvmclock_enabled=)
at /home/mark/Work/qemu/qemu/hw/pc_piix.c:
# 0x00007ffff7ee30d8 in pc_init_pci (ram_size=, boot_device=0x7fffffffdf10 "cad", kernel_filename=0x0, kernel_cmdline=0x7ffff7f668eb "",
initrd_filename=0x0, cpu_model=<value optimized out>) at /home/mark/Work/qemu/qemu/hw/pc_piix.c:
# 0x00007ffff7de57a9 in main (argc=<value optimized out>, argv=<value optimized out>, envp=<value optimized out>) at /home/mark/Work/qemu/qemu/vl.c:
 qemu_init_vcpu
qemu_kvm_start_vcpu
qemu_thread_create(env->thread, qemu_kvm_cpu_thread_fn, env); /* One qemu thread per vCPU */
qemu_kvm_cpu_thread_fn
kvm_init_vcpu
+-->kvm_cpu_exec---+
| |
-------------------+ int kvm_init_vcpu(CPUState *env)
{
KVMState *s = kvm_state;
long mmap_size;
int ret;
DPRINTF("kvm_init_vcpu\n");
ret = kvm_vm_ioctl(s, KVM_CREATE_VCPU, env->cpu_index);
if (ret < ) {
DPRINTF("kvm_create_vcpu failed\n");
goto err;
}
env->kvm_fd = ret;
env->kvm_state = s;
env->kvm_vcpu_dirty = ;
mmap_size = kvm_ioctl(s, KVM_GET_VCPU_MMAP_SIZE, );
if (mmap_size < ) {
ret = mmap_size;
DPRINTF("KVM_GET_VCPU_MMAP_SIZE failed\n");
goto err;
}
env->kvm_run = mmap(NULL, mmap_size, PROT_READ | PROT_WRITE, MAP_SHARED,
env->kvm_fd, );
:
}

Guest execution

• qemu function kvm_cpu_exec

 int kvm_cpu_exec(CPUState *env)
{
struct kvm_run *run = env->kvm_run;
int ret, run_ret;
DPRINTF("kvm_cpu_exec()\n");
if (kvm_arch_process_async_events(env)) {
env->exit_request = ;
return EXCP_HLT;
}
cpu_single_env = env;
do {
if (env->kvm_vcpu_dirty) {
kvm_arch_put_registers(env, KVM_PUT_RUNTIME_STATE);
env->kvm_vcpu_dirty = ;
}
kvm_arch_pre_run(env, run);
if (env->exit_request) {
DPRINTF("interrupt exit requested\n");
/*
* KVM requires us to reenter the kernel after IO exits to complete
* instruction emulation. This self-signal will ensure that we
* leave ASAP again.
*/
qemu_cpu_kick_self();
}
cpu_single_env = NULL;
qemu_mutex_unlock_iothread();
run_ret = kvm_vcpu_ioctl(env, KVM_RUN, );
qemu_mutex_lock_iothread();
cpu_single_env = env;
kvm_arch_post_run(env, run);
kvm_flush_coalesced_mmio_buffer();
if (run_ret < ) {
if (run_ret == -EINTR || run_ret == -EAGAIN) {
DPRINTF("io window exit\n");
ret = EXCP_INTERRUPT;
break;
}
DPRINTF("kvm run failed %s\n", strerror(-run_ret));
abort();
}
switch (run->exit_reason) {
case KVM_EXIT_IO:
DPRINTF("handle_io\n");
kvm_handle_io(run->io.port,
(uint8_t *)run + run->io.data_offset,
run->io.direction,
run->io.size,
run->io.count);
ret = ;
break;
case KVM_EXIT_MMIO:
DPRINTF("handle_mmio\n");
cpu_physical_memory_rw(run->mmio.phys_addr,
run->mmio.data,
run->mmio.len,
run->mmio.is_write);
ret = ;
break;
:
}
} while (ret == );
:
return ret;
}

• kernel code path

 sys_ioctl
do_vfs_ioctl
vfs_ioctl
kvm_vcpu_ioctl /* kvm_vcpu_fops.unlocked_ioctl */
kvm_arch_vcpu_ioctl_run
__vcpu_run
vcpu_enter_guest
vmx_vcpu_run /* kvm_x86_ops->run */
|
v vm entry
+-----------------+
| guest code |
| on this cpu |
+-------------------+
| vm exit
v
vmx_handle_exit /* kvm_x86_ops->handle_exit */
return kvm_vmx_exit_handlers[exit_reason](vcpu)

• kernel exit handlers

 /*
* The exit handlers return 1 if the exit was handled fully and guest execution
* may resume. Otherwise they set the kvm_run parameter to indicate what needs
* to be done to userspace and return 0.
*/
static int (*kvm_vmx_exit_handlers[])(struct kvm_vcpu *vcpu) = {
[EXIT_REASON_EXCEPTION_NMI] = handle_exception,
[EXIT_REASON_EXTERNAL_INTERRUPT] = handle_external_interrupt,
[EXIT_REASON_TRIPLE_FAULT] = handle_triple_fault,
[EXIT_REASON_NMI_WINDOW] = handle_nmi_window,
[EXIT_REASON_IO_INSTRUCTION] = handle_io,
:
:

• guest runtime information shared between kvm mod and qemu-kvm

 env->kvm_run = mmap(NULL, mmap_size, PROT_READ | PROT_WRITE, MAP_SHARED,
env->kvm_fd, );
(gdb) p ((struct CPUX86State*)0x7fcdbe63f930)->kvm_run
$ = (struct kvm_run *) 0x7fcdbcfa2000
(gdb) p *((struct CPUX86State*)0x7fcdbe63f930)->kvm_run
$ = {request_interrupt_window = '\000', padding1 = "\000\000\000\000\000\000", exit_reason = , ready_for_interrupt_injection = '\000', if_flag =
'\000', padding2 = "\000", cr8 = , apic_base = , {hw = {hardware_exit_reason = }, fail_entry = {hardware_entry_failure_reason =
}, ex = {exception = , error_code = }, io = {direction = '\260', size = '\000', port = , count = , data_offset =
}, debug = {arch = {exception = , pad = , pc = , dr6 = , dr7 = }}, mmio = {phys_addr =
, data = "\000\000\000\000 \a \a", len = , is_write = '\001'}, hypercall = {nr = , args = {, , , ,
, }, ret = , longmode = , pad = }, tpr_access = {rip = , is_write = , pad = }, s390_sieic = {icptcode = '\260', ipa =
, ipb = }, s390_reset_flags = , dcr = {dcrn = , data = , is_write = '\000'}, internal = {suberror = , ndata = ,
data = {, , <repeats times>}}, osi = {gprs = {, , , <repeats times>}},
papr_hcall = {nr = , ret = , args = {, , , , , , , , }}, padding =
"\260\000\340\376\000\000\000\000\000\000\000\000 \a \a\004\000\000\000\001", '\000' <repeats times>}}
 crash> vtop 7fcdbcfa2000
VIRTUAL PHYSICAL
7fcdbcfa2000 12eb3c000
PML: 137dfd7f8 => 136ff7067
PUD: 136ff79b0 =>
PMD: 134069f38 => 13671c067
PTE: 13671cd10 => 800000012eb3c067
PAGE: 12eb3c000 PTE PHYSICAL FLAGS
800000012eb3c067 12eb3c000
(PRESENT|RW|USER|ACCESSED|DIRTY|NX) VMA START END FLAGS FILE
ffff8800aac39b70 7fcdbcfa2000 7fcdbcfa5000 fb anon_inode:/kvm-vcpu
PAGE PHYSICAL MAPPING INDEX CNT FLAGS
ffffea0004237520 12eb3c000 ffff8800b72c9980
crash> px ((struct kvm*)0xffff880137c6c000)->vcpus[]->run
$ = (struct kvm_run *) 0xffff88012eb3c000
crash> vtop 0xffff88012eb3c000
VIRTUAL PHYSICAL
ffff88012eb3c000 12eb3c000
PML4 DIRECTORY: ffffffff81a85000
PAGE DIRECTORY: 1a86063
PUD: 1a86020 => a067
PMD: aba8 => 800000012ea001e3
PAGE: 12ea00000 (2MB) PTE PHYSICAL FLAGS
800000012ea001e3 12ea00000 (PRESENT|RW|ACCESSED|DIRTY|PSE|GLOBAL|NX) PAGE PHYSICAL MAPPING INDEX CNT FLAGS
ffffea0004237520 12eb3c000 ffff8800b72c9980
crash> px ((struct file*)0xffff88007bb11ec0)->private_data
$ = (void *) 0xffff88013860c2b8
crash> px ((struct kvm_vcpu *)0xffff88013860c2b8)->run
$ = (struct kvm_run *) 0xffff88012eb3c000

Physical Memory Virtualization

Physical memory intialization

• Qemu backtrace

 (gdb) bt
# kvm_set_user_memory_region (s=0x7ffff8b100a0, slot=0x7ffff8b100a0) at /home/mark/Work/qemu/qemu/kvm-all.c:
# 0x00007ffff7ea3fae in kvm_set_phys_mem (client=<value optimized out>, start_addr=<value optimized out>, size=<value optimized out>,
phys_offset=<value optimized out>, log_dirty=false) at /home/mark/Work/qemu/qemu/kvm-all.c:
# kvm_client_set_memory (client=<value optimized out>, start_addr=<value optimized out>, size=<value optimized out>, phys_offset=<value optimized out>,
log_dirty=false) at /home/mark/Work/qemu/qemu/kvm-all.c:
# 0x00007ffff7e8405a in cpu_notify_set_memory (start_addr=, size=, phys_offset=, region_offset=, log_dirty=false)
at /home/mark/Work/qemu/qemu/exec.c:
# cpu_register_physical_memory_log (start_addr=, size=, phys_offset=, region_offset=, log_dirty=false)
at /home/mark/Work/qemu/qemu/exec.c:
# 0x00007ffff7eaac70 in address_space_update_topology_pass (as=0x7ffff82f31e0, old_view=..., new_view=..., adding=true)
at /home/mark/Work/qemu/qemu/memory.c:
# 0x00007ffff7eacf31 in address_space_update_topology (as=0x7ffff82f31e0) at /home/mark/Work/qemu/qemu/memory.c:
# 0x00007ffff7ead514 in memory_region_update_topology () at /home/mark/Work/qemu/qemu/memory.c:
# 0x00007ffff7ee1787 in pc_memory_init (system_memory=0x7ffff8b11430, kernel_filename=<value optimized out>, kernel_cmdline=0x7ffff7f668eb "",
initrd_filename=0x0, below_4g_mem_size=, above_4g_mem_size=, rom_memory=0x7ffff8b32240, ram_memory=0x7fffffffe188)
at /home/mark/Work/qemu/qemu/hw/pc.c:
# 0x00007ffff7ee2d96 in pc_init1 (system_memory=0x7ffff8b11430, system_io=0x7ffff8b11530, ram_size=, boot_device=0x7fffffffe500 "cad",
kernel_filename=0x0, kernel_cmdline=0x7ffff7f668eb "", initrd_filename=0x0, cpu_model=0x0, pci_enabled=, kvmclock_enabled=)
at /home/mark/Work/qemu/qemu/hw/pc_piix.c:
# 0x00007ffff7ee30d8 in pc_init_pci (ram_size=, boot_device=0x7fffffffe500 "cad", kernel_filename=0x0, kernel_cmdline=0x7ffff7f668eb "",
initrd_filename=0x0, cpu_model=<value optimized out>) at /home/mark/Work/qemu/qemu/hw/pc_piix.c:
# 0x00007ffff7de57a9 in main (argc=<value optimized out>, argv=<value optimized out>, envp=<value optimized out>) at /home/mark/Work/qemu/qemu/vl.c:
--------------------------------------------
kvm_set_user_memory_region
kvm_vm_ioctl
ioctl(kvm_context->vm_fd, KVM_SET_USER_MEMORY_REGION, ...)

Guest physical memory mapping

• dump gpa <-> hva <-> hpa mapping via crash

 crash> px vm_list
vm_list = $ = {
next = 0xffff880080cb4280,
prev = 0xffff880080cb4280
}
crash> struct kvm.vm_list
struct kvm {
[] struct list_head vm_list;
}
crash> px 0xffff880080cb4280-
$ = 0xffff880080cb4000
crash> pd ((struct kvm *)0xffff880080cb4000)->memslots
$ = (struct kvm_memslots *) 0xffff880139326000
crash> px *((struct kvm *)0xffff880080cb4000)->memslots
$ = {
nmemslots = 0x23,
memslots = {{
base_gfn = 0x0,
npages = 0xa0,
flags = 0x0,
rmap = 0xffffc90016aac000,
dirty_bitmap = 0x0,
lpage_info = {0xffffc900175d6000, 0xffffc900175d9000},
userspace_addr = 0x7f30dbe00000,
user_alloc = 0x1,
id = 0x0
}, {
base_gfn = 0xfffe0,
npages = 0x20,
flags = 0x0,
rmap = 0xffffc90016a82000,
dirty_bitmap = 0x0,
lpage_info = {0xffffc90016a85000, 0xffffc90016a88000},
userspace_addr = 0x7f310b1f0000,
user_alloc = 0x1,
id = 0x1
}, {
base_gfn = 0xc0,
npages = 0xc,
flags = 0x0,
rmap = 0xffffc9001787f000,
dirty_bitmap = 0x0,
lpage_info = {0xffffc90017882000, 0xffffc90017885000},
userspace_addr = 0x7f30dbec0000,
user_alloc = 0x1,
id = 0x2
}, {
base_gfn = 0xfc000,
npages = 0x800,
flags = 0x1,
rmap = 0xffffc90017b39000,
dirty_bitmap = 0xffffc90017b45000,
lpage_info = {0xffffc90017b3f000, 0xffffc90017b42000},
userspace_addr = 0x7f3101c00000,
user_alloc = 0x1,
id = 0x3
}, {
base_gfn = 0xcc,
npages = 0x24,
flags = 0x0,
rmap = 0xffffc90017990000,
dirty_bitmap = 0x0,
lpage_info = {0xffffc90017993000, 0xffffc90017996000},
userspace_addr = 0x7f30dbecc000,
user_alloc = 0x1,
id = 0x4
}, {
base_gfn = 0xf0,
npages = 0x10,
flags = 0x0,
rmap = 0xffffc90017999000,
dirty_bitmap = 0x0,
lpage_info = {0xffffc9001799c000, 0xffffc9001799f000},
userspace_addr = 0x7f30dbef0000,
user_alloc = 0x1,
id = 0x5
}, {
base_gfn = 0x100,
npages = 0x1ff00,
flags = 0x0,
rmap = 0xffffc900179a2000,
dirty_bitmap = 0x0,
lpage_info = {0xffffc90017aa4000, 0xffffc90017aa7000},
userspace_addr = 0x7f30dbf00000,
user_alloc = 0x1,
id = 0x6
}, {
base_gfn = 0x0,
npages = 0x0,
flags = 0x0,
rmap = 0x0,
dirty_bitmap = 0x0,
lpage_info = {0x0, 0x0},
userspace_addr = 0x0,
user_alloc = 0x0,
id = 0x0
}, On Guest:
[root@localhost ~]# ./hello
[0x400638]: Hello, world
crash> ps \|grep hello
ffff88001d68ae60 IN 0.1 hello
crash> set
PID:
COMMAND: "hello"
TASK: ffff88001d68ae60 [THREAD_INFO: ffff88001da6c000]
CPU:
STATE: TASK_INTERRUPTIBLE
crash> rd 0x400638
: 77202c6f6c6c6548 255b000a646c726f Hello, world..[%
crash> vtop 0x400638
VIRTUAL PHYSICAL
30b2638 PML: 1d669000 => 1dbfa067
PUD: 1dbfa000 => 1c82d067
PMD: 1c82d010 => 1ab49067
PTE: 1ab49000 => 30b2025
PAGE: 30b2000 On Host:
crash> px 0x7f30dbf00000+0x30b2638-0x100000
$ = 0x7f30deeb2638
crash> rd 0x7f30deeb2638
7f30deeb2638: 77202c6f6c6c6548 255b000a646c726f Hello, world..[%

MMU Virtualization

Extended Page Table

• Overview

 Guest CR3             EPT Base Pointer
| |
+-->+-------------------+ +---->+---------------------+
GVA--->| Guest Page Table  |---> GPA ---> | Extended Page Table | ---> HPA
+-------------------+ +---------------------+

• EPT walkthrough

 sh> px ((struct kvm_vcpu *)0xffff88007768c078)->arch.mmu
$ = {
new_cr3 = 0xffffffffa04dca40 <nonpaging_new_cr3>,
page_fault = 0xffffffffa04e4410 <tdp_page_fault>,
free = 0xffffffffa04e0870 <nonpaging_free>,
gva_to_gpa = 0xffffffffa04e4b70 <paging64_gva_to_gpa>,
prefetch_page = 0xffffffffa04dc7a0 <nonpaging_prefetch_page>,
sync_page = 0xffffffffa04dc7d0 <nonpaging_sync_page>,
invlpg = 0xffffffffa04dc7e0 <nonpaging_invlpg>,
root_hpa = 0x138457000,
root_level = 0x4,
shadow_root_level = 0x4,
base_role = {
word = 0x0,
{
glevels = 0x0,
level = 0x0,
quadrant = 0x0,
pad_for_nice_hex_output = 0x0,
direct = 0x0,
access = 0x0,
invalid = 0x0,
cr4_pge = 0x0,
nxe = 0x0,
cr0_wp = 0x0,
smep_andnot_wp = 0x0
}
},
pae_root = 0xffff88000d2c2000,
rsvd_bits_mask = {{0xfff0000000000, 0xfff0000000000, 0xfff0000000180, 0xfff0000000180}, {0x0, 0xfff00001fe000, 0xfff003fffe000, 0xfff0000000180}}
} crash> px (0x30b2638>>)&0x1ff
$ = 0x0
crash> rd -p 0x138457000
: ...C....
crash> px (0x30b2638>>)&0x1ff
$ = 0x0
crash> rd -p 0x43138000
: 0000000108c3c007 ........
crash> px (0x30b2638>>)&0x1ff
$ = 0x18
crash> px (0x108c3c007 & ~0xfff)+ (*0x18)
$ = 0x108c3c0c0
crash> rd -p 0x108c3c0c0
108c3c0c0: .0q%....
crash> px (0x30b2638>>)&0x1ff
$ = 0xb2
crash> px (0x125713007 & ~0xfff) + (*0xb2)
$ = 0x125713590
crash> rd -p 0x125713590
: 000000011289a277 w.......
crash> vtop 7f30deeb2638
VIRTUAL PHYSICAL
7f30deeb2638 11289a638
PML: 575e07f0 =>
PUD: => 7ef3c067
PMD: 7ef3c7b8 =>
PTE: => 800000011289a067
PAGE: 11289a000
PTE PHYSICAL FLAGS
800000011289a067 11289a000 (PRESENT|RW|USER|ACCESSED|DIRTY|NX)
VMA START END FLAGS FILE
ffff88005d100788 7f30dbe00000 7f30fbe00000
PAGE PHYSICAL MAPPING INDEX CNT FLAGS
ffffea0003c0e1b0 11289a000 ffff88000d307f61 7f30deeb2 4000000010006c

Shadow Page Table

• Overview

 Guest CR3
|
+-->+-------------------+
GVA--->| Guest Page Table | ---> GPA
+-------------------+ Host CR3
|
+-->+-------------------+
GVA--->| Shadow Page Table | ---> HPA
+-------------------+
~

• Shadow page table walkthrough (with option ept=no for kernel moduel kvm_intel)

 crash> px ((struct kvm_vcpu *)0xffff88007768c078)->arch.mmu
mmu = {
new_cr3 = 0xffffffffa0914890 <paging_new_cr3>,
page_fault = 0xffffffffa091a1b0 <paging64_page_fault>,
free = 0xffffffffa0914880 <paging_free>,
gva_to_gpa = 0xffffffffa0918b70 <paging64_gva_to_gpa>,
prefetch_page = 0xffffffffa0915920 <paging64_prefetch_page>,
sync_page = 0xffffffffa09177e0 <paging64_sync_page>,
invlpg = 0xffffffffa0913b20 <paging64_invlpg>,
root_hpa = 0x8886d000,
root_level = 0x4,
shadow_root_level = 0x4,
base_role = {
word = 0xe00004,
{
glevels = 0x4,
level = 0x0,
quadrant = 0x0,
pad_for_nice_hex_output = 0x0,
direct = 0x0,
access = 0x0,
invalid = 0x0,
cr4_pge = 0x1,
nxe = 0x1,
cr0_wp = 0x1,
smep_andnot_wp = 0x0
}
},
pae_root = 0xffff88008893e000,
rsvd_bits_mask = {{0xfff0000000000, 0xfff0000000000, 0xfff0000000180, 0xfff0000000180}, {0x0, 0xfff00001fe000, 0xfff003fffe000, 0xfff0000000180}}
},
crash> px (0x400608 >> ) & 0x1ff
$ = 0x0
crash> rd -p 0x8886d000
8886d000: 'pQ.....
crash> px (0x400608 >> ) & 0x1ff
$ = 0x0
crash> px (0x81517027 & ~0xfff)
$ = 0x81517000
crash> rd -p 0x81517000
: 000000008159f027 '.Y.....
crash> px (0x400608 >> ) & 0x1ff
$ = 0x2
crash> px (0x8159f027 & ~0xfff)+(*0x2)
$ = 0x8159f010
crash> rd -p 0x8159f010
8159f010: 0000000069fd7027 'p.i....
crash> px (0x400608 >> ) & 0x1ff
$ = 0x0
crash> rd -p 0x69fd7000
69fd7000: 0000000055b99265 e..U....
crash> rd -p 55b99608
55b99608: 77202c6f6c6c6548 255b000a646c726f Hello, world..[%