# HG changeset patch # User yamahata@xxxxxxxxxxxxx # Node ID d84e913d98eb02b1c95d281139904d6d4b78828f # Parent a2084726de243e9402f1aaacde0c83f953c40d6b compilation fix of ia64 hypervisor.c, utils.c. struct xen_memory_reservation::extet_start is now GUEST_HANDLE. set_xen_guest_handle(), get_xen_guest_handle() must be used to set/get it. PATCHNAME: ia64_xen_memory_reservation Signed-off-by: Isaku Yamahata diff -r a2084726de24 -r d84e913d98eb linux-2.6-xen-sparse/arch/ia64/xen/hypervisor.c --- a/linux-2.6-xen-sparse/arch/ia64/xen/hypervisor.c Tue May 9 11:34:26 2006 +0900 +++ b/linux-2.6-xen-sparse/arch/ia64/xen/hypervisor.c Tue May 9 12:35:37 2006 +0900 @@ -32,14 +32,19 @@ //XXX xen/ia64 copy_from_guest() is broken. // This is a temporal work around until it is fixed. // used by balloon.c netfront.c + +// get_xen_guest_handle is defined only when __XEN_TOOLS__ is defined +// if the definition in arch-ia64.h is changed, this must be updated. +#define get_xen_guest_handle(val, hnd) do { val = (hnd).p; } while (0) int ia64_xenmem_reservation_op(unsigned long op, struct xen_memory_reservation* reservation__) { struct xen_memory_reservation reservation = *reservation__; - unsigned long* frame_list = reservation__->extent_start; + unsigned long* frame_list; unsigned long nr_extents = reservation__->nr_extents; int ret = 0; + get_xen_guest_handle(frame_list, reservation__->extent_start); BUG_ON(op != XENMEM_increase_reservation && op != XENMEM_decrease_reservation && @@ -49,7 +54,7 @@ ia64_xenmem_reservation_op(unsigned long int tmp_ret; volatile unsigned long dummy; - reservation.extent_start = frame_list; + set_xen_guest_handle(reservation.extent_start, frame_list); reservation.nr_extents = nr_extents; dummy = frame_list[0];// re-install tlb entry before hypercall @@ -142,12 +147,12 @@ HYPERVISOR_populate_physmap(unsigned lon { unsigned long ret; struct xen_memory_reservation reservation = { - .extent_start = &gpfn, .nr_extents = 1, .address_bits = address_bits, .extent_order = extent_order, .domid = DOMID_SELF }; + set_xen_guest_handle(reservation.extent_start, &gpfn); ret = HYPERVISOR_memory_op(XENMEM_populate_physmap, &reservation); BUG_ON(ret != 1); return 0; @@ -158,12 +163,12 @@ HYPERVISOR_remove_physmap(unsigned long { unsigned long ret; struct xen_memory_reservation reservation = { - .extent_start = &gpfn, .nr_extents = 1, .address_bits = 0, .extent_order = extent_order, .domid = DOMID_SELF }; + set_xen_guest_handle(reservation.extent_start, &gpfn); ret = HYPERVISOR_memory_op(XENMEM_decrease_reservation, &reservation); BUG_ON(ret != 1); return 0; @@ -261,7 +266,7 @@ __xen_destroy_contiguous_region(unsigned goto fail; } - reservation.extent_start = gpfns; + set_xen_guest_handle(reservation.extent_start, gpfns); reservation.nr_extents = num_gpfn; reservation.address_bits = 0; reservation.extent_order = 0; diff -r a2084726de24 -r d84e913d98eb linux-2.6-xen-sparse/arch/ia64/xen/util.c --- a/linux-2.6-xen-sparse/arch/ia64/xen/util.c Tue May 9 11:34:26 2006 +0900 +++ b/linux-2.6-xen-sparse/arch/ia64/xen/util.c Tue May 9 12:35:37 2006 +0900 @@ -77,12 +77,12 @@ void free_vm_area(struct vm_struct *area unsigned long ret; unsigned long gpfn = (area->phys_addr >> PAGE_SHIFT) + i; struct xen_memory_reservation reservation = { - .extent_start = &gpfn, .nr_extents = 1, .address_bits = 0, .extent_order = 0, .domid = DOMID_SELF }; + set_xen_guest_handle(reservation.extent_start, &gpfn); ret = HYPERVISOR_memory_op(XENMEM_populate_physmap, &reservation); BUG_ON(ret != 1);