1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
|
/*
* 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"
#include "cpu.h"
#include "gdbstub.h"
#include "kvm.h"
int kvm_pit_in_kernel(void)
{
return 0;
}
int kvm_init_vcpu(CPUState *env)
{
return -ENOSYS;
}
int kvm_coalesce_mmio_region(target_phys_addr_t start, ram_addr_t size)
{
return -ENOSYS;
}
int kvm_uncoalesce_mmio_region(target_phys_addr_t start, ram_addr_t size)
{
return -ENOSYS;
}
int kvm_init(void)
{
return -ENOSYS;
}
void kvm_flush_coalesced_mmio_buffer(void)
{
}
void kvm_cpu_synchronize_state(CPUState *env)
{
}
void kvm_cpu_synchronize_post_reset(CPUState *env)
{
}
void kvm_cpu_synchronize_post_init(CPUState *env)
{
}
int kvm_cpu_exec(CPUState *env)
{
abort ();
}
int kvm_has_sync_mmu(void)
{
return 0;
}
int kvm_has_many_ioeventfds(void)
{
return 0;
}
int kvm_allows_irq0_override(void)
{
return 1;
}
int kvm_has_pit_state2(void)
{
return 0;
}
void kvm_setup_guest_memory(void *start, size_t size)
{
}
int kvm_update_guest_debug(CPUState *env, unsigned long reinject_trap)
{
return -ENOSYS;
}
int kvm_insert_breakpoint(CPUState *current_env, target_ulong addr,
target_ulong len, int type)
{
return -EINVAL;
}
int kvm_remove_breakpoint(CPUState *current_env, target_ulong addr,
target_ulong len, int type)
{
return -EINVAL;
}
void kvm_remove_all_breakpoints(CPUState *current_env)
{
}
#ifndef _WIN32
int kvm_set_signal_mask(CPUState *env, const sigset_t *sigset)
{
abort();
}
#endif
int kvm_set_ioeventfd_pio_word(int fd, uint16_t addr, uint16_t val, bool assign)
{
return -ENOSYS;
}
int kvm_set_ioeventfd_mmio_long(int fd, uint32_t adr, uint32_t val, bool assign)
{
return -ENOSYS;
}
int kvm_has_gsi_routing(void)
{
return 0;
}
int kvm_get_irq_route_gsi(void)
{
return -ENOSYS;
}
int kvm_msi_message_add(KVMMsiMessage *msg)
{
return -ENOSYS;
}
int kvm_msi_message_del(KVMMsiMessage *msg)
{
return -ENOSYS;
}
int kvm_msi_message_update(KVMMsiMessage *old, KVMMsiMessage *new)
{
return -ENOSYS;
}
int kvm_commit_irq_routes(void)
{
return -ENOSYS;
}
int kvm_set_irq(int irq, int level, int *status)
{
assert(0);
return -ENOSYS;
}
int kvm_on_sigbus_vcpu(CPUState *env, int code, void *addr)
{
return 1;
}
int kvm_on_sigbus(int code, void *addr)
{
return 1;
}
int kvm_set_irqfd(int gsi, int fd, bool assigned)
{
return -ENOSYS;
}
|