1 | The following changes since commit f9edf32ea2e18a56de5d92f57e9d10565c822367: | 1 | The following changes since commit 9435a8b3dd35f1f926f1b9127e8a906217a5518a: |
---|---|---|---|
2 | 2 | ||
3 | Merge tag 'pull-request-2025-02-11' of https://gitlab.com/thuth/qemu into staging (2025-02-11 13:27:32 -0500) | 3 | Merge remote-tracking branch 'remotes/kraxel/tags/sirius/ipxe-20200908-pull-request' into staging (2020-09-08 21:21:13 +0100) |
4 | 4 | ||
5 | are available in the Git repository at: | 5 | are available in the Git repository at: |
6 | 6 | ||
7 | https://gitlab.com/stefanha/qemu.git tags/tracing-pull-request | 7 | https://github.com/stefanha/qemu.git tags/tracing-pull-request |
8 | 8 | ||
9 | for you to fetch changes up to 9976be3911a2d0503f026ae37c17077273bf30ee: | 9 | for you to fetch changes up to b15e402fc8861adb65d168d380f39b310599a533: |
10 | 10 | ||
11 | scripts: improve error from qemu-trace-stap on missing 'stap' (2025-02-12 10:03:18 -0500) | 11 | trace-events: Fix attribution of trace points to source (2020-09-09 17:17:58 +0100) |
12 | 12 | ||
13 | ---------------------------------------------------------------- | 13 | ---------------------------------------------------------------- |
14 | Pull request | 14 | Pull request |
15 | 15 | ||
16 | v2: | ||
17 | * Rebased after meson and resolved conflict in "softmmu: Add missing trace-events file" | ||
18 | * Dropped "meson: Don't make object files for dtrace on macOS" (already merged via Paolo's tree) | ||
19 | |||
16 | ---------------------------------------------------------------- | 20 | ---------------------------------------------------------------- |
17 | 21 | ||
18 | Daniel P. Berrangé (1): | 22 | Markus Armbruster (4): |
19 | scripts: improve error from qemu-trace-stap on missing 'stap' | 23 | scripts/cleanup-trace-events: Fix for vcpu property |
24 | scripts/cleanup-trace-events: Emit files in alphabetical order | ||
25 | trace-events: Delete unused trace points | ||
26 | trace-events: Fix attribution of trace points to source | ||
20 | 27 | ||
21 | scripts/qemu-trace-stap | 6 ++++-- | 28 | Philippe Mathieu-Daudé (1): |
22 | 1 file changed, 4 insertions(+), 2 deletions(-) | 29 | softmmu: Add missing trace-events file |
30 | |||
31 | Roman Bolshakov (3): | ||
32 | scripts/tracetool: Fix dtrace generation for macOS | ||
33 | scripts/tracetool: Use void pointer for vcpu | ||
34 | net/colo: Match is-enabled probe to tracepoint | ||
35 | |||
36 | softmmu/trace.h | 1 + | ||
37 | net/colo-compare.c | 42 +++++++++++++++++---------------- | ||
38 | net/filter-rewriter.c | 10 ++++++-- | ||
39 | softmmu/balloon.c | 2 +- | ||
40 | softmmu/ioport.c | 2 +- | ||
41 | softmmu/memory.c | 2 +- | ||
42 | softmmu/vl.c | 2 +- | ||
43 | audio/trace-events | 3 --- | ||
44 | block/trace-events | 8 ++----- | ||
45 | hw/block/trace-events | 2 +- | ||
46 | hw/char/trace-events | 2 +- | ||
47 | hw/display/trace-events | 4 +++- | ||
48 | hw/hyperv/trace-events | 2 +- | ||
49 | hw/mips/trace-events | 2 +- | ||
50 | hw/misc/trace-events | 9 +++---- | ||
51 | hw/ppc/trace-events | 10 ++------ | ||
52 | hw/riscv/trace-events | 2 +- | ||
53 | hw/rtc/trace-events | 2 +- | ||
54 | hw/timer/trace-events | 1 - | ||
55 | hw/tpm/trace-events | 2 +- | ||
56 | hw/usb/trace-events | 4 +++- | ||
57 | hw/vfio/trace-events | 10 ++++---- | ||
58 | hw/virtio/trace-events | 2 +- | ||
59 | meson.build | 1 + | ||
60 | migration/trace-events | 37 +++++++++++++++-------------- | ||
61 | net/trace-events | 2 -- | ||
62 | scripts/cleanup-trace-events.pl | 23 +++++++++++------- | ||
63 | scripts/tracetool/format/d.py | 15 +++++++++++- | ||
64 | scripts/tracetool/vcpu.py | 2 +- | ||
65 | softmmu/trace-events | 28 ++++++++++++++++++++++ | ||
66 | target/ppc/trace-events | 1 - | ||
67 | target/riscv/trace-events | 2 +- | ||
68 | trace-events | 32 +++---------------------- | ||
69 | ui/trace-events | 6 ++--- | ||
70 | util/trace-events | 4 +++- | ||
71 | 35 files changed, 151 insertions(+), 128 deletions(-) | ||
72 | create mode 100644 softmmu/trace.h | ||
73 | create mode 100644 softmmu/trace-events | ||
23 | 74 | ||
24 | -- | 75 | -- |
25 | 2.48.1 | 76 | 2.26.2 |
26 | 77 | ||
27 | diff view generated by jsdifflib |
New patch | |||
---|---|---|---|
1 | From: Philippe Mathieu-Daudé <philmd@redhat.com> | ||
1 | 2 | ||
3 | Commit c7f419f584 moved softmmu-only files out of the root | ||
4 | directory, but forgot to move the trace events, which should | ||
5 | no longer be generated to "trace-root.h". Fix that by adding | ||
6 | softmmu/trace-events. | ||
7 | |||
8 | Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> | ||
9 | Tested-by: Claudio Fontana <cfontana@suse.de> | ||
10 | Reviewed-by: Claudio Fontana <cfontana@suse.de> | ||
11 | Message-id: 20200805130221.24487-1-philmd@redhat.com | ||
12 | |||
13 | [Rebased onto meson. | ||
14 | --Stefan] | ||
15 | |||
16 | Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> | ||
17 | --- | ||
18 | softmmu/trace.h | 1 + | ||
19 | softmmu/balloon.c | 2 +- | ||
20 | softmmu/ioport.c | 2 +- | ||
21 | softmmu/memory.c | 2 +- | ||
22 | softmmu/vl.c | 2 +- | ||
23 | meson.build | 1 + | ||
24 | softmmu/trace-events | 28 ++++++++++++++++++++++++++++ | ||
25 | trace-events | 27 --------------------------- | ||
26 | 8 files changed, 34 insertions(+), 31 deletions(-) | ||
27 | create mode 100644 softmmu/trace.h | ||
28 | create mode 100644 softmmu/trace-events | ||
29 | |||
30 | diff --git a/softmmu/trace.h b/softmmu/trace.h | ||
31 | new file mode 100644 | ||
32 | index XXXXXXX..XXXXXXX | ||
33 | --- /dev/null | ||
34 | +++ b/softmmu/trace.h | ||
35 | @@ -0,0 +1 @@ | ||
36 | +#include "trace/trace-softmmu.h" | ||
37 | diff --git a/softmmu/balloon.c b/softmmu/balloon.c | ||
38 | index XXXXXXX..XXXXXXX 100644 | ||
39 | --- a/softmmu/balloon.c | ||
40 | +++ b/softmmu/balloon.c | ||
41 | @@ -XXX,XX +XXX,XX @@ | ||
42 | #include "qemu/atomic.h" | ||
43 | #include "sysemu/kvm.h" | ||
44 | #include "sysemu/balloon.h" | ||
45 | -#include "trace/trace-root.h" | ||
46 | #include "qapi/error.h" | ||
47 | #include "qapi/qapi-commands-misc.h" | ||
48 | #include "qapi/qmp/qerror.h" | ||
49 | +#include "trace.h" | ||
50 | |||
51 | static QEMUBalloonEvent *balloon_event_fn; | ||
52 | static QEMUBalloonStatus *balloon_stat_fn; | ||
53 | diff --git a/softmmu/ioport.c b/softmmu/ioport.c | ||
54 | index XXXXXXX..XXXXXXX 100644 | ||
55 | --- a/softmmu/ioport.c | ||
56 | +++ b/softmmu/ioport.c | ||
57 | @@ -XXX,XX +XXX,XX @@ | ||
58 | #include "qemu/osdep.h" | ||
59 | #include "cpu.h" | ||
60 | #include "exec/ioport.h" | ||
61 | -#include "trace/trace-root.h" | ||
62 | #include "exec/memory.h" | ||
63 | #include "exec/address-spaces.h" | ||
64 | +#include "trace.h" | ||
65 | |||
66 | typedef struct MemoryRegionPortioList { | ||
67 | MemoryRegion mr; | ||
68 | diff --git a/softmmu/memory.c b/softmmu/memory.c | ||
69 | index XXXXXXX..XXXXXXX 100644 | ||
70 | --- a/softmmu/memory.c | ||
71 | +++ b/softmmu/memory.c | ||
72 | @@ -XXX,XX +XXX,XX @@ | ||
73 | #include "qemu/main-loop.h" | ||
74 | #include "qemu/qemu-print.h" | ||
75 | #include "qom/object.h" | ||
76 | -#include "trace/trace-root.h" | ||
77 | +#include "trace.h" | ||
78 | |||
79 | #include "exec/memory-internal.h" | ||
80 | #include "exec/ram_addr.h" | ||
81 | diff --git a/softmmu/vl.c b/softmmu/vl.c | ||
82 | index XXXXXXX..XXXXXXX 100644 | ||
83 | --- a/softmmu/vl.c | ||
84 | +++ b/softmmu/vl.c | ||
85 | @@ -XXX,XX +XXX,XX @@ | ||
86 | |||
87 | #include "disas/disas.h" | ||
88 | |||
89 | -#include "trace/trace-root.h" | ||
90 | +#include "trace.h" | ||
91 | #include "trace/control.h" | ||
92 | #include "qemu/plugin.h" | ||
93 | #include "qemu/queue.h" | ||
94 | diff --git a/meson.build b/meson.build | ||
95 | index XXXXXXX..XXXXXXX 100644 | ||
96 | --- a/meson.build | ||
97 | +++ b/meson.build | ||
98 | @@ -XXX,XX +XXX,XX @@ if have_system | ||
99 | 'hw/riscv', | ||
100 | 'migration', | ||
101 | 'net', | ||
102 | + 'softmmu', | ||
103 | 'ui', | ||
104 | ] | ||
105 | endif | ||
106 | diff --git a/softmmu/trace-events b/softmmu/trace-events | ||
107 | new file mode 100644 | ||
108 | index XXXXXXX..XXXXXXX | ||
109 | --- /dev/null | ||
110 | +++ b/softmmu/trace-events | ||
111 | @@ -XXX,XX +XXX,XX @@ | ||
112 | +# See docs/devel/tracing.txt for syntax documentation. | ||
113 | + | ||
114 | +# balloon.c | ||
115 | +# Since requests are raised via monitor, not many tracepoints are needed. | ||
116 | +balloon_event(void *opaque, unsigned long addr) "opaque %p addr %lu" | ||
117 | + | ||
118 | +# ioport.c | ||
119 | +cpu_in(unsigned int addr, char size, unsigned int val) "addr 0x%x(%c) value %u" | ||
120 | +cpu_out(unsigned int addr, char size, unsigned int val) "addr 0x%x(%c) value %u" | ||
121 | + | ||
122 | +# memory.c | ||
123 | +memory_region_ops_read(int cpu_index, void *mr, uint64_t addr, uint64_t value, unsigned size) "cpu %d mr %p addr 0x%"PRIx64" value 0x%"PRIx64" size %u" | ||
124 | +memory_region_ops_write(int cpu_index, void *mr, uint64_t addr, uint64_t value, unsigned size) "cpu %d mr %p addr 0x%"PRIx64" value 0x%"PRIx64" size %u" | ||
125 | +memory_region_subpage_read(int cpu_index, void *mr, uint64_t offset, uint64_t value, unsigned size) "cpu %d mr %p offset 0x%"PRIx64" value 0x%"PRIx64" size %u" | ||
126 | +memory_region_subpage_write(int cpu_index, void *mr, uint64_t offset, uint64_t value, unsigned size) "cpu %d mr %p offset 0x%"PRIx64" value 0x%"PRIx64" size %u" | ||
127 | +memory_region_ram_device_read(int cpu_index, void *mr, uint64_t addr, uint64_t value, unsigned size) "cpu %d mr %p addr 0x%"PRIx64" value 0x%"PRIx64" size %u" | ||
128 | +memory_region_ram_device_write(int cpu_index, void *mr, uint64_t addr, uint64_t value, unsigned size) "cpu %d mr %p addr 0x%"PRIx64" value 0x%"PRIx64" size %u" | ||
129 | +flatview_new(void *view, void *root) "%p (root %p)" | ||
130 | +flatview_destroy(void *view, void *root) "%p (root %p)" | ||
131 | +flatview_destroy_rcu(void *view, void *root) "%p (root %p)" | ||
132 | + | ||
133 | +# vl.c | ||
134 | +vm_state_notify(int running, int reason, const char *reason_str) "running %d reason %d (%s)" | ||
135 | +load_file(const char *name, const char *path) "name %s location %s" | ||
136 | +runstate_set(int current_state, const char *current_state_str, int new_state, const char *new_state_str) "current_run_state %d (%s) new_state %d (%s)" | ||
137 | +system_wakeup_request(int reason) "reason=%d" | ||
138 | +qemu_system_shutdown_request(int reason) "reason=%d" | ||
139 | +qemu_system_powerdown_request(void) "" | ||
140 | diff --git a/trace-events b/trace-events | ||
141 | index XXXXXXX..XXXXXXX 100644 | ||
142 | --- a/trace-events | ||
143 | +++ b/trace-events | ||
144 | @@ -XXX,XX +XXX,XX @@ | ||
145 | # | ||
146 | # The <format-string> should be a sprintf()-compatible format string. | ||
147 | |||
148 | -# ioport.c | ||
149 | -cpu_in(unsigned int addr, char size, unsigned int val) "addr 0x%x(%c) value %u" | ||
150 | -cpu_out(unsigned int addr, char size, unsigned int val) "addr 0x%x(%c) value %u" | ||
151 | - | ||
152 | -# balloon.c | ||
153 | -# Since requests are raised via monitor, not many tracepoints are needed. | ||
154 | -balloon_event(void *opaque, unsigned long addr) "opaque %p addr %lu" | ||
155 | - | ||
156 | -# vl.c | ||
157 | -vm_state_notify(int running, int reason, const char *reason_str) "running %d reason %d (%s)" | ||
158 | -load_file(const char *name, const char *path) "name %s location %s" | ||
159 | -runstate_set(int current_state, const char *current_state_str, int new_state, const char *new_state_str) "current_run_state %d (%s) new_state %d (%s)" | ||
160 | -system_wakeup_request(int reason) "reason=%d" | ||
161 | -qemu_system_shutdown_request(int reason) "reason=%d" | ||
162 | -qemu_system_powerdown_request(void) "" | ||
163 | - | ||
164 | # dma-helpers.c | ||
165 | dma_blk_io(void *dbs, void *bs, int64_t offset, bool to_dev) "dbs=%p bs=%p offset=%" PRId64 " to_dev=%d" | ||
166 | dma_aio_cancel(void *dbs) "dbs=%p" | ||
167 | @@ -XXX,XX +XXX,XX @@ ram_block_discard_range(const char *rbname, void *hva, size_t length, bool need_ | ||
168 | memory_notdirty_write_access(uint64_t vaddr, uint64_t ram_addr, unsigned size) "0x%" PRIx64 " ram_addr 0x%" PRIx64 " size %u" | ||
169 | memory_notdirty_set_dirty(uint64_t vaddr) "0x%" PRIx64 | ||
170 | |||
171 | -# memory.c | ||
172 | -memory_region_ops_read(int cpu_index, void *mr, uint64_t addr, uint64_t value, unsigned size) "cpu %d mr %p addr 0x%"PRIx64" value 0x%"PRIx64" size %u" | ||
173 | -memory_region_ops_write(int cpu_index, void *mr, uint64_t addr, uint64_t value, unsigned size) "cpu %d mr %p addr 0x%"PRIx64" value 0x%"PRIx64" size %u" | ||
174 | -memory_region_subpage_read(int cpu_index, void *mr, uint64_t offset, uint64_t value, unsigned size) "cpu %d mr %p offset 0x%"PRIx64" value 0x%"PRIx64" size %u" | ||
175 | -memory_region_subpage_write(int cpu_index, void *mr, uint64_t offset, uint64_t value, unsigned size) "cpu %d mr %p offset 0x%"PRIx64" value 0x%"PRIx64" size %u" | ||
176 | -memory_region_ram_device_read(int cpu_index, void *mr, uint64_t addr, uint64_t value, unsigned size) "cpu %d mr %p addr 0x%"PRIx64" value 0x%"PRIx64" size %u" | ||
177 | -memory_region_ram_device_write(int cpu_index, void *mr, uint64_t addr, uint64_t value, unsigned size) "cpu %d mr %p addr 0x%"PRIx64" value 0x%"PRIx64" size %u" | ||
178 | -flatview_new(void *view, void *root) "%p (root %p)" | ||
179 | -flatview_destroy(void *view, void *root) "%p (root %p)" | ||
180 | -flatview_destroy_rcu(void *view, void *root) "%p (root %p)" | ||
181 | - | ||
182 | # gdbstub.c | ||
183 | gdbstub_op_start(const char *device) "Starting gdbstub using device %s" | ||
184 | gdbstub_op_exiting(uint8_t code) "notifying exit with code=0x%02x" | ||
185 | -- | ||
186 | 2.26.2 | ||
187 | diff view generated by jsdifflib |
New patch | |||
---|---|---|---|
1 | From: Roman Bolshakov <r.bolshakov@yadro.com> | ||
1 | 2 | ||
3 | dtrace USDT is fully supported since OS X 10.6. There are a few | ||
4 | peculiarities compared to other dtrace flavors. | ||
5 | |||
6 | 1. It doesn't accept empty files. | ||
7 | 2. It doesn't recognize bool type but accepts C99 _Bool. | ||
8 | 3. It converts int8_t * in probe points to char * in | ||
9 | header files and introduces [-Wpointer-sign] warning. | ||
10 | |||
11 | Cc: Cameron Esfahani <dirty@apple.com> | ||
12 | Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com> | ||
13 | Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> | ||
14 | Message-id: 20200717093517.73397-2-r.bolshakov@yadro.com | ||
15 | Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> | ||
16 | --- | ||
17 | scripts/tracetool/format/d.py | 15 ++++++++++++++- | ||
18 | 1 file changed, 14 insertions(+), 1 deletion(-) | ||
19 | |||
20 | diff --git a/scripts/tracetool/format/d.py b/scripts/tracetool/format/d.py | ||
21 | index XXXXXXX..XXXXXXX 100644 | ||
22 | --- a/scripts/tracetool/format/d.py | ||
23 | +++ b/scripts/tracetool/format/d.py | ||
24 | @@ -XXX,XX +XXX,XX @@ __email__ = "stefanha@redhat.com" | ||
25 | |||
26 | |||
27 | from tracetool import out | ||
28 | +from sys import platform | ||
29 | |||
30 | |||
31 | # Reserved keywords from | ||
32 | @@ -XXX,XX +XXX,XX @@ def generate(events, backend, group): | ||
33 | |||
34 | # SystemTap's dtrace(1) warns about empty "provider qemu {}" but is happy | ||
35 | # with an empty file. Avoid the warning. | ||
36 | - if not events: | ||
37 | + # But dtrace on macOS can't deal with empty files. | ||
38 | + if not events and platform != "darwin": | ||
39 | return | ||
40 | |||
41 | out('/* This file is autogenerated by tracetool, do not edit. */' | ||
42 | @@ -XXX,XX +XXX,XX @@ def generate(events, backend, group): | ||
43 | for e in events: | ||
44 | args = [] | ||
45 | for type_, name in e.args: | ||
46 | + if platform == "darwin": | ||
47 | + # macOS dtrace accepts only C99 _Bool | ||
48 | + if type_ == 'bool': | ||
49 | + type_ = '_Bool' | ||
50 | + if type_ == 'bool *': | ||
51 | + type_ = '_Bool *' | ||
52 | + # It converts int8_t * in probe points to char * in header | ||
53 | + # files and introduces [-Wpointer-sign] warning. | ||
54 | + # Avoid it by changing probe type to signed char * beforehand. | ||
55 | + if type_ == 'int8_t *': | ||
56 | + type_ = 'signed char *' | ||
57 | if name in RESERVED_WORDS: | ||
58 | name += '_' | ||
59 | args.append(type_ + ' ' + name) | ||
60 | -- | ||
61 | 2.26.2 | ||
62 | diff view generated by jsdifflib |
New patch | |||
---|---|---|---|
1 | From: Roman Bolshakov <r.bolshakov@yadro.com> | ||
1 | 2 | ||
3 | dtrace on macOS complains that CPUState * is used for a few probes: | ||
4 | |||
5 | dtrace: failed to compile script trace-dtrace-root.dtrace: line 130: syntax error near "CPUState" | ||
6 | |||
7 | A comment in scripts/tracetool/__init__.py mentions that: | ||
8 | |||
9 | We only want to allow standard C types or fixed sized | ||
10 | integer types. We don't want QEMU specific types | ||
11 | as we can't assume trace backends can resolve all the | ||
12 | typedefs | ||
13 | |||
14 | Fixes: 3d211d9f4dbee ("trace: Add 'vcpu' event property to trace guest vCPU") | ||
15 | Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> | ||
16 | Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> | ||
17 | Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com> | ||
18 | Message-id: 20200717093517.73397-3-r.bolshakov@yadro.com | ||
19 | Cc: Cameron Esfahani <dirty@apple.com> | ||
20 | Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com> | ||
21 | Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> | ||
22 | --- | ||
23 | scripts/tracetool/vcpu.py | 2 +- | ||
24 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
25 | |||
26 | diff --git a/scripts/tracetool/vcpu.py b/scripts/tracetool/vcpu.py | ||
27 | index XXXXXXX..XXXXXXX 100644 | ||
28 | --- a/scripts/tracetool/vcpu.py | ||
29 | +++ b/scripts/tracetool/vcpu.py | ||
30 | @@ -XXX,XX +XXX,XX @@ def transform_event(event): | ||
31 | assert "tcg-trans" not in event.properties | ||
32 | assert "tcg-exec" not in event.properties | ||
33 | |||
34 | - event.args = Arguments([("CPUState *", "__cpu"), event.args]) | ||
35 | + event.args = Arguments([("void *", "__cpu"), event.args]) | ||
36 | if "tcg" in event.properties: | ||
37 | fmt = "\"cpu=%p \"" | ||
38 | event.fmt = [fmt + event.fmt[0], | ||
39 | -- | ||
40 | 2.26.2 | ||
41 | diff view generated by jsdifflib |
New patch | |||
---|---|---|---|
1 | From: Roman Bolshakov <r.bolshakov@yadro.com> | ||
1 | 2 | ||
3 | Build of QEMU with dtrace fails on macOS: | ||
4 | |||
5 | LINK x86_64-softmmu/qemu-system-x86_64 | ||
6 | error: probe colo_compare_miscompare doesn't exist | ||
7 | error: Could not register probes | ||
8 | ld: error creating dtrace DOF section for architecture x86_64 | ||
9 | |||
10 | The reason of the error is explained by Adam Leventhal [1]: | ||
11 | |||
12 | Note that is-enabled probes don't have the stability magic so I'm not | ||
13 | sure how things would work if only is-enabled probes were used. | ||
14 | |||
15 | net/colo code uses is-enabled probes to determine if other probes should | ||
16 | be used but colo_compare_miscompare itself is not used explicitly. | ||
17 | Linker doesn't include the symbol and build fails. | ||
18 | |||
19 | The issue can be resolved if is-enabled probe matches the actual trace | ||
20 | point that is used inside the test. Packet dump toggle is replaced with | ||
21 | a compile-time conditional definition. | ||
22 | |||
23 | 1. http://markmail.org/message/6grq2ygr5nwdwsnb | ||
24 | |||
25 | Fixes: f4b618360e ("colo-compare: add TCP, UDP, ICMP packet comparison") | ||
26 | Cc: Philippe Mathieu-Daudé <philmd@redhat.com> | ||
27 | Cc: Cameron Esfahani <dirty@apple.com> | ||
28 | Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com> | ||
29 | Reviewed-by: Zhang Chen <chen.zhang@intel.com> | ||
30 | Message-id: 20200717093517.73397-5-r.bolshakov@yadro.com | ||
31 | Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> | ||
32 | --- | ||
33 | net/colo-compare.c | 42 ++++++++++++++++++++++-------------------- | ||
34 | net/filter-rewriter.c | 10 ++++++++-- | ||
35 | net/trace-events | 2 -- | ||
36 | 3 files changed, 30 insertions(+), 24 deletions(-) | ||
37 | |||
38 | diff --git a/net/colo-compare.c b/net/colo-compare.c | ||
39 | index XXXXXXX..XXXXXXX 100644 | ||
40 | --- a/net/colo-compare.c | ||
41 | +++ b/net/colo-compare.c | ||
42 | @@ -XXX,XX +XXX,XX @@ static NotifierList colo_compare_notifiers = | ||
43 | #define REGULAR_PACKET_CHECK_MS 3000 | ||
44 | #define DEFAULT_TIME_OUT_MS 3000 | ||
45 | |||
46 | +/* #define DEBUG_COLO_PACKETS */ | ||
47 | + | ||
48 | static QemuMutex colo_compare_mutex; | ||
49 | static bool colo_compare_active; | ||
50 | static QemuMutex event_mtx; | ||
51 | @@ -XXX,XX +XXX,XX @@ static int colo_compare_packet_payload(Packet *ppkt, | ||
52 | uint16_t len) | ||
53 | |||
54 | { | ||
55 | - if (trace_event_get_state_backends(TRACE_COLO_COMPARE_MISCOMPARE)) { | ||
56 | + if (trace_event_get_state_backends(TRACE_COLO_COMPARE_IP_INFO)) { | ||
57 | char pri_ip_src[20], pri_ip_dst[20], sec_ip_src[20], sec_ip_dst[20]; | ||
58 | |||
59 | strcpy(pri_ip_src, inet_ntoa(ppkt->ip->ip_src)); | ||
60 | @@ -XXX,XX +XXX,XX @@ sec: | ||
61 | g_queue_push_head(&conn->primary_list, ppkt); | ||
62 | g_queue_push_head(&conn->secondary_list, spkt); | ||
63 | |||
64 | - if (trace_event_get_state_backends(TRACE_COLO_COMPARE_MISCOMPARE)) { | ||
65 | - qemu_hexdump((char *)ppkt->data, stderr, | ||
66 | - "colo-compare ppkt", ppkt->size); | ||
67 | - qemu_hexdump((char *)spkt->data, stderr, | ||
68 | - "colo-compare spkt", spkt->size); | ||
69 | - } | ||
70 | +#ifdef DEBUG_COLO_PACKETS | ||
71 | + qemu_hexdump((char *)ppkt->data, stderr, | ||
72 | + "colo-compare ppkt", ppkt->size); | ||
73 | + qemu_hexdump((char *)spkt->data, stderr, | ||
74 | + "colo-compare spkt", spkt->size); | ||
75 | +#endif | ||
76 | |||
77 | colo_compare_inconsistency_notify(s); | ||
78 | } | ||
79 | @@ -XXX,XX +XXX,XX @@ static int colo_packet_compare_udp(Packet *spkt, Packet *ppkt) | ||
80 | ppkt->size - offset)) { | ||
81 | trace_colo_compare_udp_miscompare("primary pkt size", ppkt->size); | ||
82 | trace_colo_compare_udp_miscompare("Secondary pkt size", spkt->size); | ||
83 | - if (trace_event_get_state_backends(TRACE_COLO_COMPARE_MISCOMPARE)) { | ||
84 | - qemu_hexdump((char *)ppkt->data, stderr, "colo-compare pri pkt", | ||
85 | - ppkt->size); | ||
86 | - qemu_hexdump((char *)spkt->data, stderr, "colo-compare sec pkt", | ||
87 | - spkt->size); | ||
88 | - } | ||
89 | +#ifdef DEBUG_COLO_PACKETS | ||
90 | + qemu_hexdump((char *)ppkt->data, stderr, "colo-compare pri pkt", | ||
91 | + ppkt->size); | ||
92 | + qemu_hexdump((char *)spkt->data, stderr, "colo-compare sec pkt", | ||
93 | + spkt->size); | ||
94 | +#endif | ||
95 | return -1; | ||
96 | } else { | ||
97 | return 0; | ||
98 | @@ -XXX,XX +XXX,XX @@ static int colo_packet_compare_icmp(Packet *spkt, Packet *ppkt) | ||
99 | ppkt->size); | ||
100 | trace_colo_compare_icmp_miscompare("Secondary pkt size", | ||
101 | spkt->size); | ||
102 | - if (trace_event_get_state_backends(TRACE_COLO_COMPARE_MISCOMPARE)) { | ||
103 | - qemu_hexdump((char *)ppkt->data, stderr, "colo-compare pri pkt", | ||
104 | - ppkt->size); | ||
105 | - qemu_hexdump((char *)spkt->data, stderr, "colo-compare sec pkt", | ||
106 | - spkt->size); | ||
107 | - } | ||
108 | +#ifdef DEBUG_COLO_PACKETS | ||
109 | + qemu_hexdump((char *)ppkt->data, stderr, "colo-compare pri pkt", | ||
110 | + ppkt->size); | ||
111 | + qemu_hexdump((char *)spkt->data, stderr, "colo-compare sec pkt", | ||
112 | + spkt->size); | ||
113 | +#endif | ||
114 | return -1; | ||
115 | } else { | ||
116 | return 0; | ||
117 | @@ -XXX,XX +XXX,XX @@ static int colo_packet_compare_other(Packet *spkt, Packet *ppkt) | ||
118 | uint16_t offset = ppkt->vnet_hdr_len; | ||
119 | |||
120 | trace_colo_compare_main("compare other"); | ||
121 | - if (trace_event_get_state_backends(TRACE_COLO_COMPARE_MISCOMPARE)) { | ||
122 | + if (trace_event_get_state_backends(TRACE_COLO_COMPARE_IP_INFO)) { | ||
123 | char pri_ip_src[20], pri_ip_dst[20], sec_ip_src[20], sec_ip_dst[20]; | ||
124 | |||
125 | strcpy(pri_ip_src, inet_ntoa(ppkt->ip->ip_src)); | ||
126 | diff --git a/net/filter-rewriter.c b/net/filter-rewriter.c | ||
127 | index XXXXXXX..XXXXXXX 100644 | ||
128 | --- a/net/filter-rewriter.c | ||
129 | +++ b/net/filter-rewriter.c | ||
130 | @@ -XXX,XX +XXX,XX @@ static int handle_primary_tcp_pkt(RewriterState *rf, | ||
131 | struct tcp_hdr *tcp_pkt; | ||
132 | |||
133 | tcp_pkt = (struct tcp_hdr *)pkt->transport_header; | ||
134 | - if (trace_event_get_state_backends(TRACE_COLO_FILTER_REWRITER_DEBUG)) { | ||
135 | + if (trace_event_get_state_backends(TRACE_COLO_FILTER_REWRITER_PKT_INFO)) { | ||
136 | trace_colo_filter_rewriter_pkt_info(__func__, | ||
137 | inet_ntoa(pkt->ip->ip_src), inet_ntoa(pkt->ip->ip_dst), | ||
138 | ntohl(tcp_pkt->th_seq), ntohl(tcp_pkt->th_ack), | ||
139 | tcp_pkt->th_flags); | ||
140 | + } | ||
141 | + if (trace_event_get_state_backends( | ||
142 | + TRACE_COLO_FILTER_REWRITER_CONN_OFFSET)) { | ||
143 | trace_colo_filter_rewriter_conn_offset(conn->offset); | ||
144 | } | ||
145 | |||
146 | @@ -XXX,XX +XXX,XX @@ static int handle_secondary_tcp_pkt(RewriterState *rf, | ||
147 | |||
148 | tcp_pkt = (struct tcp_hdr *)pkt->transport_header; | ||
149 | |||
150 | - if (trace_event_get_state_backends(TRACE_COLO_FILTER_REWRITER_DEBUG)) { | ||
151 | + if (trace_event_get_state_backends(TRACE_COLO_FILTER_REWRITER_PKT_INFO)) { | ||
152 | trace_colo_filter_rewriter_pkt_info(__func__, | ||
153 | inet_ntoa(pkt->ip->ip_src), inet_ntoa(pkt->ip->ip_dst), | ||
154 | ntohl(tcp_pkt->th_seq), ntohl(tcp_pkt->th_ack), | ||
155 | tcp_pkt->th_flags); | ||
156 | + } | ||
157 | + if (trace_event_get_state_backends( | ||
158 | + TRACE_COLO_FILTER_REWRITER_CONN_OFFSET)) { | ||
159 | trace_colo_filter_rewriter_conn_offset(conn->offset); | ||
160 | } | ||
161 | |||
162 | diff --git a/net/trace-events b/net/trace-events | ||
163 | index XXXXXXX..XXXXXXX 100644 | ||
164 | --- a/net/trace-events | ||
165 | +++ b/net/trace-events | ||
166 | @@ -XXX,XX +XXX,XX @@ colo_compare_udp_miscompare(const char *sta, int size) ": %s = %d" | ||
167 | colo_compare_icmp_miscompare(const char *sta, int size) ": %s = %d" | ||
168 | colo_compare_ip_info(int psize, const char *sta, const char *stb, int ssize, const char *stc, const char *std) "ppkt size = %d, ip_src = %s, ip_dst = %s, spkt size = %d, ip_src = %s, ip_dst = %s" | ||
169 | colo_old_packet_check_found(int64_t old_time) "%" PRId64 | ||
170 | -colo_compare_miscompare(void) "" | ||
171 | colo_compare_tcp_info(const char *pkt, uint32_t seq, uint32_t ack, int hdlen, int pdlen, int offset, int flags) "%s: seq/ack= %u/%u hdlen= %d pdlen= %d offset= %d flags=%d" | ||
172 | |||
173 | # filter-rewriter.c | ||
174 | -colo_filter_rewriter_debug(void) "" | ||
175 | colo_filter_rewriter_pkt_info(const char *func, const char *src, const char *dst, uint32_t seq, uint32_t ack, uint32_t flag) "%s: src/dst: %s/%s p: seq/ack=%u/%u flags=0x%x" | ||
176 | colo_filter_rewriter_conn_offset(uint32_t offset) ": offset=%u" | ||
177 | -- | ||
178 | 2.26.2 | ||
179 | diff view generated by jsdifflib |
New patch | |||
---|---|---|---|
1 | From: Markus Armbruster <armbru@redhat.com> | ||
1 | 2 | ||
3 | Commit a44cf524f8 "scripts/cleanup-trace-events: Update for current | ||
4 | practice" limited search to the input file's directory. That's wrong | ||
5 | for events with the vcpu property, because these can only be defined | ||
6 | in root directory. | ||
7 | |||
8 | Signed-off-by: Markus Armbruster <armbru@redhat.com> | ||
9 | Message-id: 20200806141334.3646302-2-armbru@redhat.com | ||
10 | Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> | ||
11 | --- | ||
12 | scripts/cleanup-trace-events.pl | 10 ++++++---- | ||
13 | 1 file changed, 6 insertions(+), 4 deletions(-) | ||
14 | |||
15 | diff --git a/scripts/cleanup-trace-events.pl b/scripts/cleanup-trace-events.pl | ||
16 | index XXXXXXX..XXXXXXX 100755 | ||
17 | --- a/scripts/cleanup-trace-events.pl | ||
18 | +++ b/scripts/cleanup-trace-events.pl | ||
19 | @@ -XXX,XX +XXX,XX @@ open(IN, $in) or die "open $in: $!"; | ||
20 | chdir($dir) or die "chdir $dir: $!"; | ||
21 | |||
22 | while (<IN>) { | ||
23 | - if (/^(disable |(tcg) |vcpu )*([a-z_0-9]+)\(/i) { | ||
24 | - my $pat = "trace_$3"; | ||
25 | - $pat .= '_tcg' if (defined $2); | ||
26 | - open GREP, '-|', 'git', 'grep', '-lw', '--max-depth', '1', $pat | ||
27 | + if (/^(disable |(tcg) |(vcpu) )*([a-z_0-9]+)\(/i) { | ||
28 | + my $pat = "trace_$4"; | ||
29 | + $pat .= '_tcg' if defined $2; | ||
30 | + open GREP, '-|', 'git', 'grep', '-lw', | ||
31 | + defined $3 ? () : ('--max-depth', '1'), | ||
32 | + $pat | ||
33 | or die "run git grep: $!"; | ||
34 | while (my $fname = <GREP>) { | ||
35 | chomp $fname; | ||
36 | -- | ||
37 | 2.26.2 | ||
38 | diff view generated by jsdifflib |
New patch | |||
---|---|---|---|
1 | From: Markus Armbruster <armbru@redhat.com> | ||
1 | 2 | ||
3 | Signed-off-by: Markus Armbruster <armbru@redhat.com> | ||
4 | Message-id: 20200806141334.3646302-3-armbru@redhat.com | ||
5 | Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> | ||
6 | --- | ||
7 | scripts/cleanup-trace-events.pl | 13 ++++++++----- | ||
8 | 1 file changed, 8 insertions(+), 5 deletions(-) | ||
9 | |||
10 | diff --git a/scripts/cleanup-trace-events.pl b/scripts/cleanup-trace-events.pl | ||
11 | index XXXXXXX..XXXXXXX 100755 | ||
12 | --- a/scripts/cleanup-trace-events.pl | ||
13 | +++ b/scripts/cleanup-trace-events.pl | ||
14 | @@ -XXX,XX +XXX,XX @@ use warnings; | ||
15 | use strict; | ||
16 | use File::Basename; | ||
17 | |||
18 | -my $buf = ''; | ||
19 | +my @files = (); | ||
20 | +my $events = ''; | ||
21 | my %seen = (); | ||
22 | |||
23 | sub out { | ||
24 | - print $buf; | ||
25 | - $buf = ''; | ||
26 | + print sort @files; | ||
27 | + print $events; | ||
28 | + @files = (); | ||
29 | + $events = ''; | ||
30 | %seen = (); | ||
31 | } | ||
32 | |||
33 | @@ -XXX,XX +XXX,XX @@ while (<IN>) { | ||
34 | chomp $fname; | ||
35 | next if $seen{$fname} || $fname eq 'trace-events'; | ||
36 | $seen{$fname} = 1; | ||
37 | - $buf = "# $fname\n" . $buf; | ||
38 | + push @files, "# $fname\n"; | ||
39 | } | ||
40 | unless (close GREP) { | ||
41 | die "close git grep: $!" | ||
42 | @@ -XXX,XX +XXX,XX @@ while (<IN>) { | ||
43 | } elsif (!/^#|^$/) { | ||
44 | warn "unintelligible line"; | ||
45 | } | ||
46 | - $buf .= $_; | ||
47 | + $events .= $_; | ||
48 | } | ||
49 | |||
50 | out; | ||
51 | -- | ||
52 | 2.26.2 | ||
53 | diff view generated by jsdifflib |
New patch | |||
---|---|---|---|
1 | From: Markus Armbruster <armbru@redhat.com> | ||
1 | 2 | ||
3 | Tracked down with the help of scripts/cleanup-trace-events.pl. | ||
4 | |||
5 | Signed-off-by: Markus Armbruster <armbru@redhat.com> | ||
6 | Message-id: 20200806141334.3646302-4-armbru@redhat.com | ||
7 | Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> | ||
8 | --- | ||
9 | audio/trace-events | 3 --- | ||
10 | block/trace-events | 3 --- | ||
11 | hw/misc/trace-events | 1 - | ||
12 | hw/ppc/trace-events | 4 ---- | ||
13 | hw/timer/trace-events | 1 - | ||
14 | migration/trace-events | 1 - | ||
15 | target/ppc/trace-events | 1 - | ||
16 | 7 files changed, 14 deletions(-) | ||
17 | |||
18 | diff --git a/audio/trace-events b/audio/trace-events | ||
19 | index XXXXXXX..XXXXXXX 100644 | ||
20 | --- a/audio/trace-events | ||
21 | +++ b/audio/trace-events | ||
22 | @@ -XXX,XX +XXX,XX @@ alsa_read_zero(long len) "Failed to read %ld frames (read zero)" | ||
23 | alsa_xrun_out(void) "Recovering from playback xrun" | ||
24 | alsa_xrun_in(void) "Recovering from capture xrun" | ||
25 | alsa_resume_out(void) "Resuming suspended output stream" | ||
26 | -alsa_resume_in(void) "Resuming suspended input stream" | ||
27 | -alsa_no_frames(int state) "No frames available and ALSA state is %d" | ||
28 | |||
29 | # ossaudio.c | ||
30 | oss_version(int version) "OSS version = 0x%x" | ||
31 | -oss_invalid_available_size(int size, int bufsize) "Invalid available size, size=%d bufsize=%d" | ||
32 | |||
33 | # audio.c | ||
34 | audio_timer_start(int interval) "interval %d ms" | ||
35 | diff --git a/block/trace-events b/block/trace-events | ||
36 | index XXXXXXX..XXXXXXX 100644 | ||
37 | --- a/block/trace-events | ||
38 | +++ b/block/trace-events | ||
39 | @@ -XXX,XX +XXX,XX @@ backup_do_cow_enter(void *job, int64_t start, int64_t offset, uint64_t bytes) "j | ||
40 | backup_do_cow_return(void *job, int64_t offset, uint64_t bytes, int ret) "job %p offset %" PRId64 " bytes %" PRIu64 " ret %d" | ||
41 | |||
42 | # block-copy.c | ||
43 | -block_copy_skip(void *bcs, int64_t start) "bcs %p start %"PRId64 | ||
44 | block_copy_skip_range(void *bcs, int64_t start, uint64_t bytes) "bcs %p start %"PRId64" bytes %"PRId64 | ||
45 | block_copy_process(void *bcs, int64_t start) "bcs %p start %"PRId64 | ||
46 | block_copy_copy_range_fail(void *bcs, int64_t start, int ret) "bcs %p start %"PRId64" ret %d" | ||
47 | @@ -XXX,XX +XXX,XX @@ curl_setup_preadv(uint64_t bytes, uint64_t start, const char *range) "reading %" | ||
48 | curl_close(void) "close" | ||
49 | |||
50 | # file-posix.c | ||
51 | -file_xfs_write_zeroes(const char *error) "cannot write zero range (%s)" | ||
52 | -file_xfs_discard(const char *error) "cannot punch hole (%s)" | ||
53 | file_FindEjectableOpticalMedia(const char *media) "Matching using %s" | ||
54 | file_setup_cdrom(const char *partition) "Using %s as optical disc" | ||
55 | file_hdev_is_sg(int type, int version) "SG device found: type=%d, version=%d" | ||
56 | diff --git a/hw/misc/trace-events b/hw/misc/trace-events | ||
57 | index XXXXXXX..XXXXXXX 100644 | ||
58 | --- a/hw/misc/trace-events | ||
59 | +++ b/hw/misc/trace-events | ||
60 | @@ -XXX,XX +XXX,XX @@ ecc_diag_mem_writeb(uint64_t addr, uint32_t val) "Write diagnostic %"PRId64" = 0 | ||
61 | ecc_diag_mem_readb(uint64_t addr, uint32_t ret) "Read diagnostic %"PRId64"= 0x%02x" | ||
62 | |||
63 | # empty_slot.c | ||
64 | -empty_slot_read(uint64_t addr, unsigned width, uint64_t value, unsigned size, const char *name) "rd addr:0x%04"PRIx64" data:0x%0*"PRIx64" size %u [%s]" | ||
65 | empty_slot_write(uint64_t addr, unsigned width, uint64_t value, unsigned size, const char *name) "wr addr:0x%04"PRIx64" data:0x%0*"PRIx64" size %u [%s]" | ||
66 | |||
67 | # slavio_misc.c | ||
68 | diff --git a/hw/ppc/trace-events b/hw/ppc/trace-events | ||
69 | index XXXXXXX..XXXXXXX 100644 | ||
70 | --- a/hw/ppc/trace-events | ||
71 | +++ b/hw/ppc/trace-events | ||
72 | @@ -XXX,XX +XXX,XX @@ spapr_pci_lsi_set(const char *busname, int pin, uint32_t irq) "%s PIN%d IRQ %u" | ||
73 | spapr_pci_msi_retry(unsigned config_addr, unsigned req_num, unsigned max_irqs) "Guest device at 0x%x asked %u, have only %u" | ||
74 | |||
75 | # spapr.c | ||
76 | -spapr_cas_failed(unsigned long n) "DT diff buffer is too small: %ld bytes" | ||
77 | spapr_cas_continue(unsigned long n) "Copy changes to the guest: %ld bytes" | ||
78 | |||
79 | # spapr_hcall.c | ||
80 | @@ -XXX,XX +XXX,XX @@ spapr_vio_free_crq(uint32_t reg) "CRQ for dev 0x%" PRIx32 " freed" | ||
81 | # ppc.c | ||
82 | ppc_tb_adjust(uint64_t offs1, uint64_t offs2, int64_t diff, int64_t seconds) "adjusted from 0x%"PRIx64" to 0x%"PRIx64", diff %"PRId64" (%"PRId64"s)" | ||
83 | |||
84 | -# prep.c | ||
85 | -prep_io_800_writeb(uint32_t addr, uint32_t val) "0x%08" PRIx32 " => 0x%02" PRIx32 | ||
86 | -prep_io_800_readb(uint32_t addr, uint32_t retval) "0x%08" PRIx32 " <= 0x%02" PRIx32 | ||
87 | |||
88 | # prep_systemio.c | ||
89 | prep_systemio_read(uint32_t addr, uint32_t val) "read addr=0x%x val=0x%x" | ||
90 | diff --git a/hw/timer/trace-events b/hw/timer/trace-events | ||
91 | index XXXXXXX..XXXXXXX 100644 | ||
92 | --- a/hw/timer/trace-events | ||
93 | +++ b/hw/timer/trace-events | ||
94 | @@ -XXX,XX +XXX,XX @@ avr_timer16_read(uint8_t addr, uint8_t value) "timer16 read addr:%u value:%u" | ||
95 | avr_timer16_read_ifr(uint8_t value) "timer16 read addr:ifr value:%u" | ||
96 | avr_timer16_read_imsk(uint8_t value) "timer16 read addr:imsk value:%u" | ||
97 | avr_timer16_write(uint8_t addr, uint8_t value) "timer16 write addr:%u value:%u" | ||
98 | -avr_timer16_write_ifr(uint8_t value) "timer16 write addr:ifr value:%u" | ||
99 | avr_timer16_write_imsk(uint8_t value) "timer16 write addr:imsk value:%u" | ||
100 | avr_timer16_interrupt_count(uint8_t cnt) "count: %u" | ||
101 | avr_timer16_interrupt_overflow(const char *reason) "overflow: %s" | ||
102 | diff --git a/migration/trace-events b/migration/trace-events | ||
103 | index XXXXXXX..XXXXXXX 100644 | ||
104 | --- a/migration/trace-events | ||
105 | +++ b/migration/trace-events | ||
106 | @@ -XXX,XX +XXX,XX @@ multifd_recv_sync_main_wait(uint8_t id) "channel %d" | ||
107 | multifd_recv_terminate_threads(bool error) "error %d" | ||
108 | multifd_recv_thread_end(uint8_t id, uint64_t packets, uint64_t pages) "channel %d packets %" PRIu64 " pages %" PRIu64 | ||
109 | multifd_recv_thread_start(uint8_t id) "%d" | ||
110 | -multifd_save_setup_wait(uint8_t id) "%d" | ||
111 | multifd_send(uint8_t id, uint64_t packet_num, uint32_t used, uint32_t flags, uint32_t next_packet_size) "channel %d packet_num %" PRIu64 " pages %d flags 0x%x next packet size %d" | ||
112 | multifd_send_error(uint8_t id) "channel %d" | ||
113 | multifd_send_sync_main(long packet_num) "packet num %ld" | ||
114 | diff --git a/target/ppc/trace-events b/target/ppc/trace-events | ||
115 | index XXXXXXX..XXXXXXX 100644 | ||
116 | --- a/target/ppc/trace-events | ||
117 | +++ b/target/ppc/trace-events | ||
118 | @@ -XXX,XX +XXX,XX @@ kvm_failed_dtl_set(const char *msg) "Unable to set dispatch trace log state to K | ||
119 | kvm_failed_null_vpa_addr_set(const char *msg) "Unable to set VPA address to KVM: %s" | ||
120 | kvm_failed_put_vpa(void) "Warning: Unable to set VPA information to KVM" | ||
121 | kvm_failed_get_vpa(void) "Warning: Unable to get VPA information from KVM" | ||
122 | -kvm_injected_interrupt(int irq) "injected interrupt %d" | ||
123 | kvm_handle_dcr_write(void) "handle dcr write" | ||
124 | kvm_handle_dcr_read(void) "handle dcr read" | ||
125 | kvm_handle_halt(void) "handle halt" | ||
126 | -- | ||
127 | 2.26.2 | ||
128 | diff view generated by jsdifflib |
1 | From: Daniel P. Berrangé <berrange@redhat.com> | 1 | From: Markus Armbruster <armbru@redhat.com> |
---|---|---|---|
2 | 2 | ||
3 | If the 'stap' binary is missing in $PATH, a huge trace is thrown | 3 | Some trace points are attributed to the wrong source file. Happens |
4 | 4 | when we neglect to update trace-events for code motion, or add events | |
5 | $ qemu-trace-stap list /usr/bin/qemu-system-x86_64 | 5 | in the wrong place, or misspell the file name. |
6 | Traceback (most recent call last): | 6 | |
7 | File "/usr/bin/qemu-trace-stap", line 169, in <module> | 7 | Clean up with help of scripts/cleanup-trace-events.pl. Funnies |
8 | main() | 8 | requiring manual post-processing: |
9 | File "/usr/bin/qemu-trace-stap", line 165, in main | 9 | |
10 | args.func(args) | 10 | * accel/tcg/cputlb.c trace points are in trace-events. |
11 | File "/usr/bin/qemu-trace-stap", line 83, in cmd_run | 11 | |
12 | subprocess.call(stapargs) | 12 | * block.c and blockdev.c trace points are in block/trace-events. |
13 | File "/usr/lib64/python3.12/subprocess.py", line 389, in call | 13 | |
14 | with Popen(*popenargs, **kwargs) as p: | 14 | * hw/block/nvme.c uses the preprocessor to hide its trace point use |
15 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ | 15 | from cleanup-trace-events.pl. |
16 | File "/usr/lib64/python3.12/subprocess.py", line 1026, in {}init{} | 16 | |
17 | self._execute_child(args, executable, preexec_fn, close_fds, | 17 | * hw/tpm/tpm_spapr.c uses pseudo trace point tpm_spapr_show_buffer to |
18 | File "/usr/lib64/python3.12/subprocess.py", line 1955, in _execute_child | 18 | guard debug code. |
19 | raise child_exception_type(errno_num, err_msg, err_filename) | 19 | |
20 | FileNotFoundError: [Errno 2] No such file or directory: 'stap' | 20 | * include/hw/xen/xen_common.h trace points are in hw/xen/trace-events. |
21 | 21 | ||
22 | With this change the user now gets | 22 | * linux-user/trace-events abbreviates a tedious list of filenames to |
23 | 23 | */signal.c. | |
24 | $ qemu-trace-stap list /usr/bin/qemu-system-x86_64 | 24 | |
25 | Unable to find 'stap' in $PATH | 25 | * net/colo-compare and net/filter-rewriter.c use pseudo trace points |
26 | 26 | colo_compare_miscompare and colo_filter_rewriter_debug to guard | |
27 | Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> | 27 | debug code. |
28 | Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> | 28 | |
29 | Message-id: 20241206114524.1666664-1-berrange@redhat.com | 29 | Signed-off-by: Markus Armbruster <armbru@redhat.com> |
30 | Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> | ||
31 | Message-id: 20200806141334.3646302-5-armbru@redhat.com | ||
30 | Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> | 32 | Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> |
31 | --- | 33 | --- |
32 | scripts/qemu-trace-stap | 6 ++++-- | 34 | block/trace-events | 5 ++--- |
33 | 1 file changed, 4 insertions(+), 2 deletions(-) | 35 | hw/block/trace-events | 2 +- |
34 | 36 | hw/char/trace-events | 2 +- | |
35 | diff --git a/scripts/qemu-trace-stap b/scripts/qemu-trace-stap | 37 | hw/display/trace-events | 4 +++- |
36 | index XXXXXXX..XXXXXXX 100755 | 38 | hw/hyperv/trace-events | 2 +- |
37 | --- a/scripts/qemu-trace-stap | 39 | hw/mips/trace-events | 2 +- |
38 | +++ b/scripts/qemu-trace-stap | 40 | hw/misc/trace-events | 8 +++++--- |
39 | @@ -XXX,XX +XXX,XX @@ def tapset_dir(binary): | 41 | hw/ppc/trace-events | 6 ++---- |
40 | 42 | hw/riscv/trace-events | 2 +- | |
41 | 43 | hw/rtc/trace-events | 2 +- | |
42 | def cmd_run(args): | 44 | hw/tpm/trace-events | 2 +- |
43 | + stap = which("stap") | 45 | hw/usb/trace-events | 4 +++- |
44 | prefix = probe_prefix(args.binary) | 46 | hw/vfio/trace-events | 10 ++++++---- |
45 | tapsets = tapset_dir(args.binary) | 47 | hw/virtio/trace-events | 2 +- |
46 | 48 | migration/trace-events | 36 +++++++++++++++++++----------------- | |
47 | @@ -XXX,XX +XXX,XX @@ def cmd_run(args): | 49 | target/riscv/trace-events | 2 +- |
48 | 50 | trace-events | 5 +++-- | |
49 | # We request an 8MB buffer, since the stap default 1MB buffer | 51 | ui/trace-events | 6 +++--- |
50 | # can be easily overflowed by frequently firing QEMU traces | 52 | util/trace-events | 4 +++- |
51 | - stapargs = ["stap", "-s", "8", "-I", tapsets ] | 53 | 19 files changed, 58 insertions(+), 48 deletions(-) |
52 | + stapargs = [stap, "-s", "8", "-I", tapsets ] | 54 | |
53 | if args.pid is not None: | 55 | diff --git a/block/trace-events b/block/trace-events |
54 | stapargs.extend(["-x", args.pid]) | 56 | index XXXXXXX..XXXXXXX 100644 |
55 | stapargs.extend(["-e", script]) | 57 | --- a/block/trace-events |
56 | @@ -XXX,XX +XXX,XX @@ def cmd_run(args): | 58 | +++ b/block/trace-events |
57 | 59 | @@ -XXX,XX +XXX,XX @@ qmp_block_job_finalize(void *job) "job %p" | |
58 | 60 | qmp_block_job_dismiss(void *job) "job %p" | |
59 | def cmd_list(args): | 61 | qmp_block_stream(void *bs) "bs %p" |
60 | + stap = which("stap") | 62 | |
61 | tapsets = tapset_dir(args.binary) | 63 | -# file-posix.c |
62 | 64 | # file-win32.c | |
63 | if args.verbose: | 65 | file_paio_submit(void *acb, void *opaque, int64_t offset, int count, int type) "acb %p opaque %p offset %"PRId64" count %d type %d" |
64 | @@ -XXX,XX +XXX,XX @@ def cmd_list(args): | 66 | -file_copy_file_range(void *bs, int src, int64_t src_off, int dst, int64_t dst_off, int64_t bytes, int flags, int64_t ret) "bs %p src_fd %d offset %"PRIu64" dst_fd %d offset %"PRIu64" bytes %"PRIu64" flags %d ret %"PRId64 |
65 | 67 | ||
66 | if verbose: | 68 | -#io_uring.c |
67 | print("Listing probes with name '%s'" % script) | 69 | +# io_uring.c |
68 | - proc = subprocess.Popen(["stap", "-I", tapsets, "-l", script], | 70 | luring_init_state(void *s, size_t size) "s %p size %zu" |
69 | + proc = subprocess.Popen([stap, "-I", tapsets, "-l", script], | 71 | luring_cleanup_state(void *s) "%p freed" |
70 | stdout=subprocess.PIPE, | 72 | luring_io_plug(void *s) "LuringState %p plug" |
71 | universal_newlines=True) | 73 | @@ -XXX,XX +XXX,XX @@ curl_setup_preadv(uint64_t bytes, uint64_t start, const char *range) "reading %" |
72 | out, err = proc.communicate() | 74 | curl_close(void) "close" |
75 | |||
76 | # file-posix.c | ||
77 | +file_copy_file_range(void *bs, int src, int64_t src_off, int dst, int64_t dst_off, int64_t bytes, int flags, int64_t ret) "bs %p src_fd %d offset %"PRIu64" dst_fd %d offset %"PRIu64" bytes %"PRIu64" flags %d ret %"PRId64 | ||
78 | file_FindEjectableOpticalMedia(const char *media) "Matching using %s" | ||
79 | file_setup_cdrom(const char *partition) "Using %s as optical disc" | ||
80 | file_hdev_is_sg(int type, int version) "SG device found: type=%d, version=%d" | ||
81 | diff --git a/hw/block/trace-events b/hw/block/trace-events | ||
82 | index XXXXXXX..XXXXXXX 100644 | ||
83 | --- a/hw/block/trace-events | ||
84 | +++ b/hw/block/trace-events | ||
85 | @@ -XXX,XX +XXX,XX @@ | ||
86 | fdc_ioport_read(uint8_t reg, uint8_t value) "read reg 0x%02x val 0x%02x" | ||
87 | fdc_ioport_write(uint8_t reg, uint8_t value) "write reg 0x%02x val 0x%02x" | ||
88 | |||
89 | -# pflash_cfi02.c | ||
90 | # pflash_cfi01.c | ||
91 | +# pflash_cfi02.c | ||
92 | pflash_reset(void) "reset" | ||
93 | pflash_timer_expired(uint8_t cmd) "command 0x%02x done" | ||
94 | pflash_io_read(uint64_t offset, unsigned size, uint32_t value, uint8_t cmd, uint8_t wcycle) "offset:0x%04"PRIx64" size:%u value:0x%04x cmd:0x%02x wcycle:%u" | ||
95 | diff --git a/hw/char/trace-events b/hw/char/trace-events | ||
96 | index XXXXXXX..XXXXXXX 100644 | ||
97 | --- a/hw/char/trace-events | ||
98 | +++ b/hw/char/trace-events | ||
99 | @@ -XXX,XX +XXX,XX @@ exynos_uart_rxsize(uint32_t channel, uint32_t size) "UART%d: Rx FIFO size: %d" | ||
100 | exynos_uart_channel_error(uint32_t channel) "Wrong UART channel number: %d" | ||
101 | exynos_uart_rx_timeout(uint32_t channel, uint32_t stat, uint32_t intsp) "UART%d: Rx timeout stat=0x%x intsp=0x%x" | ||
102 | |||
103 | -# hw/char/cadence_uart.c | ||
104 | +# cadence_uart.c | ||
105 | cadence_uart_baudrate(unsigned baudrate) "baudrate %u" | ||
106 | diff --git a/hw/display/trace-events b/hw/display/trace-events | ||
107 | index XXXXXXX..XXXXXXX 100644 | ||
108 | --- a/hw/display/trace-events | ||
109 | +++ b/hw/display/trace-events | ||
110 | @@ -XXX,XX +XXX,XX @@ vmware_scratch_read(uint32_t index, uint32_t value) "index %d, value 0x%x" | ||
111 | vmware_scratch_write(uint32_t index, uint32_t value) "index %d, value 0x%x" | ||
112 | vmware_setmode(uint32_t w, uint32_t h, uint32_t bpp) "%dx%d @ %d bpp" | ||
113 | |||
114 | +# virtio-gpu-base.c | ||
115 | +virtio_gpu_features(bool virgl) "virgl %d" | ||
116 | + | ||
117 | # virtio-gpu-3d.c | ||
118 | # virtio-gpu.c | ||
119 | -virtio_gpu_features(bool virgl) "virgl %d" | ||
120 | virtio_gpu_cmd_get_display_info(void) "" | ||
121 | virtio_gpu_cmd_get_edid(uint32_t scanout) "scanout %d" | ||
122 | virtio_gpu_cmd_set_scanout(uint32_t id, uint32_t res, uint32_t w, uint32_t h, uint32_t x, uint32_t y) "id %d, res 0x%x, w %d, h %d, x %d, y %d" | ||
123 | diff --git a/hw/hyperv/trace-events b/hw/hyperv/trace-events | ||
124 | index XXXXXXX..XXXXXXX 100644 | ||
125 | --- a/hw/hyperv/trace-events | ||
126 | +++ b/hw/hyperv/trace-events | ||
127 | @@ -XXX,XX +XXX,XX @@ | ||
128 | -# vmbus | ||
129 | +# vmbus.c | ||
130 | vmbus_recv_message(uint32_t type, uint32_t size) "type %d size %d" | ||
131 | vmbus_signal_event(void) "" | ||
132 | vmbus_channel_notify_guest(uint32_t chan_id) "channel #%d" | ||
133 | diff --git a/hw/mips/trace-events b/hw/mips/trace-events | ||
134 | index XXXXXXX..XXXXXXX 100644 | ||
135 | --- a/hw/mips/trace-events | ||
136 | +++ b/hw/mips/trace-events | ||
137 | @@ -XXX,XX +XXX,XX @@ | ||
138 | -# gt64xxx.c | ||
139 | +# gt64xxx_pci.c | ||
140 | gt64120_read(const char *regname, unsigned size, uint64_t value) "gt64120 read %s size:%u value:0x%08" PRIx64 | ||
141 | gt64120_write(const char *regname, unsigned size, uint64_t value) "gt64120 write %s size:%u value:0x%08" PRIx64 | ||
142 | gt64120_isd_remap(uint64_t from_length, uint64_t from_addr, uint64_t to_length, uint64_t to_addr) "ISD: 0x%08" PRIx64 "@0x%08" PRIx64 " -> 0x%08" PRIx64 "@0x%08" PRIx64 | ||
143 | diff --git a/hw/misc/trace-events b/hw/misc/trace-events | ||
144 | index XXXXXXX..XXXXXXX 100644 | ||
145 | --- a/hw/misc/trace-events | ||
146 | +++ b/hw/misc/trace-events | ||
147 | @@ -XXX,XX +XXX,XX @@ mos6522_set_sr_int(void) "set sr_int" | ||
148 | mos6522_write(uint64_t addr, uint64_t val) "reg=0x%"PRIx64 " val=0x%"PRIx64 | ||
149 | mos6522_read(uint64_t addr, unsigned val) "reg=0x%"PRIx64 " val=0x%x" | ||
150 | |||
151 | -# stm32f4xx_syscfg | ||
152 | +# stm32f4xx_syscfg.c | ||
153 | stm32f4xx_syscfg_set_irq(int gpio, int line, int level) "Interupt: GPIO: %d, Line: %d; Level: %d" | ||
154 | stm32f4xx_pulse_exti(int irq) "Pulse EXTI: %d" | ||
155 | stm32f4xx_syscfg_read(uint64_t addr) "reg read: addr: 0x%" PRIx64 " " | ||
156 | stm32f4xx_syscfg_write(uint64_t addr, uint64_t data) "reg write: addr: 0x%" PRIx64 " val: 0x%" PRIx64 "" | ||
157 | |||
158 | -# stm32f4xx_exti | ||
159 | +# stm32f4xx_exti.c | ||
160 | stm32f4xx_exti_set_irq(int irq, int leve) "Set EXTI: %d to %d" | ||
161 | stm32f4xx_exti_read(uint64_t addr) "reg read: addr: 0x%" PRIx64 " " | ||
162 | stm32f4xx_exti_write(uint64_t addr, uint64_t data) "reg write: addr: 0x%" PRIx64 " val: 0x%" PRIx64 "" | ||
163 | @@ -XXX,XX +XXX,XX @@ armsse_mhu_write(uint64_t offset, uint64_t data, unsigned size) "SSE-200 MHU wri | ||
164 | # aspeed_xdma.c | ||
165 | aspeed_xdma_write(uint64_t offset, uint64_t data) "XDMA write: offset 0x%" PRIx64 " data 0x%" PRIx64 | ||
166 | |||
167 | +# bcm2835_property.c | ||
168 | +bcm2835_mbox_property(uint32_t tag, uint32_t bufsize, size_t resplen) "mbox property tag:0x%08x in_sz:%u out_sz:%zu" | ||
169 | + | ||
170 | # bcm2835_mbox.c | ||
171 | bcm2835_mbox_write(unsigned int size, uint64_t addr, uint64_t value) "mbox write sz:%u addr:0x%"PRIx64" data:0x%"PRIx64 | ||
172 | bcm2835_mbox_read(unsigned int size, uint64_t addr, uint64_t value) "mbox read sz:%u addr:0x%"PRIx64" data:0x%"PRIx64 | ||
173 | bcm2835_mbox_irq(unsigned level) "mbox irq:ARM level:%u" | ||
174 | -bcm2835_mbox_property(uint32_t tag, uint32_t bufsize, size_t resplen) "mbox property tag:0x%08x in_sz:%u out_sz:%zu" | ||
175 | |||
176 | # mac_via.c | ||
177 | via1_rtc_update_data_out(int count, int value) "count=%d value=0x%02x" | ||
178 | diff --git a/hw/ppc/trace-events b/hw/ppc/trace-events | ||
179 | index XXXXXXX..XXXXXXX 100644 | ||
180 | --- a/hw/ppc/trace-events | ||
181 | +++ b/hw/ppc/trace-events | ||
182 | @@ -XXX,XX +XXX,XX @@ spapr_pci_msi_write(uint64_t addr, uint64_t data, uint32_t dt_irq) "@0x%"PRIx64" | ||
183 | spapr_pci_lsi_set(const char *busname, int pin, uint32_t irq) "%s PIN%d IRQ %u" | ||
184 | spapr_pci_msi_retry(unsigned config_addr, unsigned req_num, unsigned max_irqs) "Guest device at 0x%x asked %u, have only %u" | ||
185 | |||
186 | -# spapr.c | ||
187 | -spapr_cas_continue(unsigned long n) "Copy changes to the guest: %ld bytes" | ||
188 | - | ||
189 | # spapr_hcall.c | ||
190 | +spapr_cas_continue(unsigned long n) "Copy changes to the guest: %ld bytes" | ||
191 | spapr_cas_pvr(uint32_t cur_pvr, bool explicit_match, uint32_t new_pvr) "current=0x%x, explicit_match=%u, new=0x%x" | ||
192 | spapr_h_resize_hpt_prepare(uint64_t flags, uint64_t shift) "flags=0x%"PRIx64", shift=%"PRIu64 | ||
193 | spapr_h_resize_hpt_commit(uint64_t flags, uint64_t shift) "flags=0x%"PRIx64", shift=%"PRIu64 | ||
194 | @@ -XXX,XX +XXX,XX @@ spapr_update_dt(unsigned cb) "New blob %u bytes" | ||
195 | spapr_update_dt_failed_size(unsigned cbold, unsigned cbnew, unsigned magic) "Old blob %u bytes, new blob %u bytes, magic 0x%x" | ||
196 | spapr_update_dt_failed_check(unsigned cbold, unsigned cbnew, unsigned magic) "Old blob %u bytes, new blob %u bytes, magic 0x%x" | ||
197 | |||
198 | -# spapr_hcall_tpm.c | ||
199 | +# spapr_tpm_proxy.c | ||
200 | spapr_h_tpm_comm(const char *device_path, uint64_t operation) "tpm_device_path=%s operation=0x%"PRIu64 | ||
201 | spapr_tpm_execute(uint64_t data_in, uint64_t data_in_sz, uint64_t data_out, uint64_t data_out_sz) "data_in=0x%"PRIx64", data_in_sz=%"PRIu64", data_out=0x%"PRIx64", data_out_sz=%"PRIu64 | ||
202 | |||
203 | diff --git a/hw/riscv/trace-events b/hw/riscv/trace-events | ||
204 | index XXXXXXX..XXXXXXX 100644 | ||
205 | --- a/hw/riscv/trace-events | ||
206 | +++ b/hw/riscv/trace-events | ||
207 | @@ -XXX,XX +XXX,XX @@ | ||
208 | # See docs/devel/tracing.txt for syntax documentation. | ||
209 | |||
210 | -# hw/gpio/sifive_gpio.c | ||
211 | +# sifive_gpio.c | ||
212 | sifive_gpio_read(uint64_t offset, uint64_t r) "offset 0x%" PRIx64 " value 0x%" PRIx64 | ||
213 | sifive_gpio_write(uint64_t offset, uint64_t value) "offset 0x%" PRIx64 " value 0x%" PRIx64 | ||
214 | sifive_gpio_set(int64_t line, int64_t value) "line %" PRIi64 " value %" PRIi64 | ||
215 | diff --git a/hw/rtc/trace-events b/hw/rtc/trace-events | ||
216 | index XXXXXXX..XXXXXXX 100644 | ||
217 | --- a/hw/rtc/trace-events | ||
218 | +++ b/hw/rtc/trace-events | ||
219 | @@ -XXX,XX +XXX,XX @@ pl031_write(uint32_t addr, uint32_t value) "addr 0x%08x value 0x%08x" | ||
220 | pl031_alarm_raised(void) "alarm raised" | ||
221 | pl031_set_alarm(uint32_t ticks) "alarm set for %u ticks" | ||
222 | |||
223 | -# aspeed-rtc.c | ||
224 | +# aspeed_rtc.c | ||
225 | aspeed_rtc_read(uint64_t addr, uint64_t value) "addr 0x%02" PRIx64 " value 0x%08" PRIx64 | ||
226 | aspeed_rtc_write(uint64_t addr, uint64_t value) "addr 0x%02" PRIx64 " value 0x%08" PRIx64 | ||
227 | |||
228 | diff --git a/hw/tpm/trace-events b/hw/tpm/trace-events | ||
229 | index XXXXXXX..XXXXXXX 100644 | ||
230 | --- a/hw/tpm/trace-events | ||
231 | +++ b/hw/tpm/trace-events | ||
232 | @@ -XXX,XX +XXX,XX @@ | ||
233 | tpm_crb_mmio_read(uint64_t addr, unsigned size, uint32_t val) "CRB read 0x%016" PRIx64 " len:%u val: 0x%" PRIx32 | ||
234 | tpm_crb_mmio_write(uint64_t addr, unsigned size, uint32_t val) "CRB write 0x%016" PRIx64 " len:%u val: 0x%" PRIx32 | ||
235 | |||
236 | -# tpm_tis.c | ||
237 | +# tpm_tis_common.c | ||
238 | tpm_tis_raise_irq(uint32_t irqmask) "Raising IRQ for flag 0x%08x" | ||
239 | tpm_tis_new_active_locality(uint8_t locty) "Active locality is now %d" | ||
240 | tpm_tis_abort(uint8_t locty) "New active locality is %d" | ||
241 | diff --git a/hw/usb/trace-events b/hw/usb/trace-events | ||
242 | index XXXXXXX..XXXXXXX 100644 | ||
243 | --- a/hw/usb/trace-events | ||
244 | +++ b/hw/usb/trace-events | ||
245 | @@ -XXX,XX +XXX,XX @@ usb_port_attach(int bus, const char *port, const char *devspeed, const char *por | ||
246 | usb_port_detach(int bus, const char *port) "bus %d, port %s" | ||
247 | usb_port_release(int bus, const char *port) "bus %d, port %s" | ||
248 | |||
249 | +# hcd-ohci-pci.c | ||
250 | +usb_ohci_exit(const char *s) "%s" | ||
251 | + | ||
252 | # hcd-ohci.c | ||
253 | usb_ohci_iso_td_read_failed(uint32_t addr) "ISO_TD read error at 0x%x" | ||
254 | usb_ohci_iso_td_head(uint32_t head, uint32_t tail, uint32_t flags, uint32_t bp, uint32_t next, uint32_t be, uint32_t framenum, uint32_t startframe, uint32_t framecount, int rel_frame_num) "ISO_TD ED head 0x%.8x tailp 0x%.8x\n0x%.8x 0x%.8x 0x%.8x 0x%.8x\nframe_number 0x%.8x starting_frame 0x%.8x\nframe_count 0x%.8x relative %d" | ||
255 | @@ -XXX,XX +XXX,XX @@ usb_ohci_reset(const char *s) "%s" | ||
256 | usb_ohci_start(const char *s) "%s: USB Operational" | ||
257 | usb_ohci_resume(const char *s) "%s: USB Resume" | ||
258 | usb_ohci_stop(const char *s) "%s: USB Suspended" | ||
259 | -usb_ohci_exit(const char *s) "%s" | ||
260 | usb_ohci_set_ctl(const char *s, uint32_t new_state) "%s: new state 0x%x" | ||
261 | usb_ohci_td_underrun(void) "" | ||
262 | usb_ohci_td_dev_error(void) "" | ||
263 | diff --git a/hw/vfio/trace-events b/hw/vfio/trace-events | ||
264 | index XXXXXXX..XXXXXXX 100644 | ||
265 | --- a/hw/vfio/trace-events | ||
266 | +++ b/hw/vfio/trace-events | ||
267 | @@ -XXX,XX +XXX,XX @@ vfio_quirk_ati_bonaire_reset(const char *name) "%s" | ||
268 | vfio_ioeventfd_exit(const char *name, uint64_t addr, unsigned size, uint64_t data) "%s+0x%"PRIx64"[%d]:0x%"PRIx64 | ||
269 | vfio_ioeventfd_handler(const char *name, uint64_t addr, unsigned size, uint64_t data) "%s+0x%"PRIx64"[%d] -> 0x%"PRIx64 | ||
270 | vfio_ioeventfd_init(const char *name, uint64_t addr, unsigned size, uint64_t data, bool vfio) "%s+0x%"PRIx64"[%d]:0x%"PRIx64" vfio:%d" | ||
271 | -vfio_pci_igd_bar4_write(const char *name, uint32_t index, uint32_t data, uint32_t base) "%s [0x%03x] 0x%08x -> 0x%08x" | ||
272 | -vfio_pci_igd_bdsm_enabled(const char *name, int size) "%s %dMB" | ||
273 | vfio_pci_igd_opregion_enabled(const char *name) "%s" | ||
274 | -vfio_pci_igd_host_bridge_enabled(const char *name) "%s" | ||
275 | -vfio_pci_igd_lpc_bridge_enabled(const char *name) "%s" | ||
276 | |||
277 | vfio_pci_nvidia_gpu_setup_quirk(const char *name, uint64_t tgt, uint64_t size) "%s tgt=0x%"PRIx64" size=0x%"PRIx64 | ||
278 | vfio_pci_nvlink2_setup_quirk_ssatgt(const char *name, uint64_t tgt, uint64_t size) "%s tgt=0x%"PRIx64" size=0x%"PRIx64 | ||
279 | vfio_pci_nvlink2_setup_quirk_lnkspd(const char *name, uint32_t link_speed) "%s link_speed=0x%x" | ||
280 | |||
281 | +# igd.c | ||
282 | +vfio_pci_igd_bar4_write(const char *name, uint32_t index, uint32_t data, uint32_t base) "%s [0x%03x] 0x%08x -> 0x%08x" | ||
283 | +vfio_pci_igd_bdsm_enabled(const char *name, int size) "%s %dMB" | ||
284 | +vfio_pci_igd_host_bridge_enabled(const char *name) "%s" | ||
285 | +vfio_pci_igd_lpc_bridge_enabled(const char *name) "%s" | ||
286 | + | ||
287 | # common.c | ||
288 | vfio_region_write(const char *name, int index, uint64_t addr, uint64_t data, unsigned size) " (%s:region%d+0x%"PRIx64", 0x%"PRIx64 ", %d)" | ||
289 | vfio_region_read(char *name, int index, uint64_t addr, unsigned size, uint64_t data) " (%s:region%d+0x%"PRIx64", %d) = 0x%"PRIx64 | ||
290 | diff --git a/hw/virtio/trace-events b/hw/virtio/trace-events | ||
291 | index XXXXXXX..XXXXXXX 100644 | ||
292 | --- a/hw/virtio/trace-events | ||
293 | +++ b/hw/virtio/trace-events | ||
294 | @@ -XXX,XX +XXX,XX @@ virtio_mmio_guest_page(uint64_t size, int shift) "guest page size 0x%" PRIx64 " | ||
295 | virtio_mmio_queue_write(uint64_t value, int max_size) "mmio_queue write 0x%" PRIx64 " max %d" | ||
296 | virtio_mmio_setting_irq(int level) "virtio_mmio setting IRQ %d" | ||
297 | |||
298 | -# hw/virtio/virtio-iommu.c | ||
299 | +# virtio-iommu.c | ||
300 | virtio_iommu_device_reset(void) "reset!" | ||
301 | virtio_iommu_get_features(uint64_t features) "device supports features=0x%"PRIx64 | ||
302 | virtio_iommu_device_status(uint8_t status) "driver status = %d" | ||
303 | diff --git a/migration/trace-events b/migration/trace-events | ||
304 | index XXXXXXX..XXXXXXX 100644 | ||
305 | --- a/migration/trace-events | ||
306 | +++ b/migration/trace-events | ||
307 | @@ -XXX,XX +XXX,XX @@ migration_bitmap_sync_start(void) "" | ||
308 | migration_bitmap_sync_end(uint64_t dirty_pages) "dirty_pages %" PRIu64 | ||
309 | migration_bitmap_clear_dirty(char *str, uint64_t start, uint64_t size, unsigned long page) "rb %s start 0x%"PRIx64" size 0x%"PRIx64" page 0x%lx" | ||
310 | migration_throttle(void) "" | ||
311 | -multifd_new_send_channel_async(uint8_t id) "channel %d" | ||
312 | -multifd_recv(uint8_t id, uint64_t packet_num, uint32_t used, uint32_t flags, uint32_t next_packet_size) "channel %d packet_num %" PRIu64 " pages %d flags 0x%x next packet size %d" | ||
313 | -multifd_recv_new_channel(uint8_t id) "channel %d" | ||
314 | -multifd_recv_sync_main(long packet_num) "packet num %ld" | ||
315 | -multifd_recv_sync_main_signal(uint8_t id) "channel %d" | ||
316 | -multifd_recv_sync_main_wait(uint8_t id) "channel %d" | ||
317 | -multifd_recv_terminate_threads(bool error) "error %d" | ||
318 | -multifd_recv_thread_end(uint8_t id, uint64_t packets, uint64_t pages) "channel %d packets %" PRIu64 " pages %" PRIu64 | ||
319 | -multifd_recv_thread_start(uint8_t id) "%d" | ||
320 | -multifd_send(uint8_t id, uint64_t packet_num, uint32_t used, uint32_t flags, uint32_t next_packet_size) "channel %d packet_num %" PRIu64 " pages %d flags 0x%x next packet size %d" | ||
321 | -multifd_send_error(uint8_t id) "channel %d" | ||
322 | -multifd_send_sync_main(long packet_num) "packet num %ld" | ||
323 | -multifd_send_sync_main_signal(uint8_t id) "channel %d" | ||
324 | -multifd_send_sync_main_wait(uint8_t id) "channel %d" | ||
325 | -multifd_send_terminate_threads(bool error) "error %d" | ||
326 | -multifd_send_thread_end(uint8_t id, uint64_t packets, uint64_t pages) "channel %d packets %" PRIu64 " pages %" PRIu64 | ||
327 | -multifd_send_thread_start(uint8_t id) "%d" | ||
328 | ram_discard_range(const char *rbname, uint64_t start, size_t len) "%s: start: %" PRIx64 " %zx" | ||
329 | ram_load_loop(const char *rbname, uint64_t addr, int flags, void *host) "%s: addr: 0x%" PRIx64 " flags: 0x%x host: %p" | ||
330 | ram_load_postcopy_loop(uint64_t addr, int flags) "@%" PRIx64 " %x" | ||
331 | @@ -XXX,XX +XXX,XX @@ save_xbzrle_page_overflow(void) "" | ||
332 | ram_save_iterate_big_wait(uint64_t milliconds, int iterations) "big wait: %" PRIu64 " milliseconds, %d iterations" | ||
333 | ram_load_complete(int ret, uint64_t seq_iter) "exit_code %d seq iteration %" PRIu64 | ||
334 | |||
335 | +# multifd.c | ||
336 | +multifd_new_send_channel_async(uint8_t id) "channel %d" | ||
337 | +multifd_recv(uint8_t id, uint64_t packet_num, uint32_t used, uint32_t flags, uint32_t next_packet_size) "channel %d packet_num %" PRIu64 " pages %d flags 0x%x next packet size %d" | ||
338 | +multifd_recv_new_channel(uint8_t id) "channel %d" | ||
339 | +multifd_recv_sync_main(long packet_num) "packet num %ld" | ||
340 | +multifd_recv_sync_main_signal(uint8_t id) "channel %d" | ||
341 | +multifd_recv_sync_main_wait(uint8_t id) "channel %d" | ||
342 | +multifd_recv_terminate_threads(bool error) "error %d" | ||
343 | +multifd_recv_thread_end(uint8_t id, uint64_t packets, uint64_t pages) "channel %d packets %" PRIu64 " pages %" PRIu64 | ||
344 | +multifd_recv_thread_start(uint8_t id) "%d" | ||
345 | +multifd_send(uint8_t id, uint64_t packet_num, uint32_t used, uint32_t flags, uint32_t next_packet_size) "channel %d packet_num %" PRIu64 " pages %d flags 0x%x next packet size %d" | ||
346 | +multifd_send_error(uint8_t id) "channel %d" | ||
347 | +multifd_send_sync_main(long packet_num) "packet num %ld" | ||
348 | +multifd_send_sync_main_signal(uint8_t id) "channel %d" | ||
349 | +multifd_send_sync_main_wait(uint8_t id) "channel %d" | ||
350 | +multifd_send_terminate_threads(bool error) "error %d" | ||
351 | +multifd_send_thread_end(uint8_t id, uint64_t packets, uint64_t pages) "channel %d packets %" PRIu64 " pages %" PRIu64 | ||
352 | +multifd_send_thread_start(uint8_t id) "%d" | ||
353 | + | ||
354 | # migration.c | ||
355 | await_return_path_close_on_source_close(void) "" | ||
356 | await_return_path_close_on_source_joining(void) "" | ||
357 | diff --git a/target/riscv/trace-events b/target/riscv/trace-events | ||
358 | index XXXXXXX..XXXXXXX 100644 | ||
359 | --- a/target/riscv/trace-events | ||
360 | +++ b/target/riscv/trace-events | ||
361 | @@ -XXX,XX +XXX,XX @@ | ||
362 | -# target/riscv/cpu_helper.c | ||
363 | +# cpu_helper.c | ||
364 | riscv_trap(uint64_t hartid, bool async, uint64_t cause, uint64_t epc, uint64_t tval, const char *desc) "hart:%"PRId64", async:%d, cause:%"PRId64", epc:0x%"PRIx64", tval:0x%"PRIx64", desc=%s" | ||
365 | |||
366 | # pmp.c | ||
367 | diff --git a/trace-events b/trace-events | ||
368 | index XXXXXXX..XXXXXXX 100644 | ||
369 | --- a/trace-events | ||
370 | +++ b/trace-events | ||
371 | @@ -XXX,XX +XXX,XX @@ dma_map_wait(void *dbs) "dbs=%p" | ||
372 | find_ram_offset(uint64_t size, uint64_t offset) "size: 0x%" PRIx64 " @ 0x%" PRIx64 | ||
373 | find_ram_offset_loop(uint64_t size, uint64_t candidate, uint64_t offset, uint64_t next, uint64_t mingap) "trying size: 0x%" PRIx64 " @ 0x%" PRIx64 ", offset: 0x%" PRIx64" next: 0x%" PRIx64 " mingap: 0x%" PRIx64 | ||
374 | ram_block_discard_range(const char *rbname, void *hva, size_t length, bool need_madvise, bool need_fallocate, int ret) "%s@%p + 0x%zx: madvise: %d fallocate: %d ret: %d" | ||
375 | + | ||
376 | +# accel/tcg/cputlb.c | ||
377 | memory_notdirty_write_access(uint64_t vaddr, uint64_t ram_addr, unsigned size) "0x%" PRIx64 " ram_addr 0x%" PRIx64 " size %u" | ||
378 | memory_notdirty_set_dirty(uint64_t vaddr) "0x%" PRIx64 | ||
379 | |||
380 | @@ -XXX,XX +XXX,XX @@ vcpu guest_cpu_reset(void) | ||
381 | # Targets: TCG(all) | ||
382 | vcpu tcg guest_mem_before(TCGv vaddr, uint16_t info) "info=%d", "vaddr=0x%016"PRIx64" info=%d" | ||
383 | |||
384 | -# linux-user/syscall.c | ||
385 | -# bsd-user/syscall.c | ||
386 | +# include/user/syscall-trace.h | ||
387 | |||
388 | # @num: System call number. | ||
389 | # @arg*: System call argument value. | ||
390 | diff --git a/ui/trace-events b/ui/trace-events | ||
391 | index XXXXXXX..XXXXXXX 100644 | ||
392 | --- a/ui/trace-events | ||
393 | +++ b/ui/trace-events | ||
394 | @@ -XXX,XX +XXX,XX @@ displaychangelistener_register(void *dcl, const char *name) "%p [ %s ]" | ||
395 | displaychangelistener_unregister(void *dcl, const char *name) "%p [ %s ]" | ||
396 | ppm_save(int fd, void *display_surface) "fd=%d surface=%p" | ||
397 | |||
398 | -# gtk.c | ||
399 | -# gtk-gl-area.c | ||
400 | # gtk-egl.c | ||
401 | +# gtk-gl-area.c | ||
402 | +# gtk.c | ||
403 | gd_switch(const char *tab, int width, int height) "tab=%s, width=%d, height=%d" | ||
404 | gd_update(const char *tab, int x, int y, int w, int h) "tab=%s, x=%d, y=%d, w=%d, h=%d" | ||
405 | gd_key_event(const char *tab, int gdk_keycode, int qkeycode, const char *action) "tab=%s, translated GDK keycode %d to QKeyCode %d (%s)" | ||
406 | @@ -XXX,XX +XXX,XX @@ gd_ungrab(const char *tab, const char *device) "tab=%s, dev=%s" | ||
407 | gd_keymap_windowing(const char *name) "backend=%s" | ||
408 | |||
409 | # vnc-auth-sasl.c | ||
410 | -# vnc-ws.c | ||
411 | # vnc-auth-vencrypt.c | ||
412 | +# vnc-ws.c | ||
413 | # vnc.c | ||
414 | vnc_key_guest_leds(bool caps, bool num, bool scroll) "caps %d, num %d, scroll %d" | ||
415 | vnc_key_map_init(const char *layout) "%s" | ||
416 | diff --git a/util/trace-events b/util/trace-events | ||
417 | index XXXXXXX..XXXXXXX 100644 | ||
418 | --- a/util/trace-events | ||
419 | +++ b/util/trace-events | ||
420 | @@ -XXX,XX +XXX,XX @@ qemu_co_mutex_lock_return(void *mutex, void *self) "mutex %p self %p" | ||
421 | qemu_co_mutex_unlock_entry(void *mutex, void *self) "mutex %p self %p" | ||
422 | qemu_co_mutex_unlock_return(void *mutex, void *self) "mutex %p self %p" | ||
423 | |||
424 | -# oslib-win32.c | ||
425 | # oslib-posix.c | ||
426 | +# oslib-win32.c | ||
427 | qemu_memalign(size_t alignment, size_t size, void *ptr) "alignment %zu size %zu ptr %p" | ||
428 | qemu_anon_ram_alloc(size_t size, void *ptr) "size %zu ptr %p" | ||
429 | qemu_vfree(void *ptr) "ptr %p" | ||
430 | @@ -XXX,XX +XXX,XX @@ lockcnt_futex_wake(const void *lockcnt) "lockcnt %p waking up one waiter" | ||
431 | socket_listen(int num) "backlog: %d" | ||
432 | |||
433 | # qemu-thread-common.h | ||
434 | +# qemu-thread-posix.c | ||
435 | +# qemu-thread-win32.c | ||
436 | qemu_mutex_lock(void *mutex, const char *file, const int line) "waiting on mutex %p (%s:%d)" | ||
437 | qemu_mutex_locked(void *mutex, const char *file, const int line) "taken mutex %p (%s:%d)" | ||
438 | qemu_mutex_unlock(void *mutex, const char *file, const int line) "released mutex %p (%s:%d)" | ||
73 | -- | 439 | -- |
74 | 2.48.1 | 440 | 2.26.2 |
75 | 441 | ||
76 | diff view generated by jsdifflib |