qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Andreas Färber" <afaerber@suse.de>
To: qemu-devel@nongnu.org
Cc: "Andreas Färber" <afaerber@suse.de>
Subject: [Qemu-devel] [PATCH qom-cpu 37/59] target-i386: Abstract cpu_x86_inject_mce() with qemu_for_each_cpu()
Date: Sun,  9 Jun 2013 21:13:04 +0200	[thread overview]
Message-ID: <1370805206-26574-38-git-send-email-afaerber@suse.de> (raw)
In-Reply-To: <1370805206-26574-1-git-send-email-afaerber@suse.de>

Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 target-i386/helper.c | 30 ++++++++++++++++++++++--------
 1 file changed, 22 insertions(+), 8 deletions(-)

diff --git a/target-i386/helper.c b/target-i386/helper.c
index 5e5abe3..d928e82 100644
--- a/target-i386/helper.c
+++ b/target-i386/helper.c
@@ -1184,6 +1184,23 @@ static void do_inject_x86_mce(void *data)
     }
 }
 
+typedef struct InjectMCEBroadcastData {
+    X86CPU *self_cpu;
+    MCEInjectionParams *params;
+} InjectMCEBroadcastData;
+
+static void x86_cpu_inject_mce_broadcast_one(CPUState *cs, void *data)
+{
+    InjectMCEBroadcastData *s = data;
+    X86CPU *cpu = X86_CPU(cs);
+
+    if (cpu == s->self_cpu) {
+        return;
+    }
+    s->params->cpu = cpu;
+    run_on_cpu(cs, do_inject_x86_mce, &s->params);
+}
+
 void cpu_x86_inject_mce(Monitor *mon, X86CPU *cpu, int bank,
                         uint64_t status, uint64_t mcg_status, uint64_t addr,
                         uint64_t misc, int flags)
@@ -1200,7 +1217,6 @@ void cpu_x86_inject_mce(Monitor *mon, X86CPU *cpu, int bank,
         .flags = flags,
     };
     unsigned bank_num = cenv->mcg_cap & 0xff;
-    CPUX86State *env;
 
     if (!cenv->mcg_cap) {
         monitor_printf(mon, "MCE injection not supported\n");
@@ -1222,18 +1238,16 @@ void cpu_x86_inject_mce(Monitor *mon, X86CPU *cpu, int bank,
 
     run_on_cpu(CPU(cpu), do_inject_x86_mce, &params);
     if (flags & MCE_INJECT_BROADCAST) {
+        InjectMCEBroadcastData s = {
+            .self_cpu = cpu,
+            .params = &params,
+        };
         params.bank = 1;
         params.status = MCI_STATUS_VAL | MCI_STATUS_UC;
         params.mcg_status = MCG_STATUS_MCIP | MCG_STATUS_RIPV;
         params.addr = 0;
         params.misc = 0;
-        for (env = first_cpu; env != NULL; env = env->next_cpu) {
-            if (cenv == env) {
-                continue;
-            }
-            params.cpu = x86_env_get_cpu(env);
-            run_on_cpu(CPU(cpu), do_inject_x86_mce, &params);
-        }
+        qemu_for_each_cpu(x86_cpu_inject_mce_broadcast_one, &s);
     }
 }
 
-- 
1.8.1.4

  parent reply	other threads:[~2013-06-09 19:14 UTC|newest]

Thread overview: 95+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-09 19:12 [Qemu-devel] [PATCH qom-cpu 00/59] QOM CPUState, part 10: CPU loops Andreas Färber
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 01/59] kvm: Change kvm_cpu_synchronize_state() argument to CPUState Andreas Färber
2013-06-10  1:58   ` li guang
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 02/59] kvm: Change cpu_synchronize_state() " Andreas Färber
2013-06-10  2:00   ` li guang
2013-06-10 23:23     ` Andreas Färber
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 03/59] cpus: Simplify cpu_synchronize_all_post_reset() Andreas Färber
2013-06-10  2:04   ` li guang
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 04/59] cpus: Simplify cpu_synchronize_all_post_init() Andreas Färber
2013-06-10  2:04   ` li guang
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 05/59] cpus: Simplify pause_all_vcpus() Andreas Färber
2013-06-10  2:14   ` li guang
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 06/59] cpus: Simplify resume_all_vcpus() Andreas Färber
2013-06-10  2:14   ` li guang
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 07/59] cpus: Simplify set_numa_modes() Andreas Färber
2013-06-10  2:15   ` li guang
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 08/59] cpus: Simplify qmp_inject_nmi() Andreas Färber
2013-06-10  2:19   ` li guang
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 09/59] cpus: Simplify hw_error() Andreas Färber
2013-06-10  2:19   ` li guang
2013-06-10 21:48   ` Andreas Färber
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 10/59] cpus: Simplify qemu_tcg_wait_io_event() and qemu_tcg_cpu_thread_fn() Andreas Färber
2013-06-10  2:20   ` li guang
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 11/59] monitor: Simplify do_inject_mce() Andreas Färber
2013-06-10  2:47   ` li guang
2013-06-10 17:14   ` Luiz Capitulino
2013-06-10 22:15     ` Andreas Färber
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 12/59] gdbstub: Simplify find_cpu() Andreas Färber
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 13/59] cpu: Change cpu_exit() argument to CPUState Andreas Färber
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 14/59] cpus: Change cpu_thread_is_idle() " Andreas Färber
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 15/59] cpus: Change qemu_kvm_wait_io_event() " Andreas Färber
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 16/59] kvm: Change kvm_set_signal_mask() " Andreas Färber
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 17/59] cpus: Change qemu_kvm_init_cpu_signals() " Andreas Färber
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 18/59] cpu: Turn cpu_dump_{state, statistics}() into CPUState hooks Andreas Färber
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 19/59] kvm: Change kvm_handle_internal_error() argument to CPUState Andreas Färber
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 20/59] kvm: Change kvm_cpu_exec() " Andreas Färber
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 21/59] gdbstub: Set gdb_set_stop_cpu() " Andreas Färber
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 22/59] cpus: Change cpu_handle_guest_debug() " Andreas Färber
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 23/59] cpus: Change qemu_kvm_start_vcpu() " Andreas Färber
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 24/59] cpus: Change qemu_dummy_start_vcpu() " Andreas Färber
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 25/59] cpu: Change qemu_init_vcpu() " Andreas Färber
2013-06-11  2:39   ` li guang
2013-06-16  8:27     ` Andreas Färber
2013-06-16 16:35       ` Andreas Färber
2013-06-18  2:23         ` li guang
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 26/59] hwaddr: Make hwaddr type usable beyond softmmu Andreas Färber
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 27/59] cpu: Turn cpu_unassigned_access() into a CPUState hook Andreas Färber
2013-06-10 22:05   ` Andreas Färber
2013-06-11 11:51     ` Stefano Stabellini
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 28/59] cpu: Replace cpu_single_env with CPUState cpu_single_cpu Andreas Färber
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 29/59] cputlb: Simplify cpu_tlb_reset_dirty_all() Andreas Färber
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 30/59] exec: Simplify tcg_commit() Andreas Färber
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 31/59] monitor: Simplify do_info_numa() Andreas Färber
2013-06-10  7:20   ` Markus Armbruster
2013-06-10 21:23     ` Andreas Färber
2013-06-11  7:41       ` Markus Armbruster
2013-06-16 16:41         ` Andreas Färber
2013-06-16 20:31           ` Michael S. Tsirkin
2013-06-09 19:12 ` [Qemu-devel] [PATCH qom-cpu 32/59] kvm: Simplify kvm_{insert, remove, remove_all}_breakpoint[s]() Andreas Färber
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 33/59] kvm: Simplify kvm_remove_all_breakpoints() further Andreas Färber
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 34/59] kvm: Change kvm_remove_all_breakpoints() argument to CPUState Andreas Färber
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 35/59] linux-user: Simplify start_exclusive() Andreas Färber
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 36/59] linux-user/elfload: Abstract fill_note_info() with qemu_for_each_cpu() Andreas Färber
2013-06-09 19:13 ` Andreas Färber [this message]
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 38/59] translate-all: Abstract tb_flush() " Andreas Färber
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 39/59] translate-all: Abstract tb_phys_invalidate() " Andreas Färber
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 40/59] target-ppc: Abstract helper_msgsnd() " Andreas Färber
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 41/59] target-mips: Abstract helper_dvpe() " Andreas Färber
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 42/59] target-mips: Abstract helper_evpe() " Andreas Färber
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 43/59] kvmclock: Abstract kvmclock_vm_state_change() " Andreas Färber
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 44/59] kvmvapic: Abstract vapic_enable_tpr_reporting() " Andreas Färber
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 45/59] pc: Abstract pic_irq_request() " Andreas Färber
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 46/59] ppc: Abstract ppce500_set_mpic_proxy() " Andreas Färber
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 47/59] spapr: Abstract spapr_fix_cpu_dt() " Andreas Färber
2013-06-11  2:43   ` David Gibson
2013-06-11 10:12     ` Andreas Färber
2013-06-12 14:28       ` Alexey Kardashevskiy
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 48/59] cpus: Abstract all_cpu_threads_idle() " Andreas Färber
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 49/59] cpus: Abstract all_vcpus_paused() " Andreas Färber
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 50/59] cpus: Abstract qmp_query_cpus() " Andreas Färber
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 51/59] exec: Abstract qemu_get_cpu() " Andreas Färber
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 52/59] gdbstub: Abstract gdb_breakpoint_{insert, remove}() " Andreas Färber
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 53/59] gdbstub: Abstract gdb_breakpoint_remove_all() " Andreas Färber
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 54/59] spapr: Abstract spapr_create_fdt_skel() " Andreas Färber
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 55/59] spapr_rtas: Abstract rtas_query_cpu_stopped_state() with qemu_get_cpu() Andreas Färber
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 56/59] spapr_rtas: Abstract rtas_start_cpu() " Andreas Färber
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 57/59] cpu: Make first_cpu and next_cpu CPUState (WIP) Andreas Färber
2013-06-09 20:08   ` Andreas Färber
2013-06-09 21:13   ` Andreas Färber
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 58/59] linux-user: Change thread_env to CPUState Andreas Färber
2013-06-09 19:13 ` [Qemu-devel] [PATCH qom-cpu 59/59] bsd-user: " Andreas Färber
2013-06-10 14:17 ` [Qemu-devel] [PATCH qom-cpu 00/59] QOM CPUState, part 10: CPU loops Stefano Stabellini
2013-06-10 14:47   ` Andreas Färber
2013-06-10 15:36     ` Stefano Stabellini
2013-06-13  0:12 ` Andreas Färber

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=1370805206-26574-38-git-send-email-afaerber@suse.de \
    --to=afaerber@suse.de \
    --cc=qemu-devel@nongnu.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).