[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 1/2] trace: Fix early setting of events with the "vcp
From: |
Stefan Hajnoczi |
Subject: |
[Qemu-devel] [PULL 1/2] trace: Fix early setting of events with the "vcpu" property |
Date: |
Tue, 11 Jul 2017 09:35:51 +0100 |
From: Lluís Vilanova <address@hidden>
Events with the "vcpu" property need to be set globally (i.e., as if they didn't
have that property) while we have not yet created any vCPU.
Signed-off-by: Lluís Vilanova <address@hidden>
Message-id: address@hidden
Signed-off-by: Stefan Hajnoczi <address@hidden>
---
trace/control-target.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/trace/control-target.c b/trace/control-target.c
index 6266e63..99a8ed5 100644
--- a/trace/control-target.c
+++ b/trace/control-target.c
@@ -1,7 +1,7 @@
/*
* Interface for configuring and controlling the state of tracing events.
*
- * Copyright (C) 2014-2016 Lluís Vilanova <address@hidden>
+ * Copyright (C) 2014-2017 Lluís Vilanova <address@hidden>
*
* This work is licensed under the terms of the GNU GPL, version 2 or later.
* See the COPYING file in the top-level directory.
@@ -38,12 +38,16 @@ void trace_event_set_state_dynamic(TraceEvent *ev, bool
state)
{
CPUState *vcpu;
assert(trace_event_get_state_static(ev));
- if (trace_event_is_vcpu(ev)) {
+ if (trace_event_is_vcpu(ev) && likely(first_cpu != NULL)) {
CPU_FOREACH(vcpu) {
trace_event_set_vcpu_state_dynamic(vcpu, ev, state);
}
} else {
- /* Without the "vcpu" property, dstate can only be 1 or 0 */
+ /*
+ * Without the "vcpu" property, dstate can only be 1 or 0. With it, we
+ * haven't instantiated any vCPU yet, so we will set a global state
+ * instead, and trace_init_vcpu will reconcile it afterwards.
+ */
bool state_pre = *ev->dstate;
if (state_pre != state) {
if (state) {
--
2.9.4