From: Thomas Leonard Date: Thu, 26 Jun 2014 11:28:26 +0000 (+0100) Subject: mini-os: don't require XEN_HAVE_PV_UPCALL_MASK X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=08318b39c9b6d37a2daaf353eed457a4effa46ed;p=people%2Fliuw%2Flibxenctrl-split%2Fmini-os.git mini-os: don't require XEN_HAVE_PV_UPCALL_MASK This isn't available on ARM. Signed-off-by: Thomas Leonard Acked-by: Samuel Thibault --- diff --git a/hypervisor.c b/hypervisor.c index c5de872..1b61d9b 100644 --- a/hypervisor.c +++ b/hypervisor.c @@ -73,18 +73,26 @@ void do_hypervisor_callback(struct pt_regs *regs) void force_evtchn_callback(void) { +#ifdef XEN_HAVE_PV_UPCALL_MASK int save; +#endif vcpu_info_t *vcpu; vcpu = &HYPERVISOR_shared_info->vcpu_info[smp_processor_id()]; +#ifdef XEN_HAVE_PV_UPCALL_MASK save = vcpu->evtchn_upcall_mask; +#endif while (vcpu->evtchn_upcall_pending) { +#ifdef XEN_HAVE_PV_UPCALL_MASK vcpu->evtchn_upcall_mask = 1; +#endif barrier(); do_hypervisor_callback(NULL); barrier(); +#ifdef XEN_HAVE_PV_UPCALL_MASK vcpu->evtchn_upcall_mask = save; barrier(); +#endif }; } @@ -110,7 +118,9 @@ inline void unmask_evtchn(uint32_t port) &vcpu_info->evtchn_pending_sel) ) { vcpu_info->evtchn_upcall_pending = 1; +#ifdef XEN_HAVE_PV_UPCALL_MASK if ( !vcpu_info->evtchn_upcall_mask ) +#endif force_evtchn_callback(); } }