[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [Xen-devel] [PATCH] tmem stub for 3.4



The full tmem patch returns -ENODEV if tmem is present and
disabled.  I suppose it makes no difference whether the stub
returns -ENODEV or -ENOSYS, but I'd still like to see
the patch taken to ensure the slot is clearly reserved
and to printk the warning.

Dan

> -----Original Message-----
> From: Jan Beulich [mailto:jbeulich@xxxxxxxxxx]
> Sent: Thursday, March 19, 2009 9:01 AM
> To: Dan Magenheimer
> Cc: Keir Fraser; Xen-Devel (E-mail)
> Subject: Re: [Xen-devel] [PATCH] tmem stub for 3.4
> 
> 
> Why would failing with -ENODEV be more graceful than failing 
> with -ENOSYS?
> In my opinion it just makes eventual compatibility handling 
> slightly more
> convoluted on the kernel side, as it then will require 
> checking for two
> different return codes to distinguish non-fatal from possibly 
> fatal failure.
> 
> Jan
> 
> >>> Dan Magenheimer <dan.magenheimer@xxxxxxxxxx> 19.03.09 15:42 >>>
> After lengthy discussion with Keir and Ian, we agreed that
> it is too close to 3.4 freeze to put in the transcendent memory
> (tmem) patch.  Instead, it will be added as soon as xen-unstable
> unfreezes following 3.4.
> 
> This patch reserves the hypercall number for tmem and
> adds a stub to allow tmem-modified guests to fail gracefully
> on the 3.4 release.
> 
> (Patch also attached in case my mailer messes up the formatting.)
> 
> Signed-off-by: Dan Magenheimer <dan.magenheimer@xxxxxxxxxx>
> 
> diff -r 2039e8271051 xen/arch/x86/x86_32/entry.S
> --- a/xen/arch/x86/x86_32/entry.S     Wed Mar 18 17:30:13 2009 +0000
> +++ b/xen/arch/x86/x86_32/entry.S     Thu Mar 19 08:31:35 2009 -0600
> @@ -703,6 +703,7 @@ ENTRY(hypercall_table)
>          .long do_sysctl             /* 35 */
>          .long do_domctl
>          .long do_kexec_op
> +        .long do_tmem_op
>          .rept __HYPERVISOR_arch_0-((.-hypercall_table)/4)
>          .long do_ni_hypercall
>          .endr
> @@ -750,6 +751,7 @@ ENTRY(hypercall_args_table)
>          .byte 1 /* do_sysctl            */  /* 35 */
>          .byte 1 /* do_domctl            */
>          .byte 2 /* do_kexec_op          */
> +        .byte 1 /* do_tmem_op           */
>          .rept __HYPERVISOR_arch_0-(.-hypercall_args_table)
>          .byte 0 /* do_ni_hypercall      */
>          .endr
> diff -r 2039e8271051 xen/arch/x86/x86_64/compat/entry.S
> --- a/xen/arch/x86/x86_64/compat/entry.S      Wed Mar 18 
> 17:30:13 2009 +0000
> +++ b/xen/arch/x86/x86_64/compat/entry.S      Thu Mar 19 
> 08:31:35 2009 -0600
> @@ -408,6 +408,7 @@ ENTRY(compat_hypercall_table)
>          .quad do_sysctl                 /* 35 */
>          .quad do_domctl
>          .quad compat_kexec_op
> +        .quad do_tmem_op
>          .rept __HYPERVISOR_arch_0-((.-compat_hypercall_table)/8)
>          .quad compat_ni_hypercall
>          .endr
> @@ -455,6 +456,7 @@ ENTRY(compat_hypercall_args_table)
>          .byte 1 /* do_sysctl                */  /* 35 */
>          .byte 1 /* do_domctl                */
>          .byte 2 /* compat_kexec_op          */
> +        .byte 1 /* do_tmem_op               */
>          .rept __HYPERVISOR_arch_0-(.-compat_hypercall_args_table)
>          .byte 0 /* compat_ni_hypercall      */
>          .endr
> diff -r 2039e8271051 xen/arch/x86/x86_64/entry.S
> --- a/xen/arch/x86/x86_64/entry.S     Wed Mar 18 17:30:13 2009 +0000
> +++ b/xen/arch/x86/x86_64/entry.S     Thu Mar 19 08:31:35 2009 -0600
> @@ -692,6 +692,7 @@ ENTRY(hypercall_table)
>          .quad do_sysctl             /* 35 */
>          .quad do_domctl
>          .quad do_kexec_op
> +        .quad do_tmem_op
>          .rept __HYPERVISOR_arch_0-((.-hypercall_table)/8)
>          .quad do_ni_hypercall
>          .endr
> @@ -739,6 +740,7 @@ ENTRY(hypercall_args_table)
>          .byte 1 /* do_sysctl            */  /* 35 */
>          .byte 1 /* do_domctl            */
>          .byte 2 /* do_kexec             */
> +        .byte 1 /* do_tmem_op           */
>          .rept __HYPERVISOR_arch_0-(.-hypercall_args_table)
>          .byte 0 /* do_ni_hypercall      */
>          .endr
> diff -r 2039e8271051 xen/common/memory.c
> --- a/xen/common/memory.c     Wed Mar 18 17:30:13 2009 +0000
> +++ b/xen/common/memory.c     Thu Mar 19 08:31:35 2009 -0600
> @@ -560,6 +560,19 @@ long do_memory_op(unsigned long cmd, XEN
>      return rc;
>  }
>  
> +/* temporary placeholder for tmem hypercall */
> +int do_tmem_op(void *tmem_op)
> +{
> +    static int warned = 0;
> +
> +    if ( !warned )
> +    {
> +        printk("tmem: not implemented\n");
> +        warned = 1;
> +    }
> +    return -ENODEV;
> +}
> +
>  /*
>   * Local variables:
>   * mode: C
> 
>

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.