[Bug,1085658,NEW] exec, cpu log

Submitted by Daniil Troshkov on Dec. 2, 2012, 4:16 p.m.

Details

Message ID 20121202161653.4416.21917.malonedeb@wampee.canonical.com
State New
Headers show

Commit Message

Daniil Troshkov Dec. 2, 2012, 4:16 p.m.
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

Comments

Peter Maydell Dec. 2, 2012, 6:31 p.m.
> 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.
Daniil Troshkov Dec. 2, 2012, 9:03 p.m.
** 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);
Daniil Troshkov Dec. 2, 2012, 9:08 p.m.
** Changed in: qemu
     Assignee: (unassigned) => Daniil Troshkov (troshkovdanil)

** Changed in: qemu
       Status: New => Invalid

Patch hide | download patch | download mbox

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);