All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jin Dongming <jin.dongming@np.css.fujitsu.com>
To: KVM list <kvm@vger.kernel.org>
Cc: Dean Nelson <dnelson@redhat.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	Avi Kivity <avi@redhat.com>, Huang Ying <ying.huang@intel.com>,
	Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>
Subject: [PATCH 05/11] kvm, x86: introduce kvm_inject_x86_mce_on
Date: Thu, 14 Oct 2010 17:47:03 +0900	[thread overview]
Message-ID: <4CB6C387.9030100@np.css.fujitsu.com> (raw)

Pass a table instead of multiple args.

Note:

kvm_inject_x86_mce(env, bank, status, mcg_status, addr, misc,
                   abort_on_error);

is equal to:

struct kvm_x86_mce mce = {
    .bank = bank,
    .status = status,
    .mcg_status = mcg_status,
    .addr = addr,
    .misc = misc,
};
kvm_inject_x86_mce_on(env, &mce, abort_on_error);

Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
Tested-by: Jin Dongming <jin.dongming@np.css.fujitsu.com>
---
 qemu-kvm.c |   56 ++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 38 insertions(+), 18 deletions(-)

diff --git a/qemu-kvm.c b/qemu-kvm.c
index 9f248f0..0ba42fc 100644
--- a/qemu-kvm.c
+++ b/qemu-kvm.c
@@ -1131,6 +1131,9 @@ static void sigbus_reraise(void)
 }
 
 #if defined(KVM_CAP_MCE) && defined(TARGET_I386)
+static void kvm_inject_x86_mce_on(CPUState *env, struct kvm_x86_mce *mce,
+                                  int abort_on_error);
+
 static int kvm_mce_in_progress(CPUState *env)
 {
     struct kvm_msr_entry msr_mcg_status = {
@@ -1192,17 +1195,27 @@ static void kvm_mce_inj_srao_memscrub(CPUState *env, unsigned long paddr)
 
 static void kvm_mce_inj_srao_broadcast(unsigned long paddr)
 {
+    struct kvm_x86_mce mce_srao_memscrub = {
+        .bank = 9,
+        .status = MCI_STATUS_VAL | MCI_STATUS_UC | MCI_STATUS_EN
+                  | MCI_STATUS_MISCV | MCI_STATUS_ADDRV | MCI_STATUS_S
+                  | 0xc0,
+        .mcg_status = MCG_STATUS_MCIP | MCG_STATUS_RIPV,
+        .addr = paddr,
+        .misc = (MCM_ADDR_PHYS << 6) | 0xc,
+    };
+    struct kvm_x86_mce mce_dummy = {
+        .bank = 1,
+        .status = MCI_STATUS_VAL | MCI_STATUS_UC,
+        .mcg_status = MCG_STATUS_MCIP | MCG_STATUS_RIPV,
+        .addr = 0,
+        .misc = 0,
+    };
     CPUState *cenv;
 
-    kvm_inject_x86_mce(first_cpu, 9,
-                       MCI_STATUS_VAL | MCI_STATUS_UC | MCI_STATUS_EN
-                       | MCI_STATUS_MISCV | MCI_STATUS_ADDRV | MCI_STATUS_S
-                       | 0xc0,
-                       MCG_STATUS_MCIP | MCG_STATUS_RIPV, paddr,
-                       (MCM_ADDR_PHYS << 6) | 0xc, 1);
+    kvm_inject_x86_mce_on(first_cpu, &mce_srao_memscrub, 1);
     for (cenv = first_cpu->next_cpu; cenv != NULL; cenv = cenv->next_cpu)
-        kvm_inject_x86_mce(cenv, 1, MCI_STATUS_VAL | MCI_STATUS_UC,
-                           MCG_STATUS_MCIP | MCG_STATUS_RIPV, 0, 0, 1);
+        kvm_inject_x86_mce_on(cenv, &mce_dummy, 1);
 }
 #endif
 
@@ -1941,6 +1954,22 @@ static void kvm_do_inject_x86_mce(void *_data)
 
     kvm_do_set_mce(data->env, data->mce, data->abort_on_error);
 }
+
+static void kvm_inject_x86_mce_on(CPUState *env, struct kvm_x86_mce *mce,
+                                  int abort_on_error)
+{
+    struct kvm_x86_mce_data data = {
+        .env = env,
+        .mce = mce,
+        .abort_on_error = abort_on_error,
+    };
+
+    if (!env->mcg_cap) {
+        perror("MCE support is not enabled!");
+        return;
+    }
+    on_vcpu(env, kvm_do_inject_x86_mce, &data);
+}
 #endif
 
 void kvm_inject_x86_mce(CPUState *cenv, int bank, uint64_t status,
@@ -1955,17 +1984,8 @@ void kvm_inject_x86_mce(CPUState *cenv, int bank, uint64_t status,
         .addr = addr,
         .misc = misc,
     };
-    struct kvm_x86_mce_data data = {
-        .env = cenv,
-        .mce = &mce,
-        .abort_on_error = abort_on_error,
-    };
 
-    if (!cenv->mcg_cap) {
-        fprintf(stderr, "MCE support is not enabled!\n");
-        return;
-    }
-    on_vcpu(cenv, kvm_do_inject_x86_mce, &data);
+    kvm_inject_x86_mce_on(cenv, &mce, abort_on_error);
 #else
     if (abort_on_error) {
         abort();
-- 
1.7.1.1



WARNING: multiple messages have this Message-ID (diff)
From: Jin Dongming <jin.dongming@np.css.fujitsu.com>
To: KVM list <kvm@vger.kernel.org>
Cc: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>,
	Dean Nelson <dnelson@redhat.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	Avi Kivity <avi@redhat.com>, Huang Ying <ying.huang@intel.com>
Subject: [Qemu-devel] [PATCH 05/11] kvm, x86: introduce kvm_inject_x86_mce_on
Date: Thu, 14 Oct 2010 17:47:03 +0900	[thread overview]
Message-ID: <4CB6C387.9030100@np.css.fujitsu.com> (raw)

Pass a table instead of multiple args.

Note:

kvm_inject_x86_mce(env, bank, status, mcg_status, addr, misc,
                   abort_on_error);

is equal to:

struct kvm_x86_mce mce = {
    .bank = bank,
    .status = status,
    .mcg_status = mcg_status,
    .addr = addr,
    .misc = misc,
};
kvm_inject_x86_mce_on(env, &mce, abort_on_error);

Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
Tested-by: Jin Dongming <jin.dongming@np.css.fujitsu.com>
---
 qemu-kvm.c |   56 ++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 38 insertions(+), 18 deletions(-)

diff --git a/qemu-kvm.c b/qemu-kvm.c
index 9f248f0..0ba42fc 100644
--- a/qemu-kvm.c
+++ b/qemu-kvm.c
@@ -1131,6 +1131,9 @@ static void sigbus_reraise(void)
 }
 
 #if defined(KVM_CAP_MCE) && defined(TARGET_I386)
+static void kvm_inject_x86_mce_on(CPUState *env, struct kvm_x86_mce *mce,
+                                  int abort_on_error);
+
 static int kvm_mce_in_progress(CPUState *env)
 {
     struct kvm_msr_entry msr_mcg_status = {
@@ -1192,17 +1195,27 @@ static void kvm_mce_inj_srao_memscrub(CPUState *env, unsigned long paddr)
 
 static void kvm_mce_inj_srao_broadcast(unsigned long paddr)
 {
+    struct kvm_x86_mce mce_srao_memscrub = {
+        .bank = 9,
+        .status = MCI_STATUS_VAL | MCI_STATUS_UC | MCI_STATUS_EN
+                  | MCI_STATUS_MISCV | MCI_STATUS_ADDRV | MCI_STATUS_S
+                  | 0xc0,
+        .mcg_status = MCG_STATUS_MCIP | MCG_STATUS_RIPV,
+        .addr = paddr,
+        .misc = (MCM_ADDR_PHYS << 6) | 0xc,
+    };
+    struct kvm_x86_mce mce_dummy = {
+        .bank = 1,
+        .status = MCI_STATUS_VAL | MCI_STATUS_UC,
+        .mcg_status = MCG_STATUS_MCIP | MCG_STATUS_RIPV,
+        .addr = 0,
+        .misc = 0,
+    };
     CPUState *cenv;
 
-    kvm_inject_x86_mce(first_cpu, 9,
-                       MCI_STATUS_VAL | MCI_STATUS_UC | MCI_STATUS_EN
-                       | MCI_STATUS_MISCV | MCI_STATUS_ADDRV | MCI_STATUS_S
-                       | 0xc0,
-                       MCG_STATUS_MCIP | MCG_STATUS_RIPV, paddr,
-                       (MCM_ADDR_PHYS << 6) | 0xc, 1);
+    kvm_inject_x86_mce_on(first_cpu, &mce_srao_memscrub, 1);
     for (cenv = first_cpu->next_cpu; cenv != NULL; cenv = cenv->next_cpu)
-        kvm_inject_x86_mce(cenv, 1, MCI_STATUS_VAL | MCI_STATUS_UC,
-                           MCG_STATUS_MCIP | MCG_STATUS_RIPV, 0, 0, 1);
+        kvm_inject_x86_mce_on(cenv, &mce_dummy, 1);
 }
 #endif
 
@@ -1941,6 +1954,22 @@ static void kvm_do_inject_x86_mce(void *_data)
 
     kvm_do_set_mce(data->env, data->mce, data->abort_on_error);
 }
+
+static void kvm_inject_x86_mce_on(CPUState *env, struct kvm_x86_mce *mce,
+                                  int abort_on_error)
+{
+    struct kvm_x86_mce_data data = {
+        .env = env,
+        .mce = mce,
+        .abort_on_error = abort_on_error,
+    };
+
+    if (!env->mcg_cap) {
+        perror("MCE support is not enabled!");
+        return;
+    }
+    on_vcpu(env, kvm_do_inject_x86_mce, &data);
+}
 #endif
 
 void kvm_inject_x86_mce(CPUState *cenv, int bank, uint64_t status,
@@ -1955,17 +1984,8 @@ void kvm_inject_x86_mce(CPUState *cenv, int bank, uint64_t status,
         .addr = addr,
         .misc = misc,
     };
-    struct kvm_x86_mce_data data = {
-        .env = cenv,
-        .mce = &mce,
-        .abort_on_error = abort_on_error,
-    };
 
-    if (!cenv->mcg_cap) {
-        fprintf(stderr, "MCE support is not enabled!\n");
-        return;
-    }
-    on_vcpu(cenv, kvm_do_inject_x86_mce, &data);
+    kvm_inject_x86_mce_on(cenv, &mce, abort_on_error);
 #else
     if (abort_on_error) {
         abort();
-- 
1.7.1.1

             reply	other threads:[~2010-10-14  8:45 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-14  8:47 Jin Dongming [this message]
2010-10-14  8:47 ` [Qemu-devel] [PATCH 05/11] kvm, x86: introduce kvm_inject_x86_mce_on Jin Dongming

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=4CB6C387.9030100@np.css.fujitsu.com \
    --to=jin.dongming@np.css.fujitsu.com \
    --cc=avi@redhat.com \
    --cc=dnelson@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=mtosatti@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=seto.hidetoshi@jp.fujitsu.com \
    --cc=ying.huang@intel.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.