All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Egger, Christoph" <chegger@amazon.de>
To: Jan Beulich <JBeulich@suse.com>,
	xen-devel <xen-devel@lists.xenproject.org>
Cc: Jinsong Liu <jinsong.liu@alibaba-inc.com>
Subject: Re: [PATCH] x86/MCE: allow overriding the CMCI threshold
Date: Mon, 12 Jan 2015 11:18:21 +0100	[thread overview]
Message-ID: <54B39F6D.2080805@amazon.de> (raw)
In-Reply-To: <54B397600200007800053780@mail.emea.novell.com>

On 2015/01/12 9:44, Jan Beulich wrote:
> We've had reports of systems where CMCIs would surface at a relatively
> high rate during certain periods of time, without them apparently
> causing subsequent more severe problems (see Xeon E7-8800/4800/2800
> specification clarification SC1). Give the admin a knob to lower the
> impact on the system logs.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

A small comment at the bottom, besides of that:

Acked-by: Christoph Egger <chegger@amazon.de>

> 
> --- a/docs/misc/xen-command-line.markdown
> +++ b/docs/misc/xen-command-line.markdown
> @@ -242,6 +242,14 @@ the NMI watchdog is also enabled.
>  
>  If set, override Xen's default choice for the platform timer.
>  
> +### cmci-threshold
> +> `= <integer>`
> +
> +> Default: `2`
> +
> +Specify the event count threshold for raising Corrected Machine Check
> +Interrupts.  Specifying zero disables CMCI handling.
> +
>  ### cmos-rtc-probe
>  > `= <boolean>`
>  
> --- a/xen/arch/x86/cpu/mcheck/mce_intel.c
> +++ b/xen/arch/x86/cpu/mcheck/mce_intel.c
> @@ -492,6 +492,9 @@ static int do_cmci_discover(int i)
>  {
>      unsigned msr = MSR_IA32_MCx_CTL2(i);
>      u64 val;
> +    unsigned int threshold, max_threshold;
> +    static unsigned int cmci_threshold = 2;
> +    integer_param("cmci-threshold", cmci_threshold);
>  
>      rdmsrl(msr, val);
>      /* Some other CPU already owns this bank. */
> @@ -500,15 +503,28 @@ static int do_cmci_discover(int i)
>          goto out;
>      }
>  
> -    val &= ~CMCI_THRESHOLD_MASK;
> -    wrmsrl(msr, val | CMCI_EN | CMCI_THRESHOLD);
> -    rdmsrl(msr, val);
> +    if ( cmci_threshold )
> +    {
> +        wrmsrl(msr, val | CMCI_EN | CMCI_THRESHOLD_MASK);
> +        rdmsrl(msr, val);
> +    }
>  
>      if (!(val & CMCI_EN)) {
>          /* This bank does not support CMCI. Polling timer has to handle it. */
>          mcabanks_set(i, __get_cpu_var(no_cmci_banks));
> +        wrmsrl(msr, val & ~CMCI_THRESHOLD_MASK);
>          return 0;
>      }
> +    max_threshold = MASK_EXTR(val, CMCI_THRESHOLD_MASK);
> +    threshold = cmci_threshold;
> +    if ( threshold > max_threshold )
> +    {
> +       mce_printk(MCE_QUIET,
> +                  "CMCI: threshold %#x too large for CPU%u bank %u, using %#x\n",
> +                  threshold, smp_processor_id(), i, max_threshold);
> +       threshold = max_threshold;
> +    }
> +    wrmsrl(msr, (val & ~CMCI_THRESHOLD_MASK) | CMCI_EN | threshold);
>      mcabanks_set(i, __get_cpu_var(mce_banks_owned));
>  out:
>      mcabanks_clear(i, __get_cpu_var(no_cmci_banks));
> --- a/xen/arch/x86/cpu/mcheck/x86_mca.h
> +++ b/xen/arch/x86/cpu/mcheck/x86_mca.h
> @@ -86,9 +86,6 @@
>  /* Bitfield of MSR_K8_HWCR register */
>  #define K8_HWCR_MCi_STATUS_WREN		(1ULL << 18)
>  
> -/*Intel Specific bitfield*/
> -#define CMCI_THRESHOLD			0x2
> -
>  #define MCi_MISC_ADDRMOD_MASK (0x7UL << 6)
>  #define MCi_MISC_PHYSMOD    (0x2UL << 6)

I think these two are also Intel specific bitfields.
Please leave the comment for those.

Christoph

  reply	other threads:[~2015-01-12 10:32 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-12  8:44 [PATCH] x86/MCE: allow overriding the CMCI threshold Jan Beulich
2015-01-12 10:18 ` Egger, Christoph [this message]
2015-01-12 14:33   ` 答复: " 刘劲松(凯耳)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54B39F6D.2080805@amazon.de \
    --to=chegger@amazon.de \
    --cc=JBeulich@suse.com \
    --cc=jinsong.liu@alibaba-inc.com \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.