[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] make do_sched_op_compat() x86-specific
On 08/06/15 14:28, Jan Beulich wrote: > Being a pre-3.1 compatibility hypercall handler only, it's not needed > on ARM or any future architectures Xen may get ported to. > > Also the function shouldn't really be used internally - its use should > be limited to its purpose (and hence there's also no need for a > prototype). > > Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxx> > > --- a/xen/arch/x86/compat.c > +++ b/xen/arch/x86/compat.c > @@ -5,9 +5,10 @@ > * hypercall after doing necessary argument munging. > */ > > -#include <xen/config.h> > #include <xen/guest_access.h> > #include <xen/hypercall.h> > +#include <xen/trace.h> > +#include <public/sched.h> > > #ifndef COMPAT > typedef long ret_t; > @@ -26,6 +27,28 @@ ret_t do_physdev_op_compat(XEN_GUEST_HAN > > #ifndef COMPAT > > +/* Legacy hypercall (as of 0x00030101). */ > +long do_sched_op_compat(int cmd, unsigned long arg) > +{ > + switch ( cmd ) > + { > + case SCHEDOP_yield: > + case SCHEDOP_block: > + return do_sched_op(cmd, guest_handle_from_ptr(NULL, void)); > + > + case SCHEDOP_shutdown: > + TRACE_3D(TRC_SCHED_SHUTDOWN, > + current->domain->domain_id, current->vcpu_id, arg); > + domain_shutdown(current->domain, (u8)arg); > + break; > + > + default: > + return -ENOSYS; > + } > + > + return 0; > +} > + > /* Legacy hypercall (as of 0x00030202). */ > long do_event_channel_op_compat(XEN_GUEST_HANDLE_PARAM(evtchn_op_t) uop) > { > --- a/xen/arch/x86/hvm/hvm.c > +++ b/xen/arch/x86/hvm/hvm.c > @@ -2705,7 +2705,7 @@ void hvm_hlt(unsigned long rflags) > if ( unlikely(!(rflags & X86_EFLAGS_IF)) ) > return hvm_vcpu_down(curr); > > - do_sched_op_compat(SCHEDOP_block, 0); > + do_sched_op(SCHEDOP_block, guest_handle_from_ptr(NULL, void)); > > HVMTRACE_1D(HLT, /* pending = */ vcpu_runnable(curr)); > } > --- a/xen/arch/x86/hvm/svm/svm.c > +++ b/xen/arch/x86/hvm/svm/svm.c > @@ -36,7 +36,7 @@ > #include <asm/cpufeature.h> > #include <asm/processor.h> > #include <asm/amd.h> > -#include <asm/types.h> > +#include <asm/guest_access.h> > #include <asm/debugreg.h> > #include <asm/msr.h> > #include <asm/i387.h> > @@ -1988,7 +1988,7 @@ static void svm_vmexit_do_pause(struct c > * Do something useful, like reschedule the guest > */ > perfc_incr(pauseloop_exits); > - do_sched_op_compat(SCHEDOP_yield, 0); > + do_sched_op(SCHEDOP_yield, guest_handle_from_ptr(NULL, void)); > } > > static void > --- a/xen/arch/x86/hvm/viridian.c > +++ b/xen/arch/x86/hvm/viridian.c > @@ -9,6 +9,7 @@ > #include <xen/perfc.h> > #include <xen/hypercall.h> > #include <xen/domain_page.h> > +#include <asm/guest_access.h> > #include <asm/paging.h> > #include <asm/p2m.h> > #include <asm/apic.h> > @@ -561,7 +562,7 @@ int viridian_hypercall(struct cpu_user_r > { > case HvNotifyLongSpinWait: > perfc_incr(mshv_call_long_wait); > - do_sched_op_compat(SCHEDOP_yield, 0); > + do_sched_op(SCHEDOP_yield, guest_handle_from_ptr(NULL, void)); > status = HV_STATUS_SUCCESS; > break; > default: > --- a/xen/arch/x86/hvm/vmx/vmx.c > +++ b/xen/arch/x86/hvm/vmx/vmx.c > @@ -32,7 +32,7 @@ > #include <asm/regs.h> > #include <asm/cpufeature.h> > #include <asm/processor.h> > -#include <asm/types.h> > +#include <asm/guest_access.h> > #include <asm/debugreg.h> > #include <asm/msr.h> > #include <asm/paging.h> > @@ -3198,7 +3198,7 @@ void vmx_vmexit_handler(struct cpu_user_ > > case EXIT_REASON_PAUSE_INSTRUCTION: > perfc_incr(pauseloop_exits); > - do_sched_op_compat(SCHEDOP_yield, 0); > + do_sched_op(SCHEDOP_yield, guest_handle_from_ptr(NULL, void)); > break; > > case EXIT_REASON_XSETBV: > --- a/xen/common/schedule.c > +++ b/xen/common/schedule.c > @@ -882,39 +882,6 @@ void watchdog_domain_destroy(struct doma > kill_timer(&d->watchdog_timer[i]); > } > > -long do_sched_op_compat(int cmd, unsigned long arg) > -{ > - long ret = 0; > - > - switch ( cmd ) > - { > - case SCHEDOP_yield: > - { > - ret = vcpu_yield(); > - break; > - } > - > - case SCHEDOP_block: > - { > - vcpu_block_enable_events(); > - break; > - } > - > - case SCHEDOP_shutdown: > - { > - TRACE_3D(TRC_SCHED_SHUTDOWN, > - current->domain->domain_id, current->vcpu_id, arg); > - domain_shutdown(current->domain, (u8)arg); > - break; > - } > - > - default: > - ret = -ENOSYS; > - } > - > - return ret; > -} > - > typedef long ret_t; > > #endif /* !COMPAT */ > --- a/xen/include/xen/hypercall.h > +++ b/xen/include/xen/hypercall.h > @@ -22,11 +22,6 @@ do_ni_hypercall( > void); > > extern long > -do_sched_op_compat( > - int cmd, > - unsigned long arg); > - > -extern long > do_sched_op( > int cmd, > XEN_GUEST_HANDLE_PARAM(void) arg); > > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |