Applied, thanks.

On Mon, Nov 17, 2008 at 10:00:15AM +0100, Dietmar Hahn wrote:
> Hi,
> 
> I did some reworking of mini-os code to get it compile fine again.
> Further needed is the patch discussed last weak with Samuel Thibault on the 
> list.
> The attached patch cleans up the hypervisor calls.
> Thanks.
> 
> Dietmar.

> # HG changeset patch
> # User [EMAIL PROTECTED]
> # Date 1226909985 -3600
> # Node ID bc50b227afe354b9550e80f2ce1a496268701c0d
> # Parent  9bc00e9716cd8c7d3fe0ffd71b28d3235fc125ac
> Clean up the hypervisor interface - move all hypervisor calls to xencomm
> 
> Signed-off-by: Dietmar Hahn <[EMAIL PROTECTED]>
> 
> diff -r 9bc00e9716cd -r bc50b227afe3 extras/mini-os/arch/ia64/xencomm.c
> --- a/extras/mini-os/arch/ia64/xencomm.c      Fri Nov 07 19:34:59 2008 +0900
> +++ b/extras/mini-os/arch/ia64/xencomm.c      Mon Nov 17 09:19:45 2008 +0100
> @@ -24,6 +24,8 @@
>  
>  
>  #include <os.h>
> +#include <mini-os/errno.h>
> +#include <mini-os/lib.h>
>  #include <hypervisor.h>
>  #include <xen/xencomm.h>
>  #include <xen/grant_table.h>
> @@ -38,6 +40,7 @@ struct xencomm_mini
>  
>  #define xen_guest_handle(hnd)  ((hnd).p)
>  
> +struct xencomm_handle;
>  
>  /* Translate virtual address to physical address.  */
>  uint64_t
> @@ -50,6 +53,16 @@ xencomm_vaddr_to_paddr(uint64_t vaddr)
>               return __pa(vaddr);
>  
>       return 0;
> +}
> +
> +/* Inline version.  To be used only on linear space (kernel space).  */
> +static struct xencomm_handle *
> +xencomm_create_inline(void *buffer)
> +{
> +     unsigned long paddr;
> +
> +     paddr = xencomm_vaddr_to_paddr((unsigned long)buffer);
> +     return (struct xencomm_handle *)(paddr | XENCOMM_INLINE_FLAG);
>  }
>  
>  #define min(a,b) (((a) < (b)) ? (a) : (b))
> @@ -201,6 +214,14 @@ xencommize_mini_grant_table_op(struct xe
>       return rc;
>  }
>  
> +static inline int
> +xencomm_arch_hypercall_grant_table_op(unsigned int cmd,
> +                                      struct xencomm_handle *uop,
> +                                      unsigned int count)
> +{
> +     return _hypercall3(int, grant_table_op, cmd, uop, count);
> +}
> +
>  int
>  xencomm_mini_hypercall_grant_table_op(unsigned int cmd, void *op,
>                                        unsigned int count)
> @@ -268,3 +289,107 @@ HYPERVISOR_suspend(unsigned long srec)
>          return xencomm_arch_hypercall_suspend(xencomm_create_inline(&arg));
>  }
>  
> +int
> +HYPERVISOR_event_channel_op(int cmd, void *arg)
> +{
> +     int rc;
> +     struct xencomm_handle *newArg;
> +
> +     newArg = xencomm_create_inline(arg);
> +     rc = _hypercall2(int, event_channel_op, cmd, newArg);
> +     if (unlikely(rc == -ENOSYS)) {
> +             struct evtchn_op op;
> +
> +             op.cmd = SWAP(cmd);
> +             memcpy(&op.u, arg, sizeof(op.u));
> +             rc = _hypercall1(int, event_channel_op_compat, &op);
> +     }
> +     return rc;
> +}
> +
> +static int
> +xencomm_arch_xen_version(int cmd, struct xencomm_handle *arg)
> +{
> +     return _hypercall2(int, xen_version, cmd, arg);
> +}
> +
> +static int
> +xencomm_arch_xen_feature(int cmd, struct xencomm_handle *arg)
> +{
> +     struct xencomm_handle *newArg;
> +
> +     newArg = xencomm_create_inline(arg);
> +     return _hypercall2(int, xen_version, cmd, newArg);
> +}
> +
> +int
> +HYPERVISOR_xen_version(int cmd, void *arg)
> +{
> +     switch(cmd) {
> +             case XENVER_version:
> +                     return xencomm_arch_xen_version(cmd, 0);
> +             case XENVER_get_features:
> +                     return xencomm_arch_xen_feature(cmd, arg);
> +             default:
> +                     return -1;
> +     }
> +}
> +
> +int
> +HYPERVISOR_console_io(int cmd, int count, char *str)
> +{
> +     struct xencomm_handle *newStr;
> +
> +     newStr = xencomm_create_inline(str);
> +     return _hypercall3(int, console_io, cmd, count, newStr);
> +}
> +
> +int
> +HYPERVISOR_sched_op_compat(int cmd, unsigned long arg)
> +{
> +     return _hypercall2(int, sched_op_compat, cmd, arg);
> +}
> +
> +int
> +HYPERVISOR_sched_op(int cmd, void *arg)
> +{
> +     struct xencomm_handle *newArg;
> +
> +     newArg = xencomm_create_inline(arg);
> +     return _hypercall2(int, sched_op, cmd, newArg);
> +}
> +
> +int
> +HYPERVISOR_callback_op(int cmd, void *arg)
> +{
> +     struct xencomm_handle *newArg;
> +
> +     newArg = xencomm_create_inline(arg);
> +     return _hypercall2(int, callback_op, cmd, newArg);
> +}
> +
> +int
> +HYPERVISOR_opt_feature(void *arg)
> +{
> +     struct xencomm_handle *new_arg;
> +
> +     new_arg = xencomm_create_inline(arg);
> +
> +     return _hypercall1(int, opt_feature, new_arg);
> +}
> +
> +int
> +HYPERVISOR_shutdown(unsigned int reason)
> +{
> +     struct sched_shutdown sched_shutdown = {
> +             .reason = reason
> +     };
> +
> +     int rc = HYPERVISOR_sched_op(SCHEDOP_shutdown, &sched_shutdown);
> +
> +     if (rc == -ENOSYS)
> +             rc = HYPERVISOR_sched_op_compat(SCHEDOP_shutdown, reason);
> +
> +     return rc;
> +}
> +
> diff -r 9bc00e9716cd -r bc50b227afe3 
> extras/mini-os/include/ia64/hypercall-ia64.h
> --- a/extras/mini-os/include/ia64/hypercall-ia64.h    Fri Nov 07 19:34:59 
> 2008 +0900
> +++ b/extras/mini-os/include/ia64/hypercall-ia64.h    Mon Nov 17 09:19:45 
> 2008 +0100
> @@ -34,8 +34,6 @@
>  #ifndef __HYPERCALL_H__
>  #define __HYPERCALL_H__
>  
> -#include <mini-os/lib.h>     /* memcpy() */
> -#include <mini-os/errno.h>   /* ENOSYS() */
>  #include <xen/event_channel.h>
>  #include <xen/sched.h>
>  #include <xen/version.h>
> @@ -114,123 +112,24 @@ extern unsigned long __hypercall(unsigne
>  })
>  
>  
> -extern unsigned long xencomm_vaddr_to_paddr(unsigned long vaddr);
> -struct xencomm_handle;
> +int HYPERVISOR_event_channel_op(int cmd, void *arg);
>  
> -/* Inline version.  To be used only on linear space (kernel space).  */
> -static inline struct xencomm_handle *
> -xencomm_create_inline(void *buffer)
> -{
> -     unsigned long paddr;
> +int HYPERVISOR_xen_version(int cmd, void *arg);
>  
> -     paddr = xencomm_vaddr_to_paddr((unsigned long)buffer);
> -     return (struct xencomm_handle *)(paddr | XENCOMM_INLINE_FLAG);
> -}
> +int HYPERVISOR_console_io(int cmd, int count, char *str);
>  
> -static inline int
> -xencomm_arch_event_channel_op(int cmd, void *arg)
> -{
> -     int rc;
> -     struct xencomm_handle *newArg;
> +int HYPERVISOR_sched_op_compat(int cmd, unsigned long arg);
>  
> -     newArg = xencomm_create_inline(arg);
> -     rc = _hypercall2(int, event_channel_op, cmd, newArg);
> -     if (unlikely(rc == -ENOSYS)) {
> -             struct evtchn_op op;
> +int HYPERVISOR_sched_op(int cmd, void *arg);
>  
> -             op.cmd = SWAP(cmd);
> -             memcpy(&op.u, arg, sizeof(op.u));
> -             rc = _hypercall1(int, event_channel_op_compat, &op);
> -     }
> -     return rc;
> -}
> -#define HYPERVISOR_event_channel_op xencomm_arch_event_channel_op
> -
> -static inline int
> -xencomm_arch_xen_version(int cmd, struct xencomm_handle *arg)
> -{
> -     return _hypercall2(int, xen_version, cmd, arg);
> -}
> -
> -static inline int
> -xencomm_arch_xen_feature(int cmd, struct xencomm_handle *arg)
> -{
> -     struct xencomm_handle *newArg;
> -
> -     newArg = xencomm_create_inline(arg);
> -     return _hypercall2(int, xen_version, cmd, newArg);
> -}
> -
> -static inline int
> -HYPERVISOR_xen_version(int cmd, void *arg)
> -{
> -     switch(cmd) {
> -             case XENVER_version:
> -                     return xencomm_arch_xen_version(cmd, 0);
> -             case XENVER_get_features:
> -                     return xencomm_arch_xen_feature(cmd, arg);
> -             default:
> -                     return -1;
> -     }
> -}
> -
> -static inline int
> -xencomm_arch_console_io(int cmd, int count, char *str)
> -{
> -     struct xencomm_handle *newStr;
> -
> -     newStr = xencomm_create_inline(str);
> -     return _hypercall3(int, console_io, cmd, count, newStr);
> -}
> -
> -
> -#define HYPERVISOR_console_io xencomm_arch_console_io
> -
> -static inline int
> -HYPERVISOR_sched_op_compat(int cmd, unsigned long arg)
> -{
> -     return _hypercall2(int, sched_op_compat, cmd, arg);
> -}
> -
> -static inline int
> -xencomm_arch_sched_op(int cmd, void *arg)
> -{
> -     struct xencomm_handle *newArg;
> -
> -     newArg = xencomm_create_inline(arg);
> -     return _hypercall2(int, sched_op, cmd, newArg);
> -}
> -
> -#define HYPERVISOR_sched_op xencomm_arch_sched_op
> -
> -static inline int
> -xencomm_arch_callback_op(int cmd, void *arg)
> -{
> -     struct xencomm_handle *newArg;
> -
> -     newArg = xencomm_create_inline(arg);
> -     return _hypercall2(int, callback_op, cmd, newArg);
> -}
> -#define HYPERVISOR_callback_op xencomm_arch_callback_op
> -
> -static inline int
> -xencomm_arch_hypercall_grant_table_op(unsigned int cmd,
> -                                      struct xencomm_handle *uop,
> -                                      unsigned int count)
> -{
> -     return _hypercall3(int, grant_table_op, cmd, uop, count);
> -}
> +int HYPERVISOR_callback_op(int cmd, void *arg);
>  
>  int HYPERVISOR_grant_table_op(unsigned int cmd, void *uop, unsigned int 
> count);
>  
> -static inline int
> -HYPERVISOR_opt_feature(void *arg)
> -{
> -     struct xencomm_handle *new_arg;
> +int HYPERVISOR_opt_feature(void *arg);
>  
> -     new_arg = xencomm_create_inline(arg);
> +int HYPERVISOR_suspend(unsigned long srec);
>  
> -     return _hypercall1(int, opt_feature, new_arg);
> -}
> +int HYPERVISOR_shutdown(unsigned int reason);
>  
>  #endif /* __HYPERCALL_H__ */
> diff -r 9bc00e9716cd -r bc50b227afe3 extras/mini-os/include/ia64/os.h
> --- a/extras/mini-os/include/ia64/os.h        Fri Nov 07 19:34:59 2008 +0900
> +++ b/extras/mini-os/include/ia64/os.h        Mon Nov 17 09:19:45 2008 +0100
> @@ -192,21 +192,6 @@ __synch_cmpxchg(volatile void *ptr, uint
>  
>  extern shared_info_t *HYPERVISOR_shared_info;
>  
> -static inline int
> -HYPERVISOR_shutdown(unsigned int reason)
> -{
> -     struct sched_shutdown sched_shutdown = {
> -             .reason = reason
> -     };
> -
> -     int rc = HYPERVISOR_sched_op(SCHEDOP_shutdown, &sched_shutdown);
> -
> -     if (rc == -ENOSYS)
> -             rc = HYPERVISOR_sched_op_compat(SCHEDOP_shutdown, reason);
> -
> -     return rc;
> -}
> -
>  
>  /*
>   * This code is from the originally os.h and should be put in a

> _______________________________________________
> Xen-ia64-devel mailing list
> Xen-ia64-devel@lists.xensource.com
> http://lists.xensource.com/xen-ia64-devel

-- 
yamahata

_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@lists.xensource.com
http://lists.xensource.com/xen-ia64-devel

Reply via email to