VMXONまでの処理
#kvm
#code_reading
自作vmmがvmxonで死ぬ問題
(多分GPだけど,発生場所がnative_flush_tlb_global+0x55)がどうも直せない
現状,intel SDMの項目の守るべき項目は守ったつもり
なので,kvmのvmxonの前の処理を把握することで,自分の忘れていることや勘違いを探す
肝心のvmxonは arch/x86/kvm/vmx/vmx.cの
kvm_cpu_vmxon
である.
ここから遡っていく
kvm_create_vm
(virt/kvm/kvm_main.c)
hardware_enable_all
(virt/kvm/kvm_main.c)
hardware_enable_nolock
(virt/kvm/kvm_main.c)
kvm_arch_hardware_enable
(arch/x86/kvm/x86.c)
hardware_enable
(arch/x86/kvm/vmx/vmx.c)
kvm_cpu_vmxon
(arch/x86/kvm/vmx/vmx.c)
hardware_enable_nolock
は cpu hot plug周りの処理でも呼ばれているが,関係ないと思われので,以上の流れを見ていく
core_layout, init_layoutをset_memory_roで設定した後のtlb flushの時点で死んでいるっぽいので,
linux kernelのmodule機構
について調べる