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 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: 188417442aSRoman Kagan if (!cpu->hyperv_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; 318417442aSRoman Kagan default: 328417442aSRoman Kagan return -1; 338417442aSRoman Kagan } 348417442aSRoman Kagan } 358417442aSRoman Kagan #endif 36606c34bfSRoman Kagan 37606c34bfSRoman Kagan int hyperv_x86_synic_add(X86CPU *cpu) 38606c34bfSRoman Kagan { 39606c34bfSRoman Kagan return -ENOSYS; 40606c34bfSRoman Kagan } 41606c34bfSRoman Kagan 42606c34bfSRoman Kagan void hyperv_x86_synic_reset(X86CPU *cpu) 43606c34bfSRoman Kagan { 44606c34bfSRoman Kagan } 45606c34bfSRoman Kagan 46606c34bfSRoman Kagan void hyperv_x86_synic_update(X86CPU *cpu) 47606c34bfSRoman Kagan { 48606c34bfSRoman Kagan } 49