xref: /qemu/target/i386/kvm/hyperv-stub.c (revision 6607b77b94c353fbe21888d216fa97df9b859f15)
18417442aSRoman Kagan /*
28417442aSRoman Kagan  * Stubs for CONFIG_HYPERV=n
38417442aSRoman Kagan  *
48417442aSRoman Kagan  * Copyright (c) 2015-2018 Virtuozzo International GmbH.
58417442aSRoman Kagan  *
68417442aSRoman Kagan  * This work is licensed under the terms of the GNU GPL, version 2 or later.
78417442aSRoman Kagan  * See the COPYING file in the top-level directory.
88417442aSRoman Kagan  */
98417442aSRoman Kagan 
108417442aSRoman Kagan #include "qemu/osdep.h"
118417442aSRoman Kagan #include "hyperv.h"
128417442aSRoman Kagan 
138417442aSRoman Kagan #ifdef CONFIG_KVM
kvm_hv_handle_exit(X86CPU * cpu,struct kvm_hyperv_exit * exit)148417442aSRoman Kagan int kvm_hv_handle_exit(X86CPU *cpu, struct kvm_hyperv_exit *exit)
158417442aSRoman Kagan {
168417442aSRoman Kagan     switch (exit->type) {
178417442aSRoman Kagan     case KVM_EXIT_HYPERV_SYNIC:
184cdf03e2SAlex Bennée         if (!hyperv_feat_enabled(cpu, HYPERV_FEAT_SYNIC)) {
198417442aSRoman Kagan             return -1;
208417442aSRoman Kagan         }
218417442aSRoman Kagan 
228417442aSRoman Kagan         /*
238417442aSRoman Kagan          * Tracking the changes in the MSRs is unnecessary as there are no
248417442aSRoman Kagan          * users for them beside save/load, which is handled nicely by the
258417442aSRoman Kagan          * generic MSR save/load code
268417442aSRoman Kagan          */
278417442aSRoman Kagan         return 0;
288417442aSRoman Kagan     case KVM_EXIT_HYPERV_HCALL:
298417442aSRoman Kagan         exit->u.hcall.result = HV_STATUS_INVALID_HYPERCALL_CODE;
308417442aSRoman Kagan         return 0;
3173d24074SJon Doron     case KVM_EXIT_HYPERV_SYNDBG:
3273d24074SJon Doron         if (!hyperv_feat_enabled(cpu, HYPERV_FEAT_SYNDBG)) {
3373d24074SJon Doron             return -1;
3473d24074SJon Doron         }
3573d24074SJon Doron 
3673d24074SJon Doron         return 0;
378417442aSRoman Kagan     default:
388417442aSRoman Kagan         return -1;
398417442aSRoman Kagan     }
408417442aSRoman Kagan }
418417442aSRoman Kagan #endif
42606c34bfSRoman Kagan 
hyperv_x86_synic_add(X86CPU * cpu)43606c34bfSRoman Kagan int hyperv_x86_synic_add(X86CPU *cpu)
44606c34bfSRoman Kagan {
45606c34bfSRoman Kagan     return -ENOSYS;
46606c34bfSRoman Kagan }
47606c34bfSRoman Kagan 
hyperv_x86_synic_reset(X86CPU * cpu)48606c34bfSRoman Kagan void hyperv_x86_synic_reset(X86CPU *cpu)
49606c34bfSRoman Kagan {
50606c34bfSRoman Kagan }
51606c34bfSRoman Kagan 
hyperv_x86_synic_update(X86CPU * cpu)52606c34bfSRoman Kagan void hyperv_x86_synic_update(X86CPU *cpu)
53606c34bfSRoman Kagan {
54606c34bfSRoman Kagan }
556093637bSMaciej S. Szmigiero 
hyperv_x86_set_vmbus_recommended_features_enabled(void)566093637bSMaciej S. Szmigiero void hyperv_x86_set_vmbus_recommended_features_enabled(void)
576093637bSMaciej S. Szmigiero {
586093637bSMaciej S. Szmigiero }
59*6607b77bSPaolo Bonzini 
hyperv_syndbg_query_options(void)60*6607b77bSPaolo Bonzini uint64_t hyperv_syndbg_query_options(void)
61*6607b77bSPaolo Bonzini {
62*6607b77bSPaolo Bonzini     return 0;
63*6607b77bSPaolo Bonzini }
64