linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* usbatm: printk_ratelimit() always called in the atm_rldbg()
@ 2013-10-26 13:29 Krzysztof Mazur
  2013-10-26 17:37 ` Greg Kroah-Hartman
  0 siblings, 1 reply; 11+ messages in thread
From: Krzysztof Mazur @ 2013-10-26 13:29 UTC (permalink / raw)
  To: Greg Kroah-Hartman; +Cc: Felipe Balbi, linux-kernel, linux-usb

Hi,

commit 2d6401cf4ca3861692a4779745e0049cac769d10
("USB: usbatm: move the atm_dbg() call to use dynamic debug")
changed the atm_rldbg() to:

#define atm_rldbg(instance, format, arg...)		\
	if (printk_ratelimit())				\
		atm_dbg(instance , format , ## arg)

and now printk_ratelimit() is always called even when debugging is
disabled and a lot of "callbacks suppressed" messages are printed
by the printk_ratelimit():

[...]
usbatm_rx_process: 4977 callbacks suppressed
usbatm_extract_one_cell: 2920 callbacks suppressed
[...]


I'm not sure how to fix that, maybe we need dynamic_pr_debug_ratelimit()?

Krzysiek

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

* Re: usbatm: printk_ratelimit() always called in the atm_rldbg()
  2013-10-26 13:29 usbatm: printk_ratelimit() always called in the atm_rldbg() Krzysztof Mazur
@ 2013-10-26 17:37 ` Greg Kroah-Hartman
  2013-10-26 18:52   ` [PATCH] printk: pr_debug_ratelimited: check state first to reduce "callbacks suppressed" messages Joe Perches
  2013-10-26 18:55   ` [PATCH] atmusb: Fix dynamic_debug macros Joe Perches
  0 siblings, 2 replies; 11+ messages in thread
From: Greg Kroah-Hartman @ 2013-10-26 17:37 UTC (permalink / raw)
  To: Krzysztof Mazur; +Cc: Felipe Balbi, linux-kernel, linux-usb

On Sat, Oct 26, 2013 at 03:29:56PM +0200, Krzysztof Mazur wrote:
> Hi,
> 
> commit 2d6401cf4ca3861692a4779745e0049cac769d10
> ("USB: usbatm: move the atm_dbg() call to use dynamic debug")
> changed the atm_rldbg() to:
> 
> #define atm_rldbg(instance, format, arg...)		\
> 	if (printk_ratelimit())				\
> 		atm_dbg(instance , format , ## arg)
> 
> and now printk_ratelimit() is always called even when debugging is
> disabled and a lot of "callbacks suppressed" messages are printed
> by the printk_ratelimit():
> 
> [...]
> usbatm_rx_process: 4977 callbacks suppressed
> usbatm_extract_one_cell: 2920 callbacks suppressed
> [...]
> 
> 
> I'm not sure how to fix that, maybe we need dynamic_pr_debug_ratelimit()?

How about just deleting the use of that macro entirely?  Odds are it's
not really needed anymore, right?

thanks,

greg k-h

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

* [PATCH] printk: pr_debug_ratelimited: check state first to reduce "callbacks suppressed" messages
  2013-10-26 17:37 ` Greg Kroah-Hartman
@ 2013-10-26 18:52   ` Joe Perches
  2013-10-26 19:01     ` Greg Kroah-Hartman
  2013-10-26 18:55   ` [PATCH] atmusb: Fix dynamic_debug macros Joe Perches
  1 sibling, 1 reply; 11+ messages in thread
From: Joe Perches @ 2013-10-26 18:52 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Jason Baron, Andrew Morton
  Cc: Krzysztof Mazur, Felipe Balbi, linux-kernel, linux-usb

pr_debug_ratelimited should be coded similar to dev_dbg_ratelimited
to reduce the "callbacks suppressed" messages.

Signed-off-by: Joe Perches <joe@perches.com>
---
On Sat, 2013-10-26 at 18:37 +0100, Greg Kroah-Hartman wrote:
> On Sat, Oct 26, 2013 at 03:29:56PM +0200, Krzysztof Mazur wrote:
> > Hi,
> > 
> > commit 2d6401cf4ca3861692a4779745e0049cac769d10
> > ("USB: usbatm: move the atm_dbg() call to use dynamic debug")
> > changed the atm_rldbg() to:
> > 
> > #define atm_rldbg(instance, format, arg...)		\
> > 	if (printk_ratelimit())				\
> > 		atm_dbg(instance , format , ## arg)
> > 
> > and now printk_ratelimit() is always called even when debugging is
> > disabled and a lot of "callbacks suppressed" messages are printed
> > by the printk_ratelimit():
> > 
> > [...]
> > usbatm_rx_process: 4977 callbacks suppressed
> > usbatm_extract_one_cell: 2920 callbacks suppressed
> > [...]
> > 
> > 
> > I'm not sure how to fix that, maybe we need dynamic_pr_debug_ratelimit()?
> 
> How about just deleting the use of that macro entirely?  Odds are it's
> not really needed anymore, right?

 include/linux/printk.h | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/include/linux/printk.h b/include/linux/printk.h
index e6131a78..449d924 100644
--- a/include/linux/printk.h
+++ b/include/linux/printk.h
@@ -343,7 +343,19 @@ extern asmlinkage void dump_stack(void) __cold;
 #endif
 
 /* If you are writing a driver, please use dev_dbg instead */
-#if defined(DEBUG)
+#if defined(CONFIG_DYNAMIC_DEBUG)
+/* descriptor check is first to prevent flooding with "callbacks suppressed" */
+#define pr_debug_ratelimited(dev, fmt, ...)				\
+do {									\
+	static DEFINE_RATELIMIT_STATE(_rs,				\
+				      DEFAULT_RATELIMIT_INTERVAL,	\
+				      DEFAULT_RATELIMIT_BURST);		\
+	DEFINE_DYNAMIC_DEBUG_METADATA(descriptor, fmt);			\
+	if (unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT) &&	\
+	    __ratelimit(&_rs))						\
+		__dynamic_pr_debug(fmt, ##__VA_ARGS__);			\
+} while (0)
+#elif defined(DEBUG)
 #define pr_debug_ratelimited(fmt, ...)					\
 	printk_ratelimited(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
 #else



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

* [PATCH] atmusb: Fix dynamic_debug macros
  2013-10-26 17:37 ` Greg Kroah-Hartman
  2013-10-26 18:52   ` [PATCH] printk: pr_debug_ratelimited: check state first to reduce "callbacks suppressed" messages Joe Perches
@ 2013-10-26 18:55   ` Joe Perches
  2013-10-26 19:28     ` Joe Perches
  1 sibling, 1 reply; 11+ messages in thread
From: Joe Perches @ 2013-10-26 18:55 UTC (permalink / raw)
  To: Greg Kroah-Hartman; +Cc: Krzysztof Mazur, Felipe Balbi, linux-kernel, linux-usb

Fix use of atm_dbg to all normal pr_debug not dynamic_pr_debug
because dynamic_pr_debug may not be compiled in at all.

Signed-off-by: Joe Perches <joe@perches.com>
---
 drivers/usb/atm/usbatm.h | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/drivers/usb/atm/usbatm.h b/drivers/usb/atm/usbatm.h
index 5651231..2104b4b 100644
--- a/drivers/usb/atm/usbatm.h
+++ b/drivers/usb/atm/usbatm.h
@@ -59,13 +59,12 @@
 	atm_printk(KERN_INFO, instance , format , ## arg)
 #define atm_warn(instance, format, arg...)	\
 	atm_printk(KERN_WARNING, instance , format , ## arg)
-#define atm_dbg(instance, format, arg...)		\
-	dynamic_pr_debug("ATM dev %d: " format ,	\
-	(instance)->atm_dev->number , ## arg)
-#define atm_rldbg(instance, format, arg...)		\
-	if (printk_ratelimit())				\
-		atm_dbg(instance , format , ## arg)
-
+#define atm_dbg(instance, format, arg...)				\
+	pr_debug("ATM dev %d: " format,					\
+		 (instance)->atm_dev->number, ##__VA_ARGS__)
+#define atm_rldbg(instance, format, arg...)				\
+	pr_debug_ratelimited("ATM dev %d: " format,			\
+			     (instance)->atm_dev->number, ##__VA_ARGS__)
 
 /* flags, set by mini-driver in bind() */
 



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

* Re: [PATCH] printk: pr_debug_ratelimited: check state first to reduce "callbacks suppressed" messages
  2013-10-26 18:52   ` [PATCH] printk: pr_debug_ratelimited: check state first to reduce "callbacks suppressed" messages Joe Perches
@ 2013-10-26 19:01     ` Greg Kroah-Hartman
  2013-10-26 19:51       ` Joe Perches
  2013-10-27  3:41       ` [PATCH V2] " Joe Perches
  0 siblings, 2 replies; 11+ messages in thread
From: Greg Kroah-Hartman @ 2013-10-26 19:01 UTC (permalink / raw)
  To: Joe Perches
  Cc: Jason Baron, Andrew Morton, Krzysztof Mazur, Felipe Balbi,
	linux-kernel, linux-usb

On Sat, Oct 26, 2013 at 11:52:02AM -0700, Joe Perches wrote:
> pr_debug_ratelimited should be coded similar to dev_dbg_ratelimited
> to reduce the "callbacks suppressed" messages.
> 
> Signed-off-by: Joe Perches <joe@perches.com>

Looks good, I'll queue both of these up soon.

greg k-h

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

* Re: [PATCH] atmusb: Fix dynamic_debug macros
  2013-10-26 18:55   ` [PATCH] atmusb: Fix dynamic_debug macros Joe Perches
@ 2013-10-26 19:28     ` Joe Perches
  2013-10-26 20:02       ` Krzysztof Mazur
  2013-10-27  3:49       ` [PATCH V2] usbatm: Fix dynamic_debug / ratelimited atm_dbg and atm_rldbg macros Joe Perches
  0 siblings, 2 replies; 11+ messages in thread
From: Joe Perches @ 2013-10-26 19:28 UTC (permalink / raw)
  To: Greg Kroah-Hartman; +Cc: Krzysztof Mazur, Felipe Balbi, linux-kernel, linux-usb

On Sat, 2013-10-26 at 11:55 -0700, Joe Perches wrote:
> Fix use of atm_dbg to all normal pr_debug not dynamic_pr_debug
> because dynamic_pr_debug may not be compiled in at all.

Greg, please don't apply this one.
I'll resubmit one that actually works.

(the arg...) should be ...

> +#define atm_dbg(instance, format, arg...)				\
                                     ^ oops.

> +#define atm_rldbg(instance, format, arg...)				\
> +	pr_debug_ratelimited("ATM dev %d: " format,			\
> +			     (instance)->atm_dev->number, ##__VA_ARGS__)

here too.



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

* Re: [PATCH] printk: pr_debug_ratelimited: check state first to reduce "callbacks suppressed" messages
  2013-10-26 19:01     ` Greg Kroah-Hartman
@ 2013-10-26 19:51       ` Joe Perches
  2013-10-27  3:41       ` [PATCH V2] " Joe Perches
  1 sibling, 0 replies; 11+ messages in thread
From: Joe Perches @ 2013-10-26 19:51 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Jason Baron, Andrew Morton, Krzysztof Mazur, Felipe Balbi,
	linux-kernel, linux-usb

On Sat, 2013-10-26 at 20:01 +0100, Greg Kroah-Hartman wrote:
> On Sat, Oct 26, 2013 at 11:52:02AM -0700, Joe Perches wrote:
> > pr_debug_ratelimited should be coded similar to dev_dbg_ratelimited
> > to reduce the "callbacks suppressed" messages.
> > Signed-off-by: Joe Perches <joe@perches.com>
> Looks good, I'll queue both of these up soon.

Sorry Greg, hand out the brown paper bag please.

Just ignore these both, I'll resubmit properly tested ones.


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

* Re: [PATCH] atmusb: Fix dynamic_debug macros
  2013-10-26 19:28     ` Joe Perches
@ 2013-10-26 20:02       ` Krzysztof Mazur
  2013-10-27  3:49       ` [PATCH V2] usbatm: Fix dynamic_debug / ratelimited atm_dbg and atm_rldbg macros Joe Perches
  1 sibling, 0 replies; 11+ messages in thread
From: Krzysztof Mazur @ 2013-10-26 20:02 UTC (permalink / raw)
  To: Joe Perches; +Cc: Greg Kroah-Hartman, Felipe Balbi, linux-kernel, linux-usb

On Sat, Oct 26, 2013 at 12:28:56PM -0700, Joe Perches wrote:
> On Sat, 2013-10-26 at 11:55 -0700, Joe Perches wrote:
> > Fix use of atm_dbg to all normal pr_debug not dynamic_pr_debug
> > because dynamic_pr_debug may not be compiled in at all.
> 
> Greg, please don't apply this one.
> I'll resubmit one that actually works.
> 
> (the arg...) should be ...
> 
> > +#define atm_dbg(instance, format, arg...)				\
>                                      ^ oops.
> 
> > +#define atm_rldbg(instance, format, arg...)				\
> > +	pr_debug_ratelimited("ATM dev %d: " format,			\
> > +			     (instance)->atm_dev->number, ##__VA_ARGS__)
> 
> here too.
> 

Yeah, I initially fixed that with changing "##__VAR_ARGS" to "## arg",
but without with "arg..." -> "..." it also compiles and runs correctly.

I tested that only in my configuration - without DEBUG and DYNAMIC_DEBUG
- and compile tested that it with DYNAMIC_DEBUG. If you like you can add:

Tested-by: Krzysztof Mazur <krzysiek@podlesie.net>

BTW: the driver is named usbatm, not atmusb.

Thanks,
Krzysiek

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

* [PATCH V2] printk: pr_debug_ratelimited: check state first to reduce "callbacks suppressed" messages
  2013-10-26 19:01     ` Greg Kroah-Hartman
  2013-10-26 19:51       ` Joe Perches
@ 2013-10-27  3:41       ` Joe Perches
  2013-10-27 10:33         ` Krzysztof Mazur
  1 sibling, 1 reply; 11+ messages in thread
From: Joe Perches @ 2013-10-27  3:41 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Jason Baron, Andrew Morton, Krzysztof Mazur, Felipe Balbi,
	linux-kernel, linux-usb

pr_debug_ratelimited should be coded similarly to dev_dbg_ratelimited
to reduce the "callbacks suppressed" messages.

Add #include <linux/dynamic_debug.h> to printk.h. Unfortunately, this
new #include must be after the prototype/declaration of function printk.

It may be better to split out these _ratelimited declarations into
a separate file one day.

Any use of these pr_<foo>_ratelimited functions must also have another
specific #include <ratelimited.h>.  Most users have this done indirectly
via #include <linux/kernel.h>

printk.h may not #include <linux/ratelimit.h> as it causes circular
dependencies and compilation failures.

Signed-off-by: Joe Perches <joe@perches.com>
---
V2: Fix #include dependencies and typos.

Compile tested with and without CONFIG_DYNAMIC_DEBUG

It looks to me as if device.h should also have #include <dynamic_debug.h>
It currently gets the #include indirectly via kobject.h -> kernel.h.

 include/linux/printk.h | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/include/linux/printk.h b/include/linux/printk.h
index e6131a78..6949258 100644
--- a/include/linux/printk.h
+++ b/include/linux/printk.h
@@ -233,6 +233,8 @@ extern asmlinkage void dump_stack(void) __cold;
 	no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
 #endif
 
+#include <linux/dynamic_debug.h>
+
 /* If you are writing a driver, please use dev_dbg instead */
 #if defined(CONFIG_DYNAMIC_DEBUG)
 /* dynamic_pr_debug() uses pr_fmt() internally so we don't need it here */
@@ -343,7 +345,19 @@ extern asmlinkage void dump_stack(void) __cold;
 #endif
 
 /* If you are writing a driver, please use dev_dbg instead */
-#if defined(DEBUG)
+#if defined(CONFIG_DYNAMIC_DEBUG)
+/* descriptor check is first to prevent flooding with "callbacks suppressed" */
+#define pr_debug_ratelimited(fmt, ...)					\
+do {									\
+	static DEFINE_RATELIMIT_STATE(_rs,				\
+				      DEFAULT_RATELIMIT_INTERVAL,	\
+				      DEFAULT_RATELIMIT_BURST);		\
+	DEFINE_DYNAMIC_DEBUG_METADATA(descriptor, fmt);			\
+	if (unlikely(descriptor.flags & _DPRINTK_FLAGS_PRINT) &&	\
+	    __ratelimit(&_rs))						\
+		__dynamic_pr_debug(&descriptor, fmt, ##__VA_ARGS__);	\
+} while (0)
+#elif defined(DEBUG)
 #define pr_debug_ratelimited(fmt, ...)					\
 	printk_ratelimited(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__)
 #else



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

* [PATCH V2] usbatm: Fix dynamic_debug / ratelimited atm_dbg and atm_rldbg macros
  2013-10-26 19:28     ` Joe Perches
  2013-10-26 20:02       ` Krzysztof Mazur
@ 2013-10-27  3:49       ` Joe Perches
  1 sibling, 0 replies; 11+ messages in thread
From: Joe Perches @ 2013-10-27  3:49 UTC (permalink / raw)
  To: Greg Kroah-Hartman; +Cc: Krzysztof Mazur, Felipe Balbi, linux-kernel, linux-usb

Fix atm_dbg to use normal pr_debug not dynamic_pr_debug
because dynamic_pr_debug may not be compiled in at all.

Signed-off-by: Joe Perches <joe@perches.com>
---
V2: Fix macro use of arg... vs ... typo
    Fix usbatm vs atmusb typo (thanks Krzysiek)

 drivers/usb/atm/usbatm.h | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/usb/atm/usbatm.h b/drivers/usb/atm/usbatm.h
index 5651231..f3eecd9 100644
--- a/drivers/usb/atm/usbatm.h
+++ b/drivers/usb/atm/usbatm.h
@@ -34,6 +34,7 @@
 #include <linux/stringify.h>
 #include <linux/usb.h>
 #include <linux/mutex.h>
+#include <linux/ratelimit.h>
 
 /*
 #define VERBOSE_DEBUG
@@ -59,13 +60,12 @@
 	atm_printk(KERN_INFO, instance , format , ## arg)
 #define atm_warn(instance, format, arg...)	\
 	atm_printk(KERN_WARNING, instance , format , ## arg)
-#define atm_dbg(instance, format, arg...)		\
-	dynamic_pr_debug("ATM dev %d: " format ,	\
-	(instance)->atm_dev->number , ## arg)
-#define atm_rldbg(instance, format, arg...)		\
-	if (printk_ratelimit())				\
-		atm_dbg(instance , format , ## arg)
-
+#define atm_dbg(instance, format, ...)					\
+	pr_debug("ATM dev %d: " format,					\
+		 (instance)->atm_dev->number, ##__VA_ARGS__)
+#define atm_rldbg(instance, format, ...)				\
+	pr_debug_ratelimited("ATM dev %d: " format,			\
+			     (instance)->atm_dev->number, ##__VA_ARGS__)
 
 /* flags, set by mini-driver in bind() */
 




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

* Re: [PATCH V2] printk: pr_debug_ratelimited: check state first to reduce "callbacks suppressed" messages
  2013-10-27  3:41       ` [PATCH V2] " Joe Perches
@ 2013-10-27 10:33         ` Krzysztof Mazur
  0 siblings, 0 replies; 11+ messages in thread
From: Krzysztof Mazur @ 2013-10-27 10:33 UTC (permalink / raw)
  To: Joe Perches
  Cc: Greg Kroah-Hartman, Jason Baron, Andrew Morton, Felipe Balbi,
	linux-kernel, linux-usb

On Sat, Oct 26, 2013 at 08:41:53PM -0700, Joe Perches wrote:
> pr_debug_ratelimited should be coded similarly to dev_dbg_ratelimited
> to reduce the "callbacks suppressed" messages.
> 
> Add #include <linux/dynamic_debug.h> to printk.h. Unfortunately, this
> new #include must be after the prototype/declaration of function printk.
> 
> It may be better to split out these _ratelimited declarations into
> a separate file one day.
> 
> Any use of these pr_<foo>_ratelimited functions must also have another
> specific #include <ratelimited.h>.  Most users have this done indirectly
> via #include <linux/kernel.h>
> 
> printk.h may not #include <linux/ratelimit.h> as it causes circular
> dependencies and compilation failures.
> 
> Signed-off-by: Joe Perches <joe@perches.com>
> ---
> V2: Fix #include dependencies and typos.
> 
> Compile tested with and without CONFIG_DYNAMIC_DEBUG

I've tested both patches without CONFIG_DYNAMIC_DEBUG and
with enabled and disabled debugging with CONFIG_DYNAMIC_DEBUG
and everything seems work correctly.

Thanks,
Krzysiek

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

end of thread, other threads:[~2013-10-27 10:33 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-10-26 13:29 usbatm: printk_ratelimit() always called in the atm_rldbg() Krzysztof Mazur
2013-10-26 17:37 ` Greg Kroah-Hartman
2013-10-26 18:52   ` [PATCH] printk: pr_debug_ratelimited: check state first to reduce "callbacks suppressed" messages Joe Perches
2013-10-26 19:01     ` Greg Kroah-Hartman
2013-10-26 19:51       ` Joe Perches
2013-10-27  3:41       ` [PATCH V2] " Joe Perches
2013-10-27 10:33         ` Krzysztof Mazur
2013-10-26 18:55   ` [PATCH] atmusb: Fix dynamic_debug macros Joe Perches
2013-10-26 19:28     ` Joe Perches
2013-10-26 20:02       ` Krzysztof Mazur
2013-10-27  3:49       ` [PATCH V2] usbatm: Fix dynamic_debug / ratelimited atm_dbg and atm_rldbg macros Joe Perches

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).