All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Egger <Christoph.Egger@amd.com>
To: "Liu, Jinsong" <jinsong.liu@intel.com>
Cc: "xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>,
	"Keir (Xen.org)" <keir@xen.org>,
	Ian Campbell <Ian.Campbell@citrix.com>,
	Jan Beulich <JBeulich@suse.com>
Subject: Re: [Patch 1/6] Xen/MCE: stick all 1's to MCi_CTL of vMCE
Date: Tue, 24 Jul 2012 11:28:30 +0200	[thread overview]
Message-ID: <500E6ABE.1000306@amd.com> (raw)
In-Reply-To: <DE8DF0795D48FD4CA783C40EC82923352C4089@SHSMSX101.ccr.corp.intel.com>


Where is the difference to c/s 25616:8a4cda0bbdc2 ?

Christoph


On 07/23/12 11:38, Liu, Jinsong wrote:

> Xen/MCE: stick all 1's to MCi_CTL of vMCE
> 
> This patch is a middle-work patch, prepare for future new vMCE model.
> It remove mci_ctl array, and keep MCi_CTL all 1's.
> 
> Signed-off-by: Liu, Jinsong <jinsong.liu@intel.com>
> 
> diff -r 4f92bdf3370c xen/arch/x86/cpu/mcheck/vmce.c
> --- a/xen/arch/x86/cpu/mcheck/vmce.c	Wed Jun 27 09:36:43 2012 +0200
> +++ b/xen/arch/x86/cpu/mcheck/vmce.c	Fri Jul 06 10:05:46 2012 +0800
> @@ -25,7 +25,6 @@
>  
>  /* Real value in physical CTL MSR */
>  static uint64_t __read_mostly h_mcg_ctl;
> -static uint64_t *__read_mostly h_mci_ctrl;
>  
>  int vmce_init_msr(struct domain *d)
>  {
> @@ -33,15 +32,6 @@
>      if ( !dom_vmce(d) )
>          return -ENOMEM;
>  
> -    dom_vmce(d)->mci_ctl = xmalloc_array(uint64_t, nr_mce_banks);
> -    if ( !dom_vmce(d)->mci_ctl )
> -    {
> -        xfree(dom_vmce(d));
> -        return -ENOMEM;
> -    }
> -    memset(dom_vmce(d)->mci_ctl, ~0,
> -           nr_mce_banks * sizeof(*dom_vmce(d)->mci_ctl));
> -
>      dom_vmce(d)->mcg_status = 0x0;
>      dom_vmce(d)->mcg_ctl = ~(uint64_t)0x0;
>      dom_vmce(d)->nr_injection = 0;
> @@ -56,7 +46,6 @@
>  {
>      if ( !dom_vmce(d) )
>          return;
> -    xfree(dom_vmce(d)->mci_ctl);
>      xfree(dom_vmce(d));
>      dom_vmce(d) = NULL;
>  }
> @@ -93,9 +82,8 @@
>      switch ( msr & (MSR_IA32_MC0_CTL | 3) )
>      {
>      case MSR_IA32_MC0_CTL:
> -        if ( bank < nr_mce_banks )
> -            *val = vmce->mci_ctl[bank] &
> -                   (h_mci_ctrl ? h_mci_ctrl[bank] : ~0UL);
> +        /* stick all 1's to MCi_CTL */
> +        *val = ~0UL;
>          mce_printk(MCE_VERBOSE, "MCE: rdmsr MC%u_CTL 0x%"PRIx64"\n",
>                     bank, *val);
>          break;
> @@ -220,8 +208,10 @@
>      switch ( msr & (MSR_IA32_MC0_CTL | 3) )
>      {
>      case MSR_IA32_MC0_CTL:
> -        if ( bank < nr_mce_banks )
> -            vmce->mci_ctl[bank] = val;
> +        /*
> +         * if guest crazy clear any bit of MCi_CTL,
> +         * treat it as not implement and ignore write change it.
> +         */
>          break;
>      case MSR_IA32_MC0_STATUS:
>          if ( entry && (entry->bank == bank) )
> @@ -523,22 +513,6 @@
>  int vmce_init(struct cpuinfo_x86 *c)
>  {
>      u64 value;
> -    unsigned int i;
> -
> -    if ( !h_mci_ctrl )
> -    {
> -        h_mci_ctrl = xmalloc_array(uint64_t, nr_mce_banks);
> -        if (!h_mci_ctrl)
> -        {
> -            dprintk(XENLOG_INFO, "Failed to alloc h_mci_ctrl\n");
> -            return -ENOMEM;
> -        }
> -        /* Don't care banks before firstbank */
> -        memset(h_mci_ctrl, ~0,
> -               min(firstbank, nr_mce_banks) * sizeof(*h_mci_ctrl));
> -        for (i = firstbank; i < nr_mce_banks; i++)
> -            rdmsrl(MSR_IA32_MCx_CTL(i), h_mci_ctrl[i]);
> -    }
>  
>      rdmsrl(MSR_IA32_MCG_CAP, value);
>      /* For Guest vMCE usage */
> @@ -551,18 +525,13 @@
>  
>  static int mca_ctl_conflict(struct mcinfo_bank *bank, struct domain *d)
>  {
> -    int bank_nr;
> -
> -    if ( !bank || !d || !h_mci_ctrl )
> +    if ( !bank || !d )
>          return 1;
>  
>      /* Will MCE happen in host if If host mcg_ctl is 0? */
>      if ( ~d->arch.vmca_msrs->mcg_ctl & h_mcg_ctl )
>          return 1;
>  
> -    bank_nr = bank->mc_bank;
> -    if (~d->arch.vmca_msrs->mci_ctl[bank_nr] & h_mci_ctrl[bank_nr] )
> -        return 1;
>      return 0;
>  }
>  
> diff -r 4f92bdf3370c xen/include/asm-x86/mce.h
> --- a/xen/include/asm-x86/mce.h	Wed Jun 27 09:36:43 2012 +0200
> +++ b/xen/include/asm-x86/mce.h	Fri Jul 06 10:05:46 2012 +0800
> @@ -18,7 +18,6 @@
>      /* Guest should not change below values after DOM boot up */
>      uint64_t mcg_ctl;
>      uint64_t mcg_status;
> -    uint64_t *mci_ctl;
>      uint16_t nr_injection;
>      struct list_head impact_header;
>      spinlock_t lock;



-- 
---to satisfy European Law for business letters:
Advanced Micro Devices GmbH
Einsteinring 24, 85689 Dornach b. Muenchen
Geschaeftsfuehrer: Alberto Bozzo, Andrew Bowd
Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen
Registergericht Muenchen, HRB Nr. 43632

  reply	other threads:[~2012-07-24  9:28 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-23  9:38 [Patch 1/6] Xen/MCE: stick all 1's to MCi_CTL of vMCE Liu, Jinsong
2012-07-24  9:28 ` Christoph Egger [this message]
2012-07-24 10:20   ` Liu, Jinsong

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=500E6ABE.1000306@amd.com \
    --to=christoph.egger@amd.com \
    --cc=Ian.Campbell@citrix.com \
    --cc=JBeulich@suse.com \
    --cc=jinsong.liu@intel.com \
    --cc=keir@xen.org \
    --cc=xen-devel@lists.xensource.com \
    /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.