19 Nov, 2016

1 commit

  • Pull ACPI fixes from Rafael Wysocki:
    "They fix an ACPI thermal management regression introduced by a recent
    FADT handling cleanup, an ACPI tools build issue introduced by a
    recent ACPICA commit and a PCC mailbox initialization bug causing
    lockdep to complain loudly.

    Specifics:

    - Revert a recent ACPICA cleanup that attempted to get rid of all
    FADT version 2 legacy, but broke ACPI thermal management on at
    least one system (Rafael Wysocki).

    - Fix cross-compiled builds of ACPI tools that stopped working after
    a recent cleanup related to the handling of header files in ACPICA
    (Lv Zheng).

    - Fix a locking issue in the PCC channel initialization code that
    invokes devm_request_irq() under a spinlock (among other things)
    and causes lockdep to complain (Hoan Tran)"

    * tag 'acpi-4.9-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    tools/power/acpi: Remove direct kernel source include reference
    mailbox: PCC: Fix lockdep warning when request PCC channel
    Revert "ACPICA: FADT support cleanup"

    Linus Torvalds
     

17 Nov, 2016

1 commit

  • Avoid breaking cross-compiled ACPI tools builds by rearranging the
    handling of kernel header files.

    This patch also contains OUTPUT/srctree cleanups in order to make above fix
    working for various build environments.

    Fixes: e323c02dee59 (ACPICA: MSVC9: Fix inclusion order issue)
    Reported-and-tested-by: Yisheng Xie
    Reported-by: Andy Shevchenko
    Signed-off-by: Lv Zheng
    [ rjw: Changelog ]
    Signed-off-by: Rafael J. Wysocki

    Lv Zheng
     

15 Nov, 2016

1 commit

  • Pull perf fixes from Ingo Molnar:
    "An uncore PMU driver hardware enablement change for Intel SkyLake
    uncore PMUs (Skylake Y, U, H and S platforms), plus a number of
    tooling fixes for the histogram handling/displaying code"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf/x86/intel/uncore: Add more Intel uncore IMC PCI IDs for SkyLake
    perf hists: Fix column length on --hierarchy
    perf hists browser: Fix column indentation on --hierarchy
    perf hists browser: Show folded sign properly on --hierarchy
    perf hists browser: Fix indentation of folded sign on --hierarchy
    perf hist browser: Fix hierarchy column counts

    Linus Torvalds
     

12 Nov, 2016

2 commits


09 Nov, 2016

5 commits

  • Markus reported that there's a weird behavior on perf top --hierarchy
    regarding the column length.

    Looking at the code, I found a dubious code which affects the symptoms.
    When --hierarchy option is used, the last column length might be
    inaccurate since it skips to update the length on leaf entries.

    I cannot remember why it did and looks like a leftover from previous
    version during the development.

    Anyway, updating the column length often is not harmful. So let's move
    the code out.

    Reported-and-Tested-by: Markus Trippelsdorf
    Signed-off-by: Namhyung Kim
    Cc: Jiri Olsa
    Cc: Peter Zijlstra
    Fixes: 1a3906a7e6b9 ("perf hists: Resort hist entries with hierarchy")
    Link: http://lkml.kernel.org/r/20161108130833.9263-5-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Namhyung Kim
     
  • When horizontall scrolling is used in hierarchy mode, the the right most
    column has unnecessary indentation. Actually it's needed only if some
    of left (overhead) columns were shown.

    Signed-off-by: Namhyung Kim
    Tested-by: Arnaldo Carvalho de Melo
    Tested-by: Markus Trippelsdorf
    Cc: Jiri Olsa
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20161108130833.9263-4-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Namhyung Kim
     
  • When horizontal scrolling is used in hierarchy mode, the folded signed
    disappears at the right most column.

    Committer note:

    To test it, run 'perf top --hierarchy, see the '+' symbol at the first
    column, then press the right arrow key, the '+' symbol will disappear,
    this patch fixes that.

    Signed-off-by: Namhyung Kim
    Tested-by: Arnaldo Carvalho de Melo
    Tested-by: Markus Trippelsdorf
    Cc: Jiri Olsa
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20161108130833.9263-3-namhyung@kernel.org
    [ Move 'width -= 2' invariant to right after the if/else ]
    Signed-off-by: Arnaldo Carvalho de Melo

    Namhyung Kim
     
  • It should indent 2 spaces for folded sign and a whitespace.

    Signed-off-by: Namhyung Kim
    Tested-by: Markus Trippelsdorf
    Cc: Jiri Olsa
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20161108130833.9263-2-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Namhyung Kim
     
  • The perf report/top on TUI supports horizontal scrolling using LEFT and
    RIGHT keys.

    But it calculate the number of columns incorrectly when hierarchy mode
    is enabled so that keep pressing RIGHT key can make the output
    disappeared.

    In the hierarchy mode, all sort keys are collapsed into a single column,
    so it needs to be applied when calculating column numbers.

    Reported-and-Tested-by: Markus Trippelsdorf
    Signed-off-by: Namhyung Kim
    Tested-by: Arnaldo Carvalho de Melo
    Cc: Jiri Olsa
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20161024162110.17918-1-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Namhyung Kim
     

01 Nov, 2016

1 commit

  • When converting to a shared library in ac5a181d065d ("cpupower: Add
    cpuidle parts into library"), cpu_freq_cpu_exists() was converted to
    cpupower_is_cpu_online(). cpu_req_cpu_exists() returned 0 on success and
    -ENOSYS on failure whereas cpupower_is_cpu_online returns 1 on success.
    Check for the correct return value in cpufreq-set.

    Link: https://bugzilla.redhat.com/show_bug.cgi?id=1374212
    Fixes: ac5a181d065d (cpupower: Add cpuidle parts into library)
    Reported-by: Julian Seward
    Signed-off-by: Laura Abbott
    Acked-by: Thomas Renninger
    Cc: 4.7+ # 4.7+
    Signed-off-by: Rafael J. Wysocki

    Laura Abbott
     

31 Oct, 2016

3 commits


27 Oct, 2016

1 commit

  • The following commit:

    3732710ff6f2 ("objtool: Improve rare switch jump table pattern detection")

    ... improved objtool's ability to detect GCC switch statement jump
    tables for GCC 6. However the check to allow short jumps with the
    scanned range of instructions wasn't quite right. The pattern detection
    should allow jumps to the indirect jump instruction itself.

    This fixes the following warning:

    drivers/infiniband/sw/rxe/rxe_comp.o: warning: objtool: rxe_completer()+0x315: sibling call from callable instruction with changed frame pointer

    Reported-by: Arnd Bergmann
    Signed-off-by: Josh Poimboeuf
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Fixes: 3732710ff6f2 ("objtool: Improve rare switch jump table pattern detection")
    Link: http://lkml.kernel.org/r/20161026153408.2rifnw7bvoc5sex7@treble
    Signed-off-by: Ingo Molnar

    Josh Poimboeuf
     

19 Oct, 2016

2 commits

  • AVX512_4VNNIW - Vector instructions for deep learning enhanced word
    variable precision.
    AVX512_4FMAPS - Vector instructions for deep learning floating-point
    single precision.

    These new instructions are to be used in future Intel Xeon & Xeon Phi
    processors. The bits 2&3 of CPUID[level:0x07, EDX] inform that new
    instructions are supported by a processor.

    The spec can be found in the Intel Software Developer Manual (SDM) or in
    the Instruction Set Extensions Programming Reference (ISE).

    Define new feature flags to enumerate the new instructions in /proc/cpuinfo
    accordingly to CPUID bits and add the required xsave extensions which are
    required for proper operation.

    Signed-off-by: Piotr Luc
    Cc: Denys Vlasenko
    Cc: Peter Zijlstra
    Cc: Brian Gerst
    Cc: Dave Hansen
    Cc: Borislav Petkov
    Cc: Andy Lutomirski
    Cc: Josh Poimboeuf
    Cc: Linus Torvalds
    Link: http://lkml.kernel.org/r/20161018150111.29926-1-piotr.luc@intel.com
    Signed-off-by: Thomas Gleixner

    Piotr Luc
     
  • Pull perf fixes from Ingo Molnar:
    "Four tooling fixes, two kprobes KASAN related fixes and an x86 PMU
    driver fix/cleanup"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf jit: Fix build issue on Ubuntu
    perf jevents: Handle events including .c and .o
    perf/x86/intel: Remove an inconsistent NULL check
    kprobes: Unpoison stack in jprobe_return() for KASAN
    kprobes: Avoid false KASAN reports during stack copy
    perf header: Set nr_numa_nodes only when we parsed all the data
    perf top: Fix refreshing hierarchy entries on TUI

    Linus Torvalds
     

18 Oct, 2016

1 commit

  • Pull misc fixes from Ingo Molnar:
    "A CPU hotplug debuggability fix and three objtool false positive
    warnings fixes for new GCC6 code generation patterns"

    * 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    cpu/hotplug: Use distinct name for cpu_hotplug.dep_map
    objtool: Skip all "unreachable instruction" warnings for gcov kernels
    objtool: Improve rare switch jump table pattern detection
    objtool: Support '-mtune=atom' stack frame setup instruction

    Linus Torvalds
     

17 Oct, 2016

3 commits

  • …/kernel/git/acme/linux into perf/urgent

    Pull perf/urgent fixes from Arnaldo Carvalho de Melo:

    - Fix handling of NUMA nodes in perf.data files (Jiri Olsa)

    - Fix scrolling when refreshing 'perf top --tui --hierarchy' entries (Namhyung Kim)

    - Fix building of JIT support on Ubuntu 16.04 (Anton Blanchard)

    - Fix handling of events including .c and .o, that were being treated as
    BPF scripts instead of vendor ones (Wang Nan)

    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>

    Ingo Molnar
     
  • When building on Ubuntu 16.04, I get the following error:

    Makefile:49: *** the openjdk development package appears to me missing, install and try again. Stop.

    The problem is that update-java-alternatives has multiple spaces between
    fields, and cut treats each space as a new delimiter:

    java-1.8.0-openjdk-ppc64el 1081 /usr/lib/jvm/java-1.8.0-openjdk-ppc64el

    Fix this by using awk, which handles this fine.

    Signed-off-by: Anton Blanchard
    Reviewed-by: Stephane Eranian
    Cc: Alexander Shishkin
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1476325243-15788-1-git-send-email-anton@ozlabs.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Anton Blanchard
     
  • This patch helps with Sukadev's vendor event tree where such events can happen.

    >From Andi Kleen:
    Any event including a .c/.o/.bpf currently triggers BPF compilation or loading
    and then an error. This can happen for some Intel vendor events, which cannot
    be used.

    This patch fixes this problem by forbidding BPF file patch containing '{', '}'
    and ',', make sure flex consumes the leading '{', instead of matching it using
    a BPF file path.

    Tested result:

    $ perf stat -e '{unc_p_clockticks,unc_p_power_state_occupancy.cores_c0}' -a -I 1000
    invalid or unsupported event: '{unc_p_clockticks,unc_p_power_state_occupancy.cores_c0}'
    Run 'perf list' for a list of valid events
    (as expected, interperted as event)

    $ perf stat -e 'aaa.c' -a -I 1000
    ERROR: problems with path aaa.c: No such file or directory
    (as expected, interpreted as BPF source)

    $ perf stat -e 'aaa.ccc' -a -I 1000
    invalid or unsupported event: 'aaa.ccc'
    (as expected, interpreted as event)

    $ perf stat -e '{aaa.c}' -a -I 1000
    ERROR: problems with path aaa.c: No such file or directory
    event syntax error: '{aaa.c}'

    (as expected, interpreted as BPF source)

    $ perf stat -e '{cycles,aaa.c}' -a -I 1000
    ERROR: problems with path aaa.c: No such file or directory
    event syntax error: '{cycles,aaa.c}'
    (as expected, interpreted as BPF source)

    Signed-off-by: Wang Nan
    Tested-by: Arnaldo Carvalho de Melo
    Reported-by: Andi Kleen
    Cc: Jiri Olsa
    Cc: Sukadev Bhattiprolu
    Cc: Zefan Li
    Cc: pi3orama@163.com
    Link: http://lkml.kernel.org/r/1475900185-37967-1-git-send-email-wangnan0@huawei.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Wang Nan
     

16 Oct, 2016

2 commits

  • Recently objtool has started reporting a few "unreachable instruction"
    warnings when CONFIG_GCOV is enabled for newer versions of GCC. Usually
    this warning means there's some new control flow that objtool doesn't
    understand. But in this case, objtool is correct and the instructions
    really are inaccessible. It's an annoying quirk of gcov, but it's
    harmless, so it's ok to just silence the warnings.

    With older versions of GCC, it was relatively easy to detect
    gcov-specific instructions and to skip any unreachable warnings produced
    by them. But GCC 6 has gotten craftier.

    Instead of continuing to play whack-a-mole with gcov, just use a bigger,
    more permanent hammer and disable unreachable warnings for the whole
    file when gcov is enabled. This is fine to do because a) unreachable
    warnings are usually of questionable value; and b) gcov isn't used for
    production kernels and we can relax the checks a bit there.

    Reported-by: kbuild test robot
    Signed-off-by: Josh Poimboeuf
    Cc: Andy Lutomirski
    Cc: Arnd Bergmann
    Cc: Borislav Petkov
    Cc: Brian Gerst
    Cc: Denys Vlasenko
    Cc: H. Peter Anvin
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/38d5c87d61d9cd46486dd2c86f46603dff0df86f.1476393584.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar

    Josh Poimboeuf
     
  • GCC 6 added a new switch statement jump table optimization which makes
    objtool's life harder. It looks like:

    mov [rodata addr],%reg1
    ... some instructions ...
    jmpq *(%reg1,%reg2,8)

    The optimization is quite rare, but objtool still needs to be able to
    identify the pattern so that it can follow all possible control flow
    paths related to the switch statement.

    In order to detect the pattern, objtool starts from the indirect jump
    and scans backwards through the function until it finds the first
    instruction in the pattern. If it encounters an unconditional jump
    along the way, it stops and considers the pattern to be not found.

    As it turns out, unconditional jumps can happen, as long as they are
    small forward jumps within the range being scanned.

    This fixes the following warnings:

    drivers/infiniband/sw/rxe/rxe_comp.o: warning: objtool: rxe_completer()+0x2f4: sibling call from callable instruction with changed frame pointer
    drivers/infiniband/sw/rxe/rxe_resp.o: warning: objtool: rxe_responder()+0x10f: sibling call from callable instruction with changed frame pointer

    Reported-by: Arnd Bergmann
    Signed-off-by: Josh Poimboeuf
    Cc: Andy Lutomirski
    Cc: Borislav Petkov
    Cc: Brian Gerst
    Cc: Denys Vlasenko
    Cc: H. Peter Anvin
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/8a9ed68ae1780e8d3963e4ee13f2f257fe3a3c33.1476393584.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar

    Josh Poimboeuf
     

15 Oct, 2016

2 commits

  • …/kernel/git/shuah/linux-kselftest

    Pull kselftest updates from Shuah Khan:
    "This update consists of:

    - Fixes and improvements to existing tests

    - Moving code from Documentation to selftests, samples, and tools:

    * Moves dnotify_test, prctl, ptp, vDSO, ia64, watchdog, and
    networking tests from Documentation to selftests.

    * Moves mic/mpssd, misc-devices/mei, timers, watchdog, auxdisplay,
    and blackfin examples from Documentation to samples.

    * Moves accounting, laptops/dslm, and pcmcia/crc32hash tools from
    Documentation to tools.

    * Deletes BUILD_DOCSRC and its dependencies"

    * tag 'linux-kselftest-4.9-rc1-update' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest: (21 commits)
    selftests/futex: Check ANSI terminal color support
    Doc: update 00-INDEX files to reflect the runnable code move
    samples: move blackfin gptimers-example from Documentation
    tools: move pcmcia crc32hash tool from Documentation
    tools: move laptops dslm tool from Documentation
    tools: move accounting tool from Documentation
    samples: move auxdisplay example code from Documentation
    samples: move watchdog example code from Documentation
    samples: move timers example code from Documentation
    samples: move misc-devices/mei example code from Documentation
    samples: move mic/mpssd example code from Documentation
    selftests: Move networking/timestamping from Documentation
    selftests: move watchdog tests from Documentation/watchdog
    selftests: move ia64 tests from Documentation/ia64
    selftests: move vDSO tests from Documentation/vDSO
    selftests: move ptp tests from Documentation/ptp
    selftests: move prctl tests from Documentation/prctl
    selftests: move dnotify_test from Documentation/filesystems
    selftests/timers: Add missing error code assignment before test
    selftests/zram: replace ZRAM_LZ4_COMPRESS
    ...

    Linus Torvalds
     
  • Pull more powerpc updates from Michael Ellerman:
    "Some more powerpc updates for 4.9:

    Freescale updates from Scott Wood:
    - qbman support (a prerequisite for datapath drivers such as ethernet)
    - a PCI DMA fix+improvement
    - reset handler changes
    - more 8xx optimizations
    - some cleanups and fixes.'

    Fixes:
    - selftests/powerpc: Add missing binaries to .gitignores (Michael Ellerman)
    - selftests/powerpc: Fix build break caused by EXPORT_SYMBOL changes (Michael Ellerman)
    - powerpc/pseries: Fix stack corruption in htpe code (Laurent Dufour)
    - powerpc/64s: Fix power4_fixup_nap placement (Nicholas Piggin)
    - powerpc/64: Fix incorrect return value from __copy_tofrom_user (Paul Mackerras)
    - powerpc/mm/hash64: Fix might_have_hea() check (Michael Ellerman)

    Other:
    - MAINTAINERS: Remove myself from PA Semi entries (Olof Johansson)
    - MAINTAINERS: Drop separate pseries entry (Michael Ellerman)
    - MAINTAINERS: Update powerpc website & add selftests (Michael Ellerman):

    * tag 'powerpc-4.9-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (35 commits)
    powerpc/mm/hash64: Fix might_have_hea() check
    powerpc/64: Fix incorrect return value from __copy_tofrom_user
    powerpc/64s: Fix power4_fixup_nap placement
    powerpc/pseries: Fix stack corruption in htpe code
    selftests/powerpc: Fix build break caused by EXPORT_SYMBOL changes
    MAINTAINERS: Update powerpc website & add selftests
    MAINTAINERS: Drop separate pseries entry
    MAINTAINERS: Remove myself from PA Semi entries
    selftests/powerpc: Add missing binaries to .gitignores
    arch/powerpc: Add CONFIG_FSL_DPAA to corenetXX_smp_defconfig
    soc/qman: Add self-test for QMan driver
    soc/bman: Add self-test for BMan driver
    soc/fsl: Introduce DPAA 1.x QMan device driver
    soc/fsl: Introduce DPAA 1.x BMan device driver
    powerpc/8xx: make user addr DTLB miss the short path
    powerpc/8xx: Move additional DTLBMiss handlers out of exception area
    powerpc/8xx: use r3 to scratch CR in ITLBmiss
    soc/fsl/qe: fix gpio save_regs functions
    powerpc/8xx: add dedicated machine check handler
    powerpc/8xx: add system_reset_exception
    ...

    Linus Torvalds
     

13 Oct, 2016

2 commits

  • Sukadev reported segfault on releasing perf env's numa data. It's due
    to nr_numa_nodes being set no matter if the numa data gets parsed
    properly. The perf_env__exit crash the on releasing non existed data.

    Setting nr_numa_nodes only when data are parsed out properly.

    Signed-off-by: Jiri Olsa
    Reported-by: Sukadev Bhattiprolu
    Cc: Adrian Hunter
    Cc: David Ahern
    Cc: Namhyung Kim
    Cc: Wang Nan
    Link: http://lkml.kernel.org/n/tip-dt9c0zgkt4hybn2cr4xiawta@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • Markus reported that 'perf top --hierarchy' cannot scroll down after
    refresh. This was because the number of entries are not updated when
    hierarchy is enabled.

    Unlike normal report view, hierarchy mode needs to keep its own entry
    count since it can have non-leaf entries which can expand/collapse.

    Reported-and-Tested-by: Markus Trippelsdorf
    Signed-off-by: Namhyung Kim
    Tested-by: Arnaldo Carvalho de Melo
    Cc: Andi Kleen
    Cc: Jiri Olsa
    Cc: Peter Zijlstra
    Fixes: f5b763feebe9 ("perf hists browser: Count number of hierarchy entries")
    Link: http://lkml.kernel.org/r/20161007050412.3000-1-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Namhyung Kim
     

12 Oct, 2016

5 commits

  • Merge more updates from Andrew Morton:

    - a few block updates that fell in my lap

    - lib/ updates

    - checkpatch

    - autofs

    - ipc

    - a ton of misc other things

    * emailed patches from Andrew Morton : (100 commits)
    mm: split gfp_mask and mapping flags into separate fields
    fs: use mapping_set_error instead of opencoded set_bit
    treewide: remove redundant #include
    hung_task: allow hung_task_panic when hung_task_warnings is 0
    kthread: add kerneldoc for kthread_create()
    kthread: better support freezable kthread workers
    kthread: allow to modify delayed kthread work
    kthread: allow to cancel kthread work
    kthread: initial support for delayed kthread work
    kthread: detect when a kthread work is used by more workers
    kthread: add kthread_destroy_worker()
    kthread: add kthread_create_worker*()
    kthread: allow to call __kthread_create_on_node() with va_list args
    kthread/smpboot: do not park in kthread_create_on_cpu()
    kthread: kthread worker API cleanup
    kthread: rename probe_kthread_data() to kthread_probe_data()
    scripts/tags.sh: enable code completion in VIM
    mm: kmemleak: avoid using __va() on addresses that don't have a lowmem mapping
    kdump, vmcoreinfo: report memory sections virtual addresses
    ipc/sem.c: add cond_resched in exit_sme
    ...

    Linus Torvalds
     
  • Kernel source files need not include explicitly
    because the top Makefile forces to include it with:

    -include $(srctree)/include/linux/kconfig.h

    This commit removes explicit includes except the following:

    * arch/s390/include/asm/facilities_src.h
    * tools/testing/radix-tree/linux/kernel.h

    These two are used for host programs.

    Link: http://lkml.kernel.org/r/1473656164-11929-1-git-send-email-yamada.masahiro@socionext.com
    Signed-off-by: Masahiro Yamada
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Masahiro Yamada
     
  • The pthread_mutex_t in regression1.c wasn't being initialized properly.

    Link: http://lkml.kernel.org/r/20160815194237.25967-4-ross.zwisler@linux.intel.com
    Signed-off-by: Ross Zwisler
    Cc: Konstantin Khlebnikov
    Cc: Andrey Ryabinin
    Cc: Dmitry Vyukov
    Cc: Shuah Khan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ross Zwisler
     
  • There are four cases I can see where we could end up with a NULL 'slot' in
    radix_tree_next_slot(). This unit test exercises all four of them, making
    sure that if in the future we have an unsafe path through
    radix_tree_next_slot(), we'll catch it.

    Here are details on the four cases:

    1) radix_tree_iter_retry() via a non-tagged iteration like
    radix_tree_for_each_slot(). In this case we currently aren't seeing a bug
    because radix_tree_iter_retry() sets

    iter->next_index = iter->index;

    which means that in in the else case in radix_tree_next_slot(), 'count' is
    zero, so we skip over the while() loop and effectively just return NULL
    without ever dereferencing 'slot'.

    2) radix_tree_iter_retry() via tagged iteration like
    radix_tree_for_each_tagged(). This case was giving us NULL pointer
    dereferences in testing, and was fixed with this commit:

    commit 3cb9185c6730 ("radix-tree: fix radix_tree_iter_retry() for tagged
    iterators.")

    This fix doesn't explicitly check for 'slot' being NULL, though, it works
    around the NULL pointer dereference by instead zeroing iter->tags in
    radix_tree_iter_retry(), which makes us bail out of the if() case in
    radix_tree_next_slot() before we dereference 'slot'.

    3) radix_tree_iter_next() via via a non-tagged iteration like
    radix_tree_for_each_slot(). This currently happens in shmem_tag_pins()
    and shmem_partial_swap_usage().

    As with non-tagged iteration, 'count' in the else case of
    radix_tree_next_slot() is zero, so we skip over the while() loop and
    effectively just return NULL without ever dereferencing 'slot'.

    4) radix_tree_iter_next() via tagged iteration like
    radix_tree_for_each_tagged(). This happens in shmem_wait_for_pins().

    radix_tree_iter_next() zeros out iter->tags, so we end up exiting
    radix_tree_next_slot() here:

    if (flags & RADIX_TREE_ITER_TAGGED) {
    void *canon = slot;

    iter->tags >>= 1;
    if (unlikely(!iter->tags))
    return NULL;

    Link: http://lkml.kernel.org/r/20160815194237.25967-3-ross.zwisler@linux.intel.com
    Signed-off-by: Ross Zwisler
    Cc: Konstantin Khlebnikov
    Cc: Andrey Ryabinin
    Cc: Dmitry Vyukov
    Cc: Shuah Khan
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ross Zwisler
     
  • Pull libnvdimm updates from Dan Williams:
    "Aside from the recently added pmem sub-division support these have
    been in -next for several releases with no reported issues. The sub-
    division support was included in next-20161010 with no reported
    issues. It passes all unit tests including new tests for all the new
    functionality below.

    Summary:

    - PMEM sub-division support: Allow a single PMEM region to be divided
    into multiple namespaces. Originally, ~2 years ago, it was thought
    that partitions of a /dev/pmemX block device could handle
    sub-allocations of persistent memory for different use cases. With
    the decision to not support DAX mappings of raw block-devices, and
    the genesis of device-dax, the need for having multiple
    pmem-namespace per region has grown.

    - Device-DAX unified inode: In support of dynamic-resizing of a
    device-dax instance the kernel arranges for all mappings of a
    device-dax node to share the same inode. This allows unmap /
    truncate / invalidation events to affect all instances of the
    device similar to the behavior of mmap on block devices.

    - Hardware error scrubbing reworks: The original address-range-scrub
    and badblocks tracking solution allowed clearing entries at the
    individual namespace level, but it failed to clear the internal
    list of media errors maintained at the bus level. The result was
    that the next scrub or namespace disable/re-enable event would
    restore the cleared badblocks, but now that is fixed. The v4.8
    kernel introduced an auto-scrub-on-machine-check behavior to
    repopulate the badblocks list. Now, in v4.9, the auto-scrub
    behavior can be disabled and simply arrange for the error reported
    in the machine-check to be added to the list.

    - DIMM health-event notification support: ACPI 6.1 defines a
    notification event code that can be send to ACPI NVDIMM devices. A
    poll(2) capable file descriptor for these events can be obtained
    from the nmemX/nfit/flags sysfs-attribute of a libnvdimm memory
    device.

    - Miscellaneous fixes: NVDIMM-N probe error, device-dax build error,
    and a change to dedup the flush hint list to not flush the memory
    controller more than necessary"

    * tag 'libnvdimm-for-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm: (39 commits)
    /dev/dax: fix Kconfig dependency build breakage
    dax: use correct dev_t value
    dax: convert devm_create_dax_dev to PTR_ERR
    libnvdimm, namespace: allow creation of multiple pmem-namespaces per region
    libnvdimm, namespace: lift single pmem limit in scan_labels()
    libnvdimm, namespace: filter out of range labels in scan_labels()
    libnvdimm, namespace: enable allocation of multiple pmem namespaces
    libnvdimm, namespace: update label implementation for multi-pmem
    libnvdimm, namespace: expand pmem device naming scheme for multi-pmem
    libnvdimm, region: update nd_region_available_dpa() for multi-pmem support
    libnvdimm, namespace: sort namespaces by dpa at init
    libnvdimm, namespace: allow multiple pmem-namespaces per region at scan time
    tools/testing/nvdimm: support for sub-dividing a pmem region
    libnvdimm, namespace: unify blk and pmem label scanning
    libnvdimm, namespace: refactor uuid_show() into a namespace_to_uuid() helper
    libnvdimm, label: convert label tracking to a linked list
    libnvdimm, region: move region-mapping input-paramters to nd_mapping_desc
    nvdimm: reduce duplicated wpq flushes
    libnvdimm: clear the internal poison_list when clearing badblocks
    pmem: reduce kmap_atomic sections to the memcpys only
    ...

    Linus Torvalds
     

11 Oct, 2016

4 commits

  • Because test for color support of the running shell does not aware ANSI
    type terminals, it does not print colorful messages on some environemnt.
    This commit modifies the test to aware ANSI type terminal, too.

    Signed-off-by: SeongJae Park
    Acked-by: Darren Hart
    Signed-off-by: Shuah Khan

    SeongJae Park
     
  • Arnd reported that enabling CONFIG_MATOM results in a bunch of objtool
    false positive frame pointer warnings:

    arch/x86/events/intel/ds.o: warning: objtool: intel_pmu_pebs_del()+0x43: call without frame pointer save/setup
    security/keys/keyring.o: warning: objtool: keyring_read()+0x59: call without frame pointer save/setup
    kernel/signal.o: warning: objtool: __dequeue_signal()+0xd8: call without frame pointer save/setup
    ...

    objtool gets confused by the fact that the '-mtune=atom' GCC option
    sometimes uses 'lea (%rsp),%rbp' instead of 'mov %rsp,%rbp'. The
    instructions are effectively the same, but objtool doesn't know about
    the 'lea' variant.

    Fix the false warnings by adding support for 'lea (%rsp),%rbp' in the
    objtool decoder.

    Reported-by: Arnd Bergmann
    Signed-off-by: Josh Poimboeuf
    Cc: Andy Lutomirski
    Cc: Borislav Petkov
    Cc: Brian Gerst
    Cc: Denys Vlasenko
    Cc: H. Peter Anvin
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar

    Josh Poimboeuf
     
  • Pull protection keys syscall interface from Thomas Gleixner:
    "This is the final step of Protection Keys support which adds the
    syscalls so user space can actually allocate keys and protect memory
    areas with them. Details and usage examples can be found in the
    documentation.

    The mm side of this has been acked by Mel"

    * 'mm-pkeys-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/pkeys: Update documentation
    x86/mm/pkeys: Do not skip PKRU register if debug registers are not used
    x86/pkeys: Fix pkeys build breakage for some non-x86 arches
    x86/pkeys: Add self-tests
    x86/pkeys: Allow configuration of init_pkru
    x86/pkeys: Default to a restrictive init PKRU
    pkeys: Add details of system call use to Documentation/
    generic syscalls: Wire up memory protection keys syscalls
    x86: Wire up protection keys system calls
    x86/pkeys: Allocation/free syscalls
    x86/pkeys: Make mprotect_key() mask off additional vm_flags
    mm: Implement new pkey_mprotect() system call
    x86/pkeys: Add fault handling for PF_PK page fault bit

    Linus Torvalds
     
  • Pull perf tooling updates from Thomas Gleixner:

    - handle uretprobe placement proper on little endian PPC64

    - fix buffer handling in libtraceevent

    - add a missing pointer derefence in perf probe

    - fix the build of host tools in cross builds

    - fix Intel PT timestamp handling

    - synchronize memcpy, cpufeatures and bpf headers with the kernel headers

    - support for vendor supplied JSON files describing PMU events

    - a new set of tool tips

    - initial work for clang/llvm support

    - address some style issues found by cppcheck

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (35 commits)
    tools build: Add feature detection for g++
    tools build: Support compiling C++ source file
    perf top/report: Add tips about a list option
    perf report/top: Add a tip about system-wide collection from all CPUs
    perf report/top: Add a tip about source line numbers with overhead
    tools: Synchronize tools/include/uapi/linux/bpf.h
    tools: Synchronize tools/arch/x86/include/asm/cpufeatures.h
    perf bench mem: Sync memcpy assembly sources with the kernel
    perf jevents: Fix Intel JSON fixed counter conversions
    tools lib traceevent: Fix kbuffer_read_at_offset()
    perf intel-pt: Fix MTC timestamp calculation for large MTC periods
    perf intel-pt: Fix estimated timestamps for cycle-accurate mode
    perf uretprobe ppc64le: Fix probe location
    perf pmu-events: Add Skylake frontend MSR support
    perf pmu-events: Fix fixed counters on Intel
    perf tools: Make alias matching case-insensitive
    perf tools: Allow period= in perf stat CPU event descriptions.
    perf tools: Add README for info on parsing JSON/map files
    perf list jevents: Add support for event list topics
    perf list: Support long jevents descriptions
    ...

    Linus Torvalds
     

08 Oct, 2016

4 commits

  • Merge updates from Andrew Morton:

    - fsnotify updates

    - ocfs2 updates

    - all of MM

    * emailed patches from Andrew Morton : (127 commits)
    console: don't prefer first registered if DT specifies stdout-path
    cred: simpler, 1D supplementary groups
    CREDITS: update Pavel's information, add GPG key, remove snail mail address
    mailmap: add Johan Hovold
    .gitattributes: set git diff driver for C source code files
    uprobes: remove function declarations from arch/{mips,s390}
    spelling.txt: "modeled" is spelt correctly
    nmi_backtrace: generate one-line reports for idle cpus
    arch/tile: adopt the new nmi_backtrace framework
    nmi_backtrace: do a local dump_stack() instead of a self-NMI
    nmi_backtrace: add more trigger_*_cpu_backtrace() methods
    min/max: remove sparse warnings when they're nested
    Documentation/filesystems/proc.txt: add more description for maps/smaps
    mm, proc: fix region lost in /proc/self/smaps
    proc: fix timerslack_ns CAP_SYS_NICE check when adjusting self
    proc: add LSM hook checks to /proc//timerslack_ns
    proc: relax /proc//timerslack_ns capability requirements
    meminfo: break apart a very long seq_printf with #ifdefs
    seq/proc: modify seq_put_decimal_[u]ll to take a const char *, not char
    proc: faster /proc/*/status
    ...

    Linus Torvalds
     
  • Pull powerpc updates from Michael Ellerman:
    "Highlights:
    - Major rework of Book3S 64-bit exception vectors (Nicholas Piggin)
    - Use gas sections for arranging exception vectors et. al.
    - Large set of TM cleanups and selftests (Cyril Bur)
    - Enable transactional memory (TM) lazily for userspace (Cyril Bur)
    - Support for XZ compression in the zImage wrapper (Oliver
    O'Halloran)
    - Add support for bpf constant blinding (Naveen N. Rao)
    - Beginnings of upstream support for PA Semi Nemo motherboards
    (Darren Stevens)

    Fixes:
    - Ensure .mem(init|exit).text are within _stext/_etext (Michael
    Ellerman)
    - xmon: Don't use ld on 32-bit (Michael Ellerman)
    - vdso64: Use double word compare on pointers (Anton Blanchard)
    - powerpc/nvram: Fix an incorrect partition merge (Pan Xinhui)
    - powerpc: Fix usage of _PAGE_RO in hugepage (Christophe Leroy)
    - powerpc/mm: Update FORCE_MAX_ZONEORDER range to allow hugetlb w/4K
    (Aneesh Kumar K.V)
    - Fix memory leak in queue_hotplug_event() error path (Andrew
    Donnellan)
    - Replay hypervisor maintenance interrupt first (Nicholas Piggin)

    Various performance optimisations (Anton Blanchard):
    - Align hot loops of memset() and backwards_memcpy()
    - During context switch, check before setting mm_cpumask
    - Remove static branch prediction in atomic{, 64}_add_unless
    - Only disable HAVE_EFFICIENT_UNALIGNED_ACCESS on POWER7 little
    endian
    - Set default CPU type to POWER8 for little endian builds

    Cleanups & features:
    - Sparse fixes/cleanups (Daniel Axtens)
    - Preserve CFAR value on SLB miss caused by access to bogus address
    (Paul Mackerras)
    - Radix MMU fixups for POWER9 (Aneesh Kumar K.V)
    - Support for setting used_(vsr|vr|spe) in sigreturn path (for CRIU)
    (Simon Guo)
    - Optimise syscall entry for virtual, relocatable case (Nicholas
    Piggin)
    - Optimise MSR handling in exception handling (Nicholas Piggin)
    - Support for kexec with Radix MMU (Benjamin Herrenschmidt)
    - powernv EEH fixes (Russell Currey)
    - Suprise PCI hotplug support for powernv (Gavin Shan)
    - Endian/sparse fixes for powernv PCI (Gavin Shan)
    - Defconfig updates (Anton Blanchard)
    - KVM: PPC: Book3S HV: Migrate pinned pages out of CMA (Balbir Singh)
    - cxl: Flush PSL cache before resetting the adapter (Frederic Barrat)
    - cxl: replace loop with for_each_child_of_node(), remove unneeded
    of_node_put() (Andrew Donnellan)
    - Fix HV facility unavailable to use correct handler (Nicholas
    Piggin)
    - Remove unnecessary syscall trampoline (Nicholas Piggin)
    - fadump: Fix build break when CONFIG_PROC_VMCORE=n (Michael
    Ellerman)
    - Quieten EEH message when no adapters are found (Anton Blanchard)
    - powernv: Add PHB register dump debugfs handle (Russell Currey)
    - Use kprobe blacklist for exception handlers & asm functions
    (Nicholas Piggin)
    - Document the syscall ABI (Nicholas Piggin)
    - MAINTAINERS: Update cxl maintainers (Michael Neuling)
    - powerpc: Remove all usages of NO_IRQ (Michael Ellerman)

    Minor cleanups:
    - Andrew Donnellan, Christophe Leroy, Colin Ian King, Cyril Bur,
    Frederic Barrat, Pan Xinhui, PrasannaKumar Muralidharan, Rui Teng,
    Simon Guo"

    * tag 'powerpc-4.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (156 commits)
    powerpc/bpf: Add support for bpf constant blinding
    powerpc/bpf: Implement support for tail calls
    powerpc/bpf: Introduce accessors for using the tmp local stack space
    powerpc/fadump: Fix build break when CONFIG_PROC_VMCORE=n
    powerpc: tm: Enable transactional memory (TM) lazily for userspace
    powerpc/tm: Add TM Unavailable Exception
    powerpc: Remove do_load_up_transact_{fpu,altivec}
    powerpc: tm: Rename transct_(*) to ck(\1)_state
    powerpc: tm: Always use fp_state and vr_state to store live registers
    selftests/powerpc: Add checks for transactional VSXs in signal contexts
    selftests/powerpc: Add checks for transactional VMXs in signal contexts
    selftests/powerpc: Add checks for transactional FPUs in signal contexts
    selftests/powerpc: Add checks for transactional GPRs in signal contexts
    selftests/powerpc: Check that signals always get delivered
    selftests/powerpc: Add TM tcheck helpers in C
    selftests/powerpc: Allow tests to extend their kill timeout
    selftests/powerpc: Introduce GPR asm helper header file
    selftests/powerpc: Move VMX stack frame macros to header file
    selftests/powerpc: Rework FPU stack placement macros and move to header file
    selftests/powerpc: Check for VSX preservation across userspace preemption
    ...

    Linus Torvalds
     
  • This patch will randomly perform mlock/mlock2 on a given memory region,
    and verify the RLIMIT_MEMLOCK limitation works properly.

    Suggested-by: David Rientjes
    Link: http://lkml.kernel.org/r/1473325970-11393-4-git-send-email-wei.guo.simon@gmail.com
    Signed-off-by: Simon Guo
    Cc: Shuah Khan
    Cc: Vlastimil Babka
    Cc: "Kirill A. Shutemov"
    Cc: Michal Hocko
    Cc: Eric B Munson
    Cc: Simon Guo
    Cc: Mel Gorman
    Cc: Alexey Klimov
    Cc: Andrea Arcangeli
    Cc: Thierry Reding
    Cc: Mike Kravetz
    Cc: Geert Uytterhoeven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Simon Guo
     
  • Function seek_to_smaps_entry() can be useful for other selftest
    functionalities, so move it out to header file.

    Link: http://lkml.kernel.org/r/1473325970-11393-3-git-send-email-wei.guo.simon@gmail.com
    Signed-off-by: Simon Guo
    Cc: Shuah Khan
    Cc: Vlastimil Babka
    Cc: "Kirill A. Shutemov"
    Cc: Michal Hocko
    Cc: Eric B Munson
    Cc: Simon Guo
    Cc: Mel Gorman
    Cc: Alexey Klimov
    Cc: Andrea Arcangeli
    Cc: Thierry Reding
    Cc: Mike Kravetz
    Cc: Geert Uytterhoeven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Simon Guo