| Submitter | Daniil Troshkov |
|---|---|
| Date | Dec. 2, 2012, 4:16 p.m. |
| Message ID | <20121202161653.4416.21917.malonedeb@wampee.canonical.com> |
| Download | mbox | patch |
| Permalink | /patch/203248/ |
| State | New |
| Headers | show |
Comments
> CPU_LOG_EXEC (and CPU_LOG_TB_CPU) does not work (i.e. not of each tb
dumped) because tb links is occur.
This is true, but I'm afraid I don't think this patch is the right
approach. Enabling debug tracing shouldn't cause us to change behaviour,
so we can't just disable TB linking when doing debug logging.
** Description changed:
Hello!
CPU_LOG_EXEC (and CPU_LOG_TB_CPU) does not work (i.e. not of each tb dumped) because tb links is occur.
Patch:
diff --git a/cpu-exec.c b/cpu-exec.c
index 904ee73..509d50c 100644
--- a/cpu-exec.c
+++ b/cpu-exec.c
@@ -582,7 +582,11 @@ int cpu_exec(CPUArchState *env)
- /* see if we can patch the calling TB. When the TB
- spans two pages, we cannot safely do a direct
- jump. */
+ /* see if we can patch the calling TB. When the TB
+ spans two pages, we cannot safely do a direct
+ jump. */
- if (next_tb != 0 && tb->page_addr[1] == -1) {
+ if (next_tb != 0 && tb->page_addr[1] == -1
+#ifdef CONFIG_DEBUG_EXEC
+ && !qemu_loglevel_mask(CPU_LOG_EXEC | CPU_LOG_TB_CPU)
+#endif
+ ) {
- tb_add_jump((TranslationBlock *)(next_tb & ~3), next_tb & 3, tb);
- }
- spin_unlock(&tb_lock);
+ tb_add_jump((TranslationBlock *)(next_tb & ~3), next_tb & 3, tb);
+ }
+ spin_unlock(&tb_lock);
** Changed in: qemu
Assignee: (unassigned) => Daniil Troshkov (troshkovdanil)
** Changed in: qemu
Status: New => Invalid
Patch
diff --git a/cpu-exec.c b/cpu-exec.c index 904ee73..509d50c 100644 --- a/cpu-exec.c +++ b/cpu-exec.c @@ -582,7 +582,11 @@ int cpu_exec(CPUArchState *env) /* see if we can patch the calling TB. When the TB spans two pages, we cannot safely do a direct jump. */ - if (next_tb != 0 && tb->page_addr[1] == -1) { + if (next_tb != 0 && tb->page_addr[1] == -1 +#ifdef CONFIG_DEBUG_EXEC + && !qemu_loglevel_mask(CPU_LOG_EXEC | CPU_LOG_TB_CPU) +#endif + ) { tb_add_jump((TranslationBlock *)(next_tb & ~3), next_tb & 3, tb); } spin_unlock(&tb_lock);
Public bug reported: Hello! CPU_LOG_EXEC (and CPU_LOG_TB_CPU) does not work (i.e. not of each tb dumped) because tb links is occur. Patch: ** Affects: qemu Importance: Undecided Status: New