Patchwork x86: Fix MCA broadcast parameters for TCG case

login
register
mail settings
Submitter Jan Kiszka
Date Feb. 2, 2011, 8:35 p.m.
Message ID <4D49C00E.6090104@web.de>
Download mbox | patch
Permalink /patch/81556/
State New
Headers show

Comments

Jan Kiszka - Feb. 2, 2011, 8:35 p.m.
On 2011-02-02 20:05, Blue Swirl wrote:
> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
> ---
>  target-i386/helper.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/target-i386/helper.c b/target-i386/helper.c
> index 1217452..4bbf9b1 100644
> --- a/target-i386/helper.c
> +++ b/target-i386/helper.c
> @@ -1148,7 +1148,7 @@ void cpu_inject_x86_mce(CPUState *cenv, int
> bank, uint64_t status,
>                      continue;
>                  }
> 
> -                qemu_inject_x86_mce(env, 1, 0xa000000000000000, 0, 0, 0);
> +                qemu_inject_x86_mce(env, 1, 0xa000000000000000ULL, 0, 0, 0);
>              }
>          }
>      }

Let's fix this for real, the value is wrong anyway:

----------8<----------

From: Jan Kiszka <jan.kiszka@siemens.com>

When broadcasting MCEs, we need to set MCIP and RIPV in mcg_status like
it is done for KVM. Use the symbolic constants at this chance.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
 target-i386/helper.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
Marcelo Tosatti - Feb. 4, 2011, 1:58 p.m.
On Wed, Feb 02, 2011 at 09:35:26PM +0100, Jan Kiszka wrote:
> On 2011-02-02 20:05, Blue Swirl wrote:
> > Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
> > ---
> >  target-i386/helper.c |    2 +-
> >  1 files changed, 1 insertions(+), 1 deletions(-)
> > 
> > diff --git a/target-i386/helper.c b/target-i386/helper.c
> > index 1217452..4bbf9b1 100644
> > --- a/target-i386/helper.c
> > +++ b/target-i386/helper.c
> > @@ -1148,7 +1148,7 @@ void cpu_inject_x86_mce(CPUState *cenv, int
> > bank, uint64_t status,
> >                      continue;
> >                  }
> > 
> > -                qemu_inject_x86_mce(env, 1, 0xa000000000000000, 0, 0, 0);
> > +                qemu_inject_x86_mce(env, 1, 0xa000000000000000ULL, 0, 0, 0);
> >              }
> >          }
> >      }
> 
> Let's fix this for real, the value is wrong anyway:
> 
> ----------8<----------
> 
> From: Jan Kiszka <jan.kiszka@siemens.com>
> 
> When broadcasting MCEs, we need to set MCIP and RIPV in mcg_status like
> it is done for KVM. Use the symbolic constants at this chance.
> 
> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>

Applied to uq/master, thanks.

Patch

diff --git a/target-i386/helper.c b/target-i386/helper.c
index d74b6e3..f41416f 100644
--- a/target-i386/helper.c
+++ b/target-i386/helper.c
@@ -1145,8 +1145,8 @@  void cpu_inject_x86_mce(CPUState *cenv, int bank, uint64_t status,
                 if (cenv == env) {
                     continue;
                 }
-
-                qemu_inject_x86_mce(env, 1, 0xa000000000000000, 0, 0, 0);
+                qemu_inject_x86_mce(env, 1, MCI_STATUS_VAL | MCI_STATUS_UC,
+                                    MCG_STATUS_MCIP | MCG_STATUS_RIPV, 0, 0);
             }
         }
     }