17 Jul, 2012

4 commits

  • Fragments of continuation lines are flushed to the console immediately. In
    case the console is locked, the fragment must be queued up in the cont
    buffer.

    If the the console is busy and the continuation line is complete, but no part
    of it was written to the console up to this point, we can just store the
    entire line as a regular record and free the buffer earlier.

    If the console is busy and earlier messages are already queued up, we
    should not flush the fragments of continuation lines, but store them after
    the queued up messages, to ensure the proper ordering.

    This keeps the console output better readable in case printk()s race against
    each other, or we receive over-long continuation lines we need to flush.

    Signed-off-by: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     
  • In some cases we are forced to store individual records for a continuation
    line print.

    Export a flag to allow the external re-construction of the line. The flag
    allows us to apply a similar logic externally which is used internally when
    the console, /proc/kmsg or the syslog() output is printed.

    $ cat /dev/kmsg
    4,165,0,-;Free swap = 0kB
    4,166,0,-;Total swap = 0kB
    6,167,0,c;[
    4,168,0,+;0
    4,169,0,+;1
    4,170,0,+;2
    4,171,0,+;3
    4,172,0,+;]
    6,173,0,-;[0 1 2 3 ]
    6,174,0,-;Console: colour VGA+ 80x25
    6,175,0,-;console [tty0] enabled

    Signed-off-by: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     
  • Signed-off-by: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     
  • Reserve PREFIX_MAX bytes in the LOG_LINE_MAX line when buffering a
    continuation line, to be able to properly prefix the LOG_LINE_MAX
    line with the syslog prefix and timestamp when printing it.

    Reported-By: Dave Jones
    Signed-off-by: Kay Sievers
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     

10 Jul, 2012

2 commits

  • In (the unlikely) case our continuation merge buffer is busy, we unfortunately
    can not merge further continuation printk()s into a single record and have to
    store them separately, which leads to split-up output of these lines when they
    are printed.

    Add some flags about newlines and prefix existence to these records and try to
    reconstruct the full line again, when the separated records are printed.

    Reported-By: Michael Neuling
    Cc: Dave Jones
    Cc: Linus Torvalds
    Tested-By: Michael Neuling
    Signed-off-by: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     
  • Restore support for partial reads of any size on /proc/kmsg, in case the
    supplied read buffer is smaller than the record size.

    Some people seem to think is is ia good idea to run:
    $ dd if=/proc/kmsg bs=1 of=...
    as a klog bridge.

    Resolves-bug: https://bugzilla.kernel.org/show_bug.cgi?id=44211
    Reported-by: Jukka Ollila
    Signed-off-by: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     

07 Jul, 2012

5 commits

  • We suppress printing kmsg records to the console, which are already printed
    immediately while we have received their fragments.

    Newly registered boot consoles print the entire kmsg buffer during
    registration. Clear the console-suppress flag after we skipped the record
    during its first storage, so any later print will see these records as usual.

    Signed-off-by: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     
  • The /proc/kmsg read() interface is internally simply wired up to a sequence
    of syslog() syscalls, which might are racy between their checks and actions,
    regarding concurrency.

    In the (very uncommon) case of concurrent readers of /dev/kmsg, relying on
    usual O_NONBLOCK behavior, the recently introduced mutex might block an
    O_NONBLOCK reader in read(), when poll() returns for it, but another process
    has already read the data in the meantime. We've seen that while running
    artificial test setups and tools that "fight" about /proc/kmsg data.

    This restores the original /proc/kmsg behavior, where in case of concurrent
    read()s, poll() might wake up but the read() syscall will just return 0 to
    the caller, while another process has "stolen" the data.

    This is in the general case not the expected behavior, but it is the exact
    same one, that can easily be triggered with a 3.4 kernel, and some tools
    might just rely on it.

    The mutex is not needed, the original integrity issue which introduced it,
    is in the meantime covered by:
    "fill buffer with more than a single message for SYSLOG_ACTION_READ"
    116e90b23f74d303e8d607c7a7d54f60f14ab9f2

    Cc: Yuanhan Liu
    Acked-by: Jan Beulich
    Signed-off-by: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     
  • After the recent split of facility and level into separate variables,
    we miss the facility value (always 0 for kernel-originated messages)
    in the syslog prefix.

    On Tue, Jul 3, 2012 at 12:45 PM, Dan Carpenter wrote:
    > Static checkers complain about the impossible condition here.
    >
    > In 084681d14e ('printk: flush continuation lines immediately to
    > console'), we changed msg->level from being a u16 to being an unsigned
    > 3 bit bitfield.

    Cc: Dan Carpenter
    Signed-off-by: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     
  • Non-printable characters in the log data are hex-escaped to ensure safe
    post processing. We need to escape a backslash we find in the data, to be
    able to distinguish it from a backslash we add for the escaping.

    Also escape the non-printable character 127.

    Thanks to Miloslav Trmac for the heads up.

    Reported-by: Michael Neuling
    Signed-off-by: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     
  • In function devkmsg_read/writev/llseek/poll/open()..., the function
    raw_spin_lock/unlock is used, there is potential deadlock case happening.
    CPU1: thread1 doing the cat /dev/kmsg:
    raw_spin_lock(&logbuf_lock);
    while (user->seq == log_next_seq) {
    when thread1 run here, at this time one interrupt is coming on CPU1 and running
    based on this thread,if the interrupt handle called the printk which need the
    logbuf_lock spin also, it will cause deadlock.

    So we should use raw_spin_lock/unlock_irq here.

    Acked-by: Kay Sievers
    Signed-off-by: liu chuansheng
    Signed-off-by: Greg Kroah-Hartman

    liu chuansheng
     

01 Jul, 2012

1 commit

  • Fix kernel-doc warnings in printk.c: use correct parameter name.

    Warning(kernel/printk.c:2429): No description found for parameter 'buf'
    Warning(kernel/printk.c:2429): Excess function parameter 'line' description in 'kmsg_dump_get_buffer'

    Signed-off-by: Randy Dunlap
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     

30 Jun, 2012

1 commit

  • In reviewing Kay's fix up patch: "printk: Have printk() never buffer its
    data", I found two if statements that could be combined and optimized.

    Put together the two 'cont.len && cont.owner == current' if statements
    into a single one, and check if we need to call cont_add(). This also
    removes the unneeded double cont_flush() calls.

    Link: http://lkml.kernel.org/r/1340869133.876.10.camel@mop

    Signed-off-by: Steven Rostedt
    Cc: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Steven Rostedt
     

29 Jun, 2012

1 commit

  • Continuation lines are buffered internally, intended to merge the
    chunked printk()s into a single record, and to isolate potentially
    racy continuation users from usual terminated line users.

    This though, has the effect that partial lines are not printed to
    the console in the moment they are emitted. In case the kernel
    crashes in the meantime, the potentially interesting printed
    information would never reach the consoles.

    Here we share the continuation buffer with the console copy logic,
    and partial lines are always immediately flushed to the available
    consoles. They are still buffered internally to improve the
    readability and integrity of the messages and minimize the amount
    of needed record headers to store.

    Signed-off-by: Kay Sievers
    Tested-by: Steven Rostedt
    Acked-by: Steven Rostedt
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     

27 Jun, 2012

2 commits

  • The recent changes to the printk buffer management resulted in
    SYSLOG_ACTION_READ to only return a single message, whereas previously
    the buffer would get filled as much as possible. As, when too small to
    fit everything, filling it to the last byte would be pretty ugly with
    the new code, the patch arranges for as many messages as possible to
    get returned in a single invocation. User space tools in at least all
    SLES versions depend on the old behavior.

    This at once addresses the issue attempted to get fixed with commit
    b56a39ac263e5b8cafedd551a49c2105e68b98c2 ("printk: return -EINVAL if
    the message len is bigger than the buf size"), and since that commit
    widened the possibility for losing a message altogether, the patch
    here assumes that this other commit would get reverted first
    (otherwise the patch here won't apply).

    Furthermore, this patch also addresses the problem dealt with in
    commit 4a77a5a06ec66ed05199b301e7c25f42f979afdc ("printk: use mutex
    lock to stop syslog_seq from going wild"), so I'd recommend reverting
    that one too (albeit there's no direct collision between the two).

    Signed-off-by: Jan Beulich
    Acked-by: Kay Sievers
    Cc: Yuanhan Liu
    Signed-off-by: Greg Kroah-Hartman

    Jan Beulich
     
  • This reverts commit b56a39ac263e5b8cafedd551a49c2105e68b98c2.

    A better patch from Jan will follow this to resolve the issue.

    Acked-by: Kay Sievers
    Cc: Fengguang Wu
    Cc: Yuanhan Liu
    Cc: Jan Beulich
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

26 Jun, 2012

1 commit

  • Commit 7ff9554bb578ba02166071d2d487b7fc7d860d62 (printk: convert
    byte-buffer to variable-length record buffer) introduced a regression
    by accidentally removing a "break" statement from inside the big
    switch in printk's do_syslog(). The symptom of this bug is that the
    "dmesg -C" command doesn't only clear the kernel's log buffer; it also
    disables console logging.

    This patch (as1561) fixes the regression by adding the missing
    "break".

    Signed-off-by: Alan Stern
    CC: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Alan Stern
     

16 Jun, 2012

3 commits

  • Just like what devkmsg_read() does, return -EINVAL if the message len is
    bigger than the buf size, or it will trigger a segfault error.

    Acked-by: Kay Sievers
    Acked-by: Fengguang Wu
    Signed-off-by: Yuanhan Liu
    Signed-off-by: Greg Kroah-Hartman

    Yuanhan Liu
     
  • Although syslog_seq and log_next_seq stuff are protected by logbuf_lock
    spin log, it's not enough. Say we have two processes A and B, and let
    syslog_seq = N, while log_next_seq = N + 1, and the two processes both
    come to syslog_print at almost the same time. And No matter which
    process get the spin lock first, it will increase syslog_seq by one,
    then release spin lock; thus later, another process increase syslog_seq
    by one again. In this case, syslog_seq is bigger than syslog_next_seq.
    And latter, it would make:
    wait_event_interruptiable(log_wait, syslog != log_next_seq)
    don't wait any more even there is no new write comes. Thus it introduce
    a infinite loop reading.

    I can easily see this kind of issue by the following steps:
    # cat /proc/kmsg # at meantime, I don't kill rsyslog
    # So they are the two processes.
    # xinit # I added drm.debug=6 in the kernel parameter line,
    # so that it will produce lots of message and let that
    # issue happen

    It's 100% reproducable on my side. And my disk will be filled up by
    /var/log/messages in a quite short time.

    So, introduce a mutex_lock to stop syslog_seq from going wild just like
    what devkmsg_read() does. It does fix this issue as expected.

    v2: use mutex_lock_interruptiable() instead (comments from Kay)

    Signed-off-by: Yuanhan Liu
    Reviewed-by: Fengguang Wu
    Acked-By: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Yuanhan Liu
     
  • Provide an iterator to receive the log buffer content, and convert all
    kmsg_dump() users to it.

    The structured data in the kmsg buffer now contains binary data, which
    should no longer be copied verbatim to the kmsg_dump() users.

    The iterator should provide reliable access to the buffer data, and also
    supports proper log line-aware chunking of data while iterating.

    Signed-off-by: Kay Sievers
    Tested-by: Tony Luck
    Reported-by: Anton Vorontsov
    Tested-by: Anton Vorontsov
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     

13 Jun, 2012

1 commit

  • Commit 7ff9554bb578ba02166071d2d487b7fc7d860d62, printk: convert
    byte-buffer to variable-length record buffer, causes systems using
    EABI to crash very early in the boot cycle. The first entry in struct
    log is a u64, which for EABI must be 8 byte aligned.

    Make use of __alignof__() so the compiler to decide the alignment, but
    allow it to be overridden using CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS,
    for systems which can perform unaligned access and want to save
    a few bytes of space.

    Tested on Orion5x and Kirkwood.

    Signed-off-by: Andrew Lunn
    Tested-by: Stephen Warren
    Acked-by: Stephen Warren
    Acked-by: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Andrew Lunn
     

15 May, 2012

1 commit

  • Arrange the continuation printk() buffering to be fully separated from the
    ordinary full line users.

    Limit the exposure to races and wrong printk() line merges to users of
    continuation only. Ordinary full line users racing against continuation
    users will no longer affect each other.

    Multiple continuation users from different threads, racing against each
    other will not wrongly be merged into a single line, but printed as
    separate lines.

    Test output of a kernel module which starts two separate threads which
    race against each other, one of them printing a single full terminated
    line:
    printk("(AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)\n");

    The other one printing the line, every character separate in a
    continuation loop:
    printk("(C");
    for (i = 0; i < 58; i++)
    printk(KERN_CONT "C");
    printk(KERN_CONT "C)\n");

    Behavior of single and non-thread-aware printk() buffer:
    # modprobe printk-race
    printk test init
    (CC(AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)
    C(AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)
    CC(AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)
    C(AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)
    CC(AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)
    C(AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)
    C(AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)
    CC(AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)
    C(AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)
    C(AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)
    CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC)
    (CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC)

    New behavior with separate and thread-aware continuation buffer:
    # modprobe printk-race
    printk test init
    (AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)
    (AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)
    (AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)
    (CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC)
    (AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)
    (AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)
    (AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)
    (AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)
    (CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC)
    (CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC)

    Cc: Linus Torvalds
    Cc: Joe Perches
    Cc: Ted Ts'o
    Cc: Ingo Molnar
    Cc: Jonathan Corbet
    Cc: Sasha Levin
    Signed-off-by: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     

14 May, 2012

1 commit


12 May, 2012

1 commit

  • Add a stub for prepend_timestamp() when CONFIG_PRINTK is not
    enabled. Fixes this build error:

    kernel/printk.c:1770:3: error: implicit declaration of function 'prepend_timestamp'

    Cc: Kay Sievers
    Signed-off-by: Randy Dunlap
    Signed-off-by: Greg Kroah-Hartman

    Randy Dunlap
     

11 May, 2012

1 commit

  • __log_buf must be aligned, because a 64-bit value is written directly
    to it as part of struct log. Alignment of the log entries is typically
    handled by log_store(), but this only triggers for subsequent entries,
    not the very first (or wrapped) entries.

    Cc: Kay Sievers
    Signed-off-by: Stephen Warren
    Signed-off-by: Greg Kroah-Hartman

    Stephen Warren
     

10 May, 2012

3 commits

  • The output of the timestamps got lost with the conversion of the
    kmsg buffer to records; restore the old behavior.

    Document, that CONFIG_PRINTK_TIME now only controls the output of
    the timestamps in the syslog() system call and on the console, and
    not the recording of the timestamps.

    Cc: Joe Perches
    Cc: Linus Torvalds
    Cc: Sasha Levin
    Cc: Ingo Molnar
    Reported-by: Yinghai Lu
    Signed-off-by: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     
  • This prevents the merging of printk() continuation lines of different
    threads, in the case they race against each other.

    It should properly isolate "atomic" single-line printk() users from
    continuation users, to make sure the single-line users will never be
    merged with the racy continuation ones.

    Cc: Linus Torvalds
    Cc: Ingo Molnar
    Cc: Jonathan Corbet
    Cc: Sasha Levin
    Signed-off-by: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     
  • Reported-by: Randy Dunlap
    Signed-off-by: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     

08 May, 2012

3 commits

  • On Tue, May 8, 2012 at 10:02 AM, Stephen Rothwell wrote:
    > kernel/built-in.o: In function `devkmsg_read':
    > printk.c:(.text+0x27e8): undefined reference to `__udivdi3'
    > Most probably the "msg->ts_nsec / 1000" since
    > ts_nsec is a u64 and this is a 32 bit build ...

    Reported-by: Stephen Rothwell
    Signed-off-by: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     
  • Support for multiple concurrent readers of /dev/kmsg, with read(),
    seek(), poll() support. Output of message sequence numbers, to allow
    userspace log consumers to reliably reconnect and reconstruct their
    state at any given time. After open("/dev/kmsg"), read() always
    returns *all* buffered records. If only future messages should be
    read, SEEK_END can be used. In case records get overwritten while
    /dev/kmsg is held open, or records get faster overwritten than they
    are read, the next read() will return -EPIPE and the current reading
    position gets updated to the next available record. The passed
    sequence numbers allow the log consumer to calculate the amount of
    lost messages.

    [root@mop ~]# cat /dev/kmsg
    5,0,0;Linux version 3.4.0-rc1+ (kay@mop) (gcc version 4.7.0 20120315 ...
    6,159,423091;ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
    7,160,424069;pci_root PNP0A03:00: host bridge window [io 0x0000-0x0cf7] (ignored)
    SUBSYSTEM=acpi
    DEVICE=+acpi:PNP0A03:00
    6,339,5140900;NET: Registered protocol family 10
    30,340,5690716;udevd[80]: starting version 181
    6,341,6081421;FDC 0 is a S82078B
    6,345,6154686;microcode: CPU0 sig=0x623, pf=0x0, revision=0x0
    7,346,6156968;sr 1:0:0:0: Attached scsi CD-ROM sr0
    SUBSYSTEM=scsi
    DEVICE=+scsi:1:0:0:0
    6,347,6289375;microcode: CPU1 sig=0x623, pf=0x0, revision=0x0

    Cc: Karel Zak
    Tested-by: William Douglas
    Signed-off-by: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     
  • - Record-based stream instead of the traditional byte stream
    buffer. All records carry a 64 bit timestamp, the syslog facility
    and priority in the record header.

    - Records consume almost the same amount, sometimes less memory than
    the traditional byte stream buffer (if printk_time is enabled). The record
    header is 16 bytes long, plus some padding bytes at the end if needed.
    The byte-stream buffer needed 3 chars for the syslog prefix, 15 char for
    the timestamp and a newline.

    - Buffer management is based on message sequence numbers. When records
    need to be discarded, the reading heads move on to the next full
    record. Unlike the byte-stream buffer, no old logged lines get
    truncated or partly overwritten by new ones. Sequence numbers also
    allow consumers of the log stream to get notified if any message in
    the stream they are about to read gets discarded during the time
    of reading.

    - Better buffered IO support for KERN_CONT continuation lines, when printk()
    is called multiple times for a single line. The use of KERN_CONT is now
    mandatory to use continuation; a few places in the kernel need trivial fixes
    here. The buffering could possibly be extended to per-cpu variables to allow
    better thread-safety for multiple printk() invocations for a single line.

    - Full-featured syslog facility value support. Different facilities
    can tag their messages. All userspace-injected messages enforce a
    facility value > 0 now, to be able to reliably distinguish them from
    the kernel-generated messages. Independent subsystems like a
    baseband processor running its own firmware, or a kernel-related
    userspace process can use their own unique facility values. Multiple
    independent log streams can co-exist that way in the same
    buffer. All share the same global sequence number counter to ensure
    proper ordering (and interleaving) and to allow the consumers of the
    log to reliably correlate the events from different facilities.

    Tested-by: William Douglas
    Signed-off-by: Kay Sievers
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     

21 Mar, 2012

1 commit

  • Pull scheduler changes for v3.4 from Ingo Molnar

    * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (27 commits)
    printk: Make it compile with !CONFIG_PRINTK
    sched/x86: Fix overflow in cyc2ns_offset
    sched: Fix nohz load accounting -- again!
    sched: Update yield() docs
    printk/sched: Introduce special printk_sched() for those awkward moments
    sched/nohz: Correctly initialize 'next_balance' in 'nohz' idle balancer
    sched: Cleanup cpu_active madness
    sched: Fix load-balance wreckage
    sched: Clean up parameter passing of proc_sched_autogroup_set_nice()
    sched: Ditch per cgroup task lists for load-balancing
    sched: Rename load-balancing fields
    sched: Move load-balancing arguments into helper struct
    sched/rt: Do not submit new work when PI-blocked
    sched/rt: Prevent idle task boosting
    sched/wait: Add __wake_up_all_locked() API
    sched/rt: Document scheduler related skip-resched-check sites
    sched/rt: Use schedule_preempt_disabled()
    sched/rt: Add schedule_preempt_disabled()
    sched/rt: Do not throttle when PI boosting
    sched/rt: Keep period timer ticking when rt throttling is active
    ...

    Linus Torvalds
     

15 Mar, 2012

1 commit

  • Commit 3ccf3e830615 ("printk/sched: Introduce special
    printk_sched() for those awkward moments") overlooked
    an #ifdef, so move code around to respect these directives.

    Reported-by: Stephen Rothwell
    Signed-off-by: Peter Zijlstra
    Cc: Randy Dunlap
    Link: http://lkml.kernel.org/r/1331811337.18960.179.camel@twins
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     

13 Mar, 2012

3 commits


06 Mar, 2012

1 commit

  • Since commit 04c6862c055f ("kmsg_dump: add kmsg_dump() calls to the
    reboot, halt, poweroff and emergency_restart paths"), kmsg_dump() gets
    run on normal paths including poweroff and reboot.

    This is less than ideal given pstore implementations that can only
    represent single backtraces, since a reboot may overwrite a stored oops
    before it's been picked up by userspace. In addition, some pstore
    backends may have low performance and provide a significant delay in
    reboot as a result.

    This patch adds a printk.always_kmsg_dump kernel parameter (which can also
    be changed from userspace). Without it, the code will only be run on
    failure paths rather than on normal paths. The option can be enabled in
    environments where there's a desire to attempt to audit whether or not a
    reboot was cleanly requested or not.

    Signed-off-by: Matthew Garrett
    Acked-by: Seiji Aguchi
    Cc: Seiji Aguchi
    Cc: David Woodhouse
    Cc: Marco Stornelli
    Cc: Artem Bityutskiy
    Cc: KOSAKI Motohiro
    Cc: Vivek Goyal
    Cc: Don Zickus
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matthew Garrett
     

14 Feb, 2012

1 commit

  • Add a printk.console trace point to record any printk
    messages into the trace, regardless of the current
    console loglevel. This can help correlate (existing)
    printk debugging with other tracing.

    Link: http://lkml.kernel.org/r/1322161388.5366.54.camel@jlt3.sipsolutions.net

    Acked-by: Frederic Weisbecker
    Cc: Christoph Hellwig
    Cc: Ingo Molnar
    Acked-by: Peter Zijlstra
    Acked-by: Thomas Gleixner
    Signed-off-by: Johannes Berg
    Signed-off-by: Steven Rostedt

    Johannes Berg
     

13 Jan, 2012

2 commits