16 Mar, 2016

1 commit

  • In mm we use several kinds of flags bitfields that are sometimes printed
    for debugging purposes, or exported to userspace via sysfs. To make
    them easier to interpret independently on kernel version and config, we
    want to dump also the symbolic flag names. So far this has been done
    with repeated calls to pr_cont(), which is unreliable on SMP, and not
    usable for e.g. sysfs export.

    To get a more reliable and universal solution, this patch extends
    printk() format string for pointers to handle the page flags (%pGp),
    gfp_flags (%pGg) and vma flags (%pGv). Existing users of
    dump_flag_names() are converted and simplified.

    It would be possible to pass flags by value instead of pointer, but the
    %p format string for pointers already has extensions for various kernel
    structures, so it's a good fit, and the extra indirection in a
    non-critical path is negligible.

    [linux@rasmusvillemoes.dk: lots of good implementation suggestions]
    Signed-off-by: Vlastimil Babka
    Acked-by: Michal Hocko
    Cc: Steven Rostedt
    Cc: Peter Zijlstra
    Cc: Arnaldo Carvalho de Melo
    Cc: Ingo Molnar
    Cc: Rasmus Villemoes
    Cc: Joonsoo Kim
    Cc: Minchan Kim
    Cc: Sasha Levin
    Cc: "Kirill A. Shutemov"
    Cc: Mel Gorman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vlastimil Babka
     

17 Jan, 2016

1 commit

  • %pT for task->comm has been proposed (several times, I think), but is
    not actually implemented. Remove it from printk-formats.txt and add it
    back if/when it gets implemented.

    Signed-off-by: Rasmus Villemoes
    Reviewed-by: Andy Shevchenko
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rasmus Villemoes
     

07 Jan, 2016

1 commit

  • This allow to directly print block_device name.
    Currently one should use bdevname() with temporal char buffer.
    This is very ineffective because bloat stack usage for deep IO call-traces

    Example:
    %pg -> sda, sda1 or loop0p1

    [AV: fixed a minor braino - position updates should not be dependent
    upon having reached the of buffer]

    Signed-off-by: Dmitry Monakhov
    Signed-off-by: Al Viro

    Dmitry Monakhov
     

07 Nov, 2015

2 commits

  • %n is no longer just ignored; it results in early return from vsnprintf.
    Also add a request to add test cases for future %p extensions.

    Signed-off-by: Rasmus Villemoes
    Reviewed-by: Martin Kletzander
    Reviewed-by: Andy Shevchenko
    Cc: Jonathan Corbet
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rasmus Villemoes
     
  • Move all pointer-formatting documentation to one place in the code and one
    place in the documentation instead of keeping it in three places with
    different level of completeness. Documentation/printk-formats.txt has
    detailed information about each modifier, docstring above pointer() has
    short descriptions of them (as that is the function dealing with %p) and
    docstring above vsprintf() is removed as redundant. Both docstrings in
    the code that were modified are updated with a reminder of updating the
    documentation upon any further change.

    [akpm@linux-foundation.org: fix comment]
    Signed-off-by: Martin Kletzander
    Reviewed-by: Andy Shevchenko
    Cc: Rasmus Villemoes
    Cc: Jonathan Corbet
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Martin Kletzander
     

18 Apr, 2015

1 commit

  • Pull documentation updates from Jonathan Corbet:
    "Numerous fixes, the overdue removal of the i2o docs, some new Chinese
    translations, and, hopefully, the README fix that will end the flow of
    identical patches to that file"

    * tag 'docs-for-linus' of git://git.lwn.net/linux-2.6: (34 commits)
    Documentation/memcg: update memcg/kmem status
    Documentation: blackfin: Makefile: Typo building issue
    Documentation/vm/pagemap.txt: correct location of page-types tool
    Documentation/memory-barriers.txt: typo fix
    doc: Add guest_nice column to example output of `cat /proc/stat'
    Documentation/kernel-parameters: Move "eagerfpu" to its right place
    Documentation: gpio: Update ACPI part of the document to mention _DSD
    docs/completion.txt: Various tweaks and corrections
    doc: completion: context, scope and language fixes
    Documentation:Update Documentation/zh_CN/arm64/memory.txt
    Documentation:Update Documentation/zh_CN/arm64/booting.txt
    Documentation: Chinese translation of arm64/legacy_instructions.txt
    DocBook media: fix broken EIA hyperlink
    Documentation: tweak the maintainers entry
    README: Change gzip/bzip2 to xz compression format
    README: Update version number reference
    doc:pci: Fix typo in Documentation/PCI
    Documentation: drm: Use '->' when describing access through pointers.
    Documentation: Remove mentioning of block barriers
    Documentation/email-clients.txt: Fix one grammar mistake, add extra info about TB
    ...

    Linus Torvalds
     

16 Apr, 2015

3 commits

  • Add format specifiers for printing struct clk:
    - '%pC' or '%pCn': name (Common Clock Framework) or address (legacy
    clock framework) of the clock,
    - '%pCr': rate of the clock.

    [akpm@linux-foundation.org: omit code if !CONFIG_HAVE_CLK]
    Signed-off-by: Geert Uytterhoeven
    Cc: Jonathan Corbet
    Cc: Mike Turquette
    Cc: Stephen Boyd
    Cc: Tetsuo Handa
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • Move the format types for 64-bit integers and configurable size integers
    to the top, so they're next to the other integer format types. While at
    it, add the missing format types for s32 and u32.

    Signed-off-by: Geert Uytterhoeven
    Cc: Jonathan Corbet
    Cc: Mike Turquette
    Cc: Stephen Boyd
    Cc: Tetsuo Handa
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • This patch series improves the documentation for printk() formats, and
    adds support for printing clocks. The latter has always been a hassle if
    you wanted to support both the common and legacy clock frameworks.

    - '%pC' and '%pCn' print the name (Common Clock Framework) or address
    (legacy clock framework) of a clock,
    - '%pCr' prints the current clock rate.

    This patch (of 3):

    Make sure all %p extensions that take parameters by references are
    documented to do so.

    Signed-off-by: Geert Uytterhoeven
    Cc: Jonathan Corbet
    Cc: Mike Turquette
    Cc: Stephen Boyd
    Cc: Tetsuo Handa
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     

20 Mar, 2015

2 commits


14 Oct, 2014

1 commit

  • This allows user to print a given buffer as an escaped string. The
    rules are applied according to an optional mix of flags provided by
    additional format letters.

    For example, if the given buffer is:

    1b 62 20 5c 43 07 22 90 0d 5d

    The result strings would be:
    %*pE "\eb \C\a"\220\r]"
    %*pEhp "\x1bb \C\x07"\x90\x0d]"
    %*pEa "\e\142\040\\\103\a\042\220\r\135"

    Please, read Documentation/printk-formats.txt and lib/string_helpers.c
    kernel documentation to get further information.

    [akpm@linux-foundation.org: tidy up comment layout, per Joe]
    Signed-off-by: Andy Shevchenko
    Suggested-by: Joe Perches
    Cc: "John W . Linville"
    Cc: Johannes Berg
    Cc: Greg Kroah-Hartman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Shevchenko
     

05 May, 2014

1 commit


24 Jan, 2014

1 commit

  • dma_addr_t's can be either u32 or u64 depending on a CONFIG option.

    There are a few hundred dma_addr_t's printed via either cast to unsigned
    long long, unsigned long or no cast at all.

    Add %pad to be able to emit them without the cast.

    Update Documentation/printk-formats.txt too.

    Signed-off-by: Joe Perches
    Cc: "Shevchenko, Andriy"
    Cc: Rob Landley
    Cc: Laurent Pinchart
    Cc: Julia Lawall
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     

07 Sep, 2013

1 commit

  • Pull trivial tree from Jiri Kosina:
    "The usual trivial updates all over the tree -- mostly typo fixes and
    documentation updates"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (52 commits)
    doc: Documentation/cputopology.txt fix typo
    treewide: Convert retrun typos to return
    Fix comment typo for init_cma_reserved_pageblock
    Documentation/trace: Correcting and extending tracepoint documentation
    mm/hotplug: fix a typo in Documentation/memory-hotplug.txt
    power: Documentation: Update s2ram link
    doc: fix a typo in Documentation/00-INDEX
    Documentation/printk-formats.txt: No casts needed for u64/s64
    doc: Fix typo "is is" in Documentations
    treewide: Fix printks with 0x%#
    zram: doc fixes
    Documentation/kmemcheck: update kmemcheck documentation
    doc: documentation/hwspinlock.txt fix typo
    PM / Hibernate: add section for resume options
    doc: filesystems : Fix typo in Documentations/filesystems
    scsi/megaraid fixed several typos in comments
    ppc: init_32: Fix error typo "CONFIG_START_KERNEL"
    treewide: Add __GFP_NOWARN to k.alloc calls with v.alloc fallbacks
    page_isolation: Fix a comment typo in test_pages_isolated()
    doc: fix a typo about irq affinity
    ...

    Linus Torvalds
     

04 Sep, 2013

1 commit

  • New formats: %p[dD][234]?. The next pointer is interpreted as struct dentry *
    or struct file * resp. ('d' => dentry, 'D' => file) and the last component(s)
    of pathname are printed (%pd => just the last one, %pd2 => the last two, etc.)

    Signed-off-by: Al Viro

    Al Viro
     

27 Aug, 2013

1 commit

  • Now all 64-bit architectures have been converted to int-ll64.h in kernel
    space, casting to (unsigned) long long is no longer needed when formatting
    u64/s64.

    For backwards compatibility, alpha, ia64, mips64, and powerpc64 still use
    int-l64.h in userspace.

    Signed-off-by: Geert Uytterhoeven
    Acked-by: Randy Dunlap
    Acked-by: Rob Landley
    Signed-off-by: Jiri Kosina

    Geert Uytterhoeven
     

25 Jul, 2013

1 commit


08 Jul, 2013

1 commit


02 Jul, 2013

1 commit

  • In order to avoid making code that deals with printing both, IPv4 and
    IPv6 addresses, unnecessary complicated as for example ...

    if (sa.sa_family == AF_INET6)
    printk("... %pI6 ...", ..sin6_addr);
    else
    printk("... %pI4 ...", ..sin_addr.s_addr);

    ... it would be better to introduce a format specifier that can deal
    with those kind of situations internally; just as we have a "struct
    sockaddr" for generic mapping into "struct sockaddr_in" or "struct
    sockaddr_in6" as e.g. done in "union sctp_addr". Then, we could
    reduce the above statement into something like:

    printk("... %pIS ..", &sockaddr);

    In case our pointer is NULL, pointer() then deals with that already at
    an earlier point in time internally. While we're at it, support for both
    %piS/%pIS, where 'S' stands for sockaddr, comes (almost) for free.

    Additionally to that, postfix specifiers 'p', 'f' and 's' are supported
    as suggested and initially implemented in 2009 by Joe Perches [1].
    Handling of those additional specifiers orientate on the initial RFC that
    was proposed. Also we support IPv6 compressed format specified by 'c' and
    various other IPv4 extensions as stated in the documentation part.

    Likely, there are many other areas than just SCTP in the kernel to make
    use of this extension as well.

    [1] http://patchwork.ozlabs.org/patch/31480/

    Signed-off-by: Daniel Borkmann
    CC: Joe Perches
    CC: linux-kernel@vger.kernel.org
    Signed-off-by: David S. Miller

    Daniel Borkmann
     

01 May, 2013

2 commits

  • Pull fixup for trivial branch from Jiri Kosina:
    "Unfortunately I made a mistake when merging into for-linus branch, and
    omitted one pre-requisity patch for a few other patches (which have
    been Acked by the appropriate maintainers) in the series. Mea culpa
    maxima, sorry for that."

    The trivial branch added %pSR usage before actually teaching vsnprintf()
    about the 'R' part of %pSR. The 'R' causes the symbol translation to do
    a "__builtin_extract_return_addr()" before symbol lookup.

    That said, on most architectures __builtin_extract_return_addr() isn't
    likely to do anything special, so it probably is not normally
    noticeable.

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial:
    vsprintf: Add extension %pSR - print_symbol replacement

    Linus Torvalds
     
  • print_symbol takes a long and converts it to a function
    name and offset. %pS does something similar, but doesn't
    translate the address via __builtin_extract_return_addr.
    %pSR does the translation.

    This will enable replacing multiple calls like
    printk(...);
    printk_symbol(addr);
    printk("\n");
    with a single non-interleavable in dmesg
    printk("... %pSR\n", (void *)addr);

    Update documentation too.

    Signed-off-by: Joe Perches
    Signed-off-by: Jiri Kosina

    Joe Perches
     

09 Mar, 2013

1 commit

  • Update email address and CREDITS info. xenotime.net is defunct.

    Signed-off-by: Randy Dunlap
    Cc: Harry Wei
    Cc: Keiichi KII
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     

22 Feb, 2013

1 commit

  • Add the %pa format specifier for printing a phys_addr_t type and its
    derivative types (such as resource_size_t), since the physical address
    size on some platforms can vary based on build options, regardless of
    the native integer type.

    Signed-off-by: Stepan Moskovchenko
    Cc: Rob Landley
    Cc: George Spelvin
    Cc: Andy Shevchenko
    Cc: Stephen Boyd
    Cc: Andrei Emeltchenko
    Cc: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stepan Moskovchenko
     

06 Oct, 2012

1 commit


31 Jul, 2012

2 commits

  • There are many places in the kernel where the drivers print small buffers
    as a hex string. This patch adds a support of the variable width buffer
    to print it as a hex string with a delimiter. The idea came from Pavel
    Roskin here: http://www.digipedia.pl/usenet/thread/18835/17449/

    Sample output of
    pr_info("buf[%d:%d] %*phC\n", from, len, len, &buf[from]);
    could be look like this:
    [ 0.726130] buf[51:8] e8:16:b6:ef:e3:74:45:6e
    [ 0.750736] buf[59:15] 31:81:b8:3f:35:49:06:ae:df:32:06:05:4a:af:55
    [ 0.757602] buf[17:5] ac:16:d5:2c:ef

    Signed-off-by: Andy Shevchenko
    Cc: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Shevchenko
     
  • Bluetooth uses mostly LE byte order which is reversed for visual
    interpretation. Currently in Bluetooth in use unsafe batostr function.

    This is a slightly modified version of Joe's patch (sent Sat, Dec 4,
    2010).

    Signed-off-by: Andrei Emeltchenko
    Cc: Joe Perches
    Cc: Marcel Holtmann
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrei Emeltchenko
     

16 Jun, 2011

1 commit


13 Nov, 2008

1 commit

  • Add printk-formats.txt so that we don't have to keep fixing the
    same things over and over again.

    Signed-off-by: Randy Dunlap
    Cc: Alexey Dobriyan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap