-----BEGIN PGP SIGNATURE-----

iQEcBAABAgAGBQJYfM5OAAoJEJykq7OBq3PIwnAH/2bNw1ODu/SxJ6WsFcQWXPhS
 Ie0S/A/493M2dDeXmS++8Fx+dELCBmk+/Lg7Wssq4CI50JL+PRkaHEBALSv5KDBZ
 Fcv/PMQilLVIRHbTnZq7r7gwTvCHH9zJ1OZTJ8+etEiSgLqU4ELBKkZrUHoN8FTI
 92faAxhuuIIAHFvHs/NJYUjiCWLdnsLxiBINJtXA9YR3EhaWXmjZiQJY9gXWrme9
 LF3AWGDk1eVO6KIUD/7OxCTUZkrcZdiA8DT90HWjTY5XUQbvYJjDq+3UE6Ve7OQl
 holXC1aJ3YHWM4/gAKVVvQJ9FsFZfcsL/wMDXmi09VwOlOtjrej99DZBT+Tp6Zg=
 =uGyL
 -----END PGP SIGNATURE-----

Merge remote-tracking branch 'remotes/stefanha/tags/tracing-pull-request' into staging

# gpg: Signature made Mon 16 Jan 2017 13:44:46 GMT
# gpg:                using RSA key 0x9CA4ABB381AB73C8
# gpg: Good signature from "Stefan Hajnoczi <stefanha@redhat.com>"
# gpg:                 aka "Stefan Hajnoczi <stefanha@gmail.com>"
# Primary key fingerprint: 8695 A8BF D3F9 7CDA AC35  775A 9CA4 ABB3 81AB 73C8

* remotes/stefanha/tags/tracing-pull-request:
  trace: Add event "guest_cpu_exit"
  trace: Fix dynamic event state on vCPU hot-unplug
  trace: Lock vCPU list when initializing dynamic tracing state
  trace-events: spelling fix

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell 2017-01-17 16:54:09 +00:00
commit ab4b927604
5 changed files with 46 additions and 2 deletions

View File

@ -354,6 +354,8 @@ static void cpu_common_realizefn(DeviceState *dev, Error **errp)
static void cpu_common_unrealizefn(DeviceState *dev, Error **errp)
{
CPUState *cpu = CPU(dev);
/* NOTE: latest generic point before the cpu is fully unrealized */
trace_fini_vcpu(cpu);
cpu_exec_unrealizefn(cpu);
}

View File

@ -53,7 +53,7 @@ qemu_system_shutdown_request(void) ""
qemu_system_powerdown_request(void) ""
# spice-qemu-char.c
spice_vmc_write(ssize_t out, int len) "spice wrottn %zd of requested %d"
spice_vmc_write(ssize_t out, int len) "spice wrote %zd of requested %d"
spice_vmc_read(int bytes, int len) "spice read %d of requested %d"
spice_vmc_register_interface(void *scd) "spice vmc registered interface %p"
spice_vmc_unregister_interface(void *scd) "spice vmc unregistered interface %p"
@ -141,6 +141,12 @@ memory_region_ram_device_write(int cpu_index, void *mr, uint64_t addr, uint64_t
# Targets: all
vcpu guest_cpu_enter(void)
# Hot-unplug a virtual (guest) CPU
#
# Mode: user, softmmu
# Targets: all
vcpu guest_cpu_exit(void)
# Reset the state of a virtual (guest) CPU
#
# Mode: user, softmmu

View File

@ -79,7 +79,7 @@ void trace_event_set_vcpu_state_dynamic(CPUState *vcpu,
}
}
static bool adding_first_cpu(void)
static bool adding_first_cpu1(void)
{
CPUState *cpu;
size_t count = 0;
@ -92,6 +92,15 @@ static bool adding_first_cpu(void)
return true;
}
static bool adding_first_cpu(void)
{
bool res;
cpu_list_lock();
res = adding_first_cpu1();
cpu_list_unlock();
return res;
}
void trace_init_vcpu(CPUState *vcpu)
{
TraceEventIter iter;

View File

@ -26,6 +26,7 @@
#include "qemu/error-report.h"
#include "qemu/config-file.h"
#include "monitor/monitor.h"
#include "trace.h"
int trace_events_enabled_count;
@ -259,6 +260,24 @@ void trace_init_file(const char *file)
#endif
}
void trace_fini_vcpu(CPUState *vcpu)
{
TraceEventIter iter;
TraceEvent *ev;
trace_guest_cpu_exit(vcpu);
trace_event_iter_init(&iter, NULL);
while ((ev = trace_event_iter_next(&iter)) != NULL) {
if (trace_event_is_vcpu(ev) &&
trace_event_get_state_static(ev) &&
trace_event_get_vcpu_state_dynamic(vcpu, ev)) {
/* must disable to affect the global counter */
trace_event_set_vcpu_state_dynamic(vcpu, ev, false);
}
}
}
bool trace_init_backends(void)
{
#ifdef CONFIG_TRACE_SIMPLE

View File

@ -201,6 +201,14 @@ void trace_init_file(const char *file);
*/
void trace_init_vcpu(CPUState *vcpu);
/**
* trace_fini_vcpu:
* @vcpu: Removed vCPU.
*
* Disable dynamic event state for a hot-unplugged vCPU.
*/
void trace_fini_vcpu(CPUState *vcpu);
/**
* trace_list_events:
*