All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 00/11] Avoid always-active qemu_log calls
@ 2015-12-12 10:36 Paolo Bonzini
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 01/11] qemu-log: introduce qemu_log_separate Paolo Bonzini
                   ` (10 more replies)
  0 siblings, 11 replies; 22+ messages in thread
From: Paolo Bonzini @ 2015-12-12 10:36 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell

qemu_log calls should generally be wrapped by DEBUG_* preprocessor
symbols or (preferred) qemu_log_mask should be used instead.  This 
avoids that the upcoming integration of logging and tracing prints
some log messages to stderr unconditionally.

Similarly, most occurrences of qemu_log_enabled() should be changed
to qemu_log_mask().  One exception is when these always-active qemu_log
calls are coupled with printfs to stdout or stderr.  These should be
skipped if stderr is _already_ the logging destination, and the
series thus introduces a new predicate qemu_log_separate() to
replace qemu_log_enabled() in some cases.

This series removes all the instances that I could find of these
problems.

Paolo

Paolo Bonzini (11):
  qemu-log: introduce qemu_log_separate
  alpha: convert "naked" qemu_log to tracepoint
  cris: avoid "naked" qemu_log
  microblaze: avoid "naked" qemu_log
  s390x: avoid "naked" qemu_log
  ppc: cleanup logging
  tricore: avoid "naked" qemu_log
  xtensa: avoid "naked" qemu_log
  user: introduce "-d page"
  linux-user: avoid "naked" qemu_log
  linux-user: convert DEBUG_SIGNAL logging to tracepoints

 bsd-user/main.c               |   4 +-
 bsd-user/signal.c             |   2 -
 exec.c                        |   2 +-
 hw/alpha/pci.c                |   3 +-
 hw/char/etraxfs_ser.c         |   2 +-
 include/qemu/log.h            |   8 +++
 linux-user/elfload.c          |   8 +--
 linux-user/main.c             |  75 ++++++++++++---------------
 linux-user/signal.c           | 118 +++++++++++++++++++++---------------------
 qemu-log.c                    |   2 +
 target-cris/helper.h          |   1 -
 target-cris/op_helper.c       |   5 --
 target-cris/translate.c       |   8 +--
 target-cris/translate_v10.c   |   2 +-
 target-microblaze/helper.c    |   2 +-
 target-microblaze/mmu.c       |  20 +++----
 target-microblaze/op_helper.c |   8 +--
 target-microblaze/translate.c |   2 +-
 target-ppc/excp_helper.c      |   8 +--
 target-ppc/mmu-hash32.c       |  12 +----
 target-ppc/mmu-hash64.c       |   9 +---
 target-ppc/mmu_helper.c       |  15 +++---
 target-ppc/timebase_helper.c  |  10 ++--
 target-ppc/translate.c        |  62 +++++++++++-----------
 target-s390x/cc_helper.c      |   2 +-
 target-s390x/helper.c         |   2 +-
 target-s390x/misc_helper.c    |   2 +-
 target-s390x/mmu_helper.c     |   2 +-
 target-tricore/helper.c       |   4 +-
 target-xtensa/gdbstub.c       |   8 +--
 target-xtensa/helper.c        |   4 +-
 target-xtensa/op_helper.c     |  20 +++----
 target-xtensa/translate.c     |  28 +++++-----
 target-xtensa/xtensa-semi.c   |   2 +-
 trace-events                  |  14 +++++
 35 files changed, 237 insertions(+), 239 deletions(-)

-- 
2.5.0

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PATCH 01/11] qemu-log: introduce qemu_log_separate
  2015-12-12 10:36 [Qemu-devel] [PATCH 00/11] Avoid always-active qemu_log calls Paolo Bonzini
@ 2015-12-12 10:36 ` Paolo Bonzini
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 02/11] alpha: convert "naked" qemu_log to tracepoint Paolo Bonzini
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 22+ messages in thread
From: Paolo Bonzini @ 2015-12-12 10:36 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell

In some cases, the same message is printed both on stderr and in the log.
Avoid duplicate output in the default case where stderr _is_ the log,
and standardize this to stderr+log where it used to use stdio+log.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 exec.c                    |  2 +-
 include/qemu/log.h        |  7 +++++++
 linux-user/main.c         |  4 ++--
 target-cris/translate.c   |  6 ++++--
 target-ppc/excp_helper.c  |  7 +++----
 target-ppc/translate.c    | 40 ++++++++++++++++++++++++----------------
 target-s390x/helper.c     |  2 +-
 target-s390x/mmu_helper.c |  2 +-
 8 files changed, 43 insertions(+), 27 deletions(-)

diff --git a/exec.c b/exec.c
index 53a4b8c..dd11ef9 100644
--- a/exec.c
+++ b/exec.c
@@ -870,7 +870,7 @@ void cpu_abort(CPUState *cpu, const char *fmt, ...)
     vfprintf(stderr, fmt, ap);
     fprintf(stderr, "\n");
     cpu_dump_state(cpu, stderr, fprintf, CPU_DUMP_FPU | CPU_DUMP_CCOP);
-    if (qemu_log_enabled()) {
+    if (qemu_log_separate()) {
         qemu_log("qemu: fatal: ");
         qemu_log_vprintf(fmt, ap2);
         qemu_log("\n");
diff --git a/include/qemu/log.h b/include/qemu/log.h
index 362cbc4..964ab9d 100644
--- a/include/qemu/log.h
+++ b/include/qemu/log.h
@@ -28,6 +28,13 @@ static inline bool qemu_log_enabled(void)
     return qemu_logfile != NULL;
 }
 
+/* Returns true if qemu_log() will write somewhere else than stderr
+ */
+static inline bool qemu_log_separate(void)
+{
+    return qemu_logfile != NULL && qemu_logfile != stderr;
+}
+
 #define CPU_LOG_TB_OUT_ASM (1 << 0)
 #define CPU_LOG_TB_IN_ASM  (1 << 1)
 #define CPU_LOG_TB_OP      (1 << 2)
diff --git a/linux-user/main.c b/linux-user/main.c
index 8acfe0f..a04e91e 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -1472,8 +1472,8 @@ do {                                                                    \
     CPUState *cs = ENV_GET_CPU(env);                                    \
     fprintf(stderr, fmt , ## __VA_ARGS__);                              \
     cpu_dump_state(cs, stderr, fprintf, 0);                             \
-    qemu_log(fmt, ## __VA_ARGS__);                                      \
-    if (qemu_log_enabled()) {                                           \
+    if (qemu_log_separate()) {                                          \
+        qemu_log(fmt, ## __VA_ARGS__);                                  \
         log_cpu_state(cs, 0);                                           \
     }                                                                   \
 } while (0)
diff --git a/target-cris/translate.c b/target-cris/translate.c
index 2d710cc..354c86d 100644
--- a/target-cris/translate.c
+++ b/target-cris/translate.c
@@ -130,8 +130,10 @@ typedef struct DisasContext {
 
 static void gen_BUG(DisasContext *dc, const char *file, int line)
 {
-    printf("BUG: pc=%x %s %d\n", dc->pc, file, line);
-    qemu_log("BUG: pc=%x %s %d\n", dc->pc, file, line);
+    fprintf(stderr, "BUG: pc=%x %s %d\n", dc->pc, file, line);
+    if (qemu_log_separate()) {
+        qemu_log("BUG: pc=%x %s %d\n", dc->pc, file, line);
+    }
     cpu_abort(CPU(dc->cpu), "%s:%d\n", file, line);
 }
 
diff --git a/target-ppc/excp_helper.c b/target-ppc/excp_helper.c
index 4250106..102d789 100644
--- a/target-ppc/excp_helper.c
+++ b/target-ppc/excp_helper.c
@@ -131,12 +131,11 @@ static inline void powerpc_excp(PowerPCCPU *cpu, int excp_model, int excp)
             /* Machine check exception is not enabled.
              * Enter checkstop state.
              */
-            if (qemu_log_enabled()) {
+            fprintf(stderr, "Machine check while not allowed. "
+                    "Entering checkstop state\n");
+            if (qemu_log_separate()) {
                 qemu_log("Machine check while not allowed. "
                         "Entering checkstop state\n");
-            } else {
-                fprintf(stderr, "Machine check while not allowed. "
-                        "Entering checkstop state\n");
             }
             cs->halted = 1;
             cs->interrupt_request |= CPU_INTERRUPT_EXITTB;
diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index 41a7258..cdf46dd 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -4285,19 +4285,23 @@ static inline void gen_op_mfspr(DisasContext *ctx)
              * allowing userland application to read the PVR
              */
             if (sprn != SPR_PVR) {
-                qemu_log("Trying to read privileged spr %d (0x%03x) at "
-                         TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
-                printf("Trying to read privileged spr %d (0x%03x) at "
-                       TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
+                fprintf(stderr, "Trying to read privileged spr %d (0x%03x) at "
+                        TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
+                if (qemu_log_separate()) {
+                    qemu_log("Trying to read privileged spr %d (0x%03x) at "
+                             TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
+                }
             }
             gen_inval_exception(ctx, POWERPC_EXCP_PRIV_REG);
         }
     } else {
         /* Not defined */
-        qemu_log("Trying to read invalid spr %d (0x%03x) at "
-                 TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
-        printf("Trying to read invalid spr %d (0x%03x) at "
-               TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
+        fprintf(stderr, "Trying to read invalid spr %d (0x%03x) at "
+                TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
+        if (qemu_log_separate()) {
+            qemu_log("Trying to read invalid spr %d (0x%03x) at "
+                     TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
+        }
         gen_inval_exception(ctx, POWERPC_EXCP_INVAL_SPR);
     }
 }
@@ -4431,18 +4435,22 @@ static void gen_mtspr(DisasContext *ctx)
             (*write_cb)(ctx, sprn, rS(ctx->opcode));
         } else {
             /* Privilege exception */
-            qemu_log("Trying to write privileged spr %d (0x%03x) at "
-                     TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
-            printf("Trying to write privileged spr %d (0x%03x) at "
-                   TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
+            fprintf(stderr, "Trying to write privileged spr %d (0x%03x) at "
+                    TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
+            if (qemu_log_separate()) {
+                qemu_log("Trying to write privileged spr %d (0x%03x) at "
+                         TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
+            }
             gen_inval_exception(ctx, POWERPC_EXCP_PRIV_REG);
         }
     } else {
         /* Not defined */
-        qemu_log("Trying to write invalid spr %d (0x%03x) at "
-                 TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
-        printf("Trying to write invalid spr %d (0x%03x) at "
-               TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
+        if (qemu_log_separate()) {
+            qemu_log("Trying to write invalid spr %d (0x%03x) at "
+                     TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
+        }
+        fprintf(stderr, "Trying to write invalid spr %d (0x%03x) at "
+                TARGET_FMT_lx "\n", sprn, sprn, ctx->nip - 4);
         gen_inval_exception(ctx, POWERPC_EXCP_INVAL_SPR);
     }
 }
diff --git a/target-s390x/helper.c b/target-s390x/helper.c
index d887006..aa58f39 100644
--- a/target-s390x/helper.c
+++ b/target-s390x/helper.c
@@ -33,7 +33,7 @@
 #ifdef DEBUG_S390_STDOUT
 #define DPRINTF(fmt, ...) \
     do { fprintf(stderr, fmt, ## __VA_ARGS__); \
-         qemu_log(fmt, ##__VA_ARGS__); } while (0)
+         if (qemu_log_separate()) qemu_log(fmt, ##__VA_ARGS__); } while (0)
 #else
 #define DPRINTF(fmt, ...) \
     do { qemu_log(fmt, ## __VA_ARGS__); } while (0)
diff --git a/target-s390x/mmu_helper.c b/target-s390x/mmu_helper.c
index 058a370..f4e1872 100644
--- a/target-s390x/mmu_helper.c
+++ b/target-s390x/mmu_helper.c
@@ -30,7 +30,7 @@
 #ifdef DEBUG_S390_STDOUT
 #define DPRINTF(fmt, ...) \
     do { fprintf(stderr, fmt, ## __VA_ARGS__); \
-         qemu_log(fmt, ##__VA_ARGS__); } while (0)
+         if (qemu_log_separate()) qemu_log(fmt, ##__VA_ARGS__); } while (0)
 #else
 #define DPRINTF(fmt, ...) \
     do { qemu_log(fmt, ## __VA_ARGS__); } while (0)
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PATCH 02/11] alpha: convert "naked" qemu_log to tracepoint
  2015-12-12 10:36 [Qemu-devel] [PATCH 00/11] Avoid always-active qemu_log calls Paolo Bonzini
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 01/11] qemu-log: introduce qemu_log_separate Paolo Bonzini
@ 2015-12-12 10:36 ` Paolo Bonzini
  2015-12-16 16:59   ` Richard Henderson
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 03/11] cris: avoid "naked" qemu_log Paolo Bonzini
                   ` (8 subsequent siblings)
  10 siblings, 1 reply; 22+ messages in thread
From: Paolo Bonzini @ 2015-12-12 10:36 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, Richard Henderson

Cc: Richard Henderson <rth@twiddle.net>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 hw/alpha/pci.c | 3 ++-
 trace-events   | 3 +++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/hw/alpha/pci.c b/hw/alpha/pci.c
index d839dd5..5226e43 100644
--- a/hw/alpha/pci.c
+++ b/hw/alpha/pci.c
@@ -10,6 +10,7 @@
 #include "alpha_sys.h"
 #include "qemu/log.h"
 #include "sysemu/sysemu.h"
+#include "trace.h"
 
 
 /* Fallback for unassigned PCI I/O operations.  Avoids MCHK.  */
@@ -73,7 +74,7 @@ static uint64_t iack_read(void *opaque, hwaddr addr, unsigned size)
 static void special_write(void *opaque, hwaddr addr,
                           uint64_t val, unsigned size)
 {
-    qemu_log("pci: special write cycle");
+    trace_alpha_pci_iack_write();
 }
 
 const MemoryRegionOps alpha_pci_iack_ops = {
diff --git a/trace-events b/trace-events
index 2fce98e..ee890c1 100644
--- a/trace-events
+++ b/trace-events
@@ -1756,6 +1756,9 @@ cpu_unhalt(int cpu_index) "unhalting cpu %d"
 # hw/arm/virt-acpi-build.c
 virt_acpi_setup(void) "No fw cfg or ACPI disabled. Bailing out."
 
+# hw/alpha/pci.c
+alpha_pci_iack_write(void) ""
+
 # audio/alsaaudio.c
 alsa_revents(int revents) "revents = %d"
 alsa_pollout(int i, int fd) "i = %d fd = %d"
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PATCH 03/11] cris: avoid "naked" qemu_log
  2015-12-12 10:36 [Qemu-devel] [PATCH 00/11] Avoid always-active qemu_log calls Paolo Bonzini
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 01/11] qemu-log: introduce qemu_log_separate Paolo Bonzini
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 02/11] alpha: convert "naked" qemu_log to tracepoint Paolo Bonzini
@ 2015-12-12 10:36 ` Paolo Bonzini
  2015-12-17 13:32   ` Edgar E. Iglesias
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 04/11] microblaze: " Paolo Bonzini
                   ` (7 subsequent siblings)
  10 siblings, 1 reply; 22+ messages in thread
From: Paolo Bonzini @ 2015-12-12 10:36 UTC (permalink / raw)
  To: qemu-devel; +Cc: Edgar E. Iglesias, peter.maydell

Cc: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 hw/char/etraxfs_ser.c       | 2 +-
 target-cris/helper.h        | 1 -
 target-cris/op_helper.c     | 5 -----
 target-cris/translate.c     | 2 +-
 target-cris/translate_v10.c | 2 +-
 5 files changed, 3 insertions(+), 9 deletions(-)

diff --git a/hw/char/etraxfs_ser.c b/hw/char/etraxfs_ser.c
index 562021e..d4d875e 100644
--- a/hw/char/etraxfs_ser.c
+++ b/hw/char/etraxfs_ser.c
@@ -165,7 +165,7 @@ static void serial_receive(void *opaque, const uint8_t *buf, int size)
 
     /* Got a byte.  */
     if (s->rx_fifo_len >= 16) {
-        qemu_log("WARNING: UART dropped char.\n");
+        D(qemu_log("WARNING: UART dropped char.\n"));
         return;
     }
 
diff --git a/target-cris/helper.h b/target-cris/helper.h
index 0b383b2..ff35956 100644
--- a/target-cris/helper.h
+++ b/target-cris/helper.h
@@ -1,7 +1,6 @@
 DEF_HELPER_2(raise_exception, void, env, i32)
 DEF_HELPER_2(tlb_flush_pid, void, env, i32)
 DEF_HELPER_2(spc_write, void, env, i32)
-DEF_HELPER_3(dump, void, i32, i32, i32)
 DEF_HELPER_1(rfe, void, env)
 DEF_HELPER_1(rfn, void, env)
 
diff --git a/target-cris/op_helper.c b/target-cris/op_helper.c
index 5c0c14d..2296677 100644
--- a/target-cris/op_helper.c
+++ b/target-cris/op_helper.c
@@ -91,11 +91,6 @@ void helper_spc_write(CPUCRISState *env, uint32_t new_spc)
 #endif
 }
 
-void helper_dump(uint32_t a0, uint32_t a1, uint32_t a2)
-{
-	qemu_log("%s: a0=%x a1=%x\n", __func__, a0, a1);
-}
-
 /* Used by the tlb decoder.  */
 #define EXTRACT_FIELD(src, start, end) \
 	    (((src) >> start) & ((1 << (end - start + 1)) - 1))
diff --git a/target-cris/translate.c b/target-cris/translate.c
index 354c86d..2429931 100644
--- a/target-cris/translate.c
+++ b/target-cris/translate.c
@@ -779,7 +779,7 @@ static void cris_alu_op_exec(DisasContext *dc, int op,
         t_gen_subx_carry(dc, dst);
         break;
     default:
-        qemu_log("illegal ALU op.\n");
+        qemu_log_mask(LOG_GUEST_ERROR, "illegal ALU op.\n");
         BUG();
         break;
     }
diff --git a/target-cris/translate_v10.c b/target-cris/translate_v10.c
index 3ab1c39..df20bdc 100644
--- a/target-cris/translate_v10.c
+++ b/target-cris/translate_v10.c
@@ -58,7 +58,7 @@ static inline int dec10_size(unsigned int size)
 
 static inline void cris_illegal_insn(DisasContext *dc)
 {
-    qemu_log("illegal insn at pc=%x\n", dc->pc);
+    qemu_log_mask(LOG_GUEST_ERROR, "illegal insn at pc=%x\n", dc->pc);
     t_gen_raise_exception(EXCP_BREAK);
 }
 
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PATCH 04/11] microblaze: avoid "naked" qemu_log
  2015-12-12 10:36 [Qemu-devel] [PATCH 00/11] Avoid always-active qemu_log calls Paolo Bonzini
                   ` (2 preceding siblings ...)
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 03/11] cris: avoid "naked" qemu_log Paolo Bonzini
@ 2015-12-12 10:36 ` Paolo Bonzini
  2015-12-17 13:34   ` Edgar E. Iglesias
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 05/11] s390x: " Paolo Bonzini
                   ` (6 subsequent siblings)
  10 siblings, 1 reply; 22+ messages in thread
From: Paolo Bonzini @ 2015-12-12 10:36 UTC (permalink / raw)
  To: qemu-devel; +Cc: Edgar E. Iglesias, peter.maydell

Cc: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 target-microblaze/helper.c    |  2 +-
 target-microblaze/mmu.c       | 20 ++++++++++----------
 target-microblaze/op_helper.c |  8 ++++----
 target-microblaze/translate.c |  2 +-
 4 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/target-microblaze/helper.c b/target-microblaze/helper.c
index 8257b0e..a482e47 100644
--- a/target-microblaze/helper.c
+++ b/target-microblaze/helper.c
@@ -128,7 +128,7 @@ void mb_cpu_do_interrupt(CPUState *cs)
     switch (cs->exception_index) {
         case EXCP_HW_EXCP:
             if (!(env->pvr.regs[0] & PVR0_USE_EXC_MASK)) {
-                qemu_log("Exception raised on system without exceptions!\n");
+                qemu_log_mask(LOG_GUEST_ERROR, "Exception raised on system without exceptions!\n");
                 return;
             }
 
diff --git a/target-microblaze/mmu.c b/target-microblaze/mmu.c
index 2ef1dc2..ee95a04 100644
--- a/target-microblaze/mmu.c
+++ b/target-microblaze/mmu.c
@@ -60,7 +60,7 @@ static void mmu_change_pid(CPUMBState *env, unsigned int newpid)
     uint32_t t;
 
     if (newpid & ~0xff)
-        qemu_log("Illegal rpid=%x\n", newpid);
+        qemu_log_mask(LOG_GUEST_ERROR, "Illegal rpid=%x\n", newpid);
 
     for (i = 0; i < ARRAY_SIZE(mmu->rams[RAM_TAG]); i++) {
         /* Lookup and decode.  */
@@ -121,7 +121,7 @@ unsigned int mmu_translate(struct microblaze_mmu *mmu,
             t0 &= 0x3;
 
             if (tlb_zsel > mmu->c_mmu_zones) {
-                qemu_log("tlb zone select out of range! %d\n", tlb_zsel);
+                qemu_log_mask(LOG_GUEST_ERROR, "tlb zone select out of range! %d\n", tlb_zsel);
                 t0 = 1; /* Ignore.  */
             }
 
@@ -183,7 +183,7 @@ uint32_t mmu_read(CPUMBState *env, uint32_t rn)
     uint32_t r;
 
     if (env->mmu.c_mmu < 2 || !env->mmu.c_mmu_tlb_access) {
-        qemu_log("MMU access on MMU-less system\n");
+        qemu_log_mask(LOG_GUEST_ERROR, "MMU access on MMU-less system\n");
         return 0;
     }
 
@@ -192,7 +192,7 @@ uint32_t mmu_read(CPUMBState *env, uint32_t rn)
         case MMU_R_TLBLO:
         case MMU_R_TLBHI:
             if (!(env->mmu.c_mmu_tlb_access & 1)) {
-                qemu_log("Invalid access to MMU reg %d\n", rn);
+                qemu_log_mask(LOG_GUEST_ERROR, "Invalid access to MMU reg %d\n", rn);
                 return 0;
             }
 
@@ -204,7 +204,7 @@ uint32_t mmu_read(CPUMBState *env, uint32_t rn)
         case MMU_R_PID:
         case MMU_R_ZPR:
             if (!(env->mmu.c_mmu_tlb_access & 1)) {
-                qemu_log("Invalid access to MMU reg %d\n", rn);
+                qemu_log_mask(LOG_GUEST_ERROR, "Invalid access to MMU reg %d\n", rn);
                 return 0;
             }
             r = env->mmu.regs[rn];
@@ -224,7 +224,7 @@ void mmu_write(CPUMBState *env, uint32_t rn, uint32_t v)
     D(qemu_log("%s rn=%d=%x old=%x\n", __func__, rn, v, env->mmu.regs[rn]));
 
     if (env->mmu.c_mmu < 2 || !env->mmu.c_mmu_tlb_access) {
-        qemu_log("MMU access on MMU-less system\n");
+        qemu_log_mask(LOG_GUEST_ERROR, "MMU access on MMU-less system\n");
         return;
     }
 
@@ -235,7 +235,7 @@ void mmu_write(CPUMBState *env, uint32_t rn, uint32_t v)
             i = env->mmu.regs[MMU_R_TLBX] & 0xff;
             if (rn == MMU_R_TLBHI) {
                 if (i < 3 && !(v & TLB_VALID) && qemu_loglevel_mask(~0))
-                    qemu_log("invalidating index %x at pc=%x\n",
+                    qemu_log_mask(LOG_GUEST_ERROR, "invalidating index %x at pc=%x\n",
                              i, env->sregs[SR_PC]);
                 env->mmu.tids[i] = env->mmu.regs[MMU_R_PID] & 0xff;
                 mmu_flush_idx(env, i);
@@ -246,7 +246,7 @@ void mmu_write(CPUMBState *env, uint32_t rn, uint32_t v)
             break;
         case MMU_R_ZPR:
             if (env->mmu.c_mmu_tlb_access <= 1) {
-                qemu_log("Invalid access to MMU reg %d\n", rn);
+                qemu_log_mask(LOG_GUEST_ERROR, "Invalid access to MMU reg %d\n", rn);
                 return;
             }
 
@@ -259,7 +259,7 @@ void mmu_write(CPUMBState *env, uint32_t rn, uint32_t v)
             break;
         case MMU_R_PID:
             if (env->mmu.c_mmu_tlb_access <= 1) {
-                qemu_log("Invalid access to MMU reg %d\n", rn);
+                qemu_log_mask(LOG_GUEST_ERROR, "Invalid access to MMU reg %d\n", rn);
                 return;
             }
 
@@ -274,7 +274,7 @@ void mmu_write(CPUMBState *env, uint32_t rn, uint32_t v)
             int hit;
 
             if (env->mmu.c_mmu_tlb_access <= 1) {
-                qemu_log("Invalid access to MMU reg %d\n", rn);
+                qemu_log_mask(LOG_GUEST_ERROR, "Invalid access to MMU reg %d\n", rn);
                 return;
             }
 
diff --git a/target-microblaze/op_helper.c b/target-microblaze/op_helper.c
index d324347..5637462 100644
--- a/target-microblaze/op_helper.c
+++ b/target-microblaze/op_helper.c
@@ -55,7 +55,7 @@ void helper_put(uint32_t id, uint32_t ctrl, uint32_t data)
     int nonblock = ctrl & STREAM_NONBLOCK;
     int exception = ctrl & STREAM_EXCEPTION;
 
-    qemu_log("Unhandled stream put to stream-id=%d data=%x %s%s%s%s%s\n",
+    qemu_log_mask(LOG_UNIMP, "Unhandled stream put to stream-id=%d data=%x %s%s%s%s%s\n",
              id, data,
              test ? "t" : "",
              nonblock ? "n" : "",
@@ -72,7 +72,7 @@ uint32_t helper_get(uint32_t id, uint32_t ctrl)
     int nonblock = ctrl & STREAM_NONBLOCK;
     int exception = ctrl & STREAM_EXCEPTION;
 
-    qemu_log("Unhandled stream get from stream-id=%d %s%s%s%s%s\n",
+    qemu_log_mask(LOG_UNIMP, "Unhandled stream get from stream-id=%d %s%s%s%s%s\n",
              id,
              test ? "t" : "",
              nonblock ? "n" : "",
@@ -465,8 +465,8 @@ void helper_memalign(CPUMBState *env, uint32_t addr, uint32_t dr, uint32_t wr,
 void helper_stackprot(CPUMBState *env, uint32_t addr)
 {
     if (addr < env->slr || addr > env->shr) {
-        qemu_log("Stack protector violation at %x %x %x\n",
-                 addr, env->slr, env->shr);
+        qemu_log_mask(CPU_LOG_INT, "Stack protector violation at %x %x %x\n",
+                      addr, env->slr, env->shr);
         env->sregs[SR_EAR] = addr;
         env->sregs[SR_ESR] = ESR_EC_STACKPROT;
         helper_raise_exception(env, EXCP_HW_EXCP);
diff --git a/target-microblaze/translate.c b/target-microblaze/translate.c
index 154b9d6..9e52011 100644
--- a/target-microblaze/translate.c
+++ b/target-microblaze/translate.c
@@ -1516,7 +1516,7 @@ static void dec_null(DisasContext *dc)
         t_gen_raise_exception(dc, EXCP_HW_EXCP);
         return;
     }
-    qemu_log ("unknown insn pc=%x opc=%x\n", dc->pc, dc->opcode);
+    qemu_log_mask(LOG_GUEST_ERROR, "unknown insn pc=%x opc=%x\n", dc->pc, dc->opcode);
     dc->abort_at_next_insn = 1;
 }
 
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PATCH 05/11] s390x: avoid "naked" qemu_log
  2015-12-12 10:36 [Qemu-devel] [PATCH 00/11] Avoid always-active qemu_log calls Paolo Bonzini
                   ` (3 preceding siblings ...)
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 04/11] microblaze: " Paolo Bonzini
@ 2015-12-12 10:36 ` Paolo Bonzini
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 06/11] ppc: cleanup logging Paolo Bonzini
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 22+ messages in thread
From: Paolo Bonzini @ 2015-12-12 10:36 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, Alexander Graf

Convert to debug-only qemu_log.

Cc: Alexander Graf <agraf@suse.de>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 target-s390x/cc_helper.c   | 2 +-
 target-s390x/misc_helper.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/target-s390x/cc_helper.c b/target-s390x/cc_helper.c
index bfce3f1..c4ee002 100644
--- a/target-s390x/cc_helper.c
+++ b/target-s390x/cc_helper.c
@@ -560,7 +560,7 @@ void HELPER(sacf)(CPUS390XState *env, uint64_t a1)
         env->psw.mask |= PSW_ASC_HOME;
         break;
     default:
-        qemu_log("unknown sacf mode: %" PRIx64 "\n", a1);
+        HELPER_LOG("unknown sacf mode: %" PRIx64 "\n", a1);
         program_interrupt(env, PGM_SPECIFICATION, 2);
         break;
     }
diff --git a/target-s390x/misc_helper.c b/target-s390x/misc_helper.c
index b601a33..dab02d3 100644
--- a/target-s390x/misc_helper.c
+++ b/target-s390x/misc_helper.c
@@ -299,7 +299,7 @@ void HELPER(spx)(CPUS390XState *env, uint64_t a1)
     uint32_t prefix = a1 & 0x7fffe000;
 
     env->psa = prefix;
-    qemu_log("prefix: %#x\n", prefix);
+    HELPER_LOG("prefix: %#x\n", prefix);
     tlb_flush_page(cs, 0);
     tlb_flush_page(cs, TARGET_PAGE_SIZE);
 }
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PATCH 06/11] ppc: cleanup logging
  2015-12-12 10:36 [Qemu-devel] [PATCH 00/11] Avoid always-active qemu_log calls Paolo Bonzini
                   ` (4 preceding siblings ...)
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 05/11] s390x: " Paolo Bonzini
@ 2015-12-12 10:36 ` Paolo Bonzini
  2015-12-14  0:24   ` David Gibson
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 07/11] tricore: avoid "naked" qemu_log Paolo Bonzini
                   ` (4 subsequent siblings)
  10 siblings, 1 reply; 22+ messages in thread
From: Paolo Bonzini @ 2015-12-12 10:36 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, David Gibson

Avoid "naked" qemu_log, bring documentation for DEBUG #defines
up to date.

Cc: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 target-ppc/excp_helper.c     |  1 +
 target-ppc/mmu-hash32.c      | 12 ++----------
 target-ppc/mmu-hash64.c      |  9 +--------
 target-ppc/mmu_helper.c      | 15 +++++++--------
 target-ppc/timebase_helper.c | 10 ++++++----
 target-ppc/translate.c       | 22 +++++++++-------------
 6 files changed, 26 insertions(+), 43 deletions(-)

diff --git a/target-ppc/excp_helper.c b/target-ppc/excp_helper.c
index 102d789..dbc070c 100644
--- a/target-ppc/excp_helper.c
+++ b/target-ppc/excp_helper.c
@@ -23,6 +23,7 @@
 #include "helper_regs.h"
 
 //#define DEBUG_OP
+//#define DEBUG_SOFTWARE_TLB
 //#define DEBUG_EXCEPTIONS
 
 #ifdef DEBUG_EXCEPTIONS
diff --git a/target-ppc/mmu-hash32.c b/target-ppc/mmu-hash32.c
index dfee358..49bf120 100644
--- a/target-ppc/mmu-hash32.c
+++ b/target-ppc/mmu-hash32.c
@@ -24,17 +24,10 @@
 #include "kvm_ppc.h"
 #include "mmu-hash32.h"
 
-//#define DEBUG_MMU
 //#define DEBUG_BAT
 
-#ifdef DEBUG_MMU
-#  define LOG_MMU_STATE(cpu) log_cpu_state((cpu), 0)
-#else
-#  define LOG_MMU_STATE(cpu) do { } while (0)
-#endif
-
 #ifdef DEBUG_BATS
-#  define LOG_BATS(...) qemu_log(__VA_ARGS__)
+#  define LOG_BATS(...) qemu_log_mask(CPU_LOG_MMU, __VA_ARGS__)
 #else
 #  define LOG_BATS(...) do { } while (0)
 #endif
@@ -281,9 +274,8 @@ static int ppc_hash32_direct_store(CPUPPCState *env, target_ulong sr,
         }
         return 1;
     default:
-        qemu_log("ERROR: instruction should not need "
+        cpu_abort(cs, "ERROR: instruction should not need "
                  "address translation\n");
-        abort();
     }
     if ((rwx == 1 || key != 1) && (rwx == 0 || key != 0)) {
         *raddr = eaddr;
diff --git a/target-ppc/mmu-hash64.c b/target-ppc/mmu-hash64.c
index 7df6ede..34e20fa 100644
--- a/target-ppc/mmu-hash64.c
+++ b/target-ppc/mmu-hash64.c
@@ -23,17 +23,10 @@
 #include "kvm_ppc.h"
 #include "mmu-hash64.h"
 
-//#define DEBUG_MMU
 //#define DEBUG_SLB
 
-#ifdef DEBUG_MMU
-#  define LOG_MMU_STATE(cpu) log_cpu_state((cpu), 0)
-#else
-#  define LOG_MMU_STATE(cpu) do { } while (0)
-#endif
-
 #ifdef DEBUG_SLB
-#  define LOG_SLB(...) qemu_log(__VA_ARGS__)
+#  define LOG_SLB(...) qemu_log_mask(CPU_LOG_MMU, __VA_ARGS__)
 #else
 #  define LOG_SLB(...) do { } while (0)
 #endif
diff --git a/target-ppc/mmu_helper.c b/target-ppc/mmu_helper.c
index 30298d8..5217691 100644
--- a/target-ppc/mmu_helper.c
+++ b/target-ppc/mmu_helper.c
@@ -28,23 +28,22 @@
 //#define DEBUG_BATS
 //#define DEBUG_SOFTWARE_TLB
 //#define DUMP_PAGE_TABLES
-//#define DEBUG_SOFTWARE_TLB
 //#define FLUSH_ALL_TLBS
 
 #ifdef DEBUG_MMU
-#  define LOG_MMU_STATE(cpu) log_cpu_state((cpu), 0)
+#  define LOG_MMU_STATE(cpu) log_cpu_state_mask(CPU_LOG_MMU, (cpu), 0)
 #else
 #  define LOG_MMU_STATE(cpu) do { } while (0)
 #endif
 
 #ifdef DEBUG_SOFTWARE_TLB
-#  define LOG_SWTLB(...) qemu_log(__VA_ARGS__)
+#  define LOG_SWTLB(...) qemu_log_mask(CPU_LOG_MMU, __VA_ARGS__)
 #else
 #  define LOG_SWTLB(...) do { } while (0)
 #endif
 
 #ifdef DEBUG_BATS
-#  define LOG_BATS(...) qemu_log(__VA_ARGS__)
+#  define LOG_BATS(...) qemu_log_mask(CPU_LOG_MMU, __VA_ARGS__)
 #else
 #  define LOG_BATS(...) do { } while (0)
 #endif
@@ -162,7 +161,7 @@ static inline int ppc6xx_tlb_pte_check(mmu_ctx_t *ctx, target_ulong pte0,
             if (ctx->raddr != (hwaddr)-1ULL) {
                 /* all matches should have equal RPN, WIMG & PP */
                 if ((ctx->raddr & mmask) != (pte1 & mmask)) {
-                    qemu_log("Bad RPN/WIMG/PP\n");
+                    qemu_log_mask(CPU_LOG_MMU, "Bad RPN/WIMG/PP\n");
                     return -3;
                 }
             }
@@ -508,7 +507,7 @@ static inline int get_segment_6xx_tlb(CPUPPCState *env, mmu_ctx_t *ctx,
             /* Software TLB search */
             ret = ppc6xx_tlb_check(env, ctx, eaddr, rw, type);
 #if defined(DUMP_PAGE_TABLES)
-            if (qemu_log_enabled()) {
+            if (qemu_log_mask(CPU_LOG_MMU)) {
                 hwaddr curaddr;
                 uint32_t a0, a1, a2, a3;
 
@@ -575,8 +574,8 @@ static inline int get_segment_6xx_tlb(CPUPPCState *env, mmu_ctx_t *ctx,
             /* eciwx or ecowx */
             return -4;
         default:
-            qemu_log("ERROR: instruction should not need "
-                        "address translation\n");
+            qemu_log_mask(CPU_LOG_MMU, "ERROR: instruction should not need "
+                          "address translation\n");
             return -4;
         }
         if ((rw == 1 || ctx->key != 1) && (rw == 0 || ctx->key != 0)) {
diff --git a/target-ppc/timebase_helper.c b/target-ppc/timebase_helper.c
index 865dcbe..cafa283 100644
--- a/target-ppc/timebase_helper.c
+++ b/target-ppc/timebase_helper.c
@@ -130,13 +130,14 @@ target_ulong helper_load_dcr(CPUPPCState *env, target_ulong dcrn)
     uint32_t val = 0;
 
     if (unlikely(env->dcr_env == NULL)) {
-        qemu_log("No DCR environment\n");
+        qemu_log_mask(LOG_GUEST_ERROR, "No DCR environment\n");
         helper_raise_exception_err(env, POWERPC_EXCP_PROGRAM,
                                    POWERPC_EXCP_INVAL |
                                    POWERPC_EXCP_INVAL_INVAL);
     } else if (unlikely(ppc_dcr_read(env->dcr_env,
                                      (uint32_t)dcrn, &val) != 0)) {
-        qemu_log("DCR read error %d %03x\n", (uint32_t)dcrn, (uint32_t)dcrn);
+        qemu_log_mask(LOG_GUEST_ERROR, "DCR read error %d %03x\n",
+                      (uint32_t)dcrn, (uint32_t)dcrn);
         helper_raise_exception_err(env, POWERPC_EXCP_PROGRAM,
                                    POWERPC_EXCP_INVAL | POWERPC_EXCP_PRIV_REG);
     }
@@ -146,13 +147,14 @@ target_ulong helper_load_dcr(CPUPPCState *env, target_ulong dcrn)
 void helper_store_dcr(CPUPPCState *env, target_ulong dcrn, target_ulong val)
 {
     if (unlikely(env->dcr_env == NULL)) {
-        qemu_log("No DCR environment\n");
+        qemu_log_mask(LOG_GUEST_ERROR, "No DCR environment\n");
         helper_raise_exception_err(env, POWERPC_EXCP_PROGRAM,
                                    POWERPC_EXCP_INVAL |
                                    POWERPC_EXCP_INVAL_INVAL);
     } else if (unlikely(ppc_dcr_write(env->dcr_env, (uint32_t)dcrn,
                                       (uint32_t)val) != 0)) {
-        qemu_log("DCR write error %d %03x\n", (uint32_t)dcrn, (uint32_t)dcrn);
+        qemu_log_mask(LOG_GUEST_ERROR, "DCR write error %d %03x\n",
+                      (uint32_t)dcrn, (uint32_t)dcrn);
         helper_raise_exception_err(env, POWERPC_EXCP_PROGRAM,
                                    POWERPC_EXCP_INVAL | POWERPC_EXCP_PRIV_REG);
     }
diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index cdf46dd..4be7eaa 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -11530,12 +11530,10 @@ void gen_intermediate_code(CPUPPCState *env, struct TranslationBlock *tb)
         }
         /* Is opcode *REALLY* valid ? */
         if (unlikely(handler->handler == &gen_invalid)) {
-            if (qemu_log_enabled()) {
-                qemu_log("invalid/unsupported opcode: "
-                         "%02x - %02x - %02x (%08x) " TARGET_FMT_lx " %d\n",
-                         opc1(ctx.opcode), opc2(ctx.opcode),
-                         opc3(ctx.opcode), ctx.opcode, ctx.nip - 4, (int)msr_ir);
-            }
+            qemu_log_mask(LOG_GUEST_ERROR, "invalid/unsupported opcode: "
+                          "%02x - %02x - %02x (%08x) " TARGET_FMT_lx " %d\n",
+                          opc1(ctx.opcode), opc2(ctx.opcode),
+                          opc3(ctx.opcode), ctx.opcode, ctx.nip - 4, (int)msr_ir);
         } else {
             uint32_t inval;
 
@@ -11546,13 +11544,11 @@ void gen_intermediate_code(CPUPPCState *env, struct TranslationBlock *tb)
             }
 
             if (unlikely((ctx.opcode & inval) != 0)) {
-                if (qemu_log_enabled()) {
-                    qemu_log("invalid bits: %08x for opcode: "
-                             "%02x - %02x - %02x (%08x) " TARGET_FMT_lx "\n",
-                             ctx.opcode & inval, opc1(ctx.opcode),
-                             opc2(ctx.opcode), opc3(ctx.opcode),
-                             ctx.opcode, ctx.nip - 4);
-                }
+                qemu_log_mask(LOG_GUEST_ERROR, "invalid bits: %08x for opcode: "
+                              "%02x - %02x - %02x (%08x) " TARGET_FMT_lx "\n",
+                              ctx.opcode & inval, opc1(ctx.opcode),
+                              opc2(ctx.opcode), opc3(ctx.opcode),
+                              ctx.opcode, ctx.nip - 4);
                 gen_inval_exception(ctxp, POWERPC_EXCP_INVAL_INVAL);
                 break;
             }
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PATCH 07/11] tricore: avoid "naked" qemu_log
  2015-12-12 10:36 [Qemu-devel] [PATCH 00/11] Avoid always-active qemu_log calls Paolo Bonzini
                   ` (5 preceding siblings ...)
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 06/11] ppc: cleanup logging Paolo Bonzini
@ 2015-12-12 10:36 ` Paolo Bonzini
  2015-12-12 19:47   ` Bastian Koppelmann
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 08/11] xtensa: " Paolo Bonzini
                   ` (3 subsequent siblings)
  10 siblings, 1 reply; 22+ messages in thread
From: Paolo Bonzini @ 2015-12-12 10:36 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, Bastian Koppelmann

Cc: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 target-tricore/helper.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/target-tricore/helper.c b/target-tricore/helper.c
index 1808b28..1b70429 100644
--- a/target-tricore/helper.c
+++ b/target-tricore/helper.c
@@ -65,8 +65,8 @@ int cpu_tricore_handle_mmu_fault(CPUState *cs, target_ulong address,
     access_type = ACCESS_INT;
     ret = get_physical_address(env, &physical, &prot,
                                address, rw, access_type);
-    qemu_log("%s address=" TARGET_FMT_lx " ret %d physical " TARGET_FMT_plx
-             " prot %d\n", __func__, address, ret, physical, prot);
+    qemu_log_mask(CPU_LOG_MMU, "%s address=" TARGET_FMT_lx " ret %d physical " TARGET_FMT_plx
+                  " prot %d\n", __func__, address, ret, physical, prot);
 
     if (ret == TLBRET_MATCH) {
         tlb_set_page(cs, address & TARGET_PAGE_MASK,
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PATCH 08/11] xtensa: avoid "naked" qemu_log
  2015-12-12 10:36 [Qemu-devel] [PATCH 00/11] Avoid always-active qemu_log calls Paolo Bonzini
                   ` (6 preceding siblings ...)
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 07/11] tricore: avoid "naked" qemu_log Paolo Bonzini
@ 2015-12-12 10:36 ` Paolo Bonzini
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 09/11] user: introduce "-d page" Paolo Bonzini
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 22+ messages in thread
From: Paolo Bonzini @ 2015-12-12 10:36 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell, Max Filippov

Cc: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 target-xtensa/gdbstub.c     |  8 ++++----
 target-xtensa/helper.c      |  4 ++--
 target-xtensa/op_helper.c   | 20 ++++++++++----------
 target-xtensa/translate.c   | 28 ++++++++++++++--------------
 target-xtensa/xtensa-semi.c |  2 +-
 5 files changed, 31 insertions(+), 31 deletions(-)

diff --git a/target-xtensa/gdbstub.c b/target-xtensa/gdbstub.c
index bc2e1b5..dcf05ad 100644
--- a/target-xtensa/gdbstub.c
+++ b/target-xtensa/gdbstub.c
@@ -63,8 +63,8 @@ int xtensa_cpu_gdb_read_register(CPUState *cs, uint8_t *mem_buf, int n)
         return gdb_get_reg32(mem_buf, env->regs[reg->targno & 0x0f]);
 
     default:
-        qemu_log("%s from reg %d of unsupported type %d\n",
-                 __func__, n, reg->type);
+        qemu_log_mask(LOG_UNIMP, "%s from reg %d of unsupported type %d\n",
+                      __func__, n, reg->type);
         return 0;
     }
 }
@@ -117,8 +117,8 @@ int xtensa_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
         break;
 
     default:
-        qemu_log("%s to reg %d of unsupported type %d\n",
-                 __func__, n, reg->type);
+        qemu_log_mask(LOG_UNIMP, "%s to reg %d of unsupported type %d\n",
+                      __func__, n, reg->type);
         return 0;
     }
 
diff --git a/target-xtensa/helper.c b/target-xtensa/helper.c
index 2c3447b..cf25bf8 100644
--- a/target-xtensa/helper.c
+++ b/target-xtensa/helper.c
@@ -254,8 +254,8 @@ void xtensa_cpu_do_interrupt(CPUState *cs)
                     env->config->exception_vector[cs->exception_index]);
             env->exception_taken = 1;
         } else {
-            qemu_log("%s(pc = %08x) bad exception_index: %d\n",
-                    __func__, env->pc, cs->exception_index);
+            qemu_log_mask(CPU_LOG_INT, "%s(pc = %08x) bad exception_index: %d\n",
+                          __func__, env->pc, cs->exception_index);
         }
         break;
 
diff --git a/target-xtensa/op_helper.c b/target-xtensa/op_helper.c
index 718e54e..02100af 100644
--- a/target-xtensa/op_helper.c
+++ b/target-xtensa/op_helper.c
@@ -245,8 +245,8 @@ void HELPER(entry)(CPUXtensaState *env, uint32_t pc, uint32_t s, uint32_t imm)
 {
     int callinc = (env->sregs[PS] & PS_CALLINC) >> PS_CALLINC_SHIFT;
     if (s > 3 || ((env->sregs[PS] & (PS_WOE | PS_EXCM)) ^ PS_WOE) != 0) {
-        qemu_log("Illegal entry instruction(pc = %08x), PS = %08x\n",
-                pc, env->sregs[PS]);
+        qemu_log_mask(LOG_GUEST_ERROR, "Illegal entry instruction(pc = %08x), PS = %08x\n",
+                      pc, env->sregs[PS]);
         HELPER(exception_cause)(env, pc, ILLEGAL_INSTRUCTION_CAUSE);
     } else {
         uint32_t windowstart = xtensa_replicate_windowstart(env) >>
@@ -307,9 +307,9 @@ uint32_t HELPER(retw)(CPUXtensaState *env, uint32_t pc)
 
     if (n == 0 || (m != 0 && m != n) ||
             ((env->sregs[PS] & (PS_WOE | PS_EXCM)) ^ PS_WOE) != 0) {
-        qemu_log("Illegal retw instruction(pc = %08x), "
-                "PS = %08x, m = %d, n = %d\n",
-                pc, env->sregs[PS], m, n);
+        qemu_log_mask(LOG_GUEST_ERROR, "Illegal retw instruction(pc = %08x), "
+                      "PS = %08x, m = %d, n = %d\n",
+                      pc, env->sregs[PS], m, n);
         HELPER(exception_cause)(env, pc, ILLEGAL_INSTRUCTION_CAUSE);
     } else {
         int owb = windowbase;
@@ -743,8 +743,8 @@ void xtensa_tlb_set_entry(CPUXtensaState *env, bool dtlb,
             xtensa_tlb_set_entry_mmu(env, entry, dtlb, wi, ei, vpn, pte);
             tlb_flush_page(cs, entry->vaddr);
         } else {
-            qemu_log("%s %d, %d, %d trying to set immutable entry\n",
-                    __func__, dtlb, wi, ei);
+            qemu_log_mask(LOG_GUEST_ERROR, "%s %d, %d, %d trying to set immutable entry\n",
+                          __func__, dtlb, wi, ei);
         }
     } else {
         tlb_flush_page(cs, entry->vaddr);
@@ -806,15 +806,15 @@ static void set_dbreak(CPUXtensaState *env, unsigned i, uint32_t dbreaka,
     }
     /* contiguous mask after inversion is one less than some power of 2 */
     if ((~mask + 1) & ~mask) {
-        qemu_log("DBREAKC mask is not contiguous: 0x%08x\n", dbreakc);
+        qemu_log_mask(LOG_GUEST_ERROR, "DBREAKC mask is not contiguous: 0x%08x\n", dbreakc);
         /* cut mask after the first zero bit */
         mask = 0xffffffff << (32 - clo32(mask));
     }
     if (cpu_watchpoint_insert(cs, dbreaka & mask, ~mask + 1,
             flags, &env->cpu_watchpoint[i])) {
         env->cpu_watchpoint[i] = NULL;
-        qemu_log("Failed to set data breakpoint at 0x%08x/%d\n",
-                dbreaka & mask, ~mask + 1);
+        qemu_log_mask(LOG_GUEST_ERROR, "Failed to set data breakpoint at 0x%08x/%d\n",
+                      dbreaka & mask, ~mask + 1);
     }
 }
 
diff --git a/target-xtensa/translate.c b/target-xtensa/translate.c
index 06b0163..fbcec94 100644
--- a/target-xtensa/translate.c
+++ b/target-xtensa/translate.c
@@ -501,9 +501,9 @@ static bool gen_check_sr(DisasContext *dc, uint32_t sr, unsigned access)
 {
     if (!xtensa_option_bits_enabled(dc->config, sregnames[sr].opt_bits)) {
         if (sregnames[sr].name) {
-            qemu_log("SR %s is not configured\n", sregnames[sr].name);
+            qemu_log_mask(LOG_GUEST_ERROR, "SR %s is not configured\n", sregnames[sr].name);
         } else {
-            qemu_log("SR %d is not implemented\n", sr);
+            qemu_log_mask(LOG_UNIMP, "SR %d is not implemented\n", sr);
         }
         gen_exception_cause(dc, ILLEGAL_INSTRUCTION_CAUSE);
         return false;
@@ -514,8 +514,8 @@ static bool gen_check_sr(DisasContext *dc, uint32_t sr, unsigned access)
             [SR_X] = "xsr",
         };
         assert(access < ARRAY_SIZE(access_text) && access_text[access]);
-        qemu_log("SR %s is not available for %s\n", sregnames[sr].name,
-                access_text[access]);
+        qemu_log_mask(LOG_GUEST_ERROR, "SR %s is not available for %s\n", sregnames[sr].name,
+                      access_text[access]);
         gen_exception_cause(dc, ILLEGAL_INSTRUCTION_CAUSE);
         return false;
     }
@@ -875,18 +875,18 @@ static void disas_xtensa_insn(CPUXtensaState *env, DisasContext *dc)
 {
 #define HAS_OPTION_BITS(opt) do { \
         if (!option_bits_enabled(dc, opt)) { \
-            qemu_log("Option is not enabled %s:%d\n", \
-                    __FILE__, __LINE__); \
+            qemu_log_mask(LOG_GUEST_ERROR, "Option is not enabled %s:%d\n", \
+                          __FILE__, __LINE__); \
             goto invalid_opcode; \
         } \
     } while (0)
 
 #define HAS_OPTION(opt) HAS_OPTION_BITS(XTENSA_OPTION_BIT(opt))
 
-#define TBD() qemu_log("TBD(pc = %08x): %s:%d\n", dc->pc, __FILE__, __LINE__)
+#define TBD() qemu_log_mask(LOG_UNIMP, "TBD(pc = %08x): %s:%d\n", dc->pc, __FILE__, __LINE__)
 #define RESERVED() do { \
-        qemu_log("RESERVED(pc = %08x, %02x%02x%02x): %s:%d\n", \
-                dc->pc, b0, b1, b2, __FILE__, __LINE__); \
+        qemu_log_mask(LOG_GUEST_ERROR, "RESERVED(pc = %08x, %02x%02x%02x): %s:%d\n", \
+                      dc->pc, b0, b1, b2, __FILE__, __LINE__); \
         goto invalid_opcode; \
     } while (0)
 
@@ -1186,7 +1186,7 @@ static void disas_xtensa_insn(CPUXtensaState *env, DisasContext *dc)
                                 gen_jump(dc, cpu_SR[EPC1 + RRR_S - 1]);
                             }
                         } else {
-                            qemu_log("RFI %d is illegal\n", RRR_S);
+                            qemu_log_mask(LOG_GUEST_ERROR, "RFI %d is illegal\n", RRR_S);
                             gen_exception_cause(dc, ILLEGAL_INSTRUCTION_CAUSE);
                         }
                         break;
@@ -1222,7 +1222,7 @@ static void disas_xtensa_insn(CPUXtensaState *env, DisasContext *dc)
                                 gen_helper_simcall(cpu_env);
                             }
                         } else {
-                            qemu_log("SIMCALL but semihosting is disabled\n");
+                            qemu_log_mask(LOG_GUEST_ERROR, "SIMCALL but semihosting is disabled\n");
                             gen_exception_cause(dc, ILLEGAL_INSTRUCTION_CAUSE);
                         }
                         break;
@@ -1865,7 +1865,7 @@ static void disas_xtensa_insn(CPUXtensaState *env, DisasContext *dc)
                     if (uregnames[st].name) {
                         tcg_gen_mov_i32(cpu_R[RRR_R], cpu_UR[st]);
                     } else {
-                        qemu_log("RUR %d not implemented, ", st);
+                        qemu_log_mask(LOG_UNIMP, "RUR %d not implemented, ", st);
                         TBD();
                     }
                 }
@@ -1876,7 +1876,7 @@ static void disas_xtensa_insn(CPUXtensaState *env, DisasContext *dc)
                     if (uregnames[RSR_SR].name) {
                         gen_wur(RSR_SR, cpu_R[RRR_T]);
                     } else {
-                        qemu_log("WUR %d not implemented, ", RSR_SR);
+                        qemu_log_mask(LOG_UNIMP, "WUR %d not implemented, ", RSR_SR);
                         TBD();
                     }
                 }
@@ -3006,7 +3006,7 @@ static void disas_xtensa_insn(CPUXtensaState *env, DisasContext *dc)
     return;
 
 invalid_opcode:
-    qemu_log("INVALID(pc = %08x)\n", dc->pc);
+    qemu_log_mask(LOG_GUEST_ERROR, "INVALID(pc = %08x)\n", dc->pc);
     gen_exception_cause(dc, ILLEGAL_INSTRUCTION_CAUSE);
 #undef HAS_OPTION
 }
diff --git a/target-xtensa/xtensa-semi.c b/target-xtensa/xtensa-semi.c
index 16e9d8c..384d9c2 100644
--- a/target-xtensa/xtensa-semi.c
+++ b/target-xtensa/xtensa-semi.c
@@ -313,7 +313,7 @@ void HELPER(simcall)(CPUXtensaState *env)
         break;
 
     default:
-        qemu_log("%s(%d): not implemented\n", __func__, regs[2]);
+        qemu_log_mask(LOG_GUEST_ERROR, "%s(%d): not implemented\n", __func__, regs[2]);
         regs[2] = -1;
         regs[3] = TARGET_ENOSYS;
         break;
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PATCH 09/11] user: introduce "-d page"
  2015-12-12 10:36 [Qemu-devel] [PATCH 00/11] Avoid always-active qemu_log calls Paolo Bonzini
                   ` (7 preceding siblings ...)
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 08/11] xtensa: " Paolo Bonzini
@ 2015-12-12 10:36 ` Paolo Bonzini
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 10/11] linux-user: avoid "naked" qemu_log Paolo Bonzini
  2015-12-12 10:39 ` [Qemu-devel] [PATCH 11/11] linux-user: convert DEBUG_SIGNAL logging to tracepoints Paolo Bonzini
  10 siblings, 0 replies; 22+ messages in thread
From: Paolo Bonzini @ 2015-12-12 10:36 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 bsd-user/main.c      | 4 ++--
 include/qemu/log.h   | 1 +
 linux-user/elfload.c | 8 ++++----
 linux-user/main.c    | 4 ++--
 qemu-log.c           | 2 ++
 5 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/bsd-user/main.c b/bsd-user/main.c
index adf2de0..1ecaeb5 100644
--- a/bsd-user/main.c
+++ b/bsd-user/main.c
@@ -938,7 +938,7 @@ int main(int argc, char **argv)
             unsigned long tmp;
             if (fscanf(fp, "%lu", &tmp) == 1) {
                 mmap_min_addr = tmp;
-                qemu_log("host mmap_min_addr=0x%lx\n", mmap_min_addr);
+                qemu_log_mask(CPU_LOG_PAGE, "host mmap_min_addr=0x%lx\n", mmap_min_addr);
             }
             fclose(fp);
         }
@@ -955,7 +955,7 @@ int main(int argc, char **argv)
 
     free(target_environ);
 
-    if (qemu_log_enabled()) {
+    if (qemu_loglevel_mask(CPU_LOG_PAGE)) {
         qemu_log("guest_base  0x%lx\n", guest_base);
         log_page_dump();
 
diff --git a/include/qemu/log.h b/include/qemu/log.h
index 964ab9d..d837d90 100644
--- a/include/qemu/log.h
+++ b/include/qemu/log.h
@@ -48,6 +48,7 @@ static inline bool qemu_log_separate(void)
 #define LOG_GUEST_ERROR    (1 << 11)
 #define CPU_LOG_MMU        (1 << 12)
 #define CPU_LOG_TB_NOCHAIN (1 << 13)
+#define CPU_LOG_PAGE       (1 << 14)
 
 /* Returns true if a bit is set in the current loglevel mask
  */
diff --git a/linux-user/elfload.c b/linux-user/elfload.c
index 8b17c0e..b90be12 100644
--- a/linux-user/elfload.c
+++ b/linux-user/elfload.c
@@ -1743,7 +1743,7 @@ unsigned long init_guest_space(unsigned long host_start,
         }
     }
 
-    qemu_log("Reserved 0x%lx bytes of guest address space\n", host_size);
+    qemu_log_mask(CPU_LOG_PAGE, "Reserved 0x%lx bytes of guest address space\n", host_size);
 
     return real_start;
 }
@@ -1784,9 +1784,9 @@ static void probe_guest_base(const char *image_name,
         }
         guest_base = real_start - loaddr;
 
-        qemu_log("Relocating guest address space from 0x"
-                 TARGET_ABI_FMT_lx " to 0x%lx\n",
-                 loaddr, real_start);
+        qemu_log_mask(CPU_LOG_PAGE, "Relocating guest address space from 0x"
+                      TARGET_ABI_FMT_lx " to 0x%lx\n",
+                      loaddr, real_start);
     }
     return;
 
diff --git a/linux-user/main.c b/linux-user/main.c
index a04e91e..6783722 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -4241,7 +4241,7 @@ int main(int argc, char **argv, char **envp)
             unsigned long tmp;
             if (fscanf(fp, "%lu", &tmp) == 1) {
                 mmap_min_addr = tmp;
-                qemu_log("host mmap_min_addr=0x%lx\n", mmap_min_addr);
+                qemu_log_mask(CPU_LOG_PAGE, "host mmap_min_addr=0x%lx\n", mmap_min_addr);
             }
             fclose(fp);
         }
@@ -4300,7 +4300,7 @@ int main(int argc, char **argv, char **envp)
 
     free(target_environ);
 
-    if (qemu_log_enabled()) {
+    if (qemu_loglevel_mask(CPU_LOG_PAGE)) {
         qemu_log("guest_base  0x%lx\n", guest_base);
         log_page_dump();
 
diff --git a/qemu-log.c b/qemu-log.c
index 7cb01a8..901b930 100644
--- a/qemu-log.c
+++ b/qemu-log.c
@@ -117,6 +117,8 @@ const QEMULogItem qemu_log_items[] = {
     { LOG_GUEST_ERROR, "guest_errors",
       "log when the guest OS does something invalid (eg accessing a\n"
       "non-existent register)" },
+    { CPU_LOG_PAGE, "page",
+      "dump pages at beginning of user mode emulation" },
     { CPU_LOG_TB_NOCHAIN, "nochain",
       "do not chain compiled TBs so that \"exec\" and \"cpu\" show\n"
       "complete traces" },
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PATCH 10/11] linux-user: avoid "naked" qemu_log
  2015-12-12 10:36 [Qemu-devel] [PATCH 00/11] Avoid always-active qemu_log calls Paolo Bonzini
                   ` (8 preceding siblings ...)
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 09/11] user: introduce "-d page" Paolo Bonzini
@ 2015-12-12 10:36 ` Paolo Bonzini
  2015-12-12 15:04   ` Laurent Vivier
  2015-12-12 10:39 ` [Qemu-devel] [PATCH 11/11] linux-user: convert DEBUG_SIGNAL logging to tracepoints Paolo Bonzini
  10 siblings, 1 reply; 22+ messages in thread
From: Paolo Bonzini @ 2015-12-12 10:36 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell

Ensure that all log writes are protected by qemu_loglevel_mask or,
in serious cases, go to both the log and stderr.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 linux-user/main.c | 71 ++++++++++++++++++++++++-------------------------------
 1 file changed, 31 insertions(+), 40 deletions(-)

diff --git a/linux-user/main.c b/linux-user/main.c
index 6783722..ee12035 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -45,6 +45,18 @@ static const char *cpu_model;
 unsigned long mmap_min_addr;
 unsigned long guest_base;
 int have_guest_base;
+
+#define EXCP_DUMP(env, fmt, ...)                                        \
+do {                                                                    \
+    CPUState *cs = ENV_GET_CPU(env);                                    \
+    fprintf(stderr, fmt , ## __VA_ARGS__);                              \
+    cpu_dump_state(cs, stderr, fprintf, 0);                             \
+    if (qemu_log_separate()) {                                          \
+        qemu_log(fmt, ## __VA_ARGS__);                                  \
+        log_cpu_state(cs, 0);                                           \
+    }                                                                   \
+} while (0)
+
 #if (TARGET_LONG_BITS == 32) && (HOST_LONG_BITS == 64)
 /*
  * When running 32-on-64 we should make sure we can fit all of the possible
@@ -416,8 +428,8 @@ void cpu_loop(CPUX86State *env)
             break;
         default:
             pc = env->segs[R_CS].base + env->eip;
-            fprintf(stderr, "qemu: 0x%08lx: unhandled CPU exception 0x%x - aborting\n",
-                    (long)pc, trapnr);
+            EXCP_DUMP(env, "qemu: 0x%08lx: unhandled CPU exception 0x%x - aborting\n",
+                      (long)pc, trapnr);
             abort();
         }
         process_pending_signals(env);
@@ -865,9 +877,7 @@ void cpu_loop(CPUARMState *env)
             break;
         default:
         error:
-            fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n",
-                    trapnr);
-            cpu_dump_state(cs, stderr, fprintf, 0);
+            EXCP_DUMP(env, "qemu: unhandled CPU exception 0x%x - aborting\n", trapnr);
             abort();
         }
         process_pending_signals(env);
@@ -1056,9 +1066,7 @@ void cpu_loop(CPUARMState *env)
             env->xregs[0] = do_arm_semihosting(env);
             break;
         default:
-            fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n",
-                    trapnr);
-            cpu_dump_state(cs, stderr, fprintf, 0);
+            EXCP_DUMP(env, "qemu: unhandled CPU exception 0x%x - aborting\n", trapnr);
             abort();
         }
         process_pending_signals(env);
@@ -1148,8 +1156,7 @@ void cpu_loop(CPUUniCore32State *env)
     }
 
 error:
-    fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n", trapnr);
-    cpu_dump_state(cs, stderr, fprintf, 0);
+    EXCP_DUMP(env, "qemu: unhandled CPU exception 0x%x - aborting\n", trapnr);
     abort();
 }
 #endif
@@ -1467,17 +1474,6 @@ int ppc_dcr_write (ppc_dcr_t *dcr_env, int dcrn, uint32_t val)
     return -1;
 }
 
-#define EXCP_DUMP(env, fmt, ...)                                        \
-do {                                                                    \
-    CPUState *cs = ENV_GET_CPU(env);                                    \
-    fprintf(stderr, fmt , ## __VA_ARGS__);                              \
-    cpu_dump_state(cs, stderr, fprintf, 0);                             \
-    if (qemu_log_separate()) {                                          \
-        qemu_log(fmt, ## __VA_ARGS__);                                  \
-        log_cpu_state(cs, 0);                                           \
-    }                                                                   \
-} while (0)
-
 static int do_store_exclusive(CPUPPCState *env)
 {
     target_ulong addr;
@@ -2636,9 +2632,7 @@ done_syscall:
             break;
         default:
 error:
-            fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n",
-                    trapnr);
-            cpu_dump_state(cs, stderr, fprintf, 0);
+            EXCP_DUMP(env, "qemu: unhandled CPU exception 0x%x - aborting\n", trapnr);
             abort();
         }
         process_pending_signals(env);
@@ -2661,11 +2655,11 @@ void cpu_loop(CPUOpenRISCState *env)
 
         switch (trapnr) {
         case EXCP_RESET:
-            qemu_log("\nReset request, exit, pc is %#x\n", env->pc);
+            qemu_log_mask(CPU_LOG_INT, "\nReset request, exit, pc is %#x\n", env->pc);
             exit(EXIT_FAILURE);
             break;
         case EXCP_BUSERR:
-            qemu_log("\nBus error, exit, pc is %#x\n", env->pc);
+            qemu_log_mask(CPU_LOG_INT, "\nBus error, exit, pc is %#x\n", env->pc);
             gdbsig = TARGET_SIGBUS;
             break;
         case EXCP_DPF:
@@ -2674,25 +2668,25 @@ void cpu_loop(CPUOpenRISCState *env)
             gdbsig = TARGET_SIGSEGV;
             break;
         case EXCP_TICK:
-            qemu_log("\nTick time interrupt pc is %#x\n", env->pc);
+            qemu_log_mask(CPU_LOG_INT, "\nTick time interrupt pc is %#x\n", env->pc);
             break;
         case EXCP_ALIGN:
-            qemu_log("\nAlignment pc is %#x\n", env->pc);
+            qemu_log_mask(CPU_LOG_INT, "\nAlignment pc is %#x\n", env->pc);
             gdbsig = TARGET_SIGBUS;
             break;
         case EXCP_ILLEGAL:
-            qemu_log("\nIllegal instructionpc is %#x\n", env->pc);
+            qemu_log_mask(CPU_LOG_INT, "\nIllegal instructionpc is %#x\n", env->pc);
             gdbsig = TARGET_SIGILL;
             break;
         case EXCP_INT:
-            qemu_log("\nExternal interruptpc is %#x\n", env->pc);
+            qemu_log_mask(CPU_LOG_INT, "\nExternal interruptpc is %#x\n", env->pc);
             break;
         case EXCP_DTLBMISS:
         case EXCP_ITLBMISS:
-            qemu_log("\nTLB miss\n");
+            qemu_log_mask(CPU_LOG_INT, "\nTLB miss\n");
             break;
         case EXCP_RANGE:
-            qemu_log("\nRange\n");
+            qemu_log_mask(CPU_LOG_INT, "\nRange\n");
             gdbsig = TARGET_SIGSEGV;
             break;
         case EXCP_SYSCALL:
@@ -2707,19 +2701,18 @@ void cpu_loop(CPUOpenRISCState *env)
                                       env->gpr[8], 0, 0);
             break;
         case EXCP_FPE:
-            qemu_log("\nFloating point error\n");
+            qemu_log_mask(CPU_LOG_INT, "\nFloating point error\n");
             break;
         case EXCP_TRAP:
-            qemu_log("\nTrap\n");
+            qemu_log_mask(CPU_LOG_INT, "\nTrap\n");
             gdbsig = TARGET_SIGTRAP;
             break;
         case EXCP_NR:
-            qemu_log("\nNR\n");
+            qemu_log_mask(CPU_LOG_INT, "\nNR\n");
             break;
         default:
-            qemu_log("\nqemu: unhandled CPU exception %#x - aborting\n",
+            EXCP_DUMP(env, "\nqemu: unhandled CPU exception %#x - aborting\n",
                      trapnr);
-            cpu_dump_state(cs, stderr, fprintf, 0);
             gdbsig = TARGET_SIGILL;
             break;
         }
@@ -3047,9 +3040,7 @@ void cpu_loop(CPUM68KState *env)
             }
             break;
         default:
-            fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n",
-                    trapnr);
-            cpu_dump_state(cs, stderr, fprintf, 0);
+            EXCP_DUMP(env, "qemu: unhandled CPU exception 0x%x - aborting\n", trapnr);
             abort();
         }
         process_pending_signals(env);
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [Qemu-devel] [PATCH 11/11] linux-user: convert DEBUG_SIGNAL logging to tracepoints
  2015-12-12 10:36 [Qemu-devel] [PATCH 00/11] Avoid always-active qemu_log calls Paolo Bonzini
                   ` (9 preceding siblings ...)
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 10/11] linux-user: avoid "naked" qemu_log Paolo Bonzini
@ 2015-12-12 10:39 ` Paolo Bonzini
  2015-12-12 15:08   ` Laurent Vivier
  2015-12-15  6:59   ` Thomas Huth
  10 siblings, 2 replies; 22+ messages in thread
From: Paolo Bonzini @ 2015-12-12 10:39 UTC (permalink / raw)
  To: qemu-devel; +Cc: peter.maydell

"Unimplemented" messages go to stderr, everything else goes to tracepoints

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 bsd-user/signal.c   |   2 -
 linux-user/signal.c | 118 ++++++++++++++++++++++++++--------------------------
 trace-events        |  11 +++++
 3 files changed, 69 insertions(+), 62 deletions(-)

diff --git a/bsd-user/signal.c b/bsd-user/signal.c
index e4ee2d0..4887ecc 100644
--- a/bsd-user/signal.c
+++ b/bsd-user/signal.c
@@ -26,8 +26,6 @@
 #include "qemu.h"
 #include "target_signal.h"
 
-//#define DEBUG_SIGNAL
-
 void signal_init(void)
 {
 }
diff --git a/linux-user/signal.c b/linux-user/signal.c
index 9d62e02..919aa83 100644
--- a/linux-user/signal.c
+++ b/linux-user/signal.c
@@ -28,8 +28,7 @@
 #include "qemu.h"
 #include "qemu-common.h"
 #include "target_signal.h"
-
-//#define DEBUG_SIGNAL
+#include "trace.h"
 
 static struct target_sigaltstack target_sigaltstack_used = {
     .ss_sp = 0,
@@ -444,7 +443,9 @@ static void QEMU_NORETURN force_sig(int target_sig)
     TaskState *ts = (TaskState *)cpu->opaque;
     int host_sig, core_dumped = 0;
     struct sigaction act;
+
     host_sig = target_to_host_signal(target_sig);
+    trace_user_force_sig(env, target_sig, host_sig);
     gdb_signalled(env, target_sig);
 
     /* dump core if supported by target binary format */
@@ -499,10 +500,7 @@ int queue_signal(CPUArchState *env, int sig, target_siginfo_t *info)
     abi_ulong handler;
     int queue;
 
-#if defined(DEBUG_SIGNAL)
-    fprintf(stderr, "queue_signal: sig=%d\n",
-            sig);
-#endif
+    trace_user_queue_signal(env, sig);
     k = &ts->sigtab[sig - 1];
     queue = gdb_queuesig ();
     handler = sigact_table[sig - 1]._sa_handler;
@@ -587,9 +585,7 @@ static void host_signal_handler(int host_signum, siginfo_t *info,
     sig = host_to_target_signal(host_signum);
     if (sig < 1 || sig > TARGET_NSIG)
         return;
-#if defined(DEBUG_SIGNAL)
-    fprintf(stderr, "qemu: got signal %d\n", sig);
-#endif
+    trace_user_host_signal(env, host_signum, sig);
     host_to_target_siginfo_noswap(&tinfo, info);
     if (queue_signal(env, sig, &tinfo) == 1) {
         /* interrupt the virtual CPU as soon as possible */
@@ -682,10 +678,6 @@ int do_sigaction(int sig, const struct target_sigaction *act,
     if (sig < 1 || sig > TARGET_NSIG || sig == TARGET_SIGKILL || sig == TARGET_SIGSTOP)
         return -EINVAL;
     k = &sigact_table[sig - 1];
-#if defined(DEBUG_SIGNAL)
-    fprintf(stderr, "sigaction sig=%d act=0x%p, oact=0x%p\n",
-            sig, act, oact);
-#endif
     if (oact) {
         __put_user(k->_sa_handler, &oact->_sa_handler);
         __put_user(k->sa_flags, &oact->sa_flags);
@@ -909,6 +901,7 @@ static void setup_frame(int sig, struct target_sigaction *ka,
 	int i;
 
 	frame_addr = get_sigframe(ka, env, sizeof(*frame));
+        trace_user_setup_frame(env, frame_addr);
 
 	if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
 		goto give_sigsegv;
@@ -970,6 +963,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
 	int i;
 
 	frame_addr = get_sigframe(ka, env, sizeof(*frame));
+        trace_user_setup_rt_frame(env, frame_addr);
 
 	if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
 		goto give_sigsegv;
@@ -1081,9 +1075,7 @@ long do_sigreturn(CPUX86State *env)
     sigset_t set;
     int eax, i;
 
-#if defined(DEBUG_SIGNAL)
-    fprintf(stderr, "do_sigreturn\n");
-#endif
+    trace_user_do_sigreturn(env, frame_addr);
     if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
         goto badframe;
     /* set blocked signals */
@@ -1115,6 +1107,7 @@ long do_rt_sigreturn(CPUX86State *env)
 	int eax;
 
         frame_addr = env->regs[R_ESP] - 4;
+        trace_user_do_rt_sigreturn(env, frame_addr);
         if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
                 goto badframe;
         target_to_host_sigset(&set, &frame->uc.tuc_sigmask);
@@ -1318,6 +1311,7 @@ static void target_setup_frame(int usig, struct target_sigaction *ka,
     abi_ulong frame_addr, return_addr;
 
     frame_addr = get_sigframe(ka, env);
+    trace_user_setup_frame(env, frame_addr);
     if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) {
         goto give_sigsegv;
     }
@@ -1377,6 +1371,7 @@ long do_rt_sigreturn(CPUARMState *env)
     struct target_rt_sigframe *frame = NULL;
     abi_ulong frame_addr = env->xregs[31];
 
+    trace_user_do_rt_sigreturn(env, frame_addr);
     if (frame_addr & 15) {
         goto badframe;
     }
@@ -1703,6 +1698,7 @@ static void setup_frame_v1(int usig, struct target_sigaction *ka,
 	abi_ulong frame_addr = get_sigframe(ka, regs, sizeof(*frame));
 	int i;
 
+        trace_user_setup_frame(regs, frame_addr);
 	if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
 		return;
 
@@ -1724,6 +1720,7 @@ static void setup_frame_v2(int usig, struct target_sigaction *ka,
 	struct sigframe_v2 *frame;
 	abi_ulong frame_addr = get_sigframe(ka, regs, sizeof(*frame));
 
+        trace_user_setup_frame(regs, frame_addr);
 	if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
 		return;
 
@@ -1756,6 +1753,7 @@ static void setup_rt_frame_v1(int usig, struct target_sigaction *ka,
 	int i;
         abi_ulong info_addr, uc_addr;
 
+        trace_user_setup_rt_frame(env, frame_addr);
 	if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
             return /* 1 */;
 
@@ -1796,6 +1794,7 @@ static void setup_rt_frame_v2(int usig, struct target_sigaction *ka,
 	abi_ulong frame_addr = get_sigframe(ka, env, sizeof(*frame));
         abi_ulong info_addr, uc_addr;
 
+        trace_user_setup_rt_frame(env, frame_addr);
 	if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
             return /* 1 */;
 
@@ -1871,6 +1870,7 @@ static long do_sigreturn_v1(CPUARMState *env)
 	 * not, then the user is trying to mess with us.
 	 */
         frame_addr = env->regs[13];
+        trace_user_do_sigreturn(env, frame_addr);
         if (frame_addr & 7) {
             goto badframe;
         }
@@ -2007,6 +2007,7 @@ static long do_sigreturn_v2(CPUARMState *env)
 	 * not, then the user is trying to mess with us.
 	 */
         frame_addr = env->regs[13];
+        trace_user_do_sigreturn(env, frame_addr);
         if (frame_addr & 7) {
             goto badframe;
         }
@@ -2047,6 +2048,7 @@ static long do_rt_sigreturn_v1(CPUARMState *env)
 	 * not, then the user is trying to mess with us.
 	 */
         frame_addr = env->regs[13];
+        trace_user_do_rt_sigreturn(env, frame_addr);
         if (frame_addr & 7) {
             goto badframe;
         }
@@ -2088,6 +2090,7 @@ static long do_rt_sigreturn_v2(CPUARMState *env)
 	 * not, then the user is trying to mess with us.
 	 */
         frame_addr = env->regs[13];
+        trace_user_do_rt_sigreturn(env, frame_addr);
         if (frame_addr & 7) {
             goto badframe;
         }
@@ -2283,13 +2286,13 @@ static void setup_frame(int sig, struct target_sigaction *ka,
 
         sigframe_size = NF_ALIGNEDSZ;
 	sf_addr = get_sigframe(ka, env, sigframe_size);
+        trace_user_setup_frame(env, sf_addr);
 
         sf = lock_user(VERIFY_WRITE, sf_addr, 
                        sizeof(struct target_signal_frame), 0);
         if (!sf)
 		goto sigsegv;
                 
-	//fprintf(stderr, "sf: %x pc %x fp %x sp %x\n", sf, env->pc, env->regwptr[UREG_FP], env->regwptr[UREG_SP]);
 #if 0
 	if (invalid_frame_pointer(sf, sigframe_size))
 		goto sigill_and_return;
@@ -2356,7 +2359,6 @@ sigill_and_return:
 	force_sig(TARGET_SIGILL);
 #endif
 sigsegv:
-	//fprintf(stderr, "force_sig\n");
         unlock_user(sf, sf_addr, sizeof(struct target_signal_frame));
 	force_sig(TARGET_SIGSEGV);
 }
@@ -2378,13 +2380,9 @@ long do_sigreturn(CPUSPARCState *env)
         int err=0, i;
 
         sf_addr = env->regwptr[UREG_FP];
+        trace_user_do_sigreturn(env, sf_addr);
         if (!lock_user_struct(VERIFY_READ, sf, sf_addr, 1))
                 goto segv_and_exit;
-#if 0
-	fprintf(stderr, "sigreturn\n");
-	fprintf(stderr, "sf: %x pc %x fp %x sp %x\n", sf, env->pc, env->regwptr[UREG_FP], env->regwptr[UREG_SP]);
-#endif
-	//cpu_dump_state(env, stderr, fprintf, 0);
 
         /* 1. Make sure we are not getting garbage from the user */
 
@@ -2443,6 +2441,7 @@ segv_and_exit:
 
 long do_rt_sigreturn(CPUSPARCState *env)
 {
+    trace_user_do_rt_sigreturn(env, 0);
     fprintf(stderr, "do_rt_sigreturn: not implemented\n");
     return -TARGET_ENOSYS;
 }
@@ -2902,6 +2901,7 @@ static void setup_frame(int sig, struct target_sigaction * ka,
     int i;
 
     frame_addr = get_sigframe(ka, regs, sizeof(*frame));
+    trace_user_setup_frame(regs, frame_addr);
     if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
 	goto give_sigsegv;
 
@@ -2948,10 +2948,8 @@ long do_sigreturn(CPUMIPSState *regs)
     target_sigset_t target_set;
     int i;
 
-#if defined(DEBUG_SIGNAL)
-    fprintf(stderr, "do_sigreturn\n");
-#endif
     frame_addr = regs->active_tc.gpr[29];
+    trace_user_do_sigreturn(regs, frame_addr);
     if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
    	goto badframe;
 
@@ -2998,6 +2996,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
     int i;
 
     frame_addr = get_sigframe(ka, env, sizeof(*frame));
+    trace_user_setup_rt_frame(env, frame_addr);
     if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
 	goto give_sigsegv;
 
@@ -3055,10 +3054,8 @@ long do_rt_sigreturn(CPUMIPSState *env)
     abi_ulong frame_addr;
     sigset_t blocked;
 
-#if defined(DEBUG_SIGNAL)
-    fprintf(stderr, "do_rt_sigreturn\n");
-#endif
     frame_addr = env->active_tc.gpr[29];
+    trace_user_do_rt_sigreturn(env, frame_addr);
     if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
    	goto badframe;
 
@@ -3216,6 +3213,7 @@ static void setup_frame(int sig, struct target_sigaction *ka,
     int err = 0;
 
     frame_addr = get_sigframe(ka, regs->gregs[15], sizeof(*frame));
+    trace_user_setup_frame(regs, frame_addr);
     if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
 	goto give_sigsegv;
 
@@ -3265,6 +3263,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
     int err = 0;
 
     frame_addr = get_sigframe(ka, regs->gregs[15], sizeof(*frame));
+    trace_user_setup_rt_frame(regs, frame_addr);
     if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
 	goto give_sigsegv;
 
@@ -3325,10 +3324,8 @@ long do_sigreturn(CPUSH4State *regs)
     int i;
     int err = 0;
 
-#if defined(DEBUG_SIGNAL)
-    fprintf(stderr, "do_sigreturn\n");
-#endif
     frame_addr = regs->gregs[15];
+    trace_user_do_sigreturn(regs, frame_addr);
     if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
    	goto badframe;
 
@@ -3361,10 +3358,8 @@ long do_rt_sigreturn(CPUSH4State *regs)
     sigset_t blocked;
     target_ulong r0;
 
-#if defined(DEBUG_SIGNAL)
-    fprintf(stderr, "do_rt_sigreturn\n");
-#endif
     frame_addr = regs->gregs[15];
+    trace_user_do_rt_sigreturn(regs, frame_addr);
     if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
    	goto badframe;
 
@@ -3514,6 +3509,7 @@ static void setup_frame(int sig, struct target_sigaction *ka,
     int i;
 
     frame_addr = get_sigframe(ka, env, sizeof *frame);
+    trace_user_setup_frame(env, frame_addr);
     if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
         goto badframe;
 
@@ -3579,6 +3575,7 @@ long do_sigreturn(CPUMBState *env)
     int i;
 
     frame_addr = env->regs[R_SP];
+    trace_user_do_sigreturn(env, frame_addr);
     /* Make sure the guest isn't playing games.  */
     if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 1))
         goto badframe;
@@ -3604,6 +3601,7 @@ long do_sigreturn(CPUMBState *env)
 
 long do_rt_sigreturn(CPUMBState *env)
 {
+    trace_user_do_rt_sigreturn(env, 0);
     fprintf(stderr, "Microblaze do_rt_sigreturn: not implemented\n");
     return -TARGET_ENOSYS;
 }
@@ -3693,6 +3691,7 @@ static void setup_frame(int sig, struct target_sigaction *ka,
 	int i;
 
 	frame_addr = get_sigframe(env, sizeof *frame);
+        trace_user_setup_frame(env, frame_addr);
 	if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
 		goto badframe;
 
@@ -3746,6 +3745,7 @@ long do_sigreturn(CPUCRISState *env)
 	int i;
 
 	frame_addr = env->regs[R_SP];
+        trace_user_do_sigreturn(env, frame_addr);
 	/* Make sure the guest isn't playing games.  */
 	if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 1))
 		goto badframe;
@@ -3767,6 +3767,7 @@ long do_sigreturn(CPUCRISState *env)
 
 long do_rt_sigreturn(CPUCRISState *env)
 {
+    trace_user_do_rt_sigreturn(env, 0);
     fprintf(stderr, "CRIS do_rt_sigreturn: not implemented\n");
     return -TARGET_ENOSYS;
 }
@@ -3911,6 +3912,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
     abi_ulong info_addr, uc_addr;
 
     frame_addr = get_sigframe(ka, env, sizeof(*frame));
+    trace_user_setup_rt_frame(env, frame_addr);
     if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) {
         goto give_sigsegv;
     }
@@ -3972,14 +3974,15 @@ give_sigsegv:
 
 long do_sigreturn(CPUOpenRISCState *env)
 {
-
-    qemu_log("do_sigreturn: not implemented\n");
+    trace_user_do_sigreturn(env, 0);
+    fprintf(stderr, "do_sigreturn: not implemented\n");
     return -TARGET_ENOSYS;
 }
 
 long do_rt_sigreturn(CPUOpenRISCState *env)
 {
-    qemu_log("do_rt_sigreturn: not implemented\n");
+    trace_user_do_rt_sigreturn(env, 0);
+    fprintf(stderr, "do_rt_sigreturn: not implemented\n");
     return -TARGET_ENOSYS;
 }
 /* TARGET_OPENRISC */
@@ -4102,13 +4105,11 @@ static void setup_frame(int sig, struct target_sigaction *ka,
     abi_ulong frame_addr;
 
     frame_addr = get_sigframe(ka, env, sizeof(*frame));
-    qemu_log("%s: frame_addr 0x%llx\n", __FUNCTION__,
-             (unsigned long long)frame_addr);
+    trace_user_setup_frame(env, frame_addr);
     if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) {
             goto give_sigsegv;
     }
 
-    qemu_log("%s: 1\n", __FUNCTION__);
     __put_user(set->sig[0], &frame->sc.oldmask[0]);
 
     save_sigregs(env, &frame->sregs);
@@ -4149,7 +4150,6 @@ static void setup_frame(int sig, struct target_sigaction *ka,
     return;
 
 give_sigsegv:
-    qemu_log("%s: give_sigsegv\n", __FUNCTION__);
     force_sig(TARGET_SIGSEGV);
 }
 
@@ -4162,13 +4162,11 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
     abi_ulong frame_addr;
 
     frame_addr = get_sigframe(ka, env, sizeof *frame);
-    qemu_log("%s: frame_addr 0x%llx\n", __FUNCTION__,
-             (unsigned long long)frame_addr);
+    trace_user_setup_rt_frame(env, frame_addr);
     if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) {
         goto give_sigsegv;
     }
 
-    qemu_log("%s: 1\n", __FUNCTION__);
     tswap_siginfo(&frame->info, info);
 
     /* Create the ucontext.  */
@@ -4207,7 +4205,6 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
     return;
 
 give_sigsegv:
-    qemu_log("%s: give_sigsegv\n", __FUNCTION__);
     force_sig(TARGET_SIGSEGV);
 }
 
@@ -4222,9 +4219,8 @@ restore_sigregs(CPUS390XState *env, target_sigregs *sc)
     }
 
     __get_user(env->psw.mask, &sc->regs.psw.mask);
-    qemu_log("%s: sc->regs.psw.addr 0x%llx env->psw.addr 0x%llx\n",
-             __FUNCTION__, (unsigned long long)sc->regs.psw.addr,
-             (unsigned long long)env->psw.addr);
+    trace_user_s390x_restore_sigregs(env, (unsigned long long)sc->regs.psw.addr,
+                                     (unsigned long long)env->psw.addr);
     __get_user(env->psw.addr, &sc->regs.psw.addr);
     /* FIXME: 31-bit -> | PSW_ADDR_AMODE */
 
@@ -4242,11 +4238,10 @@ long do_sigreturn(CPUS390XState *env)
 {
     sigframe *frame;
     abi_ulong frame_addr = env->regs[15];
-    qemu_log("%s: frame_addr 0x%llx\n", __FUNCTION__,
-             (unsigned long long)frame_addr);
     target_sigset_t target_set;
     sigset_t set;
 
+    trace_user_do_sigreturn(env, frame_addr);
     if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1)) {
         goto badframe;
     }
@@ -4271,10 +4266,9 @@ long do_rt_sigreturn(CPUS390XState *env)
 {
     rt_sigframe *frame;
     abi_ulong frame_addr = env->regs[15];
-    qemu_log("%s: frame_addr 0x%llx\n", __FUNCTION__,
-             (unsigned long long)frame_addr);
     sigset_t set;
 
+    trace_user_do_rt_sigreturn(env, frame_addr);
     if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1)) {
         goto badframe;
     }
@@ -4659,6 +4653,7 @@ static void setup_frame(int sig, struct target_sigaction *ka,
 #endif
 
     frame_addr = get_sigframe(ka, env, sizeof(*frame));
+    trace_user_setup_frame(env, frame_addr);
     if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 1))
         goto sigsegv;
     sc = &frame->sctx;
@@ -4723,7 +4718,6 @@ static void setup_frame(int sig, struct target_sigaction *ka,
 
 sigsegv:
     unlock_user_struct(frame, frame_addr, 1);
-    qemu_log("segfaulting from setup_frame\n");
     force_sig(TARGET_SIGSEGV);
 }
 
@@ -4819,7 +4813,6 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
 
 sigsegv:
     unlock_user_struct(rt_sf, rt_sf_addr, 1);
-    qemu_log("segfaulting from setup_rt_frame\n");
     force_sig(TARGET_SIGSEGV);
 
 }
@@ -4857,7 +4850,6 @@ long do_sigreturn(CPUPPCState *env)
 sigsegv:
     unlock_user_struct(sr, sr_addr, 1);
     unlock_user_struct(sc, sc_addr, 1);
-    qemu_log("segfaulting from do_sigreturn\n");
     force_sig(TARGET_SIGSEGV);
     return 0;
 }
@@ -4913,7 +4905,6 @@ long do_rt_sigreturn(CPUPPCState *env)
 
 sigsegv:
     unlock_user_struct(rt_sf, rt_sf_addr, 1);
-    qemu_log("segfaulting from do_rt_sigreturn\n");
     force_sig(TARGET_SIGSEGV);
     return 0;
 }
@@ -5037,6 +5028,7 @@ static void setup_frame(int sig, struct target_sigaction *ka,
     int i;
 
     frame_addr = get_sigframe(ka, env, sizeof *frame);
+    trace_user_setup_frame(env, frame_addr);
     if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
 	goto give_sigsegv;
 
@@ -5153,6 +5145,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
     int i;
 
     frame_addr = get_sigframe(ka, env, sizeof *frame);
+    trace_user_setup_rt_frame(env, frame_addr);
     if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
 	goto give_sigsegv;
 
@@ -5220,6 +5213,7 @@ long do_sigreturn(CPUM68KState *env)
     sigset_t set;
     int d0, i;
 
+    trace_user_do_sigreturn(env, frame_addr);
     if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
         goto badframe;
 
@@ -5254,6 +5248,7 @@ long do_rt_sigreturn(CPUM68KState *env)
     sigset_t set;
     int d0;
 
+    trace_user_do_rt_sigreturn(env, frame_addr);
     if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
         goto badframe;
 
@@ -5393,6 +5388,7 @@ static void setup_frame(int sig, struct target_sigaction *ka,
     int err = 0;
 
     frame_addr = get_sigframe(ka, env, sizeof(*frame));
+    trace_user_setup_frame(env, frame_addr);
     if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) {
         goto give_sigsegv;
     }
@@ -5437,6 +5433,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
     int i, err = 0;
 
     frame_addr = get_sigframe(ka, env, sizeof(*frame));
+    trace_user_setup_rt_frame(env, frame_addr);
     if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) {
         goto give_sigsegv;
     }
@@ -5515,6 +5512,7 @@ long do_rt_sigreturn(CPUAlphaState *env)
     struct target_rt_sigframe *frame;
     sigset_t set;
 
+    trace_user_do_rt_sigreturn(env, frame_addr);
     if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1)) {
         goto badframe;
     }
@@ -5622,6 +5620,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
     unsigned long restorer;
 
     frame_addr = get_sigframe(ka, env, sizeof(*frame));
+    trace_user_setup_rt_frame(env, frame_addr);
     if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) {
         goto give_sigsegv;
     }
@@ -5672,6 +5671,7 @@ long do_rt_sigreturn(CPUTLGState *env)
     struct target_rt_sigframe *frame;
     sigset_t set;
 
+    trace_user_do_rt_sigreturn(env, frame_addr);
     if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1)) {
         goto badframe;
     }
@@ -5750,9 +5750,7 @@ void process_pending_signals(CPUArchState *cpu_env)
     return;
 
  handle_signal:
-#ifdef DEBUG_SIGNAL
-    fprintf(stderr, "qemu: process signal %d\n", sig);
-#endif
+    trace_user_handle_signal(cpu_env, sig);
     /* dequeue signal */
     q = k->first;
     k->first = q->next;
diff --git a/trace-events b/trace-events
index ee890c1..7d02e08 100644
--- a/trace-events
+++ b/trace-events
@@ -1795,3 +1795,14 @@ qcrypto_tls_session_new(void *session, void *creds, const char *hostname, const
 
 # net/vhost-user.c
 vhost_user_event(const char *chr, int event) "chr: %s got event: %d"
+
+# linux-user/signal.c
+user_setup_frame(void *env, uint64_t frame_addr) "env=%p frame_addr="PRIx64""
+user_setup_rt_frame(void *env, uint64_t frame_addr) "env=%p frame_addr="PRIx64""
+user_do_rt_sigreturn(void *env, uint64_t frame_addr) "env=%p frame_addr="PRIx64""
+user_do_sigreturn(void *env, uint64_t frame_addr) "env=%p frame_addr="PRIx64""
+user_force_sig(void *env, int target_sig, int host_sig) "env=%p signal %d (host %d)"
+user_handle_signal(void *env, int target_sig) "env=%p signal %d"
+user_host_signal(void *env, int host_sig, int target_sig) "env=%p signal %d (target %d("
+user_queue_signal(void *env, int target_sig) "env=%p signal %d"
+user_s390x_restore_sigregs(void *env, uint64_t sc_psw_addr, uint64_t env_psw_addr) "env=%p frame psw.addr "PRIx64 " current psw.addr "PRIx64""
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* Re: [Qemu-devel] [PATCH 10/11] linux-user: avoid "naked" qemu_log
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 10/11] linux-user: avoid "naked" qemu_log Paolo Bonzini
@ 2015-12-12 15:04   ` Laurent Vivier
  0 siblings, 0 replies; 22+ messages in thread
From: Laurent Vivier @ 2015-12-12 15:04 UTC (permalink / raw)
  To: Paolo Bonzini, qemu-devel; +Cc: peter.maydell



Le 12/12/2015 11:36, Paolo Bonzini a écrit :
> Ensure that all log writes are protected by qemu_loglevel_mask or,
> in serious cases, go to both the log and stderr.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  linux-user/main.c | 71 ++++++++++++++++++++++++-------------------------------
>  1 file changed, 31 insertions(+), 40 deletions(-)
> 
> diff --git a/linux-user/main.c b/linux-user/main.c
> index 6783722..ee12035 100644
> --- a/linux-user/main.c
> +++ b/linux-user/main.c
> @@ -45,6 +45,18 @@ static const char *cpu_model;
>  unsigned long mmap_min_addr;
>  unsigned long guest_base;
>  int have_guest_base;
> +
> +#define EXCP_DUMP(env, fmt, ...)                                        \
> +do {                                                                    \
> +    CPUState *cs = ENV_GET_CPU(env);                                    \
> +    fprintf(stderr, fmt , ## __VA_ARGS__);                              \
> +    cpu_dump_state(cs, stderr, fprintf, 0);                             \
> +    if (qemu_log_separate()) {                                          \
> +        qemu_log(fmt, ## __VA_ARGS__);                                  \
> +        log_cpu_state(cs, 0);                                           \
> +    }                                                                   \
> +} while (0)
> +
>  #if (TARGET_LONG_BITS == 32) && (HOST_LONG_BITS == 64)
>  /*
>   * When running 32-on-64 we should make sure we can fit all of the possible
> @@ -416,8 +428,8 @@ void cpu_loop(CPUX86State *env)
>              break;
>          default:
>              pc = env->segs[R_CS].base + env->eip;
> -            fprintf(stderr, "qemu: 0x%08lx: unhandled CPU exception 0x%x - aborting\n",
> -                    (long)pc, trapnr);
> +            EXCP_DUMP(env, "qemu: 0x%08lx: unhandled CPU exception 0x%x - aborting\n",
> +                      (long)pc, trapnr);
>              abort();
>          }
>          process_pending_signals(env);
> @@ -865,9 +877,7 @@ void cpu_loop(CPUARMState *env)
>              break;
>          default:
>          error:
> -            fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n",
> -                    trapnr);
> -            cpu_dump_state(cs, stderr, fprintf, 0);
> +            EXCP_DUMP(env, "qemu: unhandled CPU exception 0x%x - aborting\n", trapnr);
>              abort();
>          }
>          process_pending_signals(env);
> @@ -1056,9 +1066,7 @@ void cpu_loop(CPUARMState *env)
>              env->xregs[0] = do_arm_semihosting(env);
>              break;
>          default:
> -            fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n",
> -                    trapnr);
> -            cpu_dump_state(cs, stderr, fprintf, 0);
> +            EXCP_DUMP(env, "qemu: unhandled CPU exception 0x%x - aborting\n", trapnr);
>              abort();
>          }
>          process_pending_signals(env);
> @@ -1148,8 +1156,7 @@ void cpu_loop(CPUUniCore32State *env)
>      }
>  
>  error:
> -    fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n", trapnr);
> -    cpu_dump_state(cs, stderr, fprintf, 0);
> +    EXCP_DUMP(env, "qemu: unhandled CPU exception 0x%x - aborting\n", trapnr);
>      abort();
>  }
>  #endif
> @@ -1467,17 +1474,6 @@ int ppc_dcr_write (ppc_dcr_t *dcr_env, int dcrn, uint32_t val)
>      return -1;
>  }
>  
> -#define EXCP_DUMP(env, fmt, ...)                                        \
> -do {                                                                    \
> -    CPUState *cs = ENV_GET_CPU(env);                                    \
> -    fprintf(stderr, fmt , ## __VA_ARGS__);                              \
> -    cpu_dump_state(cs, stderr, fprintf, 0);                             \
> -    if (qemu_log_separate()) {                                          \
> -        qemu_log(fmt, ## __VA_ARGS__);                                  \
> -        log_cpu_state(cs, 0);                                           \
> -    }                                                                   \
> -} while (0)
> -
>  static int do_store_exclusive(CPUPPCState *env)
>  {
>      target_ulong addr;
> @@ -2636,9 +2632,7 @@ done_syscall:
>              break;
>          default:
>  error:
> -            fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n",
> -                    trapnr);
> -            cpu_dump_state(cs, stderr, fprintf, 0);
> +            EXCP_DUMP(env, "qemu: unhandled CPU exception 0x%x - aborting\n", trapnr);
>              abort();
>          }
>          process_pending_signals(env);
> @@ -2661,11 +2655,11 @@ void cpu_loop(CPUOpenRISCState *env)
>  
>          switch (trapnr) {
>          case EXCP_RESET:
> -            qemu_log("\nReset request, exit, pc is %#x\n", env->pc);
> +            qemu_log_mask(CPU_LOG_INT, "\nReset request, exit, pc is %#x\n", env->pc);
>              exit(EXIT_FAILURE);
>              break;
>          case EXCP_BUSERR:
> -            qemu_log("\nBus error, exit, pc is %#x\n", env->pc);
> +            qemu_log_mask(CPU_LOG_INT, "\nBus error, exit, pc is %#x\n", env->pc);
>              gdbsig = TARGET_SIGBUS;
>              break;
>          case EXCP_DPF:
> @@ -2674,25 +2668,25 @@ void cpu_loop(CPUOpenRISCState *env)
>              gdbsig = TARGET_SIGSEGV;
>              break;
>          case EXCP_TICK:
> -            qemu_log("\nTick time interrupt pc is %#x\n", env->pc);
> +            qemu_log_mask(CPU_LOG_INT, "\nTick time interrupt pc is %#x\n", env->pc);
>              break;
>          case EXCP_ALIGN:
> -            qemu_log("\nAlignment pc is %#x\n", env->pc);
> +            qemu_log_mask(CPU_LOG_INT, "\nAlignment pc is %#x\n", env->pc);
>              gdbsig = TARGET_SIGBUS;
>              break;
>          case EXCP_ILLEGAL:
> -            qemu_log("\nIllegal instructionpc is %#x\n", env->pc);
> +            qemu_log_mask(CPU_LOG_INT, "\nIllegal instructionpc is %#x\n", env->pc);
>              gdbsig = TARGET_SIGILL;
>              break;
>          case EXCP_INT:
> -            qemu_log("\nExternal interruptpc is %#x\n", env->pc);
> +            qemu_log_mask(CPU_LOG_INT, "\nExternal interruptpc is %#x\n", env->pc);
>              break;
>          case EXCP_DTLBMISS:
>          case EXCP_ITLBMISS:
> -            qemu_log("\nTLB miss\n");
> +            qemu_log_mask(CPU_LOG_INT, "\nTLB miss\n");
>              break;
>          case EXCP_RANGE:
> -            qemu_log("\nRange\n");
> +            qemu_log_mask(CPU_LOG_INT, "\nRange\n");
>              gdbsig = TARGET_SIGSEGV;
>              break;
>          case EXCP_SYSCALL:
> @@ -2707,19 +2701,18 @@ void cpu_loop(CPUOpenRISCState *env)
>                                        env->gpr[8], 0, 0);
>              break;
>          case EXCP_FPE:
> -            qemu_log("\nFloating point error\n");
> +            qemu_log_mask(CPU_LOG_INT, "\nFloating point error\n");
>              break;
>          case EXCP_TRAP:
> -            qemu_log("\nTrap\n");
> +            qemu_log_mask(CPU_LOG_INT, "\nTrap\n");
>              gdbsig = TARGET_SIGTRAP;
>              break;
>          case EXCP_NR:
> -            qemu_log("\nNR\n");
> +            qemu_log_mask(CPU_LOG_INT, "\nNR\n");
>              break;
>          default:
> -            qemu_log("\nqemu: unhandled CPU exception %#x - aborting\n",
> +            EXCP_DUMP(env, "\nqemu: unhandled CPU exception %#x - aborting\n",
>                       trapnr);
> -            cpu_dump_state(cs, stderr, fprintf, 0);
>              gdbsig = TARGET_SIGILL;
>              break;
>          }
> @@ -3047,9 +3040,7 @@ void cpu_loop(CPUM68KState *env)
>              }
>              break;
>          default:
> -            fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n",
> -                    trapnr);
> -            cpu_dump_state(cs, stderr, fprintf, 0);
> +            EXCP_DUMP(env, "qemu: unhandled CPU exception 0x%x - aborting\n", trapnr);
>              abort();
>          }
>          process_pending_signals(env);
> 
Reviewed-by: Laurent Vivier <laurent@vivier.eu>

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [Qemu-devel] [PATCH 11/11] linux-user: convert DEBUG_SIGNAL logging to tracepoints
  2015-12-12 10:39 ` [Qemu-devel] [PATCH 11/11] linux-user: convert DEBUG_SIGNAL logging to tracepoints Paolo Bonzini
@ 2015-12-12 15:08   ` Laurent Vivier
  2015-12-15  6:59   ` Thomas Huth
  1 sibling, 0 replies; 22+ messages in thread
From: Laurent Vivier @ 2015-12-12 15:08 UTC (permalink / raw)
  To: Paolo Bonzini, qemu-devel; +Cc: peter.maydell



Le 12/12/2015 11:39, Paolo Bonzini a écrit :
> "Unimplemented" messages go to stderr, everything else goes to tracepoints
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  bsd-user/signal.c   |   2 -
>  linux-user/signal.c | 118 ++++++++++++++++++++++++++--------------------------
>  trace-events        |  11 +++++
>  3 files changed, 69 insertions(+), 62 deletions(-)
> 
> diff --git a/bsd-user/signal.c b/bsd-user/signal.c
> index e4ee2d0..4887ecc 100644
> --- a/bsd-user/signal.c
> +++ b/bsd-user/signal.c
> @@ -26,8 +26,6 @@
>  #include "qemu.h"
>  #include "target_signal.h"
>  
> -//#define DEBUG_SIGNAL
> -
>  void signal_init(void)
>  {
>  }
> diff --git a/linux-user/signal.c b/linux-user/signal.c
> index 9d62e02..919aa83 100644
> --- a/linux-user/signal.c
> +++ b/linux-user/signal.c
> @@ -28,8 +28,7 @@
>  #include "qemu.h"
>  #include "qemu-common.h"
>  #include "target_signal.h"
> -
> -//#define DEBUG_SIGNAL
> +#include "trace.h"
>  
>  static struct target_sigaltstack target_sigaltstack_used = {
>      .ss_sp = 0,
> @@ -444,7 +443,9 @@ static void QEMU_NORETURN force_sig(int target_sig)
>      TaskState *ts = (TaskState *)cpu->opaque;
>      int host_sig, core_dumped = 0;
>      struct sigaction act;
> +
>      host_sig = target_to_host_signal(target_sig);
> +    trace_user_force_sig(env, target_sig, host_sig);
>      gdb_signalled(env, target_sig);
>  
>      /* dump core if supported by target binary format */
> @@ -499,10 +500,7 @@ int queue_signal(CPUArchState *env, int sig, target_siginfo_t *info)
>      abi_ulong handler;
>      int queue;
>  
> -#if defined(DEBUG_SIGNAL)
> -    fprintf(stderr, "queue_signal: sig=%d\n",
> -            sig);
> -#endif
> +    trace_user_queue_signal(env, sig);
>      k = &ts->sigtab[sig - 1];
>      queue = gdb_queuesig ();
>      handler = sigact_table[sig - 1]._sa_handler;
> @@ -587,9 +585,7 @@ static void host_signal_handler(int host_signum, siginfo_t *info,
>      sig = host_to_target_signal(host_signum);
>      if (sig < 1 || sig > TARGET_NSIG)
>          return;
> -#if defined(DEBUG_SIGNAL)
> -    fprintf(stderr, "qemu: got signal %d\n", sig);
> -#endif
> +    trace_user_host_signal(env, host_signum, sig);
>      host_to_target_siginfo_noswap(&tinfo, info);
>      if (queue_signal(env, sig, &tinfo) == 1) {
>          /* interrupt the virtual CPU as soon as possible */
> @@ -682,10 +678,6 @@ int do_sigaction(int sig, const struct target_sigaction *act,
>      if (sig < 1 || sig > TARGET_NSIG || sig == TARGET_SIGKILL || sig == TARGET_SIGSTOP)
>          return -EINVAL;
>      k = &sigact_table[sig - 1];
> -#if defined(DEBUG_SIGNAL)
> -    fprintf(stderr, "sigaction sig=%d act=0x%p, oact=0x%p\n",
> -            sig, act, oact);
> -#endif
>      if (oact) {
>          __put_user(k->_sa_handler, &oact->_sa_handler);
>          __put_user(k->sa_flags, &oact->sa_flags);
> @@ -909,6 +901,7 @@ static void setup_frame(int sig, struct target_sigaction *ka,
>  	int i;
>  
>  	frame_addr = get_sigframe(ka, env, sizeof(*frame));
> +        trace_user_setup_frame(env, frame_addr);
>  
>  	if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>  		goto give_sigsegv;
> @@ -970,6 +963,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
>  	int i;
>  
>  	frame_addr = get_sigframe(ka, env, sizeof(*frame));
> +        trace_user_setup_rt_frame(env, frame_addr);
>  
>  	if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>  		goto give_sigsegv;
> @@ -1081,9 +1075,7 @@ long do_sigreturn(CPUX86State *env)
>      sigset_t set;
>      int eax, i;
>  
> -#if defined(DEBUG_SIGNAL)
> -    fprintf(stderr, "do_sigreturn\n");
> -#endif
> +    trace_user_do_sigreturn(env, frame_addr);
>      if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
>          goto badframe;
>      /* set blocked signals */
> @@ -1115,6 +1107,7 @@ long do_rt_sigreturn(CPUX86State *env)
>  	int eax;
>  
>          frame_addr = env->regs[R_ESP] - 4;
> +        trace_user_do_rt_sigreturn(env, frame_addr);
>          if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
>                  goto badframe;
>          target_to_host_sigset(&set, &frame->uc.tuc_sigmask);
> @@ -1318,6 +1311,7 @@ static void target_setup_frame(int usig, struct target_sigaction *ka,
>      abi_ulong frame_addr, return_addr;
>  
>      frame_addr = get_sigframe(ka, env);
> +    trace_user_setup_frame(env, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) {
>          goto give_sigsegv;
>      }
> @@ -1377,6 +1371,7 @@ long do_rt_sigreturn(CPUARMState *env)
>      struct target_rt_sigframe *frame = NULL;
>      abi_ulong frame_addr = env->xregs[31];
>  
> +    trace_user_do_rt_sigreturn(env, frame_addr);
>      if (frame_addr & 15) {
>          goto badframe;
>      }
> @@ -1703,6 +1698,7 @@ static void setup_frame_v1(int usig, struct target_sigaction *ka,
>  	abi_ulong frame_addr = get_sigframe(ka, regs, sizeof(*frame));
>  	int i;
>  
> +        trace_user_setup_frame(regs, frame_addr);
>  	if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>  		return;
>  
> @@ -1724,6 +1720,7 @@ static void setup_frame_v2(int usig, struct target_sigaction *ka,
>  	struct sigframe_v2 *frame;
>  	abi_ulong frame_addr = get_sigframe(ka, regs, sizeof(*frame));
>  
> +        trace_user_setup_frame(regs, frame_addr);
>  	if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>  		return;
>  
> @@ -1756,6 +1753,7 @@ static void setup_rt_frame_v1(int usig, struct target_sigaction *ka,
>  	int i;
>          abi_ulong info_addr, uc_addr;
>  
> +        trace_user_setup_rt_frame(env, frame_addr);
>  	if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>              return /* 1 */;
>  
> @@ -1796,6 +1794,7 @@ static void setup_rt_frame_v2(int usig, struct target_sigaction *ka,
>  	abi_ulong frame_addr = get_sigframe(ka, env, sizeof(*frame));
>          abi_ulong info_addr, uc_addr;
>  
> +        trace_user_setup_rt_frame(env, frame_addr);
>  	if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>              return /* 1 */;
>  
> @@ -1871,6 +1870,7 @@ static long do_sigreturn_v1(CPUARMState *env)
>  	 * not, then the user is trying to mess with us.
>  	 */
>          frame_addr = env->regs[13];
> +        trace_user_do_sigreturn(env, frame_addr);
>          if (frame_addr & 7) {
>              goto badframe;
>          }
> @@ -2007,6 +2007,7 @@ static long do_sigreturn_v2(CPUARMState *env)
>  	 * not, then the user is trying to mess with us.
>  	 */
>          frame_addr = env->regs[13];
> +        trace_user_do_sigreturn(env, frame_addr);
>          if (frame_addr & 7) {
>              goto badframe;
>          }
> @@ -2047,6 +2048,7 @@ static long do_rt_sigreturn_v1(CPUARMState *env)
>  	 * not, then the user is trying to mess with us.
>  	 */
>          frame_addr = env->regs[13];
> +        trace_user_do_rt_sigreturn(env, frame_addr);
>          if (frame_addr & 7) {
>              goto badframe;
>          }
> @@ -2088,6 +2090,7 @@ static long do_rt_sigreturn_v2(CPUARMState *env)
>  	 * not, then the user is trying to mess with us.
>  	 */
>          frame_addr = env->regs[13];
> +        trace_user_do_rt_sigreturn(env, frame_addr);
>          if (frame_addr & 7) {
>              goto badframe;
>          }
> @@ -2283,13 +2286,13 @@ static void setup_frame(int sig, struct target_sigaction *ka,
>  
>          sigframe_size = NF_ALIGNEDSZ;
>  	sf_addr = get_sigframe(ka, env, sigframe_size);
> +        trace_user_setup_frame(env, sf_addr);
>  
>          sf = lock_user(VERIFY_WRITE, sf_addr, 
>                         sizeof(struct target_signal_frame), 0);
>          if (!sf)
>  		goto sigsegv;
>                  
> -	//fprintf(stderr, "sf: %x pc %x fp %x sp %x\n", sf, env->pc, env->regwptr[UREG_FP], env->regwptr[UREG_SP]);
>  #if 0
>  	if (invalid_frame_pointer(sf, sigframe_size))
>  		goto sigill_and_return;
> @@ -2356,7 +2359,6 @@ sigill_and_return:
>  	force_sig(TARGET_SIGILL);
>  #endif
>  sigsegv:
> -	//fprintf(stderr, "force_sig\n");
>          unlock_user(sf, sf_addr, sizeof(struct target_signal_frame));
>  	force_sig(TARGET_SIGSEGV);
>  }
> @@ -2378,13 +2380,9 @@ long do_sigreturn(CPUSPARCState *env)
>          int err=0, i;
>  
>          sf_addr = env->regwptr[UREG_FP];
> +        trace_user_do_sigreturn(env, sf_addr);
>          if (!lock_user_struct(VERIFY_READ, sf, sf_addr, 1))
>                  goto segv_and_exit;
> -#if 0
> -	fprintf(stderr, "sigreturn\n");
> -	fprintf(stderr, "sf: %x pc %x fp %x sp %x\n", sf, env->pc, env->regwptr[UREG_FP], env->regwptr[UREG_SP]);
> -#endif
> -	//cpu_dump_state(env, stderr, fprintf, 0);
>  
>          /* 1. Make sure we are not getting garbage from the user */
>  
> @@ -2443,6 +2441,7 @@ segv_and_exit:
>  
>  long do_rt_sigreturn(CPUSPARCState *env)
>  {
> +    trace_user_do_rt_sigreturn(env, 0);
>      fprintf(stderr, "do_rt_sigreturn: not implemented\n");
>      return -TARGET_ENOSYS;
>  }
> @@ -2902,6 +2901,7 @@ static void setup_frame(int sig, struct target_sigaction * ka,
>      int i;
>  
>      frame_addr = get_sigframe(ka, regs, sizeof(*frame));
> +    trace_user_setup_frame(regs, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>  	goto give_sigsegv;
>  
> @@ -2948,10 +2948,8 @@ long do_sigreturn(CPUMIPSState *regs)
>      target_sigset_t target_set;
>      int i;
>  
> -#if defined(DEBUG_SIGNAL)
> -    fprintf(stderr, "do_sigreturn\n");
> -#endif
>      frame_addr = regs->active_tc.gpr[29];
> +    trace_user_do_sigreturn(regs, frame_addr);
>      if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
>     	goto badframe;
>  
> @@ -2998,6 +2996,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
>      int i;
>  
>      frame_addr = get_sigframe(ka, env, sizeof(*frame));
> +    trace_user_setup_rt_frame(env, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>  	goto give_sigsegv;
>  
> @@ -3055,10 +3054,8 @@ long do_rt_sigreturn(CPUMIPSState *env)
>      abi_ulong frame_addr;
>      sigset_t blocked;
>  
> -#if defined(DEBUG_SIGNAL)
> -    fprintf(stderr, "do_rt_sigreturn\n");
> -#endif
>      frame_addr = env->active_tc.gpr[29];
> +    trace_user_do_rt_sigreturn(env, frame_addr);
>      if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
>     	goto badframe;
>  
> @@ -3216,6 +3213,7 @@ static void setup_frame(int sig, struct target_sigaction *ka,
>      int err = 0;
>  
>      frame_addr = get_sigframe(ka, regs->gregs[15], sizeof(*frame));
> +    trace_user_setup_frame(regs, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>  	goto give_sigsegv;
>  
> @@ -3265,6 +3263,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
>      int err = 0;
>  
>      frame_addr = get_sigframe(ka, regs->gregs[15], sizeof(*frame));
> +    trace_user_setup_rt_frame(regs, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>  	goto give_sigsegv;
>  
> @@ -3325,10 +3324,8 @@ long do_sigreturn(CPUSH4State *regs)
>      int i;
>      int err = 0;
>  
> -#if defined(DEBUG_SIGNAL)
> -    fprintf(stderr, "do_sigreturn\n");
> -#endif
>      frame_addr = regs->gregs[15];
> +    trace_user_do_sigreturn(regs, frame_addr);
>      if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
>     	goto badframe;
>  
> @@ -3361,10 +3358,8 @@ long do_rt_sigreturn(CPUSH4State *regs)
>      sigset_t blocked;
>      target_ulong r0;
>  
> -#if defined(DEBUG_SIGNAL)
> -    fprintf(stderr, "do_rt_sigreturn\n");
> -#endif
>      frame_addr = regs->gregs[15];
> +    trace_user_do_rt_sigreturn(regs, frame_addr);
>      if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
>     	goto badframe;
>  
> @@ -3514,6 +3509,7 @@ static void setup_frame(int sig, struct target_sigaction *ka,
>      int i;
>  
>      frame_addr = get_sigframe(ka, env, sizeof *frame);
> +    trace_user_setup_frame(env, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>          goto badframe;
>  
> @@ -3579,6 +3575,7 @@ long do_sigreturn(CPUMBState *env)
>      int i;
>  
>      frame_addr = env->regs[R_SP];
> +    trace_user_do_sigreturn(env, frame_addr);
>      /* Make sure the guest isn't playing games.  */
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 1))
>          goto badframe;
> @@ -3604,6 +3601,7 @@ long do_sigreturn(CPUMBState *env)
>  
>  long do_rt_sigreturn(CPUMBState *env)
>  {
> +    trace_user_do_rt_sigreturn(env, 0);
>      fprintf(stderr, "Microblaze do_rt_sigreturn: not implemented\n");
>      return -TARGET_ENOSYS;
>  }
> @@ -3693,6 +3691,7 @@ static void setup_frame(int sig, struct target_sigaction *ka,
>  	int i;
>  
>  	frame_addr = get_sigframe(env, sizeof *frame);
> +        trace_user_setup_frame(env, frame_addr);
>  	if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>  		goto badframe;
>  
> @@ -3746,6 +3745,7 @@ long do_sigreturn(CPUCRISState *env)
>  	int i;
>  
>  	frame_addr = env->regs[R_SP];
> +        trace_user_do_sigreturn(env, frame_addr);
>  	/* Make sure the guest isn't playing games.  */
>  	if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 1))
>  		goto badframe;
> @@ -3767,6 +3767,7 @@ long do_sigreturn(CPUCRISState *env)
>  
>  long do_rt_sigreturn(CPUCRISState *env)
>  {
> +    trace_user_do_rt_sigreturn(env, 0);
>      fprintf(stderr, "CRIS do_rt_sigreturn: not implemented\n");
>      return -TARGET_ENOSYS;
>  }
> @@ -3911,6 +3912,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
>      abi_ulong info_addr, uc_addr;
>  
>      frame_addr = get_sigframe(ka, env, sizeof(*frame));
> +    trace_user_setup_rt_frame(env, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) {
>          goto give_sigsegv;
>      }
> @@ -3972,14 +3974,15 @@ give_sigsegv:
>  
>  long do_sigreturn(CPUOpenRISCState *env)
>  {
> -
> -    qemu_log("do_sigreturn: not implemented\n");
> +    trace_user_do_sigreturn(env, 0);
> +    fprintf(stderr, "do_sigreturn: not implemented\n");
>      return -TARGET_ENOSYS;
>  }
>  
>  long do_rt_sigreturn(CPUOpenRISCState *env)
>  {
> -    qemu_log("do_rt_sigreturn: not implemented\n");
> +    trace_user_do_rt_sigreturn(env, 0);
> +    fprintf(stderr, "do_rt_sigreturn: not implemented\n");
>      return -TARGET_ENOSYS;
>  }
>  /* TARGET_OPENRISC */
> @@ -4102,13 +4105,11 @@ static void setup_frame(int sig, struct target_sigaction *ka,
>      abi_ulong frame_addr;
>  
>      frame_addr = get_sigframe(ka, env, sizeof(*frame));
> -    qemu_log("%s: frame_addr 0x%llx\n", __FUNCTION__,
> -             (unsigned long long)frame_addr);
> +    trace_user_setup_frame(env, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) {
>              goto give_sigsegv;
>      }
>  
> -    qemu_log("%s: 1\n", __FUNCTION__);
>      __put_user(set->sig[0], &frame->sc.oldmask[0]);
>  
>      save_sigregs(env, &frame->sregs);
> @@ -4149,7 +4150,6 @@ static void setup_frame(int sig, struct target_sigaction *ka,
>      return;
>  
>  give_sigsegv:
> -    qemu_log("%s: give_sigsegv\n", __FUNCTION__);
>      force_sig(TARGET_SIGSEGV);
>  }
>  
> @@ -4162,13 +4162,11 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
>      abi_ulong frame_addr;
>  
>      frame_addr = get_sigframe(ka, env, sizeof *frame);
> -    qemu_log("%s: frame_addr 0x%llx\n", __FUNCTION__,
> -             (unsigned long long)frame_addr);
> +    trace_user_setup_rt_frame(env, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) {
>          goto give_sigsegv;
>      }
>  
> -    qemu_log("%s: 1\n", __FUNCTION__);
>      tswap_siginfo(&frame->info, info);
>  
>      /* Create the ucontext.  */
> @@ -4207,7 +4205,6 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
>      return;
>  
>  give_sigsegv:
> -    qemu_log("%s: give_sigsegv\n", __FUNCTION__);
>      force_sig(TARGET_SIGSEGV);
>  }
>  
> @@ -4222,9 +4219,8 @@ restore_sigregs(CPUS390XState *env, target_sigregs *sc)
>      }
>  
>      __get_user(env->psw.mask, &sc->regs.psw.mask);
> -    qemu_log("%s: sc->regs.psw.addr 0x%llx env->psw.addr 0x%llx\n",
> -             __FUNCTION__, (unsigned long long)sc->regs.psw.addr,
> -             (unsigned long long)env->psw.addr);
> +    trace_user_s390x_restore_sigregs(env, (unsigned long long)sc->regs.psw.addr,
> +                                     (unsigned long long)env->psw.addr);
>      __get_user(env->psw.addr, &sc->regs.psw.addr);
>      /* FIXME: 31-bit -> | PSW_ADDR_AMODE */
>  
> @@ -4242,11 +4238,10 @@ long do_sigreturn(CPUS390XState *env)
>  {
>      sigframe *frame;
>      abi_ulong frame_addr = env->regs[15];
> -    qemu_log("%s: frame_addr 0x%llx\n", __FUNCTION__,
> -             (unsigned long long)frame_addr);
>      target_sigset_t target_set;
>      sigset_t set;
>  
> +    trace_user_do_sigreturn(env, frame_addr);
>      if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1)) {
>          goto badframe;
>      }
> @@ -4271,10 +4266,9 @@ long do_rt_sigreturn(CPUS390XState *env)
>  {
>      rt_sigframe *frame;
>      abi_ulong frame_addr = env->regs[15];
> -    qemu_log("%s: frame_addr 0x%llx\n", __FUNCTION__,
> -             (unsigned long long)frame_addr);
>      sigset_t set;
>  
> +    trace_user_do_rt_sigreturn(env, frame_addr);
>      if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1)) {
>          goto badframe;
>      }
> @@ -4659,6 +4653,7 @@ static void setup_frame(int sig, struct target_sigaction *ka,
>  #endif
>  
>      frame_addr = get_sigframe(ka, env, sizeof(*frame));
> +    trace_user_setup_frame(env, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 1))
>          goto sigsegv;
>      sc = &frame->sctx;
> @@ -4723,7 +4718,6 @@ static void setup_frame(int sig, struct target_sigaction *ka,
>  
>  sigsegv:
>      unlock_user_struct(frame, frame_addr, 1);
> -    qemu_log("segfaulting from setup_frame\n");
>      force_sig(TARGET_SIGSEGV);
>  }
>  
> @@ -4819,7 +4813,6 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
>  
>  sigsegv:
>      unlock_user_struct(rt_sf, rt_sf_addr, 1);
> -    qemu_log("segfaulting from setup_rt_frame\n");
>      force_sig(TARGET_SIGSEGV);
>  
>  }
> @@ -4857,7 +4850,6 @@ long do_sigreturn(CPUPPCState *env)
>  sigsegv:
>      unlock_user_struct(sr, sr_addr, 1);
>      unlock_user_struct(sc, sc_addr, 1);
> -    qemu_log("segfaulting from do_sigreturn\n");
>      force_sig(TARGET_SIGSEGV);
>      return 0;
>  }
> @@ -4913,7 +4905,6 @@ long do_rt_sigreturn(CPUPPCState *env)
>  
>  sigsegv:
>      unlock_user_struct(rt_sf, rt_sf_addr, 1);
> -    qemu_log("segfaulting from do_rt_sigreturn\n");
>      force_sig(TARGET_SIGSEGV);
>      return 0;
>  }
> @@ -5037,6 +5028,7 @@ static void setup_frame(int sig, struct target_sigaction *ka,
>      int i;
>  
>      frame_addr = get_sigframe(ka, env, sizeof *frame);
> +    trace_user_setup_frame(env, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>  	goto give_sigsegv;
>  
> @@ -5153,6 +5145,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
>      int i;
>  
>      frame_addr = get_sigframe(ka, env, sizeof *frame);
> +    trace_user_setup_rt_frame(env, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0))
>  	goto give_sigsegv;
>  
> @@ -5220,6 +5213,7 @@ long do_sigreturn(CPUM68KState *env)
>      sigset_t set;
>      int d0, i;
>  
> +    trace_user_do_sigreturn(env, frame_addr);
>      if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
>          goto badframe;
>  
> @@ -5254,6 +5248,7 @@ long do_rt_sigreturn(CPUM68KState *env)
>      sigset_t set;
>      int d0;
>  
> +    trace_user_do_rt_sigreturn(env, frame_addr);
>      if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))
>          goto badframe;
>  
> @@ -5393,6 +5388,7 @@ static void setup_frame(int sig, struct target_sigaction *ka,
>      int err = 0;
>  
>      frame_addr = get_sigframe(ka, env, sizeof(*frame));
> +    trace_user_setup_frame(env, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) {
>          goto give_sigsegv;
>      }
> @@ -5437,6 +5433,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
>      int i, err = 0;
>  
>      frame_addr = get_sigframe(ka, env, sizeof(*frame));
> +    trace_user_setup_rt_frame(env, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) {
>          goto give_sigsegv;
>      }
> @@ -5515,6 +5512,7 @@ long do_rt_sigreturn(CPUAlphaState *env)
>      struct target_rt_sigframe *frame;
>      sigset_t set;
>  
> +    trace_user_do_rt_sigreturn(env, frame_addr);
>      if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1)) {
>          goto badframe;
>      }
> @@ -5622,6 +5620,7 @@ static void setup_rt_frame(int sig, struct target_sigaction *ka,
>      unsigned long restorer;
>  
>      frame_addr = get_sigframe(ka, env, sizeof(*frame));
> +    trace_user_setup_rt_frame(env, frame_addr);
>      if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) {
>          goto give_sigsegv;
>      }
> @@ -5672,6 +5671,7 @@ long do_rt_sigreturn(CPUTLGState *env)
>      struct target_rt_sigframe *frame;
>      sigset_t set;
>  
> +    trace_user_do_rt_sigreturn(env, frame_addr);
>      if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1)) {
>          goto badframe;
>      }
> @@ -5750,9 +5750,7 @@ void process_pending_signals(CPUArchState *cpu_env)
>      return;
>  
>   handle_signal:
> -#ifdef DEBUG_SIGNAL
> -    fprintf(stderr, "qemu: process signal %d\n", sig);
> -#endif
> +    trace_user_handle_signal(cpu_env, sig);
>      /* dequeue signal */
>      q = k->first;
>      k->first = q->next;
> diff --git a/trace-events b/trace-events
> index ee890c1..7d02e08 100644
> --- a/trace-events
> +++ b/trace-events
> @@ -1795,3 +1795,14 @@ qcrypto_tls_session_new(void *session, void *creds, const char *hostname, const
>  
>  # net/vhost-user.c
>  vhost_user_event(const char *chr, int event) "chr: %s got event: %d"
> +
> +# linux-user/signal.c
> +user_setup_frame(void *env, uint64_t frame_addr) "env=%p frame_addr="PRIx64""
> +user_setup_rt_frame(void *env, uint64_t frame_addr) "env=%p frame_addr="PRIx64""
> +user_do_rt_sigreturn(void *env, uint64_t frame_addr) "env=%p frame_addr="PRIx64""
> +user_do_sigreturn(void *env, uint64_t frame_addr) "env=%p frame_addr="PRIx64""
> +user_force_sig(void *env, int target_sig, int host_sig) "env=%p signal %d (host %d)"
> +user_handle_signal(void *env, int target_sig) "env=%p signal %d"
> +user_host_signal(void *env, int host_sig, int target_sig) "env=%p signal %d (target %d("
> +user_queue_signal(void *env, int target_sig) "env=%p signal %d"
> +user_s390x_restore_sigregs(void *env, uint64_t sc_psw_addr, uint64_t env_psw_addr) "env=%p frame psw.addr "PRIx64 " current psw.addr "PRIx64""
> 

Reviewed-by: Laurent Vivier <laurent@vivier.eu>

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [Qemu-devel] [PATCH 07/11] tricore: avoid "naked" qemu_log
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 07/11] tricore: avoid "naked" qemu_log Paolo Bonzini
@ 2015-12-12 19:47   ` Bastian Koppelmann
  2015-12-12 20:15     ` Peter Maydell
  0 siblings, 1 reply; 22+ messages in thread
From: Bastian Koppelmann @ 2015-12-12 19:47 UTC (permalink / raw)
  To: Paolo Bonzini, qemu-devel; +Cc: peter.maydell

On 12/12/2015 11:36 AM, Paolo Bonzini wrote:
> Cc: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  target-tricore/helper.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 

This doesn't look like something which should go into 2.5, so I'll add
this into my queue for 2.6.

Cheers,
Bastian

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [Qemu-devel] [PATCH 07/11] tricore: avoid "naked" qemu_log
  2015-12-12 19:47   ` Bastian Koppelmann
@ 2015-12-12 20:15     ` Peter Maydell
  0 siblings, 0 replies; 22+ messages in thread
From: Peter Maydell @ 2015-12-12 20:15 UTC (permalink / raw)
  To: Bastian Koppelmann; +Cc: Paolo Bonzini, QEMU Developers

On 12 December 2015 at 19:47, Bastian Koppelmann
<kbastian@mail.uni-paderborn.de> wrote:
> On 12/12/2015 11:36 AM, Paolo Bonzini wrote:
>> Cc: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>> ---
>>  target-tricore/helper.c | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>
> This doesn't look like something which should go into 2.5, so I'll add
> this into my queue for 2.6.

Nothing not already in master is going into 2.5 unless somebody finds
a "make install runs rm -rf /" level bug at the last minute :-)

thanks
-- PMM

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [Qemu-devel] [PATCH 06/11] ppc: cleanup logging
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 06/11] ppc: cleanup logging Paolo Bonzini
@ 2015-12-14  0:24   ` David Gibson
  0 siblings, 0 replies; 22+ messages in thread
From: David Gibson @ 2015-12-14  0:24 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: peter.maydell, qemu-devel

[-- Attachment #1: Type: text/plain, Size: 506 bytes --]

On Sat, Dec 12, 2015 at 11:36:22AM +0100, Paolo Bonzini wrote:
> Avoid "naked" qemu_log, bring documentation for DEBUG #defines
> up to date.
> 
> Cc: David Gibson <david@gibson.dropbear.id.au>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [Qemu-devel] [PATCH 11/11] linux-user: convert DEBUG_SIGNAL logging to tracepoints
  2015-12-12 10:39 ` [Qemu-devel] [PATCH 11/11] linux-user: convert DEBUG_SIGNAL logging to tracepoints Paolo Bonzini
  2015-12-12 15:08   ` Laurent Vivier
@ 2015-12-15  6:59   ` Thomas Huth
  2015-12-15 13:19     ` Paolo Bonzini
  1 sibling, 1 reply; 22+ messages in thread
From: Thomas Huth @ 2015-12-15  6:59 UTC (permalink / raw)
  To: Paolo Bonzini, qemu-devel; +Cc: peter.maydell

On 12/12/15 11:39, Paolo Bonzini wrote:
> "Unimplemented" messages go to stderr, everything else goes to tracepoints
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
[...]
> diff --git a/linux-user/signal.c b/linux-user/signal.c
> index 9d62e02..919aa83 100644
> --- a/linux-user/signal.c
> +++ b/linux-user/signal.c
[...]
> @@ -3972,14 +3974,15 @@ give_sigsegv:
>  
>  long do_sigreturn(CPUOpenRISCState *env)
>  {
> -
> -    qemu_log("do_sigreturn: not implemented\n");
> +    trace_user_do_sigreturn(env, 0);
> +    fprintf(stderr, "do_sigreturn: not implemented\n");
>      return -TARGET_ENOSYS;
>  }
>  
>  long do_rt_sigreturn(CPUOpenRISCState *env)
>  {
> -    qemu_log("do_rt_sigreturn: not implemented\n");
> +    trace_user_do_rt_sigreturn(env, 0);
> +    fprintf(stderr, "do_rt_sigreturn: not implemented\n");
>      return -TARGET_ENOSYS;
>  }

Why not simply using qemu_log_mask(LOG_UNIMP, ...) instead? Isn't that
what the LOG_UNIMP flag is good for?

 Thomas

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [Qemu-devel] [PATCH 11/11] linux-user: convert DEBUG_SIGNAL logging to tracepoints
  2015-12-15  6:59   ` Thomas Huth
@ 2015-12-15 13:19     ` Paolo Bonzini
  0 siblings, 0 replies; 22+ messages in thread
From: Paolo Bonzini @ 2015-12-15 13:19 UTC (permalink / raw)
  To: Thomas Huth, qemu-devel; +Cc: peter.maydell



On 15/12/2015 07:59, Thomas Huth wrote:
> On 12/12/15 11:39, Paolo Bonzini wrote:
>> "Unimplemented" messages go to stderr, everything else goes to tracepoints
>>
>> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
>> ---
> [...]
>> diff --git a/linux-user/signal.c b/linux-user/signal.c
>> index 9d62e02..919aa83 100644
>> --- a/linux-user/signal.c
>> +++ b/linux-user/signal.c
> [...]
>> @@ -3972,14 +3974,15 @@ give_sigsegv:
>>  
>>  long do_sigreturn(CPUOpenRISCState *env)
>>  {
>> -
>> -    qemu_log("do_sigreturn: not implemented\n");
>> +    trace_user_do_sigreturn(env, 0);
>> +    fprintf(stderr, "do_sigreturn: not implemented\n");
>>      return -TARGET_ENOSYS;
>>  }
>>  
>>  long do_rt_sigreturn(CPUOpenRISCState *env)
>>  {
>> -    qemu_log("do_rt_sigreturn: not implemented\n");
>> +    trace_user_do_rt_sigreturn(env, 0);
>> +    fprintf(stderr, "do_rt_sigreturn: not implemented\n");
>>      return -TARGET_ENOSYS;
>>  }
> 
> Why not simply using qemu_log_mask(LOG_UNIMP, ...) instead? Isn't that
> what the LOG_UNIMP flag is good for?

LOG_UNIMP has to be enabled explicitly, because it is guest-triggerable.
 Here the error is really fatal, so I decided to use fprintf.  In fact,
it would probably be better to abort after printing an error, but I left
the "return" untouched because I didn't want to do too many changes in
the same patch.

Paolo

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [Qemu-devel] [PATCH 02/11] alpha: convert "naked" qemu_log to tracepoint
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 02/11] alpha: convert "naked" qemu_log to tracepoint Paolo Bonzini
@ 2015-12-16 16:59   ` Richard Henderson
  0 siblings, 0 replies; 22+ messages in thread
From: Richard Henderson @ 2015-12-16 16:59 UTC (permalink / raw)
  To: Paolo Bonzini, qemu-devel; +Cc: peter.maydell

On 12/12/2015 02:36 AM, Paolo Bonzini wrote:
> Cc: Richard Henderson <rth@twiddle.net>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>   hw/alpha/pci.c | 3 ++-
>   trace-events   | 3 +++
>   2 files changed, 5 insertions(+), 1 deletion(-)

Acked-by: Richard Henderson <rth@twiddle.net>


r~

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [Qemu-devel] [PATCH 03/11] cris: avoid "naked" qemu_log
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 03/11] cris: avoid "naked" qemu_log Paolo Bonzini
@ 2015-12-17 13:32   ` Edgar E. Iglesias
  0 siblings, 0 replies; 22+ messages in thread
From: Edgar E. Iglesias @ 2015-12-17 13:32 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: Edgar E. Iglesias, peter.maydell, qemu-devel

On Sat, Dec 12, 2015 at 11:36:19AM +0100, Paolo Bonzini wrote:
> Cc: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>


> ---
>  hw/char/etraxfs_ser.c       | 2 +-
>  target-cris/helper.h        | 1 -
>  target-cris/op_helper.c     | 5 -----
>  target-cris/translate.c     | 2 +-
>  target-cris/translate_v10.c | 2 +-
>  5 files changed, 3 insertions(+), 9 deletions(-)
> 
> diff --git a/hw/char/etraxfs_ser.c b/hw/char/etraxfs_ser.c
> index 562021e..d4d875e 100644
> --- a/hw/char/etraxfs_ser.c
> +++ b/hw/char/etraxfs_ser.c
> @@ -165,7 +165,7 @@ static void serial_receive(void *opaque, const uint8_t *buf, int size)
>  
>      /* Got a byte.  */
>      if (s->rx_fifo_len >= 16) {
> -        qemu_log("WARNING: UART dropped char.\n");
> +        D(qemu_log("WARNING: UART dropped char.\n"));
>          return;
>      }
>  
> diff --git a/target-cris/helper.h b/target-cris/helper.h
> index 0b383b2..ff35956 100644
> --- a/target-cris/helper.h
> +++ b/target-cris/helper.h
> @@ -1,7 +1,6 @@
>  DEF_HELPER_2(raise_exception, void, env, i32)
>  DEF_HELPER_2(tlb_flush_pid, void, env, i32)
>  DEF_HELPER_2(spc_write, void, env, i32)
> -DEF_HELPER_3(dump, void, i32, i32, i32)
>  DEF_HELPER_1(rfe, void, env)
>  DEF_HELPER_1(rfn, void, env)
>  
> diff --git a/target-cris/op_helper.c b/target-cris/op_helper.c
> index 5c0c14d..2296677 100644
> --- a/target-cris/op_helper.c
> +++ b/target-cris/op_helper.c
> @@ -91,11 +91,6 @@ void helper_spc_write(CPUCRISState *env, uint32_t new_spc)
>  #endif
>  }
>  
> -void helper_dump(uint32_t a0, uint32_t a1, uint32_t a2)
> -{
> -	qemu_log("%s: a0=%x a1=%x\n", __func__, a0, a1);
> -}
> -
>  /* Used by the tlb decoder.  */
>  #define EXTRACT_FIELD(src, start, end) \
>  	    (((src) >> start) & ((1 << (end - start + 1)) - 1))
> diff --git a/target-cris/translate.c b/target-cris/translate.c
> index 354c86d..2429931 100644
> --- a/target-cris/translate.c
> +++ b/target-cris/translate.c
> @@ -779,7 +779,7 @@ static void cris_alu_op_exec(DisasContext *dc, int op,
>          t_gen_subx_carry(dc, dst);
>          break;
>      default:
> -        qemu_log("illegal ALU op.\n");
> +        qemu_log_mask(LOG_GUEST_ERROR, "illegal ALU op.\n");
>          BUG();
>          break;
>      }
> diff --git a/target-cris/translate_v10.c b/target-cris/translate_v10.c
> index 3ab1c39..df20bdc 100644
> --- a/target-cris/translate_v10.c
> +++ b/target-cris/translate_v10.c
> @@ -58,7 +58,7 @@ static inline int dec10_size(unsigned int size)
>  
>  static inline void cris_illegal_insn(DisasContext *dc)
>  {
> -    qemu_log("illegal insn at pc=%x\n", dc->pc);
> +    qemu_log_mask(LOG_GUEST_ERROR, "illegal insn at pc=%x\n", dc->pc);
>      t_gen_raise_exception(EXCP_BREAK);
>  }
>  
> -- 
> 2.5.0
> 
> 
> 

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [Qemu-devel] [PATCH 04/11] microblaze: avoid "naked" qemu_log
  2015-12-12 10:36 ` [Qemu-devel] [PATCH 04/11] microblaze: " Paolo Bonzini
@ 2015-12-17 13:34   ` Edgar E. Iglesias
  0 siblings, 0 replies; 22+ messages in thread
From: Edgar E. Iglesias @ 2015-12-17 13:34 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: Edgar E. Iglesias, peter.maydell, qemu-devel

On Sat, Dec 12, 2015 at 11:36:20AM +0100, Paolo Bonzini wrote:
> Cc: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>

Thanks,
Edgar


> ---
>  target-microblaze/helper.c    |  2 +-
>  target-microblaze/mmu.c       | 20 ++++++++++----------
>  target-microblaze/op_helper.c |  8 ++++----
>  target-microblaze/translate.c |  2 +-
>  4 files changed, 16 insertions(+), 16 deletions(-)
> 
> diff --git a/target-microblaze/helper.c b/target-microblaze/helper.c
> index 8257b0e..a482e47 100644
> --- a/target-microblaze/helper.c
> +++ b/target-microblaze/helper.c
> @@ -128,7 +128,7 @@ void mb_cpu_do_interrupt(CPUState *cs)
>      switch (cs->exception_index) {
>          case EXCP_HW_EXCP:
>              if (!(env->pvr.regs[0] & PVR0_USE_EXC_MASK)) {
> -                qemu_log("Exception raised on system without exceptions!\n");
> +                qemu_log_mask(LOG_GUEST_ERROR, "Exception raised on system without exceptions!\n");
>                  return;
>              }
>  
> diff --git a/target-microblaze/mmu.c b/target-microblaze/mmu.c
> index 2ef1dc2..ee95a04 100644
> --- a/target-microblaze/mmu.c
> +++ b/target-microblaze/mmu.c
> @@ -60,7 +60,7 @@ static void mmu_change_pid(CPUMBState *env, unsigned int newpid)
>      uint32_t t;
>  
>      if (newpid & ~0xff)
> -        qemu_log("Illegal rpid=%x\n", newpid);
> +        qemu_log_mask(LOG_GUEST_ERROR, "Illegal rpid=%x\n", newpid);
>  
>      for (i = 0; i < ARRAY_SIZE(mmu->rams[RAM_TAG]); i++) {
>          /* Lookup and decode.  */
> @@ -121,7 +121,7 @@ unsigned int mmu_translate(struct microblaze_mmu *mmu,
>              t0 &= 0x3;
>  
>              if (tlb_zsel > mmu->c_mmu_zones) {
> -                qemu_log("tlb zone select out of range! %d\n", tlb_zsel);
> +                qemu_log_mask(LOG_GUEST_ERROR, "tlb zone select out of range! %d\n", tlb_zsel);
>                  t0 = 1; /* Ignore.  */
>              }
>  
> @@ -183,7 +183,7 @@ uint32_t mmu_read(CPUMBState *env, uint32_t rn)
>      uint32_t r;
>  
>      if (env->mmu.c_mmu < 2 || !env->mmu.c_mmu_tlb_access) {
> -        qemu_log("MMU access on MMU-less system\n");
> +        qemu_log_mask(LOG_GUEST_ERROR, "MMU access on MMU-less system\n");
>          return 0;
>      }
>  
> @@ -192,7 +192,7 @@ uint32_t mmu_read(CPUMBState *env, uint32_t rn)
>          case MMU_R_TLBLO:
>          case MMU_R_TLBHI:
>              if (!(env->mmu.c_mmu_tlb_access & 1)) {
> -                qemu_log("Invalid access to MMU reg %d\n", rn);
> +                qemu_log_mask(LOG_GUEST_ERROR, "Invalid access to MMU reg %d\n", rn);
>                  return 0;
>              }
>  
> @@ -204,7 +204,7 @@ uint32_t mmu_read(CPUMBState *env, uint32_t rn)
>          case MMU_R_PID:
>          case MMU_R_ZPR:
>              if (!(env->mmu.c_mmu_tlb_access & 1)) {
> -                qemu_log("Invalid access to MMU reg %d\n", rn);
> +                qemu_log_mask(LOG_GUEST_ERROR, "Invalid access to MMU reg %d\n", rn);
>                  return 0;
>              }
>              r = env->mmu.regs[rn];
> @@ -224,7 +224,7 @@ void mmu_write(CPUMBState *env, uint32_t rn, uint32_t v)
>      D(qemu_log("%s rn=%d=%x old=%x\n", __func__, rn, v, env->mmu.regs[rn]));
>  
>      if (env->mmu.c_mmu < 2 || !env->mmu.c_mmu_tlb_access) {
> -        qemu_log("MMU access on MMU-less system\n");
> +        qemu_log_mask(LOG_GUEST_ERROR, "MMU access on MMU-less system\n");
>          return;
>      }
>  
> @@ -235,7 +235,7 @@ void mmu_write(CPUMBState *env, uint32_t rn, uint32_t v)
>              i = env->mmu.regs[MMU_R_TLBX] & 0xff;
>              if (rn == MMU_R_TLBHI) {
>                  if (i < 3 && !(v & TLB_VALID) && qemu_loglevel_mask(~0))
> -                    qemu_log("invalidating index %x at pc=%x\n",
> +                    qemu_log_mask(LOG_GUEST_ERROR, "invalidating index %x at pc=%x\n",
>                               i, env->sregs[SR_PC]);
>                  env->mmu.tids[i] = env->mmu.regs[MMU_R_PID] & 0xff;
>                  mmu_flush_idx(env, i);
> @@ -246,7 +246,7 @@ void mmu_write(CPUMBState *env, uint32_t rn, uint32_t v)
>              break;
>          case MMU_R_ZPR:
>              if (env->mmu.c_mmu_tlb_access <= 1) {
> -                qemu_log("Invalid access to MMU reg %d\n", rn);
> +                qemu_log_mask(LOG_GUEST_ERROR, "Invalid access to MMU reg %d\n", rn);
>                  return;
>              }
>  
> @@ -259,7 +259,7 @@ void mmu_write(CPUMBState *env, uint32_t rn, uint32_t v)
>              break;
>          case MMU_R_PID:
>              if (env->mmu.c_mmu_tlb_access <= 1) {
> -                qemu_log("Invalid access to MMU reg %d\n", rn);
> +                qemu_log_mask(LOG_GUEST_ERROR, "Invalid access to MMU reg %d\n", rn);
>                  return;
>              }
>  
> @@ -274,7 +274,7 @@ void mmu_write(CPUMBState *env, uint32_t rn, uint32_t v)
>              int hit;
>  
>              if (env->mmu.c_mmu_tlb_access <= 1) {
> -                qemu_log("Invalid access to MMU reg %d\n", rn);
> +                qemu_log_mask(LOG_GUEST_ERROR, "Invalid access to MMU reg %d\n", rn);
>                  return;
>              }
>  
> diff --git a/target-microblaze/op_helper.c b/target-microblaze/op_helper.c
> index d324347..5637462 100644
> --- a/target-microblaze/op_helper.c
> +++ b/target-microblaze/op_helper.c
> @@ -55,7 +55,7 @@ void helper_put(uint32_t id, uint32_t ctrl, uint32_t data)
>      int nonblock = ctrl & STREAM_NONBLOCK;
>      int exception = ctrl & STREAM_EXCEPTION;
>  
> -    qemu_log("Unhandled stream put to stream-id=%d data=%x %s%s%s%s%s\n",
> +    qemu_log_mask(LOG_UNIMP, "Unhandled stream put to stream-id=%d data=%x %s%s%s%s%s\n",
>               id, data,
>               test ? "t" : "",
>               nonblock ? "n" : "",
> @@ -72,7 +72,7 @@ uint32_t helper_get(uint32_t id, uint32_t ctrl)
>      int nonblock = ctrl & STREAM_NONBLOCK;
>      int exception = ctrl & STREAM_EXCEPTION;
>  
> -    qemu_log("Unhandled stream get from stream-id=%d %s%s%s%s%s\n",
> +    qemu_log_mask(LOG_UNIMP, "Unhandled stream get from stream-id=%d %s%s%s%s%s\n",
>               id,
>               test ? "t" : "",
>               nonblock ? "n" : "",
> @@ -465,8 +465,8 @@ void helper_memalign(CPUMBState *env, uint32_t addr, uint32_t dr, uint32_t wr,
>  void helper_stackprot(CPUMBState *env, uint32_t addr)
>  {
>      if (addr < env->slr || addr > env->shr) {
> -        qemu_log("Stack protector violation at %x %x %x\n",
> -                 addr, env->slr, env->shr);
> +        qemu_log_mask(CPU_LOG_INT, "Stack protector violation at %x %x %x\n",
> +                      addr, env->slr, env->shr);
>          env->sregs[SR_EAR] = addr;
>          env->sregs[SR_ESR] = ESR_EC_STACKPROT;
>          helper_raise_exception(env, EXCP_HW_EXCP);
> diff --git a/target-microblaze/translate.c b/target-microblaze/translate.c
> index 154b9d6..9e52011 100644
> --- a/target-microblaze/translate.c
> +++ b/target-microblaze/translate.c
> @@ -1516,7 +1516,7 @@ static void dec_null(DisasContext *dc)
>          t_gen_raise_exception(dc, EXCP_HW_EXCP);
>          return;
>      }
> -    qemu_log ("unknown insn pc=%x opc=%x\n", dc->pc, dc->opcode);
> +    qemu_log_mask(LOG_GUEST_ERROR, "unknown insn pc=%x opc=%x\n", dc->pc, dc->opcode);
>      dc->abort_at_next_insn = 1;
>  }
>  
> -- 
> 2.5.0
> 
> 
> 

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2015-12-17 13:34 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-12 10:36 [Qemu-devel] [PATCH 00/11] Avoid always-active qemu_log calls Paolo Bonzini
2015-12-12 10:36 ` [Qemu-devel] [PATCH 01/11] qemu-log: introduce qemu_log_separate Paolo Bonzini
2015-12-12 10:36 ` [Qemu-devel] [PATCH 02/11] alpha: convert "naked" qemu_log to tracepoint Paolo Bonzini
2015-12-16 16:59   ` Richard Henderson
2015-12-12 10:36 ` [Qemu-devel] [PATCH 03/11] cris: avoid "naked" qemu_log Paolo Bonzini
2015-12-17 13:32   ` Edgar E. Iglesias
2015-12-12 10:36 ` [Qemu-devel] [PATCH 04/11] microblaze: " Paolo Bonzini
2015-12-17 13:34   ` Edgar E. Iglesias
2015-12-12 10:36 ` [Qemu-devel] [PATCH 05/11] s390x: " Paolo Bonzini
2015-12-12 10:36 ` [Qemu-devel] [PATCH 06/11] ppc: cleanup logging Paolo Bonzini
2015-12-14  0:24   ` David Gibson
2015-12-12 10:36 ` [Qemu-devel] [PATCH 07/11] tricore: avoid "naked" qemu_log Paolo Bonzini
2015-12-12 19:47   ` Bastian Koppelmann
2015-12-12 20:15     ` Peter Maydell
2015-12-12 10:36 ` [Qemu-devel] [PATCH 08/11] xtensa: " Paolo Bonzini
2015-12-12 10:36 ` [Qemu-devel] [PATCH 09/11] user: introduce "-d page" Paolo Bonzini
2015-12-12 10:36 ` [Qemu-devel] [PATCH 10/11] linux-user: avoid "naked" qemu_log Paolo Bonzini
2015-12-12 15:04   ` Laurent Vivier
2015-12-12 10:39 ` [Qemu-devel] [PATCH 11/11] linux-user: convert DEBUG_SIGNAL logging to tracepoints Paolo Bonzini
2015-12-12 15:08   ` Laurent Vivier
2015-12-15  6:59   ` Thomas Huth
2015-12-15 13:19     ` Paolo Bonzini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.