kvm-stub.c 2.39 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14
/*
 * QEMU KVM stub
 *
 * Copyright Red Hat, Inc. 2010
 *
 * Author: Paolo Bonzini     <pbonzini@redhat.com>
 *
 * This work is licensed under the terms of the GNU GPL, version 2 or later.
 * See the COPYING file in the top-level directory.
 *
 */

#include "qemu-common.h"
#include "hw/hw.h"
15
#include "cpu.h"
16
#include "sysemu/kvm.h"
17

18 19 20 21
#ifndef CONFIG_USER_ONLY
#include "hw/pci/msi.h"
#endif

22
KVMState *kvm_state;
23
bool kvm_kernel_irqchip;
24
bool kvm_async_interrupts_allowed;
25
bool kvm_irqfds_allowed;
26
bool kvm_msi_via_irqfd_allowed;
27
bool kvm_gsi_routing_allowed;
28
bool kvm_gsi_direct_mapping;
29
bool kvm_allowed;
30
bool kvm_readonly_mem_allowed;
31

32
int kvm_init_vcpu(CPUState *cpu)
33 34 35 36
{
    return -ENOSYS;
}

37
int kvm_init(void)
38 39 40 41 42 43 44 45
{
    return -ENOSYS;
}

void kvm_flush_coalesced_mmio_buffer(void)
{
}

46
void kvm_cpu_synchronize_state(CPUState *cpu)
47 48 49
{
}

50
void kvm_cpu_synchronize_post_reset(CPUState *cpu)
51 52 53
{
}

54
void kvm_cpu_synchronize_post_init(CPUState *cpu)
55 56 57
{
}

58
int kvm_cpu_exec(CPUState *cpu)
59
{
60
    abort();
61 62 63 64 65 66 67
}

int kvm_has_sync_mmu(void)
{
    return 0;
}

68 69 70 71 72
int kvm_has_many_ioeventfds(void)
{
    return 0;
}

73 74 75 76 77
int kvm_has_pit_state2(void)
{
    return 0;
}

78 79 80 81
void kvm_setup_guest_memory(void *start, size_t size)
{
}

82
int kvm_update_guest_debug(CPUState *cpu, unsigned long reinject_trap)
83
{
Jan Kiszka's avatar
Jan Kiszka committed
84
    return -ENOSYS;
85 86
}

87
int kvm_insert_breakpoint(CPUState *cpu, target_ulong addr,
88 89 90 91 92
                          target_ulong len, int type)
{
    return -EINVAL;
}

93
int kvm_remove_breakpoint(CPUState *cpu, target_ulong addr,
94 95 96 97 98
                          target_ulong len, int type)
{
    return -EINVAL;
}

99
void kvm_remove_all_breakpoints(CPUState *cpu)
100 101 102 103
{
}

#ifndef _WIN32
104
int kvm_set_signal_mask(CPUState *cpu, const sigset_t *sigset)
105 106 107 108 109
{
    abort();
}
#endif

110
int kvm_on_sigbus_vcpu(CPUState *cpu, int code, void *addr)
111 112 113 114
{
    return 1;
}

115 116 117 118
int kvm_on_sigbus(int code, void *addr)
{
    return 1;
}
119

120
#ifndef CONFIG_USER_ONLY
121 122 123 124
int kvm_irqchip_add_msi_route(KVMState *s, MSIMessage msg)
{
    return -ENOSYS;
}
125

126 127 128 129
void kvm_init_irq_routing(KVMState *s)
{
}

130 131 132
void kvm_irqchip_release_virq(KVMState *s, int virq)
{
}
133

134 135 136 137 138
int kvm_irqchip_update_msi_route(KVMState *s, int virq, MSIMessage msg)
{
    return -ENOSYS;
}

Paolo Bonzini's avatar
Paolo Bonzini committed
139 140
int kvm_irqchip_add_irqfd_notifier(KVMState *s, EventNotifier *n,
                                   EventNotifier *rn, int virq)
141 142 143 144
{
    return -ENOSYS;
}

Jan Kiszka's avatar
Jan Kiszka committed
145
int kvm_irqchip_remove_irqfd_notifier(KVMState *s, EventNotifier *n, int virq)
146 147 148
{
    return -ENOSYS;
}
149
#endif