1
The following changes since commit ecc1f5adeec4e3324d1b695a7c54e3967c526949:
1
The following changes since commit 15ef89d2a1a7b93845a6b09c2ee8e1979f6eb30b:
2
2
3
maintainers: Add myself as linux-user reviewer (2017-05-11 13:31:11 -0400)
3
Update version for v7.0.0-rc1 release (2022-03-22 22:58:44 +0000)
4
4
5
are available in the git repository at:
5
are available in the Git repository at:
6
6
7
git://github.com/stefanha/qemu.git tags/block-pull-request
7
https://gitlab.com/stefanha/qemu.git tags/block-pull-request
8
8
9
for you to fetch changes up to 321d1dba8bef9676a77e9399484e3cd8bf2cf16a:
9
for you to fetch changes up to 2539eade4f689eda7e9fe45486f18334bfbafaf0:
10
10
11
aio: add missing aio_notify() to aio_enable_external() (2017-05-12 10:36:46 -0400)
11
hw: Fix misleading hexadecimal format (2022-03-24 10:38:42 +0000)
12
13
----------------------------------------------------------------
14
Pull request
15
16
Philippe found cases where the 0x%d format string was used, leading to
17
misleading output. The patches look harmless and could save people time, so I
18
think it's worth including them in 7.0.
12
19
13
----------------------------------------------------------------
20
----------------------------------------------------------------
14
21
15
----------------------------------------------------------------
22
Philippe Mathieu-Daudé (2):
23
block: Fix misleading hexadecimal format
24
hw: Fix misleading hexadecimal format
16
25
17
Daniel P. Berrange (1):
26
block/parallels-ext.c | 2 +-
18
coroutine: remove GThread implementation
27
hw/i386/sgx.c | 2 +-
19
28
hw/i386/trace-events | 6 +++---
20
Eric Blake (1):
29
hw/misc/trace-events | 4 ++--
21
block: Simplify BDRV_BLOCK_RAW recursion
30
hw/scsi/trace-events | 4 ++--
22
31
5 files changed, 9 insertions(+), 9 deletions(-)
23
Stefan Hajnoczi (1):
24
aio: add missing aio_notify() to aio_enable_external()
25
26
configure | 19 ++---
27
include/block/aio.h | 10 ++-
28
block/io.c | 4 +-
29
util/coroutine-gthread.c | 198 -----------------------------------------------
30
.travis.yml | 5 +-
31
5 files changed, 16 insertions(+), 220 deletions(-)
32
delete mode 100644 util/coroutine-gthread.c
33
32
34
--
33
--
35
2.9.3
34
2.35.1
36
35
37
diff view generated by jsdifflib
Deleted patch
1
From: "Daniel P. Berrange" <berrange@redhat.com>
2
1
3
The GThread implementation is not functional enough to actually
4
run QEMU reliably. While it was potentially useful for debugging,
5
we have a scripts/qemugdb/coroutine.py to enable tracing of
6
ucontext coroutines in GDB, so that removes the only reason for
7
GThread to exist.
8
9
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
10
Acked-by: Alex Bennée <alex.bennee@linaro.org>
11
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
12
---
13
configure | 19 ++---
14
util/coroutine-gthread.c | 198 -----------------------------------------------
15
.travis.yml | 5 +-
16
3 files changed, 6 insertions(+), 216 deletions(-)
17
delete mode 100644 util/coroutine-gthread.c
18
19
diff --git a/configure b/configure
20
index XXXXXXX..XXXXXXX 100755
21
--- a/configure
22
+++ b/configure
23
@@ -XXX,XX +XXX,XX @@ Advanced options (experts only):
24
--oss-lib path to OSS library
25
--cpu=CPU Build for host CPU [$cpu]
26
--with-coroutine=BACKEND coroutine backend. Supported options:
27
- gthread, ucontext, sigaltstack, windows
28
+ ucontext, sigaltstack, windows
29
--enable-gcov enable test coverage analysis with gcov
30
--gcov=GCOV use specified gcov [$gcov_tool]
31
--disable-blobs disable installing provided firmware blobs
32
@@ -XXX,XX +XXX,XX @@ fi
33
# check and set a backend for coroutine
34
35
# We prefer ucontext, but it's not always possible. The fallback
36
-# is sigcontext. gthread is not selectable except explicitly, because
37
-# it is not functional enough to run QEMU proper. (It is occasionally
38
-# useful for debugging purposes.) On Windows the only valid backend
39
-# is the Windows-specific one.
40
+# is sigcontext. On Windows the only valid backend is the Windows
41
+# specific one.
42
43
ucontext_works=no
44
if test "$darwin" != "yes"; then
45
@@ -XXX,XX +XXX,XX @@ else
46
feature_not_found "ucontext"
47
fi
48
;;
49
- gthread|sigaltstack)
50
+ sigaltstack)
51
if test "$mingw32" = "yes"; then
52
error_exit "only the 'windows' coroutine backend is valid for Windows"
53
fi
54
@@ -XXX,XX +XXX,XX @@ else
55
fi
56
57
if test "$coroutine_pool" = ""; then
58
- if test "$coroutine" = "gthread"; then
59
- coroutine_pool=no
60
- else
61
- coroutine_pool=yes
62
- fi
63
-fi
64
-if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
65
- error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
66
+ coroutine_pool=yes
67
fi
68
69
if test "$debug_stack_usage" = "yes"; then
70
diff --git a/util/coroutine-gthread.c b/util/coroutine-gthread.c
71
deleted file mode 100644
72
index XXXXXXX..XXXXXXX
73
--- a/util/coroutine-gthread.c
74
+++ /dev/null
75
@@ -XXX,XX +XXX,XX @@
76
-/*
77
- * GThread coroutine initialization code
78
- *
79
- * Copyright (C) 2006 Anthony Liguori <anthony@codemonkey.ws>
80
- * Copyright (C) 2011 Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
81
- *
82
- * This library is free software; you can redistribute it and/or
83
- * modify it under the terms of the GNU Lesser General Public
84
- * License as published by the Free Software Foundation; either
85
- * version 2.0 of the License, or (at your option) any later version.
86
- *
87
- * This library is distributed in the hope that it will be useful,
88
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
89
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
90
- * Lesser General Public License for more details.
91
- *
92
- * You should have received a copy of the GNU Lesser General Public
93
- * License along with this library; if not, see <http://www.gnu.org/licenses/>.
94
- */
95
-
96
-#include "qemu/osdep.h"
97
-#include "qemu-common.h"
98
-#include "qemu/coroutine_int.h"
99
-
100
-typedef struct {
101
- Coroutine base;
102
- GThread *thread;
103
- bool runnable;
104
- bool free_on_thread_exit;
105
- CoroutineAction action;
106
-} CoroutineGThread;
107
-
108
-static CompatGMutex coroutine_lock;
109
-static CompatGCond coroutine_cond;
110
-
111
-/* GLib 2.31 and beyond deprecated various parts of the thread API,
112
- * but the new interfaces are not available in older GLib versions
113
- * so we have to cope with both.
114
- */
115
-#if GLIB_CHECK_VERSION(2, 31, 0)
116
-/* Awkwardly, the GPrivate API doesn't provide a way to update the
117
- * GDestroyNotify handler for the coroutine key dynamically. So instead
118
- * we track whether or not the CoroutineGThread should be freed on
119
- * thread exit / coroutine key update using the free_on_thread_exit
120
- * field.
121
- */
122
-static void coroutine_destroy_notify(gpointer data)
123
-{
124
- CoroutineGThread *co = data;
125
- if (co && co->free_on_thread_exit) {
126
- g_free(co);
127
- }
128
-}
129
-
130
-static GPrivate coroutine_key = G_PRIVATE_INIT(coroutine_destroy_notify);
131
-
132
-static inline CoroutineGThread *get_coroutine_key(void)
133
-{
134
- return g_private_get(&coroutine_key);
135
-}
136
-
137
-static inline void set_coroutine_key(CoroutineGThread *co,
138
- bool free_on_thread_exit)
139
-{
140
- /* Unlike g_static_private_set() this does not call the GDestroyNotify
141
- * if the previous value of the key was NULL. Fortunately we only need
142
- * the GDestroyNotify in the non-NULL key case.
143
- */
144
- co->free_on_thread_exit = free_on_thread_exit;
145
- g_private_replace(&coroutine_key, co);
146
-}
147
-
148
-static inline GThread *create_thread(GThreadFunc func, gpointer data)
149
-{
150
- return g_thread_new("coroutine", func, data);
151
-}
152
-
153
-#else
154
-
155
-/* Handle older GLib versions */
156
-
157
-static GStaticPrivate coroutine_key = G_STATIC_PRIVATE_INIT;
158
-
159
-static inline CoroutineGThread *get_coroutine_key(void)
160
-{
161
- return g_static_private_get(&coroutine_key);
162
-}
163
-
164
-static inline void set_coroutine_key(CoroutineGThread *co,
165
- bool free_on_thread_exit)
166
-{
167
- g_static_private_set(&coroutine_key, co,
168
- free_on_thread_exit ? (GDestroyNotify)g_free : NULL);
169
-}
170
-
171
-static inline GThread *create_thread(GThreadFunc func, gpointer data)
172
-{
173
- return g_thread_create_full(func, data, 0, TRUE, TRUE,
174
- G_THREAD_PRIORITY_NORMAL, NULL);
175
-}
176
-
177
-#endif
178
-
179
-
180
-static void __attribute__((constructor)) coroutine_init(void)
181
-{
182
-#if !GLIB_CHECK_VERSION(2, 31, 0)
183
- if (!g_thread_supported()) {
184
- g_thread_init(NULL);
185
- }
186
-#endif
187
-}
188
-
189
-static void coroutine_wait_runnable_locked(CoroutineGThread *co)
190
-{
191
- while (!co->runnable) {
192
- g_cond_wait(&coroutine_cond, &coroutine_lock);
193
- }
194
-}
195
-
196
-static void coroutine_wait_runnable(CoroutineGThread *co)
197
-{
198
- g_mutex_lock(&coroutine_lock);
199
- coroutine_wait_runnable_locked(co);
200
- g_mutex_unlock(&coroutine_lock);
201
-}
202
-
203
-static gpointer coroutine_thread(gpointer opaque)
204
-{
205
- CoroutineGThread *co = opaque;
206
-
207
- set_coroutine_key(co, false);
208
- coroutine_wait_runnable(co);
209
- co->base.entry(co->base.entry_arg);
210
- qemu_coroutine_switch(&co->base, co->base.caller, COROUTINE_TERMINATE);
211
- return NULL;
212
-}
213
-
214
-Coroutine *qemu_coroutine_new(void)
215
-{
216
- CoroutineGThread *co;
217
-
218
- co = g_malloc0(sizeof(*co));
219
- co->thread = create_thread(coroutine_thread, co);
220
- if (!co->thread) {
221
- g_free(co);
222
- return NULL;
223
- }
224
- return &co->base;
225
-}
226
-
227
-void qemu_coroutine_delete(Coroutine *co_)
228
-{
229
- CoroutineGThread *co = DO_UPCAST(CoroutineGThread, base, co_);
230
-
231
- g_thread_join(co->thread);
232
- g_free(co);
233
-}
234
-
235
-CoroutineAction qemu_coroutine_switch(Coroutine *from_,
236
- Coroutine *to_,
237
- CoroutineAction action)
238
-{
239
- CoroutineGThread *from = DO_UPCAST(CoroutineGThread, base, from_);
240
- CoroutineGThread *to = DO_UPCAST(CoroutineGThread, base, to_);
241
-
242
- g_mutex_lock(&coroutine_lock);
243
- from->runnable = false;
244
- from->action = action;
245
- to->runnable = true;
246
- to->action = action;
247
- g_cond_broadcast(&coroutine_cond);
248
-
249
- if (action != COROUTINE_TERMINATE) {
250
- coroutine_wait_runnable_locked(from);
251
- }
252
- g_mutex_unlock(&coroutine_lock);
253
- return from->action;
254
-}
255
-
256
-Coroutine *qemu_coroutine_self(void)
257
-{
258
- CoroutineGThread *co = get_coroutine_key();
259
- if (!co) {
260
- co = g_malloc0(sizeof(*co));
261
- co->runnable = true;
262
- set_coroutine_key(co, true);
263
- }
264
-
265
- return &co->base;
266
-}
267
-
268
-bool qemu_in_coroutine(void)
269
-{
270
- CoroutineGThread *co = get_coroutine_key();
271
-
272
- return co && co->base.caller;
273
-}
274
diff --git a/.travis.yml b/.travis.yml
275
index XXXXXXX..XXXXXXX 100644
276
--- a/.travis.yml
277
+++ b/.travis.yml
278
@@ -XXX,XX +XXX,XX @@ matrix:
279
- env: CONFIG="--enable-trace-backends=ust"
280
TEST_CMD=""
281
compiler: gcc
282
- - env: CONFIG="--with-coroutine=gthread"
283
- TEST_CMD=""
284
- compiler: gcc
285
- env: CONFIG=""
286
os: osx
287
compiler: clang
288
@@ -XXX,XX +XXX,XX @@ matrix:
289
compiler: none
290
env:
291
- COMPILER_NAME=gcc CXX=g++-5 CC=gcc-5
292
- - CONFIG="--cc=gcc-5 --cxx=g++-5 --disable-pie --disable-linux-user --with-coroutine=gthread"
293
+ - CONFIG="--cc=gcc-5 --cxx=g++-5 --disable-pie --disable-linux-user"
294
- TEST_CMD=""
295
before_script:
296
- ./configure ${CONFIG} --extra-cflags="-g3 -O0 -fsanitize=thread -fuse-ld=gold" || cat config.log
297
--
298
2.9.3
299
300
diff view generated by jsdifflib
1
The main loop uses aio_disable_external()/aio_enable_external() to
1
From: Philippe Mathieu-Daudé <f4bug@amsat.org>
2
temporarily disable processing of external AioContext clients like
3
device emulation.
4
2
5
This allows monitor commands to quiesce I/O and prevent the guest from
3
"0x%u" format is very misleading, replace by "0x%x".
6
submitting new requests while a monitor command is in progress.
7
4
8
The aio_enable_external() API is currently broken when an IOThread is in
5
Found running:
9
aio_poll() waiting for fd activity when the main loop re-enables
10
external clients. Incrementing ctx->external_disable_cnt does not wake
11
the IOThread from ppoll(2) so fd processing remains suspended and leads
12
to unresponsive emulated devices.
13
6
14
This patch adds an aio_notify() call to aio_enable_external() so the
7
$ git grep -E '0x%[0-9]*([lL]*|" ?PRI)[dDuU]' block/
15
IOThread is kicked out of ppoll(2) and will re-arm the file descriptors.
16
8
17
The bug can be reproduced as follows:
9
Inspired-by: Richard Henderson <richard.henderson@linaro.org>
18
10
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
19
$ qemu -M accel=kvm -m 1024 \
11
Reviewed-by: Hanna Reitz <hreitz@redhat.com>
20
-object iothread,id=iothread0 \
12
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
21
-device virtio-scsi-pci,iothread=iothread0,id=virtio-scsi-pci0 \
13
Reviewed-by: Denis V. Lunev <den@openvz.org>
22
-drive if=none,id=drive0,aio=native,cache=none,format=raw,file=test.img \
14
Message-id: 20220323114718.58714-2-philippe.mathieu.daude@gmail.com
23
-device scsi-hd,id=scsi-hd0,drive=drive0 \
24
-qmp tcp::5555,server,nowait
25
26
$ scripts/qmp/qmp-shell localhost:5555
27
(qemu) blockdev-snapshot-sync device=drive0 snapshot-file=sn1.qcow2
28
mode=absolute-paths format=qcow2
29
30
After blockdev-snapshot-sync completes the SCSI disk will be
31
unresponsive. This leads to request timeouts inside the guest.
32
33
Reported-by: Qianqian Zhu <qizhu@redhat.com>
34
Reviewed-by: Fam Zheng <famz@redhat.com>
35
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
36
Message-id: 20170508180705.20609-1-stefanha@redhat.com
37
Suggested-by: Fam Zheng <famz@redhat.com>
38
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
15
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
39
---
16
---
40
include/block/aio.h | 10 ++++++++--
17
block/parallels-ext.c | 2 +-
41
1 file changed, 8 insertions(+), 2 deletions(-)
18
1 file changed, 1 insertion(+), 1 deletion(-)
42
19
43
diff --git a/include/block/aio.h b/include/block/aio.h
20
diff --git a/block/parallels-ext.c b/block/parallels-ext.c
44
index XXXXXXX..XXXXXXX 100644
21
index XXXXXXX..XXXXXXX 100644
45
--- a/include/block/aio.h
22
--- a/block/parallels-ext.c
46
+++ b/include/block/aio.h
23
+++ b/block/parallels-ext.c
47
@@ -XXX,XX +XXX,XX @@ static inline void aio_disable_external(AioContext *ctx)
24
@@ -XXX,XX +XXX,XX @@ static int parallels_parse_format_extension(BlockDriverState *bs,
48
*/
25
break;
49
static inline void aio_enable_external(AioContext *ctx)
26
50
{
27
default:
51
- assert(ctx->external_disable_cnt > 0);
28
- error_setg(errp, "Unknown feature: 0x%" PRIu64, fh.magic);
52
- atomic_dec(&ctx->external_disable_cnt);
29
+ error_setg(errp, "Unknown feature: 0x%" PRIx64, fh.magic);
53
+ int old;
30
goto fail;
54
+
31
}
55
+ old = atomic_fetch_dec(&ctx->external_disable_cnt);
32
56
+ assert(old > 0);
57
+ if (old == 1) {
58
+ /* Kick event loop so it re-arms file descriptors */
59
+ aio_notify(ctx);
60
+ }
61
}
62
63
/**
64
--
33
--
65
2.9.3
34
2.35.1
66
35
67
36
diff view generated by jsdifflib
1
From: Eric Blake <eblake@redhat.com>
1
From: Philippe Mathieu-Daudé <f4bug@amsat.org>
2
2
3
Since we are already in coroutine context during the body of
3
"0x%u" format is very misleading, replace by "0x%x".
4
bdrv_co_get_block_status(), we can shave off a few layers of
5
wrappers when recursing to query the protocol when a format driver
6
returned BDRV_BLOCK_RAW.
7
4
8
Note that we are already using the correct recursion later on in
5
Found running:
9
the same function, when probing whether the protocol layer is sparse
10
in order to find out if we can add BDRV_BLOCK_ZERO to an existing
11
BDRV_BLOCK_DATA|BDRV_BLOCK_OFFSET_VALID.
12
6
13
Signed-off-by: Eric Blake <eblake@redhat.com>
7
$ git grep -E '0x%[0-9]*([lL]*|" ?PRI)[dDuU]' hw/
14
Reviewed-by: Max Reitz <mreitz@redhat.com>
8
15
Reviewed-by: Fam Zheng <famz@redhat.com>
9
Inspired-by: Richard Henderson <richard.henderson@linaro.org>
16
Message-id: 20170504173745.27414-1-eblake@redhat.com
10
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
11
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
12
Message-id: 20220323114718.58714-3-philippe.mathieu.daude@gmail.com
17
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
13
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
18
---
14
---
19
block/io.c | 4 ++--
15
hw/i386/sgx.c | 2 +-
20
1 file changed, 2 insertions(+), 2 deletions(-)
16
hw/i386/trace-events | 6 +++---
17
hw/misc/trace-events | 4 ++--
18
hw/scsi/trace-events | 4 ++--
19
4 files changed, 8 insertions(+), 8 deletions(-)
21
20
22
diff --git a/block/io.c b/block/io.c
21
diff --git a/hw/i386/sgx.c b/hw/i386/sgx.c
23
index XXXXXXX..XXXXXXX 100644
22
index XXXXXXX..XXXXXXX 100644
24
--- a/block/io.c
23
--- a/hw/i386/sgx.c
25
+++ b/block/io.c
24
+++ b/hw/i386/sgx.c
26
@@ -XXX,XX +XXX,XX @@ static int64_t coroutine_fn bdrv_co_get_block_status(BlockDriverState *bs,
25
@@ -XXX,XX +XXX,XX @@ void pc_machine_init_sgx_epc(PCMachineState *pcms)
27
28
if (ret & BDRV_BLOCK_RAW) {
29
assert(ret & BDRV_BLOCK_OFFSET_VALID);
30
- ret = bdrv_get_block_status(*file, ret >> BDRV_SECTOR_BITS,
31
- *pnum, pnum, file);
32
+ ret = bdrv_co_get_block_status(*file, ret >> BDRV_SECTOR_BITS,
33
+ *pnum, pnum, file);
34
goto out;
35
}
26
}
36
27
28
if ((sgx_epc->base + sgx_epc->size) < sgx_epc->base) {
29
- error_report("Size of all 'sgx-epc' =0x%"PRIu64" causes EPC to wrap",
30
+ error_report("Size of all 'sgx-epc' =0x%"PRIx64" causes EPC to wrap",
31
sgx_epc->size);
32
exit(EXIT_FAILURE);
33
}
34
diff --git a/hw/i386/trace-events b/hw/i386/trace-events
35
index XXXXXXX..XXXXXXX 100644
36
--- a/hw/i386/trace-events
37
+++ b/hw/i386/trace-events
38
@@ -XXX,XX +XXX,XX @@ vtd_fault_disabled(void) "Fault processing disabled for context entry"
39
vtd_replay_ce_valid(const char *mode, uint8_t bus, uint8_t dev, uint8_t fn, uint16_t domain, uint64_t hi, uint64_t lo) "%s: replay valid context device %02"PRIx8":%02"PRIx8".%02"PRIx8" domain 0x%"PRIx16" hi 0x%"PRIx64" lo 0x%"PRIx64
40
vtd_replay_ce_invalid(uint8_t bus, uint8_t dev, uint8_t fn) "replay invalid context device %02"PRIx8":%02"PRIx8".%02"PRIx8
41
vtd_page_walk_level(uint64_t addr, uint32_t level, uint64_t start, uint64_t end) "walk (base=0x%"PRIx64", level=%"PRIu32") iova range 0x%"PRIx64" - 0x%"PRIx64
42
-vtd_page_walk_one(uint16_t domain, uint64_t iova, uint64_t gpa, uint64_t mask, int perm) "domain 0x%"PRIu16" iova 0x%"PRIx64" -> gpa 0x%"PRIx64" mask 0x%"PRIx64" perm %d"
43
+vtd_page_walk_one(uint16_t domain, uint64_t iova, uint64_t gpa, uint64_t mask, int perm) "domain 0x%"PRIx16" iova 0x%"PRIx64" -> gpa 0x%"PRIx64" mask 0x%"PRIx64" perm %d"
44
vtd_page_walk_one_skip_map(uint64_t iova, uint64_t mask, uint64_t translated) "iova 0x%"PRIx64" mask 0x%"PRIx64" translated 0x%"PRIx64
45
vtd_page_walk_one_skip_unmap(uint64_t iova, uint64_t mask) "iova 0x%"PRIx64" mask 0x%"PRIx64
46
vtd_page_walk_skip_read(uint64_t iova, uint64_t next) "Page walk skip iova 0x%"PRIx64" - 0x%"PRIx64" due to unable to read"
47
vtd_page_walk_skip_reserve(uint64_t iova, uint64_t next) "Page walk skip iova 0x%"PRIx64" - 0x%"PRIx64" due to rsrv set"
48
vtd_switch_address_space(uint8_t bus, uint8_t slot, uint8_t fn, bool on) "Device %02x:%02x.%x switching address space (iommu enabled=%d)"
49
vtd_as_unmap_whole(uint8_t bus, uint8_t slot, uint8_t fn, uint64_t iova, uint64_t size) "Device %02x:%02x.%x start 0x%"PRIx64" size 0x%"PRIx64
50
-vtd_translate_pt(uint16_t sid, uint64_t addr) "source id 0x%"PRIu16", iova 0x%"PRIx64
51
-vtd_pt_enable_fast_path(uint16_t sid, bool success) "sid 0x%"PRIu16" %d"
52
+vtd_translate_pt(uint16_t sid, uint64_t addr) "source id 0x%"PRIx16", iova 0x%"PRIx64
53
+vtd_pt_enable_fast_path(uint16_t sid, bool success) "sid 0x%"PRIx16" %d"
54
vtd_irq_generate(uint64_t addr, uint64_t data) "addr 0x%"PRIx64" data 0x%"PRIx64
55
vtd_reg_read(uint64_t addr, uint64_t size) "addr 0x%"PRIx64" size 0x%"PRIx64
56
vtd_reg_write(uint64_t addr, uint64_t size, uint64_t val) "addr 0x%"PRIx64" size 0x%"PRIx64" value 0x%"PRIx64
57
diff --git a/hw/misc/trace-events b/hw/misc/trace-events
58
index XXXXXXX..XXXXXXX 100644
59
--- a/hw/misc/trace-events
60
+++ b/hw/misc/trace-events
61
@@ -XXX,XX +XXX,XX @@
62
# See docs/devel/tracing.rst for syntax documentation.
63
64
# allwinner-cpucfg.c
65
-allwinner_cpucfg_cpu_reset(uint8_t cpu_id, uint32_t reset_addr) "id %u, reset_addr 0x%" PRIu32
66
+allwinner_cpucfg_cpu_reset(uint8_t cpu_id, uint32_t reset_addr) "id %u, reset_addr 0x%" PRIx32
67
allwinner_cpucfg_read(uint64_t offset, uint64_t data, unsigned size) "offset 0x%" PRIx64 " data 0x%" PRIx64 " size %" PRIu32
68
allwinner_cpucfg_write(uint64_t offset, uint64_t data, unsigned size) "offset 0x%" PRIx64 " data 0x%" PRIx64 " size %" PRIu32
69
70
@@ -XXX,XX +XXX,XX @@ imx7_gpr_write(uint64_t offset, uint64_t value) "addr 0x%08" PRIx64 "value 0x%08
71
72
# mos6522.c
73
mos6522_set_counter(int index, unsigned int val) "T%d.counter=%d"
74
-mos6522_get_next_irq_time(uint16_t latch, int64_t d, int64_t delta) "latch=%d counter=0x%"PRId64 " delta_next=0x%"PRId64
75
+mos6522_get_next_irq_time(uint16_t latch, int64_t d, int64_t delta) "latch=%d counter=0x%"PRIx64 " delta_next=0x%"PRIx64
76
mos6522_set_sr_int(void) "set sr_int"
77
mos6522_write(uint64_t addr, const char *name, uint64_t val) "reg=0x%"PRIx64 " [%s] val=0x%"PRIx64
78
mos6522_read(uint64_t addr, const char *name, unsigned val) "reg=0x%"PRIx64 " [%s] val=0x%x"
79
diff --git a/hw/scsi/trace-events b/hw/scsi/trace-events
80
index XXXXXXX..XXXXXXX 100644
81
--- a/hw/scsi/trace-events
82
+++ b/hw/scsi/trace-events
83
@@ -XXX,XX +XXX,XX @@ lsi_bad_phase_interrupt(void) "Phase mismatch interrupt"
84
lsi_bad_selection(uint32_t id) "Selected absent target %"PRIu32
85
lsi_do_dma_unavailable(void) "DMA no data available"
86
lsi_do_dma(uint64_t addr, int len) "DMA addr=0x%"PRIx64" len=%d"
87
-lsi_queue_command(uint32_t tag) "Queueing tag=0x%"PRId32
88
+lsi_queue_command(uint32_t tag) "Queueing tag=0x%"PRIx32
89
lsi_add_msg_byte_error(void) "MSG IN data too long"
90
lsi_add_msg_byte(uint8_t data) "MSG IN 0x%02x"
91
lsi_reselect(int id) "Reselected target %d"
92
@@ -XXX,XX +XXX,XX @@ lsi_do_msgout_noop(void) "MSG: No Operation"
93
lsi_do_msgout_extended(uint8_t msg, uint8_t len) "Extended message 0x%x (len %d)"
94
lsi_do_msgout_ignored(const char *msg) "%s (ignored)"
95
lsi_do_msgout_simplequeue(uint8_t select_tag) "SIMPLE queue tag=0x%x"
96
-lsi_do_msgout_abort(uint32_t tag) "MSG: ABORT TAG tag=0x%"PRId32
97
+lsi_do_msgout_abort(uint32_t tag) "MSG: ABORT TAG tag=0x%"PRIx32
98
lsi_do_msgout_clearqueue(uint32_t tag) "MSG: CLEAR QUEUE tag=0x%"PRIx32
99
lsi_do_msgout_busdevicereset(uint32_t tag) "MSG: BUS DEVICE RESET tag=0x%"PRIx32
100
lsi_do_msgout_select(int id) "Select LUN %d"
37
--
101
--
38
2.9.3
102
2.35.1
39
103
40
104
diff view generated by jsdifflib