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>
This commit is contained in:
Alex Bennée 2023-05-26 17:53:57 +01:00 committed by Stefan Hajnoczi
parent 5485e52a33
commit 89aafcf2a7
9 changed files with 20 additions and 285 deletions

View file

@ -13,20 +13,7 @@
#include "control-vcpu.h"
static CPUState *get_cpu(bool has_vcpu, int vcpu, Error **errp)
{
if (has_vcpu) {
CPUState *cpu = qemu_get_cpu(vcpu);
if (cpu == NULL) {
error_setg(errp, "invalid vCPU index %u", vcpu);
}
return cpu;
} else {
return NULL;
}
}
static bool check_events(bool has_vcpu, bool ignore_unavailable, bool is_pattern,
static bool check_events(bool ignore_unavailable, bool is_pattern,
const char *name, Error **errp)
{
if (!is_pattern) {
@ -38,12 +25,6 @@ static bool check_events(bool has_vcpu, bool ignore_unavailable, bool is_pattern
return false;
}
/* error for non-vcpu event */
if (has_vcpu && !trace_event_is_vcpu(ev)) {
error_setg(errp, "event \"%s\" is not vCPU-specific", name);
return false;
}
/* error for unavailable event */
if (!ignore_unavailable && !trace_event_get_state_static(ev)) {
error_setg(errp, "event \"%s\" is disabled", name);
@ -70,22 +51,13 @@ TraceEventInfoList *qmp_trace_event_get_state(const char *name,
bool has_vcpu, int64_t vcpu,
Error **errp)
{
Error *err = NULL;
TraceEventInfoList *events = NULL;
TraceEventIter iter;
TraceEvent *ev;
bool is_pattern = trace_event_is_pattern(name);
CPUState *cpu;
/* Check provided vcpu */
cpu = get_cpu(has_vcpu, vcpu, &err);
if (err) {
error_propagate(errp, err);
return NULL;
}
/* Check events */
if (!check_events(has_vcpu, true, is_pattern, name, errp)) {
if (!check_events(true, is_pattern, name, errp)) {
return NULL;
}
@ -93,33 +65,17 @@ TraceEventInfoList *qmp_trace_event_get_state(const char *name,
trace_event_iter_init_pattern(&iter, name);
while ((ev = trace_event_iter_next(&iter)) != NULL) {
TraceEventInfo *value;
bool is_vcpu = trace_event_is_vcpu(ev);
if (has_vcpu && !is_vcpu) {
continue;
}
value = g_new(TraceEventInfo, 1);
value->vcpu = is_vcpu;
value->name = g_strdup(trace_event_get_name(ev));
if (!trace_event_get_state_static(ev)) {
value->state = TRACE_EVENT_STATE_UNAVAILABLE;
} else {
if (has_vcpu) {
if (is_vcpu) {
if (trace_event_get_vcpu_state_dynamic(cpu, ev)) {
value->state = TRACE_EVENT_STATE_ENABLED;
} else {
value->state = TRACE_EVENT_STATE_DISABLED;
}
}
/* else: already skipped above */
if (trace_event_get_state_dynamic(ev)) {
value->state = TRACE_EVENT_STATE_ENABLED;
} else {
if (trace_event_get_state_dynamic(ev)) {
value->state = TRACE_EVENT_STATE_ENABLED;
} else {
value->state = TRACE_EVENT_STATE_DISABLED;
}
value->state = TRACE_EVENT_STATE_DISABLED;
}
}
QAPI_LIST_PREPEND(events, value);
@ -133,21 +89,12 @@ void qmp_trace_event_set_state(const char *name, bool enable,
bool has_vcpu, int64_t vcpu,
Error **errp)
{
Error *err = NULL;
TraceEventIter iter;
TraceEvent *ev;
bool is_pattern = trace_event_is_pattern(name);
CPUState *cpu;
/* Check provided vcpu */
cpu = get_cpu(has_vcpu, vcpu, &err);
if (err) {
error_propagate(errp, err);
return;
}
/* Check events */
if (!check_events(has_vcpu, has_ignore_unavailable && ignore_unavailable,
if (!check_events(has_ignore_unavailable && ignore_unavailable,
is_pattern, name, errp)) {
return;
}
@ -155,14 +102,9 @@ void qmp_trace_event_set_state(const char *name, bool enable,
/* Apply changes (all errors checked above) */
trace_event_iter_init_pattern(&iter, name);
while ((ev = trace_event_iter_next(&iter)) != NULL) {
if (!trace_event_get_state_static(ev) ||
(has_vcpu && !trace_event_is_vcpu(ev))) {
if (!trace_event_get_state_static(ev)) {
continue;
}
if (has_vcpu) {
trace_event_set_vcpu_state_dynamic(cpu, ev, enable);
} else {
trace_event_set_state_dynamic(ev, enable);
}
trace_event_set_state_dynamic(ev, enable);
}
}