Revision 99a0949b kvm-all.c
b/kvm-all.c | ||
---|---|---|
41 | 41 |
|
42 | 42 |
typedef struct KVMSlot |
43 | 43 |
{ |
44 |
target_phys_addr_t start_addr;
|
|
45 |
ram_addr_t memory_size;
|
|
46 |
ram_addr_t phys_offset;
|
|
44 |
a_target_phys_addr start_addr;
|
|
45 |
a_ram_addr memory_size;
|
|
46 |
a_ram_addr phys_offset;
|
|
47 | 47 |
int slot; |
48 | 48 |
int flags; |
49 | 49 |
} KVMSlot; |
... | ... | |
87 | 87 |
} |
88 | 88 |
|
89 | 89 |
static KVMSlot *kvm_lookup_matching_slot(KVMState *s, |
90 |
target_phys_addr_t start_addr,
|
|
91 |
target_phys_addr_t end_addr)
|
|
90 |
a_target_phys_addr start_addr,
|
|
91 |
a_target_phys_addr end_addr)
|
|
92 | 92 |
{ |
93 | 93 |
int i; |
94 | 94 |
|
... | ... | |
108 | 108 |
* Find overlapping slot with lowest start address |
109 | 109 |
*/ |
110 | 110 |
static KVMSlot *kvm_lookup_overlapping_slot(KVMState *s, |
111 |
target_phys_addr_t start_addr,
|
|
112 |
target_phys_addr_t end_addr)
|
|
111 |
a_target_phys_addr start_addr,
|
|
112 |
a_target_phys_addr end_addr)
|
|
113 | 113 |
{ |
114 | 114 |
KVMSlot *found = NULL; |
115 | 115 |
int i; |
... | ... | |
230 | 230 |
/* |
231 | 231 |
* dirty pages logging control |
232 | 232 |
*/ |
233 |
static int kvm_dirty_pages_log_change(target_phys_addr_t phys_addr,
|
|
234 |
ram_addr_t size, int flags, int mask)
|
|
233 |
static int kvm_dirty_pages_log_change(a_target_phys_addr phys_addr,
|
|
234 |
a_ram_addr size, int flags, int mask)
|
|
235 | 235 |
{ |
236 | 236 |
KVMState *s = kvm_state; |
237 | 237 |
KVMSlot *mem = kvm_lookup_matching_slot(s, phys_addr, phys_addr + size); |
... | ... | |
240 | 240 |
if (mem == NULL) { |
241 | 241 |
fprintf(stderr, "BUG: %s: invalid parameters " TARGET_FMT_plx "-" |
242 | 242 |
TARGET_FMT_plx "\n", __func__, phys_addr, |
243 |
(target_phys_addr_t)(phys_addr + size - 1));
|
|
243 |
(a_target_phys_addr)(phys_addr + size - 1));
|
|
244 | 244 |
return -EINVAL; |
245 | 245 |
} |
246 | 246 |
|
... | ... | |
260 | 260 |
return kvm_set_user_memory_region(s, mem); |
261 | 261 |
} |
262 | 262 |
|
263 |
int kvm_log_start(target_phys_addr_t phys_addr, ram_addr_t size)
|
|
263 |
int kvm_log_start(a_target_phys_addr phys_addr, a_ram_addr size)
|
|
264 | 264 |
{ |
265 | 265 |
return kvm_dirty_pages_log_change(phys_addr, size, |
266 | 266 |
KVM_MEM_LOG_DIRTY_PAGES, |
267 | 267 |
KVM_MEM_LOG_DIRTY_PAGES); |
268 | 268 |
} |
269 | 269 |
|
270 |
int kvm_log_stop(target_phys_addr_t phys_addr, ram_addr_t size)
|
|
270 |
int kvm_log_stop(a_target_phys_addr phys_addr, a_ram_addr size)
|
|
271 | 271 |
{ |
272 | 272 |
return kvm_dirty_pages_log_change(phys_addr, size, |
273 | 273 |
0, |
... | ... | |
309 | 309 |
* @start_add: start of logged region. |
310 | 310 |
* @end_addr: end of logged region. |
311 | 311 |
*/ |
312 |
int kvm_physical_sync_dirty_bitmap(target_phys_addr_t start_addr,
|
|
313 |
target_phys_addr_t end_addr)
|
|
312 |
int kvm_physical_sync_dirty_bitmap(a_target_phys_addr start_addr,
|
|
313 |
a_target_phys_addr end_addr)
|
|
314 | 314 |
{ |
315 | 315 |
KVMState *s = kvm_state; |
316 | 316 |
unsigned long size, allocated_size = 0; |
317 |
target_phys_addr_t phys_addr;
|
|
318 |
ram_addr_t addr;
|
|
317 |
a_target_phys_addr phys_addr;
|
|
318 |
a_ram_addr addr;
|
|
319 | 319 |
KVMDirtyLog d; |
320 | 320 |
KVMSlot *mem; |
321 | 321 |
int ret = 0; |
... | ... | |
361 | 361 |
return ret; |
362 | 362 |
} |
363 | 363 |
|
364 |
int kvm_coalesce_mmio_region(target_phys_addr_t start, ram_addr_t size)
|
|
364 |
int kvm_coalesce_mmio_region(a_target_phys_addr start, a_ram_addr size)
|
|
365 | 365 |
{ |
366 | 366 |
int ret = -ENOSYS; |
367 | 367 |
#ifdef KVM_CAP_COALESCED_MMIO |
... | ... | |
380 | 380 |
return ret; |
381 | 381 |
} |
382 | 382 |
|
383 |
int kvm_uncoalesce_mmio_region(target_phys_addr_t start, ram_addr_t size)
|
|
383 |
int kvm_uncoalesce_mmio_region(a_target_phys_addr start, a_ram_addr size)
|
|
384 | 384 |
{ |
385 | 385 |
int ret = -ENOSYS; |
386 | 386 |
#ifdef KVM_CAP_COALESCED_MMIO |
... | ... | |
684 | 684 |
return ret; |
685 | 685 |
} |
686 | 686 |
|
687 |
void kvm_set_phys_mem(target_phys_addr_t start_addr,
|
|
688 |
ram_addr_t size,
|
|
689 |
ram_addr_t phys_offset)
|
|
687 |
void kvm_set_phys_mem(a_target_phys_addr start_addr,
|
|
688 |
a_ram_addr size,
|
|
689 |
a_ram_addr phys_offset)
|
|
690 | 690 |
{ |
691 | 691 |
KVMState *s = kvm_state; |
692 |
ram_addr_t flags = phys_offset & ~TARGET_PAGE_MASK;
|
|
692 |
a_ram_addr flags = phys_offset & ~TARGET_PAGE_MASK;
|
|
693 | 693 |
KVMSlot *mem, old; |
694 | 694 |
int err; |
695 | 695 |
|
... | ... | |
782 | 782 |
|
783 | 783 |
/* register suffix slot */ |
784 | 784 |
if (old.start_addr + old.memory_size > start_addr + size) { |
785 |
ram_addr_t size_delta;
|
|
785 |
a_ram_addr size_delta;
|
|
786 | 786 |
|
787 | 787 |
mem = kvm_alloc_slot(s); |
788 | 788 |
mem->start_addr = start_addr + size; |
Also available in: Unified diff