All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] xen: some debug trace enhancements
@ 2019-03-15  6:35 Juergen Gross
  2019-03-15  6:35 ` [PATCH v2 1/2] xen/debug: make debugtrace configurable via Kconfig Juergen Gross
  2019-03-15  6:35 ` [PATCH v2 2/2] xen/debug: make debugtrace more clever regarding repeating entries Juergen Gross
  0 siblings, 2 replies; 4+ messages in thread
From: Juergen Gross @ 2019-03-15  6:35 UTC (permalink / raw)
  To: xen-devel
  Cc: Juergen Gross, Stefano Stabellini, Wei Liu,
	Konrad Rzeszutek Wilk, George Dunlap, Andrew Cooper, Ian Jackson,
	Tim Deegan, Julien Grall, Jan Beulich

While doing some scheduler work I used debug trace for diagnosis of
problems during dom0 boot. This small series is the result of adapting
debug trace to my needs.

Juergen Gross (2):
  xen/debug: make debugtrace configurable via Kconfig
  xen/debug: make debugtrace more clever regarding repeating entries

 xen/Kconfig.debug          |  7 +++++++
 xen/drivers/char/console.c | 44 ++++++++++++++++++++++++++++++++------------
 xen/include/xen/lib.h      |  3 +--
 3 files changed, 40 insertions(+), 14 deletions(-)

-- 
2.16.4


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

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

* [PATCH v2 1/2] xen/debug: make debugtrace configurable via Kconfig
  2019-03-15  6:35 [PATCH v2 0/2] xen: some debug trace enhancements Juergen Gross
@ 2019-03-15  6:35 ` Juergen Gross
  2019-03-15  6:35 ` [PATCH v2 2/2] xen/debug: make debugtrace more clever regarding repeating entries Juergen Gross
  1 sibling, 0 replies; 4+ messages in thread
From: Juergen Gross @ 2019-03-15  6:35 UTC (permalink / raw)
  To: xen-devel
  Cc: Juergen Gross, Stefano Stabellini, Wei Liu,
	Konrad Rzeszutek Wilk, George Dunlap, Andrew Cooper, Ian Jackson,
	Tim Deegan, Julien Grall, Jan Beulich

Instead of having to edit include/xen/lib.h for making debugtrace
available make it configurable via Kconfig.

Default is off, it is available only in expert mode or in debug builds.

Signed-off-by: Juergen Gross <jgross@suse.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/Kconfig.debug          | 7 +++++++
 xen/drivers/char/console.c | 2 +-
 xen/include/xen/lib.h      | 3 +--
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/xen/Kconfig.debug b/xen/Kconfig.debug
index 4d5d7f87cb..daacf85141 100644
--- a/xen/Kconfig.debug
+++ b/xen/Kconfig.debug
@@ -98,6 +98,13 @@ config UBSAN
 
 	  If unsure, say N here.
 
+config DEBUG_TRACE
+	bool "Debug trace support"
+	---help---
+	  Debug trace enables to record debug trace messages which are printed
+	  either directly to the console or are printed to console in case of
+	  a system crash.
+
 endif # DEBUG || EXPERT
 
 endmenu
diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c
index 4315588f05..41ec13ce52 100644
--- a/xen/drivers/char/console.c
+++ b/xen/drivers/char/console.c
@@ -1157,7 +1157,7 @@ int printk_ratelimit(void)
  * **************************************************************
  */
 
-#ifdef DEBUG_TRACE_DUMP
+#ifdef CONFIG_DEBUG_TRACE
 
 /* Send output direct to console, or buffer it? */
 static volatile int debugtrace_send_to_console;
diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h
index 89939f43c8..e0b7bcb6b7 100644
--- a/xen/include/xen/lib.h
+++ b/xen/include/xen/lib.h
@@ -86,8 +86,7 @@ int parse_boolean(const char *name, const char *s, const char *e);
  */
 int cmdline_strcmp(const char *frag, const char *name);
 
-/*#define DEBUG_TRACE_DUMP*/
-#ifdef DEBUG_TRACE_DUMP
+#ifdef CONFIG_DEBUG_TRACE
 extern void debugtrace_dump(void);
 extern void debugtrace_printk(const char *fmt, ...)
     __attribute__ ((format (printf, 1, 2)));
-- 
2.16.4


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

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

* [PATCH v2 2/2] xen/debug: make debugtrace more clever regarding repeating entries
  2019-03-15  6:35 [PATCH v2 0/2] xen: some debug trace enhancements Juergen Gross
  2019-03-15  6:35 ` [PATCH v2 1/2] xen/debug: make debugtrace configurable via Kconfig Juergen Gross
@ 2019-03-15  6:35 ` Juergen Gross
  2019-03-15 13:29   ` Wei Liu
  1 sibling, 1 reply; 4+ messages in thread
From: Juergen Gross @ 2019-03-15  6:35 UTC (permalink / raw)
  To: xen-devel
  Cc: Juergen Gross, Stefano Stabellini, Wei Liu,
	Konrad Rzeszutek Wilk, George Dunlap, Andrew Cooper, Ian Jackson,
	Tim Deegan, Julien Grall, Jan Beulich

In case debugtrace is writing to memory and the last entry is repeated
don't fill up the trace buffer, but modify the count prefix to "x-y "
style instead.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 xen/drivers/char/console.c | 42 +++++++++++++++++++++++++++++++-----------
 1 file changed, 31 insertions(+), 11 deletions(-)

diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c
index 41ec13ce52..f41b689847 100644
--- a/xen/drivers/char/console.c
+++ b/xen/drivers/char/console.c
@@ -1225,13 +1225,26 @@ void debugtrace_dump(void)
     watchdog_enable();
 }
 
+static void debugtrace_add_to_buf(char *buf)
+{
+    char *p;
+
+    for ( p = buf; *p != '\0'; p++ )
+    {
+        debugtrace_buf[debugtrace_prd++] = *p;
+        /* Always leave a nul byte at the end of the buffer. */
+        if ( debugtrace_prd == (debugtrace_bytes - 1) )
+            debugtrace_prd = 0;
+    }
+}
+
 void debugtrace_printk(const char *fmt, ...)
 {
-    static char    buf[1024];
-    static u32 count;
+    static char buf[1024], last_buf[1024];
+    static unsigned int count, last_count, last_prd;
 
+    char          cntbuf[24];
     va_list       args;
-    char         *p;
     unsigned long flags;
 
     if ( debugtrace_bytes == 0 )
@@ -1243,25 +1256,32 @@ void debugtrace_printk(const char *fmt, ...)
 
     ASSERT(debugtrace_buf[debugtrace_bytes - 1] == 0);
 
-    snprintf(buf, sizeof(buf), "%u ", ++count);
-
     va_start(args, fmt);
-    (void)vsnprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), fmt, args);
+    vsnprintf(buf, sizeof(buf), fmt, args);
     va_end(args);
 
     if ( debugtrace_send_to_console )
     {
+        snprintf(cntbuf, sizeof(cntbuf), "%u ", ++count);
+        serial_puts(sercon_handle, cntbuf);
         serial_puts(sercon_handle, buf);
     }
     else
     {
-        for ( p = buf; *p != '\0'; p++ )
+        if ( strcmp(buf, last_buf) )
+        {
+            last_prd = debugtrace_prd;
+            last_count = ++count;
+            safe_strcpy(last_buf, buf);
+            snprintf(cntbuf, sizeof(cntbuf), "%u ", count);
+        }
+        else
         {
-            debugtrace_buf[debugtrace_prd++] = *p;            
-            /* Always leave a nul byte at the end of the buffer. */
-            if ( debugtrace_prd == (debugtrace_bytes - 1) )
-                debugtrace_prd = 0;
+            debugtrace_prd = last_prd;
+            snprintf(cntbuf, sizeof(cntbuf), "%u-%u ", last_count, ++count);
         }
+        debugtrace_add_to_buf(cntbuf);
+        debugtrace_add_to_buf(buf);
     }
 
     spin_unlock_irqrestore(&debugtrace_lock, flags);
-- 
2.16.4


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

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

* Re: [PATCH v2 2/2] xen/debug: make debugtrace more clever regarding repeating entries
  2019-03-15  6:35 ` [PATCH v2 2/2] xen/debug: make debugtrace more clever regarding repeating entries Juergen Gross
@ 2019-03-15 13:29   ` Wei Liu
  0 siblings, 0 replies; 4+ messages in thread
From: Wei Liu @ 2019-03-15 13:29 UTC (permalink / raw)
  To: Juergen Gross
  Cc: Stefano Stabellini, Wei Liu, Konrad Rzeszutek Wilk,
	George Dunlap, Andrew Cooper, Ian Jackson, Tim Deegan,
	Julien Grall, Jan Beulich, xen-devel

On Fri, Mar 15, 2019 at 07:35:57AM +0100, Juergen Gross wrote:
> In case debugtrace is writing to memory and the last entry is repeated
> don't fill up the trace buffer, but modify the count prefix to "x-y "
> style instead.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Acked-by: Wei Liu <wei.liu2@citrix.com>

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

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

end of thread, other threads:[~2019-03-15 13:29 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-15  6:35 [PATCH v2 0/2] xen: some debug trace enhancements Juergen Gross
2019-03-15  6:35 ` [PATCH v2 1/2] xen/debug: make debugtrace configurable via Kconfig Juergen Gross
2019-03-15  6:35 ` [PATCH v2 2/2] xen/debug: make debugtrace more clever regarding repeating entries Juergen Gross
2019-03-15 13:29   ` Wei Liu

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.