Revision a8170e5e xen-all.c
b/xen-all.c | ||
---|---|---|
68 | 68 |
#define BUFFER_IO_MAX_DELAY 100 |
69 | 69 |
|
70 | 70 |
typedef struct XenPhysmap { |
71 |
target_phys_addr_t start_addr;
|
|
71 |
hwaddr start_addr;
|
|
72 | 72 |
ram_addr_t size; |
73 | 73 |
char *name; |
74 |
target_phys_addr_t phys_offset;
|
|
74 |
hwaddr phys_offset;
|
|
75 | 75 |
|
76 | 76 |
QLIST_ENTRY(XenPhysmap) list; |
77 | 77 |
} XenPhysmap; |
... | ... | |
92 | 92 |
struct xs_handle *xenstore; |
93 | 93 |
MemoryListener memory_listener; |
94 | 94 |
QLIST_HEAD(, XenPhysmap) physmap; |
95 |
target_phys_addr_t free_phys_offset;
|
|
95 |
hwaddr free_phys_offset;
|
|
96 | 96 |
const XenPhysmap *log_for_dirtybit; |
97 | 97 |
|
98 | 98 |
Notifier exit; |
... | ... | |
231 | 231 |
} |
232 | 232 |
|
233 | 233 |
static XenPhysmap *get_physmapping(XenIOState *state, |
234 |
target_phys_addr_t start_addr, ram_addr_t size)
|
|
234 |
hwaddr start_addr, ram_addr_t size)
|
|
235 | 235 |
{ |
236 | 236 |
XenPhysmap *physmap = NULL; |
237 | 237 |
|
... | ... | |
245 | 245 |
return NULL; |
246 | 246 |
} |
247 | 247 |
|
248 |
static target_phys_addr_t xen_phys_offset_to_gaddr(target_phys_addr_t start_addr,
|
|
248 |
static hwaddr xen_phys_offset_to_gaddr(hwaddr start_addr,
|
|
249 | 249 |
ram_addr_t size, void *opaque) |
250 | 250 |
{ |
251 |
target_phys_addr_t addr = start_addr & TARGET_PAGE_MASK;
|
|
251 |
hwaddr addr = start_addr & TARGET_PAGE_MASK;
|
|
252 | 252 |
XenIOState *xen_io_state = opaque; |
253 | 253 |
XenPhysmap *physmap = NULL; |
254 | 254 |
|
... | ... | |
263 | 263 |
|
264 | 264 |
#if CONFIG_XEN_CTRL_INTERFACE_VERSION >= 340 |
265 | 265 |
static int xen_add_to_physmap(XenIOState *state, |
266 |
target_phys_addr_t start_addr,
|
|
266 |
hwaddr start_addr,
|
|
267 | 267 |
ram_addr_t size, |
268 | 268 |
MemoryRegion *mr, |
269 |
target_phys_addr_t offset_within_region)
|
|
269 |
hwaddr offset_within_region)
|
|
270 | 270 |
{ |
271 | 271 |
unsigned long i = 0; |
272 | 272 |
int rc = 0; |
273 | 273 |
XenPhysmap *physmap = NULL; |
274 |
target_phys_addr_t pfn, start_gpfn;
|
|
275 |
target_phys_addr_t phys_offset = memory_region_get_ram_addr(mr);
|
|
274 |
hwaddr pfn, start_gpfn;
|
|
275 |
hwaddr phys_offset = memory_region_get_ram_addr(mr);
|
|
276 | 276 |
char path[80], value[17]; |
277 | 277 |
|
278 | 278 |
if (get_physmapping(state, start_addr, size)) { |
... | ... | |
349 | 349 |
} |
350 | 350 |
|
351 | 351 |
static int xen_remove_from_physmap(XenIOState *state, |
352 |
target_phys_addr_t start_addr,
|
|
352 |
hwaddr start_addr,
|
|
353 | 353 |
ram_addr_t size) |
354 | 354 |
{ |
355 | 355 |
unsigned long i = 0; |
356 | 356 |
int rc = 0; |
357 | 357 |
XenPhysmap *physmap = NULL; |
358 |
target_phys_addr_t phys_offset = 0;
|
|
358 |
hwaddr phys_offset = 0;
|
|
359 | 359 |
|
360 | 360 |
physmap = get_physmapping(state, start_addr, size); |
361 | 361 |
if (physmap == NULL) { |
... | ... | |
394 | 394 |
|
395 | 395 |
#else |
396 | 396 |
static int xen_add_to_physmap(XenIOState *state, |
397 |
target_phys_addr_t start_addr,
|
|
397 |
hwaddr start_addr,
|
|
398 | 398 |
ram_addr_t size, |
399 | 399 |
MemoryRegion *mr, |
400 |
target_phys_addr_t offset_within_region)
|
|
400 |
hwaddr offset_within_region)
|
|
401 | 401 |
{ |
402 | 402 |
return -ENOSYS; |
403 | 403 |
} |
404 | 404 |
|
405 | 405 |
static int xen_remove_from_physmap(XenIOState *state, |
406 |
target_phys_addr_t start_addr,
|
|
406 |
hwaddr start_addr,
|
|
407 | 407 |
ram_addr_t size) |
408 | 408 |
{ |
409 | 409 |
return -ENOSYS; |
... | ... | |
415 | 415 |
bool add) |
416 | 416 |
{ |
417 | 417 |
XenIOState *state = container_of(listener, XenIOState, memory_listener); |
418 |
target_phys_addr_t start_addr = section->offset_within_address_space;
|
|
418 |
hwaddr start_addr = section->offset_within_address_space;
|
|
419 | 419 |
ram_addr_t size = section->size; |
420 | 420 |
bool log_dirty = memory_region_is_logging(section->mr); |
421 | 421 |
hvmmem_type_t mem_type; |
... | ... | |
467 | 467 |
} |
468 | 468 |
|
469 | 469 |
static void xen_sync_dirty_bitmap(XenIOState *state, |
470 |
target_phys_addr_t start_addr,
|
|
470 |
hwaddr start_addr,
|
|
471 | 471 |
ram_addr_t size) |
472 | 472 |
{ |
473 |
target_phys_addr_t npages = size >> TARGET_PAGE_BITS;
|
|
473 |
hwaddr npages = size >> TARGET_PAGE_BITS;
|
|
474 | 474 |
const int width = sizeof(unsigned long) * 8; |
475 | 475 |
unsigned long bitmap[(npages + width - 1) / width]; |
476 | 476 |
int rc, i, j; |
Also available in: Unified diff