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 31 void kvm_flush_coalesced_mmio_buffer(void) 32 { 33 } 34 35 void kvm_cpu_synchronize_state(CPUState *cpu) 36 { 37 } 38 39 bool kvm_has_sync_mmu(void) 40 { 41 return false; 42 } 43 44 int kvm_has_many_ioeventfds(void) 45 { 46 return 0; 47 } 48 49 int kvm_on_sigbus_vcpu(CPUState *cpu, int code, void *addr) 50 { 51 return 1; 52 } 53 54 int kvm_on_sigbus(int code, void *addr) 55 { 56 return 1; 57 } 58 59 int kvm_irqchip_add_msi_route(KVMRouteChange *c, int vector, PCIDevice *dev) 60 { 61 return -ENOSYS; 62 } 63 64 void kvm_init_irq_routing(KVMState *s) 65 { 66 } 67 68 void kvm_irqchip_release_virq(KVMState *s, int virq) 69 { 70 } 71 72 int kvm_irqchip_update_msi_route(KVMState *s, int virq, MSIMessage msg, 73 PCIDevice *dev) 74 { 75 return -ENOSYS; 76 } 77 78 void kvm_irqchip_commit_routes(KVMState *s) 79 { 80 } 81 82 void kvm_irqchip_add_change_notifier(Notifier *n) 83 { 84 } 85 86 void kvm_irqchip_remove_change_notifier(Notifier *n) 87 { 88 } 89 90 void kvm_irqchip_change_notify(void) 91 { 92 } 93 94 int kvm_irqchip_add_adapter_route(KVMState *s, AdapterInfo *adapter) 95 { 96 return -ENOSYS; 97 } 98 99 int kvm_irqchip_add_irqfd_notifier_gsi(KVMState *s, EventNotifier *n, 100 EventNotifier *rn, int virq) 101 { 102 return -ENOSYS; 103 } 104 105 int kvm_irqchip_remove_irqfd_notifier_gsi(KVMState *s, EventNotifier *n, 106 int virq) 107 { 108 return -ENOSYS; 109 } 110 111 bool kvm_has_free_slot(MachineState *ms) 112 { 113 return false; 114 } 115 116 void kvm_init_cpu_signals(CPUState *cpu) 117 { 118 abort(); 119 } 120 121 bool kvm_arm_supports_user_irq(void) 122 { 123 return false; 124 } 125 126 bool kvm_dirty_ring_enabled(void) 127 { 128 return false; 129 } 130 131 uint32_t kvm_dirty_ring_size(void) 132 { 133 return 0; 134 } 135