[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 07/22] mini-os: support hvm_op hypercall
Juergen Gross, on Tue 23 Aug 2016 17:15:53 +0200, wrote: > Support the HYPERVISOR_hvm_op() hypercall which is needed for HVMlite. > Add convenience functions hvm_get_parameter() and hvm_set_parameter(). > > Signed-off-by: Juergen Gross <jgross@xxxxxxxx> Reviewed-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxx> > --- > arch/arm/setup.c | 15 --------------- > hypervisor.c | 27 +++++++++++++++++++++++++++ > include/hypervisor.h | 5 +++++ > include/x86/x86_32/hypercall-x86_32.h | 6 ++++++ > include/x86/x86_64/hypercall-x86_64.h | 6 ++++++ > 5 files changed, 44 insertions(+), 15 deletions(-) > > diff --git a/arch/arm/setup.c b/arch/arm/setup.c > index 06afe46..cbe67c6 100644 > --- a/arch/arm/setup.c > +++ b/arch/arm/setup.c > @@ -25,21 +25,6 @@ extern char shared_info_page[PAGE_SIZE]; > > void *device_tree; > > -static int hvm_get_parameter(int idx, uint64_t *value) > -{ > - struct xen_hvm_param xhv; > - int ret; > - > - xhv.domid = DOMID_SELF; > - xhv.index = idx; > - ret = HYPERVISOR_hvm_op(HVMOP_get_param, &xhv); > - if (ret < 0) { > - BUG(); > - } > - *value = xhv.value; > - return ret; > -} > - > static void get_console(void) > { > uint64_t v = -1; > diff --git a/hypervisor.c b/hypervisor.c > index 1b61d9b..715cfe8 100644 > --- a/hypervisor.c > +++ b/hypervisor.c > @@ -36,6 +36,33 @@ > > int in_callback; > > +#ifndef CONFIG_PARAVIRT > +int hvm_get_parameter(int idx, uint64_t *value) > +{ > + struct xen_hvm_param xhv; > + int ret; > + > + xhv.domid = DOMID_SELF; > + xhv.index = idx; > + ret = HYPERVISOR_hvm_op(HVMOP_get_param, &xhv); > + if ( ret < 0 ) > + BUG(); > + > + *value = xhv.value; > + return ret; > +} > + > +int hvm_set_parameter(int idx, uint64_t value) > +{ > + struct xen_hvm_param xhv; > + > + xhv.domid = DOMID_SELF; > + xhv.index = idx; > + xhv.value = value; > + return HYPERVISOR_hvm_op(HVMOP_set_param, &xhv); > +} > +#endif > + > void do_hypervisor_callback(struct pt_regs *regs) > { > unsigned long l1, l2, l1i, l2i; > diff --git a/include/hypervisor.h b/include/hypervisor.h > index 21b3566..6e421b1 100644 > --- a/include/hypervisor.h > +++ b/include/hypervisor.h > @@ -23,6 +23,7 @@ > #else > #error "Unsupported architecture" > #endif > +#include <xen/hvm/hvm_op.h> > #include <mini-os/traps.h> > > /* > @@ -37,6 +38,10 @@ extern union start_info_union start_info_union; > #define start_info (start_info_union.start_info) > > /* hypervisor.c */ > +#ifndef CONFIG_PARAVIRT > +int hvm_get_parameter(int idx, uint64_t *value); > +int hvm_set_parameter(int idx, uint64_t value); > +#endif > void force_evtchn_callback(void); > void do_hypervisor_callback(struct pt_regs *regs); > void mask_evtchn(uint32_t port); > diff --git a/include/x86/x86_32/hypercall-x86_32.h > b/include/x86/x86_32/hypercall-x86_32.h > index 99a4ee3..5c93464 100644 > --- a/include/x86/x86_32/hypercall-x86_32.h > +++ b/include/x86/x86_32/hypercall-x86_32.h > @@ -324,6 +324,12 @@ HYPERVISOR_domctl( > return _hypercall1(int, domctl, op); > } > > +static inline unsigned long > +HYPERVISOR_hvm_op(int op, void *arg) > +{ > + return _hypercall2(unsigned long, hvm_op, op, arg); > +} > + > #endif /* __HYPERCALL_X86_32_H__ */ > > /* > diff --git a/include/x86/x86_64/hypercall-x86_64.h > b/include/x86/x86_64/hypercall-x86_64.h > index e00b3bd..6171812 100644 > --- a/include/x86/x86_64/hypercall-x86_64.h > +++ b/include/x86/x86_64/hypercall-x86_64.h > @@ -331,6 +331,12 @@ HYPERVISOR_domctl( > return _hypercall1(int, domctl, op); > } > > +static inline unsigned long > +HYPERVISOR_hvm_op(int op, void *arg) > +{ > + return _hypercall2(unsigned long, hvm_op, op, arg); > +} > + > #endif /* __HYPERCALL_X86_64_H__ */ > > /* > -- > 2.6.6 > -- Samuel «Le monochrome, c'est pour ceux qui s'intéressent (encore) au contenu. Usenet dans ces conditions, c'est comme le web avec lynx, on prend trop conscience du vide, c'est déprimant.» -+- JLC in Guide du linuxien pervers : "Coup de cafard..." -+- _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |