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

Re: [Xen-devel] [PATCH] x86/MCE: mctelem_init() cleanup


  • To: Jan Beulich <JBeulich@xxxxxxxx>, xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: "Liu, Jinsong" <jinsong.liu@xxxxxxxxx>
  • Date: Sat, 8 Mar 2014 14:03:54 +0000
  • Accept-language: en-US
  • Cc: Christoph Egger <chegger@xxxxxxxxx>
  • Delivery-date: Sat, 08 Mar 2014 14:04:56 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xen.org>
  • Thread-index: AQHPNKSJEqKIlbb8Jkui4y0Z1MJ2fprXRQLQ
  • Thread-topic: [PATCH] x86/MCE: mctelem_init() cleanup

Jan Beulich wrote:
> The function can be __init with its caller taking care of only calling
> it on the BSP. And with that all its static variables can be dropped.
> 
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>

Reviewed-by: Liu Jinsong <jinsong.liu@xxxxxxxxx>

> 
> --- a/xen/arch/x86/cpu/mcheck/mce.c
> +++ b/xen/arch/x86/cpu/mcheck/mce.c
> @@ -775,13 +775,15 @@ void mcheck_init(struct cpuinfo_x86 *c,
> 
>      intpose_init();
> 
> -    mctelem_init(sizeof(struct mc_info));
> +    if ( bsp )
> +    {
> +        mctelem_init(sizeof(struct mc_info));
> +        register_cpu_notifier(&cpu_nfb);
> +    }
> 
>      /* Turn on MCE now */
>      set_in_cr4(X86_CR4_MCE);
> 
> -    if ( bsp )
> -        register_cpu_notifier(&cpu_nfb);
>      set_poll_bankmask(c);
> 
>      return;
> --- a/xen/arch/x86/cpu/mcheck/mctelem.c
> +++ b/xen/arch/x86/cpu/mcheck/mctelem.c
> @@ -248,25 +248,14 @@ static void mctelem_processing_release(s
>       }
>  }
> 
> -void mctelem_init(int reqdatasz)
> +void __init mctelem_init(unsigned int datasz)
>  {
> -     static int called = 0;
> -     static int datasz = 0, realdatasz = 0;
>       char *datarr;
> -     int i;
> +     unsigned int i;
> 
> -     BUG_ON(MC_URGENT != 0 || MC_NONURGENT != 1 || MC_NCLASSES != 2);
> +     BUILD_BUG_ON(MC_URGENT != 0 || MC_NONURGENT != 1 || MC_NCLASSES !=
> 2); 
> 
> -     /* Called from mcheck_init for all processors; initialize for the
> -      * first call only (no race here since the boot cpu completes
> -      * init before others start up). */
> -     if (++called == 1) {
> -             realdatasz = reqdatasz;
> -             datasz = (reqdatasz & ~0xf) + 0x10;     /* 16 byte roundup */
> -     } else {
> -             BUG_ON(reqdatasz != realdatasz);
> -             return;
> -     }
> +     datasz = (datasz & ~0xf) + 0x10;        /* 16 byte roundup */
> 
>       if ((mctctl.mctc_elems = xmalloc_array(struct mctelem_ent,
>           MC_NENT)) == NULL ||
> --- a/xen/arch/x86/cpu/mcheck/mctelem.h
> +++ b/xen/arch/x86/cpu/mcheck/mctelem.h
> @@ -59,7 +59,7 @@ typedef enum mctelem_class {
>       MC_NONURGENT
>  } mctelem_class_t;
> 
> -extern void mctelem_init(int);
> +extern void mctelem_init(unsigned int);
>  extern mctelem_cookie_t mctelem_reserve(mctelem_class_t);
>  extern void *mctelem_dataptr(mctelem_cookie_t);
>  extern void mctelem_commit(mctelem_cookie_t);


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

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