+ linux-deviceh-use-unique-identifier-for-each-struct-_ddebug.patch added to -mm tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The patch titled
     Subject: linux/device.h: use unique identifier for each struct _ddebug
has been added to the -mm tree.  Its filename is
     linux-deviceh-use-unique-identifier-for-each-struct-_ddebug.patch

This patch should soon appear at
    http://ozlabs.org/~akpm/mmots/broken-out/linux-deviceh-use-unique-identifier-for-each-struct-_ddebug.patch
and later at
    http://ozlabs.org/~akpm/mmotm/broken-out/linux-deviceh-use-unique-identifier-for-each-struct-_ddebug.patch

Before you just go and hit "reply", please:
   a) Consider who else should be cc'ed
   b) Prefer to cc a suitable mailing list as well
   c) Ideally: find the original patch on the mailing list and do a
      reply-to-all to that, adding suitable additional cc's

*** Remember to use Documentation/process/submit-checklist.rst when testing your code ***

The -mm tree is included into linux-next and is updated
there every 3-4 working days

------------------------------------------------------
From: Rasmus Villemoes <linux@xxxxxxxxxxxxxxxxxx>
Subject: linux/device.h: use unique identifier for each struct _ddebug

Patch series "implement DYNAMIC_DEBUG_RELATIVE_POINTERS".

Similar to CONFIG_GENERIC_BUG_RELATIVE_POINTERS that replaces (8 byte)
const char* members by (4 byte) signed offsets from the bug_entry, this
implements the similar thing for struct _ddebug, the descriptors
underlying pr_debug() and friends in a CONFIG_DYNAMIC_DEBUG kernel.

Since struct _ddebug has four string members, we save 16 byte per
instance.  The total savings seem to be comparable to what is saved by an
architecture selecting GENERIC_BUG_RELATIVE_POINTERS (see patch 8 for some
numbers for a common distro config).

While refreshing these patches, which were orignally just targeted at
x86-64, it occured to me that despite the implementation relying on inline
asm, there's nothing x86 specific about it, and indeed it seems to work
out-of-the-box for ppc64 and arm64 as well, but those have only been
compile-tested.

The first 6 patches are rather pedestrian preparations.  The fun stuff is
in patch 7, and the remaining three patches are just the minimal
boilerplate to hook up the config option and asm-generic header on the
three architectures.


This patch (of 10):

Changes on x86-64 later in this series require that all struct _ddebug
descriptors in a translation unit uses distinct identifiers.  Realize that
for dev_dbg_ratelimited by generating such an identifier via __UNIQUE_ID
and pass that to an extra level of macros.

No functional change.

Link: http://lkml.kernel.org/r/20190409212517.7321-2-linux@xxxxxxxxxxxxxxxxxx
Signed-off-by: Rasmus Villemoes <linux@xxxxxxxxxxxxxxxxxx>
Reviewed-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
Acked-by: Jason Baron <jbaron@xxxxxxxxxx>
Cc: Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx>
Cc: Catalin Marinas <catalin.marinas@xxxxxxx>
Cc: Christophe Leroy <christophe.leroy@xxxxxx>
Cc: David Miller <davem@xxxxxxxxxxxxx>
Cc: "H. Peter Anvin" <hpa@xxxxxxxxx>
Cc: Ingo Molnar <mingo@xxxxxxx>
Cc: Michael Ellerman <mpe@xxxxxxxxxxxxxx>
Cc: Paul Mackerras <paulus@xxxxxxxxx>
Cc: Petr Mladek <pmladek@xxxxxxxx>
Cc: Sergey Senozhatsky <sergey.senozhatsky@xxxxxxxxx>
Cc: Steven Rostedt <rostedt@xxxxxxxxxxx>
Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Cc: Will Deacon <will.deacon@xxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
---

 include/linux/device.h |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

--- a/include/linux/device.h~linux-deviceh-use-unique-identifier-for-each-struct-_ddebug
+++ a/include/linux/device.h
@@ -1562,7 +1562,7 @@ do {									\
 	dev_level_ratelimited(dev_info, dev, fmt, ##__VA_ARGS__)
 #if defined(CONFIG_DYNAMIC_DEBUG)
 /* descriptor check is first to prevent flooding with "callbacks suppressed" */
-#define dev_dbg_ratelimited(dev, fmt, ...)				\
+#define _dev_dbg_ratelimited(descriptor, dev, fmt, ...)			\
 do {									\
 	static DEFINE_RATELIMIT_STATE(_rs,				\
 				      DEFAULT_RATELIMIT_INTERVAL,	\
@@ -1573,6 +1573,8 @@ do {									\
 		__dynamic_dev_dbg(&descriptor, dev, dev_fmt(fmt),	\
 				  ##__VA_ARGS__);			\
 } while (0)
+#define dev_dbg_ratelimited(dev, fmt, ...)				\
+	_dev_dbg_ratelimited(__UNIQUE_ID(ddebug), dev, fmt, ##__VA_ARGS__)
 #elif defined(DEBUG)
 #define dev_dbg_ratelimited(dev, fmt, ...)				\
 do {									\
_

Patches currently in -mm which might be from linux@xxxxxxxxxxxxxxxxxx are

linux-deviceh-use-unique-identifier-for-each-struct-_ddebug.patch
linux-neth-use-unique-identifier-for-each-struct-_ddebug.patch
linux-printkh-use-unique-identifier-for-each-struct-_ddebug.patch
dynamic_debug-introduce-accessors-for-string-members-of-struct-_ddebug.patch
dynamic_debug-drop-use-of-bitfields-in-struct-_ddebug.patch
dynamic_debug-introduce-config_dynamic_debug_relative_pointers.patch
dynamic_debug-add-asm-generic-implementation-for-dynamic_debug_relative_pointers.patch
x86-64-select-dynamic_debug_relative_pointers.patch
arm64-select-dynamic_debug_relative_pointers.patch
powerpc-select-dynamic_debug_relative_pointers-for-ppc64.patch
lib-bitmapc-remove-unused-export_symbols.patch
lib-bitmapc-guard-exotic-bitmap-functions-by-config_numa.patch
bitopsh-sanitize-rotate-primitives.patch




[Index of Archives]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux