kvm にハイパーコールを追加する
Stack Overflow のこの投稿 https://stackoverflow.com/questions/33590843/implementing-a-custom-hypercall-in-kvm のほぼそのままです。 いつもググるか grep でコードの場所を探してしまうので備忘録。 diff --git a/include/uapi/linux/kvm_para.h b/include/uapi/linux/kvm_para.h index dcf629dd2889..e0f8b786a62a 100644 --- a/include/uapi/linux/kvm_para.h +++ b/include/uapi/linux/kvm_para.h @@ -26,6 +26,7 @@ #define KVM_HC_MIPS_EXIT_VM 7 #define KVM_HC_MIPS_CONSOLE_OUTPUT 8 #define KVM_HC_CLOCK_PAIRING 9 +#define KVM_HC_TEST 100 /* * hypercalls use architecture specific diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index b7618b30b7d6..5c82ac8f4b38 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -6714,6 +6714,9 @@ int kvm_emulate_hypercall(struct kvm_vcpu *vcpu) ret = kvm_pv_clock_pairing(vcpu, a0, a1); break; #endif + case KVM_HC_TEST: + some_process(); + break; default: ret = -KVM_ENOSYS; break; このように,ハイパーコールの番号を追加し,アーキテクチャ固有のコードにハイパーコールの番号で switch している箇所があるのでそこ