{
cpumask_t pmask;
- if ( unlikely(vcpumask_to_pcpumask(d, op.arg2.vcpumask, &pmask)) )
+ if ( unlikely(vcpumask_to_pcpumask(d,
+ guest_handle_to_param(op.arg2.vcpumask, const_void),
+ &pmask)) )
{
okay = 0;
break;
if ( s > ctxt->s )
{
e820entry_t ent;
+ XEN_GUEST_HANDLE_PARAM(e820entry_t) buffer_param;
XEN_GUEST_HANDLE(e820entry_t) buffer;
if ( ctxt->n + 1 >= ctxt->map.nr_entries )
ent.addr = (uint64_t)ctxt->s << PAGE_SHIFT;
ent.size = (uint64_t)(s - ctxt->s) << PAGE_SHIFT;
ent.type = E820_RESERVED;
- buffer = guest_handle_cast(ctxt->map.buffer, e820entry_t);
+ buffer_param = guest_handle_cast(ctxt->map.buffer, e820entry_t);
+ buffer = guest_handle_from_param(buffer_param, e820entry_t);
if ( __copy_to_guest_offset(buffer, ctxt->n, &ent, 1) )
return -EFAULT;
ctxt->n++;
{
struct memory_map_context ctxt;
XEN_GUEST_HANDLE(e820entry_t) buffer;
+ XEN_GUEST_HANDLE_PARAM(e820entry_t) buffer_param;
unsigned int i;
if ( !IS_PRIV(current->domain) )
if ( ctxt.map.nr_entries < e820.nr_map + 1 )
return -EINVAL;
- buffer = guest_handle_cast(ctxt.map.buffer, e820entry_t);
+ buffer_param = guest_handle_cast(ctxt.map.buffer, e820entry_t);
+ buffer = guest_handle_from_param(buffer_param, e820entry_t);
if ( !guest_handle_okay(buffer, ctxt.map.nr_entries) )
return -EFAULT;
}
else
{
- XEN_GUEST_HANDLE(const_frame_head_t) guest_head =
+ XEN_GUEST_HANDLE(const_frame_head_t) guest_head;
+ XEN_GUEST_HANDLE_PARAM(const_frame_head_t) guest_head_param =
const_guest_handle_from_ptr(head, frame_head_t);
+ guest_head = guest_handle_from_param(guest_head_param,
+ const_frame_head_t);
/* Also check accessibility of one struct frame_head beyond */
if (!guest_handle_okay(guest_head, 2))
long core_parking_helper(void *data);
uint32_t get_cur_idle_nums(void);
-ret_t do_platform_op(XEN_GUEST_HANDLE(xen_platform_op_t) u_xenpf_op)
+ret_t do_platform_op(XEN_GUEST_HANDLE_PARAM(xen_platform_op_t) u_xenpf_op)
{
ret_t ret = 0;
struct xen_platform_op curop, *op = &curop;
}
}
- ret = microcode_update(data, op->u.microcode.length);
+ ret = microcode_update(
+ guest_handle_to_param(data, const_void),
+ op->u.microcode.length);
spin_unlock(&vcpu_alloc_lock);
}
break;
XEN_GUEST_HANDLE(uint32) pdc;
guest_from_compat_handle(pdc, op->u.set_pminfo.u.pdc);
- ret = acpi_set_pdc_bits(op->u.set_pminfo.id, pdc);
+ ret = acpi_set_pdc_bits(
+ op->u.set_pminfo.id,
+ guest_handle_to_param(pdc, uint32));
}
break;
{
#define XLAT_processor_cx_HNDL_dp(_d_, _s_) do { \
XEN_GUEST_HANDLE(compat_processor_csd_t) dps; \
+ XEN_GUEST_HANDLE_PARAM(xen_processor_csd_t) dps_param; \
if ( unlikely(!compat_handle_okay((_s_)->dp, (_s_)->dpcnt)) ) \
return -EFAULT; \
guest_from_compat_handle(dps, (_s_)->dp); \
- (_d_)->dp = guest_handle_cast(dps, xen_processor_csd_t); \
+ dps_param = guest_handle_cast(dps, xen_processor_csd_t); \
+ (_d_)->dp = guest_handle_from_param(dps_param, xen_processor_csd_t); \
} while (0)
XLAT_processor_cx(xen_state, state);
#undef XLAT_processor_cx_HNDL_dp
#define XLAT_processor_performance_HNDL_states(_d_, _s_) do { \
XEN_GUEST_HANDLE(compat_processor_px_t) states; \
+ XEN_GUEST_HANDLE_PARAM(xen_processor_px_t) states_t; \
if ( unlikely(!compat_handle_okay((_s_)->states, (_s_)->state_count)) ) \
return -EFAULT; \
guest_from_compat_handle(states, (_s_)->states); \
- (_d_)->states = guest_handle_cast(states, xen_processor_px_t); \
+ states_t = guest_handle_cast(states, xen_processor_px_t); \
+ (_d_)->states = guest_handle_from_param(states_t, xen_processor_px_t); \
} while (0)
XLAT_processor_performance(xen_perf, perf);
#define COMPAT
#define _XEN_GUEST_HANDLE(t) XEN_GUEST_HANDLE(t)
+#define _XEN_GUEST_HANDLE_PARAM(t) XEN_GUEST_HANDLE_PARAM(t)
typedef int ret_t;
#include "../platform_hypercall.c"
#define call compat_call
#define do_multicall(l, n) compat_multicall(_##l, n)
#define _XEN_GUEST_HANDLE(t) XEN_GUEST_HANDLE(t)
+#define _XEN_GUEST_HANDLE_PARAM(t) XEN_GUEST_HANDLE(t)
static void __trace_multicall_call(multicall_entry_t *call)
{
ret_t
do_multicall(
- XEN_GUEST_HANDLE(multicall_entry_t) call_list, unsigned int nr_calls)
+ XEN_GUEST_HANDLE_PARAM(multicall_entry_t) call_list, unsigned int nr_calls)
{
struct mc_state *mcs = ¤t->mc_state;
unsigned int i;