aboutsummaryrefslogtreecommitdiff
path: root/trace/control-target.c
diff options
context:
space:
mode:
authorAlex Bennée <alex.bennee@linaro.org>2023-05-26 17:53:57 +0100
committerStefan Hajnoczi <stefanha@redhat.com>2023-06-01 11:05:05 -0400
commit89aafcf2a79307b7d658b174e2d649dd63365bd1 (patch)
tree8f39180c2e7c1468e52e55646f646050c184ef0c /trace/control-target.c
parent5485e52a332c3b38e338081a7275b2c7cb4f0813 (diff)
trace: remove code that depends on setting vcpu
Now we no longer have any events that are for vcpus we can start excising the code from the trace control. As the vcpu parameter is encoded as part of QMP we just stub out the has_vcpu/vcpu parameters rather than alter the API. Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-id: 20230526165401.574474-8-alex.bennee@linaro.org Message-Id: <20230524133952.3971948-7-alex.bennee@linaro.org> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'trace/control-target.c')
-rw-r--r--trace/control-target.c108
1 files changed, 9 insertions, 99 deletions
diff --git a/trace/control-target.c b/trace/control-target.c
index a10752924b..97f21e476d 100644
--- a/trace/control-target.c
+++ b/trace/control-target.c
@@ -36,112 +36,22 @@ void trace_event_set_state_dynamic_init(TraceEvent *ev, bool state)
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) && 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. 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) {
- trace_events_enabled_count++;
- *ev->dstate = 1;
- } else {
- trace_events_enabled_count--;
- *ev->dstate = 0;
- }
- }
- }
-}
-static void trace_event_synchronize_vcpu_state_dynamic(
- CPUState *vcpu, run_on_cpu_data ignored)
-{
- bitmap_copy(vcpu->trace_dstate, vcpu->trace_dstate_delayed,
- CPU_TRACE_DSTATE_MAX_EVENTS);
- tcg_flush_jmp_cache(vcpu);
-}
-
-void trace_event_set_vcpu_state_dynamic(CPUState *vcpu,
- TraceEvent *ev, bool state)
-{
- uint32_t vcpu_id;
- bool state_pre;
- assert(trace_event_get_state_static(ev));
- assert(trace_event_is_vcpu(ev));
- vcpu_id = trace_event_get_vcpu_id(ev);
- state_pre = test_bit(vcpu_id, vcpu->trace_dstate);
+ /*
+ * There is no longer a "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) {
trace_events_enabled_count++;
- set_bit(vcpu_id, vcpu->trace_dstate_delayed);
- (*ev->dstate)++;
+ *ev->dstate = 1;
} else {
trace_events_enabled_count--;
- clear_bit(vcpu_id, vcpu->trace_dstate_delayed);
- (*ev->dstate)--;
- }
- if (vcpu->created) {
- /*
- * Delay changes until next TB; we want all TBs to be built from a
- * single set of dstate values to ensure consistency of generated
- * tracing code.
- */
- async_run_on_cpu(vcpu, trace_event_synchronize_vcpu_state_dynamic,
- RUN_ON_CPU_NULL);
- } else {
- trace_event_synchronize_vcpu_state_dynamic(vcpu, RUN_ON_CPU_NULL);
- }
- }
-}
-
-static bool adding_first_cpu1(void)
-{
- CPUState *cpu;
- size_t count = 0;
- CPU_FOREACH(cpu) {
- count++;
- if (count > 1) {
- return false;
- }
- }
- return true;
-}
-
-static bool adding_first_cpu(void)
-{
- QEMU_LOCK_GUARD(&qemu_cpu_list_lock);
-
- return adding_first_cpu1();
-}
-
-void trace_init_vcpu(CPUState *vcpu)
-{
- TraceEventIter iter;
- TraceEvent *ev;
- trace_event_iter_init_all(&iter);
- while ((ev = trace_event_iter_next(&iter)) != NULL) {
- if (trace_event_is_vcpu(ev) &&
- trace_event_get_state_static(ev) &&
- trace_event_get_state_dynamic(ev)) {
- if (adding_first_cpu()) {
- /* check preconditions */
- assert(*ev->dstate == 1);
- /* disable early-init state ... */
- *ev->dstate = 0;
- trace_events_enabled_count--;
- /* ... and properly re-enable */
- trace_event_set_vcpu_state_dynamic(vcpu, ev, true);
- } else {
- trace_event_set_vcpu_state_dynamic(vcpu, ev, true);
- }
+ *ev->dstate = 0;
}
}
}