1 /* 2 * QEMU KVM stub 3 * 4 * Copyright Red Hat, Inc. 2010 5 * 6 * Author: Paolo Bonzini <pbonzini@redhat.com> 7 * 8 * This work is licensed under the terms of the GNU GPL, version 2 or later. 9 * See the COPYING file in the top-level directory. 10 * 11 */ 12 13 #include "qemu/osdep.h" 14 #include "sysemu/kvm.h" 15 #include "hw/pci/msi.h" 16 17 KVMState *kvm_state; 18 bool kvm_kernel_irqchip; 19 bool kvm_async_interrupts_allowed; 20 bool kvm_eventfds_allowed; 21 bool kvm_irqfds_allowed; 22 bool kvm_resamplefds_allowed; 23 bool kvm_msi_via_irqfd_allowed; 24 bool kvm_gsi_routing_allowed; 25 bool kvm_gsi_direct_mapping; 26 bool kvm_allowed; 27 bool kvm_readonly_mem_allowed; 28 bool kvm_ioeventfd_any_length_allowed; 29 bool kvm_msi_use_devid; 30 bool kvm_direct_msi_allowed; 31 32 void kvm_flush_coalesced_mmio_buffer(void) 33 { 34 } 35 36 void kvm_cpu_synchronize_state(CPUState *cpu) 37 { 38 } 39 40 bool kvm_has_sync_mmu(void) 41 { 42 return false; 43 } 44 45 int kvm_has_many_ioeventfds(void) 46 { 47 return 0; 48 } 49 50 int kvm_on_sigbus_vcpu(CPUState *cpu, int code, void *addr) 51 { 52 return 1; 53 } 54 55 int kvm_on_sigbus(int code, void *addr) 56 { 57 return 1; 58 } 59 60 int kvm_irqchip_add_msi_route(KVMRouteChange *c, int vector, PCIDevice *dev) 61 { 62 return -ENOSYS; 63 } 64 65 void kvm_init_irq_routing(KVMState *s) 66 { 67 } 68 69 void kvm_irqchip_release_virq(KVMState *s, int virq) 70 { 71 } 72 73 int kvm_irqchip_update_msi_route(KVMState *s, int virq, MSIMessage msg, 74 PCIDevice *dev) 75 { 76 return -ENOSYS; 77 } 78 79 void kvm_irqchip_commit_routes(KVMState *s) 80 { 81 } 82 83 void kvm_irqchip_add_change_notifier(Notifier *n) 84 { 85 } 86 87 void kvm_irqchip_remove_change_notifier(Notifier *n) 88 { 89 } 90 91 void kvm_irqchip_change_notify(void) 92 { 93 } 94 95 int kvm_irqchip_add_adapter_route(KVMState *s, AdapterInfo *adapter) 96 { 97 return -ENOSYS; 98 } 99 100 int kvm_irqchip_add_irqfd_notifier_gsi(KVMState *s, EventNotifier *n, 101 EventNotifier *rn, int virq) 102 { 103 return -ENOSYS; 104 } 105 106 int kvm_irqchip_remove_irqfd_notifier_gsi(KVMState *s, EventNotifier *n, 107 int virq) 108 { 109 return -ENOSYS; 110 } 111 112 unsigned int kvm_get_max_memslots(void) 113 { 114 return 0; 115 } 116 117 unsigned int kvm_get_free_memslots(void) 118 { 119 return 0; 120 } 121 122 void kvm_init_cpu_signals(CPUState *cpu) 123 { 124 abort(); 125 } 126 127 bool kvm_arm_supports_user_irq(void) 128 { 129 return false; 130 } 131 132 bool kvm_dirty_ring_enabled(void) 133 { 134 return false; 135 } 136 137 uint32_t kvm_dirty_ring_size(void) 138 { 139 return 0; 140 } 141