1. 06 May, 2019 14 commits
    • Linus Torvalds's avatar
      Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 90489a72
      Linus Torvalds authored
      Pull perf updates from Ingo Molnar:
       "The main kernel changes were:
      
         - add support for Intel's "adaptive PEBS v4" - which embedds LBS data
           in PEBS records and can thus batch up and reduce the IRQ (NMI) rate
           significantly - reducing overhead and making call-graph profiling
           less intrusive.
      
         - add Intel CPU core and uncore support updates for Tremont, Icelake,
      
         - extend the x86 PMU constraints scheduler with 'constraint ranges'
           to better support Icelake hw constraints,
      
         - make x86 call-chain support work better with CONFIG_FRAME_POINTER=y
      
         - misc other changes
      
        Tooling changes:
      
         - updates to the main tools: 'perf record', 'perf trace', 'perf
           stat'
      
         - updated Intel and S/390 vendor events
      
         - libtraceevent updates
      
         - misc other updates and fixes"
      
      * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (69 commits)
        perf/x86: Make perf callchains work without CONFIG_FRAME_POINTER
        watchdog: Fix typo in comment
        perf/x86/intel: Add Tremont core PMU support
        perf/x86/intel/uncore: Add Intel Icelake uncore support
        perf/x86/msr: Add Icelake support
        perf/x86/intel/rapl: Add Icelake support
        perf/x86/intel/cstate: Add Icelake support
        perf/x86/intel: Add Icelake support
        perf/x86: Support constraint ranges
        perf/x86/lbr: Avoid reading the LBRs when adaptive PEBS handles them
        perf/x86/intel: Support adaptive PEBS v4
        perf/x86/intel/ds: Extract code of event update in short period
        perf/x86/intel: Extract memory code PEBS parser for reuse
        perf/x86: Support outputting XMM registers
        perf/x86/intel: Force resched when TFA sysctl is modified
        perf/core: Add perf_pmu_resched() as global function
        perf/headers: Fix stale comment for struct perf_addr_filter
        perf/core: Make perf_swevent_init_cpu() static
        perf/x86: Add sanity checks to x86_schedule_events()
        perf/x86: Optimize x86_schedule_events()
        ...
      90489a72
    • Linus Torvalds's avatar
      Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 007dc78f
      Linus Torvalds authored
      Pull locking updates from Ingo Molnar:
       "Here are the locking changes in this cycle:
      
         - rwsem unification and simpler micro-optimizations to prepare for
           more intrusive (and more lucrative) scalability improvements in
           v5.3 (Waiman Long)
      
         - Lockdep irq state tracking flag usage cleanups (Frederic
           Weisbecker)
      
         - static key improvements (Jakub Kicinski, Peter Zijlstra)
      
         - misc updates, cleanups and smaller fixes"
      
      * 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (26 commits)
        locking/lockdep: Remove unnecessary unlikely()
        locking/static_key: Don't take sleeping locks in __static_key_slow_dec_deferred()
        locking/static_key: Factor out the fast path of static_key_slow_dec()
        locking/static_key: Add support for deferred static branches
        locking/lockdep: Test all incompatible scenarios at once in check_irq_usage()
        locking/lockdep: Avoid bogus Clang warning
        locking/lockdep: Generate LOCKF_ bit composites
        locking/lockdep: Use expanded masks on find_usage_*() functions
        locking/lockdep: Map remaining magic numbers to lock usage mask names
        locking/lockdep: Move valid_state() inside CONFIG_TRACE_IRQFLAGS && CONFIG_PROVE_LOCKING
        locking/rwsem: Prevent unneeded warning during locking selftest
        locking/rwsem: Optimize rwsem structure for uncontended lock acquisition
        locking/rwsem: Enable lock event counting
        locking/lock_events: Don't show pvqspinlock events on bare metal
        locking/lock_events: Make lock_events available for all archs & other locks
        locking/qspinlock_stat: Introduce generic lockevent_*() counting APIs
        locking/rwsem: Enhance DEBUG_RWSEMS_WARN_ON() macro
        locking/rwsem: Add debug check for __down_read*()
        locking/rwsem: Micro-optimize rwsem_try_read_lock_unqueued()
        locking/rwsem: Move rwsem internal function declarations to rwsem-xadd.h
        ...
      007dc78f
    • Linus Torvalds's avatar
      Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 2f1835df
      Linus Torvalds authored
      Pull irq updates from Ingo Molnar:
       "The changes in this cycle were:
      
         - Remove the irq timings/variance statistics code that tried to
           predict when the next interrupt would occur, which didn't work out
           as hoped and is replaced by another mechanism.
      
         - This new mechanism is the 'array suffix computation' estimate,
           which is superior to the previous one as it can detect not just a
           single periodic pattern, but independent periodic patterns along a
           log-2 scale of bucketing and exponential moving average. The
           comments are longer than the code - and it works better at
           predicting various complex interrupt patterns from real-world
           devices than the previous estimate.
      
         - avoid IRQ-work self-IPIs on the local CPU
      
         - fix work-list corruption in irq_set_affinity_notifier()"
      
      * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        irq_work: Do not raise an IPI when queueing work on the local CPU
        genirq/devres: Use struct_size() in devm_kzalloc()
        genirq/timings: Add array suffix computation code
        genirq/timings: Remove variance computation code
        genirq: Prevent use-after-free and work list corruption
      2f1835df
    • Linus Torvalds's avatar
      Merge branch 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · d90dcc1f
      Linus Torvalds authored
      Pull EFI updates from Ingo Molnar:
       "The changes in this cycle were:
      
         - Squash a spurious warning when using the EFI framebuffer on a
           non-EFI boot
      
         - Use DMI data to annotate RAS memory errors on ARM just like we do
           on Intel
      
         - Followup cleanups for DMI
      
         - libstub Makefile cleanups"
      
      * 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        efi/libstub/arm: Omit unneeded stripping of ksymtab/kcrctab sections
        efi: Unify DMI setup code over the arm/arm64, ia64 and x86 architectures
        efi/arm: Show SMBIOS bank/device location in CPER and GHES error logs
        efifb: Omit memory map check on legacy boot
        efi/libstub: Refactor the cmd_stubcopy Makefile command
      d90dcc1f
    • Linus Torvalds's avatar
      Merge branch 'core-stacktrace-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 2c6a392c
      Linus Torvalds authored
      Pull stack trace updates from Ingo Molnar:
       "So Thomas looked at the stacktrace code recently and noticed a few
        weirdnesses, and we all know how such stories of crummy kernel code
        meeting German engineering perfection end: a 45-patch series to clean
        it all up! :-)
      
        Here's the changes in Thomas's words:
      
         'Struct stack_trace is a sinkhole for input and output parameters
          which is largely pointless for most usage sites. In fact if embedded
          into other data structures it creates indirections and extra storage
          overhead for no benefit.
      
          Looking at all usage sites makes it clear that they just require an
          interface which is based on a storage array. That array is either on
          stack, global or embedded into some other data structure.
      
          Some of the stack depot usage sites are outright wrong, but
          fortunately the wrongness just causes more stack being used for
          nothing and does not have functional impact.
      
          Another oddity is the inconsistent termination of the stack trace
          with ULONG_MAX. It's pointless as the number of entries is what
          determines the length of the stored trace. In fact quite some call
          sites remove the ULONG_MAX marker afterwards with or without nasty
          comments about it. Not all architectures do that and those which do,
          do it inconsistenly either conditional on nr_entries == 0 or
          unconditionally.
      
          The following series cleans that up by:
      
            1) Removing the ULONG_MAX termination in the architecture code
      
            2) Removing the ULONG_MAX fixups at the call sites
      
            3) Providing plain storage array based interfaces for stacktrace
               and stackdepot.
      
            4) Cleaning up the mess at the callsites including some related
               cleanups.
      
            5) Removing the struct stack_trace based interfaces
      
          This is not changing the struct stack_trace interfaces at the
          architecture level, but it removes the exposure to the generic
          code'"
      
      * 'core-stacktrace-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (45 commits)
        x86/stacktrace: Use common infrastructure
        stacktrace: Provide common infrastructure
        lib/stackdepot: Remove obsolete functions
        stacktrace: Remove obsolete functions
        livepatch: Simplify stack trace retrieval
        tracing: Remove the last struct stack_trace usage
        tracing: Simplify stack trace retrieval
        tracing: Make ftrace_trace_userstack() static and conditional
        tracing: Use percpu stack trace buffer more intelligently
        tracing: Simplify stacktrace retrieval in histograms
        lockdep: Simplify stack trace handling
        lockdep: Remove save argument from check_prev_add()
        lockdep: Remove unused trace argument from print_circular_bug()
        drm: Simplify stacktrace handling
        dm persistent data: Simplify stack trace handling
        dm bufio: Simplify stack trace retrieval
        btrfs: ref-verify: Simplify stack trace retrieval
        dma/debug: Simplify stracktrace retrieval
        fault-inject: Simplify stacktrace retrieval
        mm/page_owner: Simplify stack trace handling
        ...
      2c6a392c
    • Linus Torvalds's avatar
      Merge branch 'core-speculation-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 0a499fc5
      Linus Torvalds authored
      Pull speculation mitigation update from Ingo Molnar:
       "This adds the "mitigations=" bootline option, which offers a
        cross-arch set of options that will work on x86, PowerPC and s390 that
        will map to the arch specific option internally"
      
      * 'core-speculation-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        s390/speculation: Support 'mitigations=' cmdline option
        powerpc/speculation: Support 'mitigations=' cmdline option
        x86/speculation: Support 'mitigations=' cmdline option
        cpu/speculation: Add 'mitigations=' cmdline option
      0a499fc5
    • Linus Torvalds's avatar
      Merge branch 'core-rseq-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e50c5d2e
      Linus Torvalds authored
      Pull rseq updates from Ingo Molnar:
       "A cleanup and a fix to comments"
      
      * 'core-rseq-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        rseq: Remove superfluous rseq_len from task_struct
        rseq: Clean up comments by reflecting removal of event counter
      e50c5d2e
    • Linus Torvalds's avatar
      Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 5ba2a4b1
      Linus Torvalds authored
      Pull RCU updates from Ingo Molnar:
       "This cycles's RCU changes include:
      
         - a couple of straggling RCU flavor consolidation updates
      
         - SRCU updates
      
         - RCU CPU stall-warning updates
      
         - torture-test updates
      
         - an LKMM commit adding support for synchronize_srcu_expedited()
      
         - documentation updates
      
         - miscellaneous fixes"
      
      * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (57 commits)
        net/ipv4/netfilter: Update comment from call_rcu_bh() to call_rcu()
        tools/memory-model: Add support for synchronize_srcu_expedited()
        doc/kprobes: Update obsolete RCU update functions
        torture: Suppress false-positive CONFIG_INITRAMFS_SOURCE complaint
        locktorture: NULL cxt.lwsa and cxt.lrsa to allow bad-arg detection
        rcuperf: Fix cleanup path for invalid perf_type strings
        rcutorture: Fix cleanup path for invalid torture_type strings
        rcutorture: Fix expected forward progress duration in OOM notifier
        rcutorture: Remove ->ext_irq_conflict field
        rcutorture: Make rcutorture_extend_mask() comment match the code
        tools/.../rcutorture: Convert to SPDX license identifier
        torture: Don't try to offline the last CPU
        rcu: Fix nohz status in stall warning
        rcu: Move forward-progress checkers into tree_stall.h
        rcu: Move irq-disabled stall-warning checking to tree_stall.h
        rcu: Organize functions in tree_stall.h
        rcu: Move FAST_NO_HZ stall-warning code to tree_stall.h
        rcu: Inline RCU stall-warning info helper functions
        rcu: Move rcu_print_task_exp_stall() to tree_exp.h
        rcu: Inline RCU task stall-warning helper functions
        ...
      5ba2a4b1
    • Linus Torvalds's avatar
      Merge branch 'core-objtool-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 6ec62961
      Linus Torvalds authored
      Pull objtool updates from Ingo Molnar:
       "This is a series from Peter Zijlstra that adds x86 build-time uaccess
        validation of SMAP to objtool, which will detect and warn about the
        following uaccess API usage bugs and weirdnesses:
      
         - call to %s() with UACCESS enabled
         - return with UACCESS enabled
         - return with UACCESS disabled from a UACCESS-safe function
         - recursive UACCESS enable
         - redundant UACCESS disable
         - UACCESS-safe disables UACCESS
      
        As it turns out not leaking uaccess permissions outside the intended
        uaccess functionality is hard when the interfaces are complex and when
        such bugs are mostly dormant.
      
        As a bonus we now also check the DF flag. We had at least one
        high-profile bug in that area in the early days of Linux, and the
        checking is fairly simple. The checks performed and warnings emitted
        are:
      
         - call to %s() with DF set
         - return with DF set
         - return with modified stack frame
         - recursive STD
         - redundant CLD
      
        It's all x86-only for now, but later on this can also be used for PAN
        on ARM and objtool is fairly cross-platform in principle.
      
        While all warnings emitted by this new checking facility that got
        reported to us were fixed, there might be GCC version dependent
        warnings that were not reported yet - which we'll address, should they
        trigger.
      
        The warnings are non-fatal build warnings"
      
      * 'core-objtool-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (27 commits)
        mm/uaccess: Use 'unsigned long' to placate UBSAN warnings on older GCC versions
        x86/uaccess: Dont leak the AC flag into __put_user() argument evaluation
        sched/x86_64: Don't save flags on context switch
        objtool: Add Direction Flag validation
        objtool: Add UACCESS validation
        objtool: Fix sibling call detection
        objtool: Rewrite alt->skip_orig
        objtool: Add --backtrace support
        objtool: Rewrite add_ignores()
        objtool: Handle function aliases
        objtool: Set insn->func for alternatives
        x86/uaccess, kcov: Disable stack protector
        x86/uaccess, ftrace: Fix ftrace_likely_update() vs. SMAP
        x86/uaccess, ubsan: Fix UBSAN vs. SMAP
        x86/uaccess, kasan: Fix KASAN vs SMAP
        x86/smap: Ditch __stringify()
        x86/uaccess: Introduce user_access_{save,restore}()
        x86/uaccess, signal: Fix AC=1 bloat
        x86/uaccess: Always inline user_access_begin()
        x86/uaccess, xen: Suppress SMAP warnings
        ...
      6ec62961
    • Linus Torvalds's avatar
      Merge branch 'core-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 171c2bcb
      Linus Torvalds authored
      Pull unified TLB flushing from Ingo Molnar:
       "This contains the generic mmu_gather feature from Peter Zijlstra,
        which is an all-arch unification of TLB flushing APIs, via the
        following (broad) steps:
      
         - enhance the <asm-generic/tlb.h> APIs to cover more arch details
      
         - convert most TLB flushing arch implementations to the generic
           <asm-generic/tlb.h> APIs.
      
         - remove leftovers of per arch implementations
      
        After this series every single architecture makes use of the unified
        TLB flushing APIs"
      
      * 'core-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        mm/resource: Use resource_overlaps() to simplify region_intersects()
        ia64/tlb: Eradicate tlb_migrate_finish() callback
        asm-generic/tlb: Remove tlb_table_flush()
        asm-generic/tlb: Remove tlb_flush_mmu_free()
        asm-generic/tlb: Remove CONFIG_HAVE_GENERIC_MMU_GATHER
        asm-generic/tlb: Remove arch_tlb*_mmu()
        s390/tlb: Convert to generic mmu_gather
        asm-generic/tlb: Introduce CONFIG_HAVE_MMU_GATHER_NO_GATHER=y
        arch/tlb: Clean up simple architectures
        um/tlb: Convert to generic mmu_gather
        sh/tlb: Convert SH to generic mmu_gather
        ia64/tlb: Convert to generic mmu_gather
        arm/tlb: Convert to generic mmu_gather
        asm-generic/tlb, arch: Invert CONFIG_HAVE_RCU_TABLE_INVALIDATE
        asm-generic/tlb, ia64: Conditionally provide tlb_migrate_finish()
        asm-generic/tlb: Provide generic tlb_flush() based on flush_tlb_mm()
        asm-generic/tlb, arch: Provide generic tlb_flush() based on flush_tlb_range()
        asm-generic/tlb, arch: Provide generic VIPT cache flush
        asm-generic/tlb, arch: Provide CONFIG_HAVE_MMU_GATHER_PAGE_SIZE
        asm-generic/tlb: Provide a comment
      171c2bcb
    • Linus Torvalds's avatar
      tty: rocket: fix incorrect forward declaration of 'rp_init()' · 423ea325
      Linus Torvalds authored
      Make the forward declaration actually match the real function
      definition, something that previous versions of gcc had just ignored.
      
      This is another patch to fix new warnings from gcc-9 before I start the
      merge window pulls.  I don't want to miss legitimate new warnings just
      because my system update brought a new compiler with new warnings.
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      423ea325
    • Andrey Ryabinin's avatar
      ubsan: Remove vla bound checks. · 9a91ad92
      Andrey Ryabinin authored
      The kernel the kernel is built with -Wvla for some time, so is not
      supposed to have any variable length arrays.  Remove vla bounds checking
      from ubsan since it's useless now.
      Signed-off-by: default avatarAndrey Ryabinin <aryabinin@virtuozzo.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9a91ad92
    • Andrey Ryabinin's avatar
      ubsan: Fix nasty -Wbuiltin-declaration-mismatch GCC-9 warnings · f0996bc2
      Andrey Ryabinin authored
      Building lib/ubsan.c with gcc-9 results in a ton of nasty warnings like
      this one:
      
          lib/ubsan.c warning: conflicting types for built-in function
               ‘__ubsan_handle_negate_overflow’; expected ‘void(void *, void *)’ [-Wbuiltin-declaration-mismatch]
      
      The kernel's declarations of __ubsan_handle_*() often uses 'unsigned
      long' types in parameters while GCC these parameters as 'void *' types,
      hence the mismatch.
      
      Fix this by using 'void *' to match GCC's declarations.
      Reported-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarAndrey Ryabinin <aryabinin@virtuozzo.com>
      Fixes: c6d30853 ("UBSAN: run-time undefined behavior sanity checker")
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f0996bc2
    • Linus Torvalds's avatar
      Linux 5.1 · e93c9c99
      Linus Torvalds authored
      e93c9c99
  2. 05 May, 2019 5 commits
    • Linus Torvalds's avatar
      Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 7178fb0b
      Linus Torvalds authored
      Pull perf fixes from Ingo Molnar:
       "I'd like to apologize for this very late pull request: I was dithering
        through the week whether to send the fixes, and then yesterday Jiri's
        crash fix for a regression introduced in this cycle clearly marked
        perf/urgent as 'must merge now'.
      
        Most of the commits are tooling fixes, plus there's three kernel fixes
        via four commits:
      
          - race fix in the Intel PEBS code
      
          - fix an AUX bug and roll back a previous attempt
      
          - fix AMD family 17h generic HW cache-event perf counters
      
        The largest diffstat contribution comes from the AMD fix - a new event
        table is introduced, which is a fairly low risk change but has a large
        linecount"
      
      * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        perf/x86/intel: Fix race in intel_pmu_disable_event()
        perf/x86/intel/pt: Remove software double buffering PMU capability
        perf/ring_buffer: Fix AUX software double buffering
        perf tools: Remove needless asm/unistd.h include fixing build in some places
        tools arch uapi: Copy missing unistd.h headers for arc, hexagon and riscv
        tools build: Add -ldl to the disassembler-four-args feature test
        perf cs-etm: Always allocate memory for cs_etm_queue::prev_packet
        perf cs-etm: Don't check cs_etm_queue::prev_packet validity
        perf report: Report OOM in status line in the GTK UI
        perf bench numa: Add define for RUSAGE_THREAD if not present
        tools lib traceevent: Change tag string for error
        perf annotate: Fix build on 32 bit for BPF annotation
        tools uapi x86: Sync vmx.h with the kernel
        perf bpf: Return value with unlocking in perf_env__find_btf()
        MAINTAINERS: Include vendor specific files under arch/*/events/*
        perf/x86/amd: Update generic hardware cache events for Family 17h
      7178fb0b
    • Linus Torvalds's avatar
      Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 70c9fb57
      Linus Torvalds authored
      Pull scheduler fix from Ingo Molnar:
       "Fix a kobject memory leak in the cpufreq code"
      
      * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        sched/cpufreq: Fix kobject memleak
      70c9fb57
    • Linus Torvalds's avatar
      Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 13369e83
      Linus Torvalds authored
      Pull x86 fix from Ingo Molnar:
       "Disable function tracing during early SME setup to fix a boot crash on
        SME-enabled kernels running distro kernels (some of which have
        function tracing enabled)"
      
      * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/mm/mem_encrypt: Disable all instrumentation for early SME setup
      13369e83
    • Linus Torvalds's avatar
      Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 51987aff
      Linus Torvalds authored
      Pull vfs fixes from Al Viro:
      
       - a couple of ->i_link use-after-free fixes
      
       - regression fix for wrong errno on absent device name in mount(2)
         (this cycle stuff)
      
       - ancient UFS braino in large GID handling on Solaris UFS images (bogus
         cut'n'paste from large UID handling; wrong field checked to decide
         whether we should look at old (16bit) or new (32bit) field)
      
      * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        ufs: fix braino in ufs_get_inode_gid() for solaris UFS flavour
        Abort file_remove_privs() for non-reg. files
        [fix] get rid of checking for absent device name in vfs_get_tree()
        apparmorfs: fix use-after-free on symlink traversal
        securityfs: fix use-after-free on symlink traversal
      51987aff
    • Jiri Olsa's avatar
      perf/x86/intel: Fix race in intel_pmu_disable_event() · 6f55967a
      Jiri Olsa authored
      New race in x86_pmu_stop() was introduced by replacing the
      atomic __test_and_clear_bit() of cpuc->active_mask by separate
      test_bit() and __clear_bit() calls in the following commit:
      
        3966c3fe ("x86/perf/amd: Remove need to check "running" bit in NMI handler")
      
      The race causes panic for PEBS events with enabled callchains:
      
        BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
        ...
        RIP: 0010:perf_prepare_sample+0x8c/0x530
        Call Trace:
         <NMI>
         perf_event_output_forward+0x2a/0x80
         __perf_event_overflow+0x51/0xe0
         handle_pmi_common+0x19e/0x240
         intel_pmu_handle_irq+0xad/0x170
         perf_event_nmi_handler+0x2e/0x50
         nmi_handle+0x69/0x110
         default_do_nmi+0x3e/0x100
         do_nmi+0x11a/0x180
         end_repeat_nmi+0x16/0x1a
        RIP: 0010:native_write_msr+0x6/0x20
        ...
         </NMI>
         intel_pmu_disable_event+0x98/0xf0
         x86_pmu_stop+0x6e/0xb0
         x86_pmu_del+0x46/0x140
         event_sched_out.isra.97+0x7e/0x160
        ...
      
      The event is configured to make samples from PEBS drain code,
      but when it's disabled, we'll go through NMI path instead,
      where data->callchain will not get allocated and we'll crash:
      
                x86_pmu_stop
                  test_bit(hwc->idx, cpuc->active_mask)
                  intel_pmu_disable_event(event)
                  {
                    ...
                    intel_pmu_pebs_disable(event);
                    ...
      
      EVENT OVERFLOW ->  <NMI>
                           intel_pmu_handle_irq
                             handle_pmi_common
         TEST PASSES ->        test_bit(bit, cpuc->active_mask))
                                 perf_event_overflow
                                   perf_prepare_sample
                                   {
                                     ...
                                     if (!(sample_type & __PERF_SAMPLE_CALLCHAIN_EARLY))
                                           data->callchain = perf_callchain(event, regs);
      
               CRASH ->              size += data->callchain->nr;
                                   }
                         </NMI>
                    ...
                    x86_pmu_disable_event(event)
                  }
      
                  __clear_bit(hwc->idx, cpuc->active_mask);
      
      Fixing this by disabling the event itself before setting
      off the PEBS bit.
      Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: David Arcari <darcari@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Lendacky Thomas <Thomas.Lendacky@amd.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Vince Weaver <vincent.weaver@maine.edu>
      Fixes: 3966c3fe ("x86/perf/amd: Remove need to check "running" bit in NMI handler")
      Link: http://lkml.kernel.org/r/20190504151556.31031-1-jolsa@kernel.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      6f55967a
  3. 04 May, 2019 1 commit
  4. 03 May, 2019 8 commits
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · aa1be08f
      Linus Torvalds authored
      Pull KVM fixes from Paolo Bonzini:
      
       - PPC and ARM bugfixes from submaintainers
      
       - Fix old Windows versions on AMD (recent regression)
      
       - Fix old Linux versions on processors without EPT
      
       - Fixes for LAPIC timer optimizations
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (21 commits)
        KVM: nVMX: Fix size checks in vmx_set_nested_state
        KVM: selftests: make hyperv_cpuid test pass on AMD
        KVM: lapic: Check for in-kernel LAPIC before deferencing apic pointer
        KVM: fix KVM_CLEAR_DIRTY_LOG for memory slots of unaligned size
        x86/kvm/mmu: reset MMU context when 32-bit guest switches PAE
        KVM: x86: Whitelist port 0x7e for pre-incrementing %rip
        Documentation: kvm: fix dirty log ioctl arch lists
        KVM: VMX: Move RSB stuffing to before the first RET after VM-Exit
        KVM: arm/arm64: Don't emulate virtual timers on userspace ioctls
        kvm: arm: Skip stage2 huge mappings for unaligned ipa backed by THP
        KVM: arm/arm64: Ensure vcpu target is unset on reset failure
        KVM: lapic: Convert guest TSC to host time domain if necessary
        KVM: lapic: Allow user to disable adaptive tuning of timer advancement
        KVM: lapic: Track lapic timer advance per vCPU
        KVM: lapic: Disable timer advancement if adaptive tuning goes haywire
        x86: kvm: hyper-v: deal with buggy TLB flush requests from WS2012
        KVM: x86: Consider LAPIC TSC-Deadline timer expired if deadline too short
        KVM: PPC: Book3S: Protect memslots while validating user address
        KVM: PPC: Book3S HV: Perserve PSSCR FAKE_SUSPEND bit on guest exit
        KVM: arm/arm64: vgic-v3: Retire pending interrupts on disabling LPIs
        ...
      aa1be08f
    • Linus Torvalds's avatar
      Merge branch 'i2c/for-current-fixed' of... · 82463436
      Linus Torvalds authored
      Merge branch 'i2c/for-current-fixed' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/wsa/linux
      
      Pull i2c fixes from Wolfram Sang:
       "I2C driver bugfixes and a MAINTAINERS update for you"
      
      * 'i2c/for-current-fixed' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
        i2c: Prevent runtime suspend of adapter when Host Notify is required
        i2c: synquacer: fix enumeration of slave devices
        MAINTAINERS: friendly takeover of i2c-gpio driver
        i2c: designware: ratelimit 'transfer when suspended' errors
        i2c: imx: correct the method of getting private data in notifier_call
      82463436
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-2019-05-03' of git://anongit.freedesktop.org/drm/drm · a4ccb5f9
      Linus Torvalds authored
      Pull drm fix from Dave Airlie:
       "Just a single qxl revert"
      
      * tag 'drm-fixes-2019-05-03' of git://anongit.freedesktop.org/drm/drm:
        Revert "drm/qxl: drop prime import/export callbacks"
      a4ccb5f9
    • Linus Torvalds's avatar
      Merge tag 'clk-fixes-for-linus' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/clk/linux · 8f76216c
      Linus Torvalds authored
      Pull clk fixes from Stephen Boyd:
       "Two fixes for the NKMP clks on Allwinner SoCs, a locking fix for
        clkdev where we forgot to hold a lock while iterating a list that can
        change, and finally a build fix that adds some stubs for clk APIs that
        are used by devfreq drivers on platforms without the clk APIs"
      
      * tag 'clk-fixes-for-linus' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/clk/linux:
        clk: Add missing stubs for a few functions
        clkdev: Hold clocks_mutex while iterating clocks list
        clk: sunxi-ng: nkmp: Explain why zero width check is needed
        clk: sunxi-ng: nkmp: Avoid GENMASK(-1, 0)
      8f76216c
    • Linus Torvalds's avatar
      Merge tag 'sound-5.1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 46572f78
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "A few stable fixes at this round.
      
        The USB Line6 audio fixes are a bit large, but they are rather trivial
        and pretty much device-specific, so should be safe to apply at this
        late stage. Ditto for other HD-audio quirks"
      
      * tag 'sound-5.1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ALSA: hda/realtek - Apply the fixup for ASUS Q325UAR
        ALSA: line6: use dynamic buffers
        ALSA: hda/realtek - Fixed Dell AIO speaker noise
        ALSA: hda/realtek - Add new Dell platform for headset mode
      46572f78
    • Alexander Shishkin's avatar
      perf/x86/intel/pt: Remove software double buffering PMU capability · 72e830f6
      Alexander Shishkin authored
      Now that all AUX allocations are high-order by default, the software
      double buffering PMU capability doesn't make sense any more, get rid
      of it. In case some PMUs choose to opt out, we can re-introduce it.
      Signed-off-by: default avatarAlexander Shishkin <alexander.shishkin@linux.intel.com>
      Acked-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Vince Weaver <vincent.weaver@maine.edu>
      Cc: adrian.hunter@intel.com
      Link: http://lkml.kernel.org/r/20190503085536.24119-3-alexander.shishkin@linux.intel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      72e830f6
    • Alexander Shishkin's avatar
      perf/ring_buffer: Fix AUX software double buffering · 26ae4f44
      Alexander Shishkin authored
      This recent commit:
      
        5768402f ("perf/ring_buffer: Use high order allocations for AUX buffers optimistically")
      
      overlooked the fact that the previous one page granularity of the AUX buffer
      provided an implicit double buffering capability to the PMU driver, which
      went away when the entire buffer became one high-order page.
      
      Always make the full-trace mode AUX allocation at least two-part to preserve
      the previous behavior and allow the implicit double buffering to continue.
      Reported-by: default avatarAmmy Yi <ammy.yi@intel.com>
      Signed-off-by: default avatarAlexander Shishkin <alexander.shishkin@linux.intel.com>
      Acked-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Vince Weaver <vincent.weaver@maine.edu>
      Cc: adrian.hunter@intel.com
      Fixes: 5768402f ("perf/ring_buffer: Use high order allocations for AUX buffers optimistically")
      Link: http://lkml.kernel.org/r/20190503085536.24119-2-alexander.shishkin@linux.intel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
      26ae4f44
    • Ingo Molnar's avatar
      Merge tag 'perf-urgent-for-mingo-5.1-20190502' of... · 221856b1
      Ingo Molnar authored
      Merge tag 'perf-urgent-for-mingo-5.1-20190502' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent
      
      Pull perf/urgent fixes from Arnaldo Carvalho de Melo:
      
      tools UAPI:
      
        Arnaldo Carvalho de Melo:
      
        - Sync x86's vmx.h with the kernel.
      
        - Copy missing unistd.h headers for arc, hexagon and riscv, fixing
          a reported build regression on the ARC 32-bit architecture.
      
      perf bench numa:
      
        Arnaldo Carvalho de Melo:
      
        - Add define for RUSAGE_THREAD if not present, fixing the build on the
          ARC architecture when only zlib and libnuma are present.
      
      perf BPF:
      
        Arnaldo Carvalho de Melo:
      
        - The disassembler-four-args feature test needs -ldl on distros such as
          Mageia 7.
      
        Bo YU:
      
        - Fix unlocking on success in perf_env__find_btf(), detected with
          the coverity tool.
      
      libtraceevent:
      
        Leo Yan:
      
        - Change misleading hard coded 'trace-cmd' string in error messages.
      
      ARM hardware tracing:
      
        Leo Yan:
      
        - Always allocate memory for cs_etm_queue::prev_packet, fixing a segfault
          when processing CoreSight perf data.
      
      perf annotate:
      
        Thadeu Lima de Souza Cascardo:
      
        - Fix build on 32 bit for BPF.
      
      perf report:
      
        Thomas Richter:
      
        - Report OOM in status line in the GTK UI.
      
      core libs:
      
        - Remove needless asm/unistd.h that, used with sys/syscall.h ended
          up redefining the syscalls defines in environments such as the
          ARC arch when using uClibc.
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      221856b1
  5. 02 May, 2019 12 commits
    • Dave Airlie's avatar
      Merge tag 'drm-misc-fixes-2019-05-02' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes · 1daa0449
      Dave Airlie authored
      - One revert for QXL for a DRI3 breakage
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Maxime Ripard <maxime.ripard@bootlin.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20190502122529.hguztj3kncaixe3d@flea
      1daa0449
    • Arnaldo Carvalho de Melo's avatar
      perf tools: Remove needless asm/unistd.h include fixing build in some places · 7e221b81
      Arnaldo Carvalho de Melo authored
      We were including sys/syscall.h and asm/unistd.h, since sys/syscall.h
      includes asm/unistd.h, sometimes this leads to the redefinition of
      defines, breaking the build.
      
      Noticed on ARC with uCLibc.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Rich Felker <dalias@libc.org>
      Cc: Vineet Gupta <Vineet.Gupta1@synopsys.com>
      Link: https://lkml.kernel.org/n/tip-xjpf80o64i2ko74aj2jih0qg@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      7e221b81
    • Arnaldo Carvalho de Melo's avatar
      tools arch uapi: Copy missing unistd.h headers for arc, hexagon and riscv · 18f90d37
      Arnaldo Carvalho de Melo authored
      Since those were introduced in:
      
        c8ce48f0 ("asm-generic: Make time32 syscall numbers optional")
      
      But when the asm-generic/unistd.h was sync'ed with tools/ in:
      
        1a787fc5 ("tools headers uapi: Sync copy of asm-generic/unistd.h with the kernel sources")
      
      I forgot to copy the files for the architectures that define
      __ARCH_WANT_TIME32_SYSCALLS, so the perf build was breaking there, as
      reported by Vineet Gupta for the ARC architecture.
      
      After updating my ARC container to use the glibc based toolchain + cross
      building libnuma, zlib and elfutils, I finally managed to reproduce the
      problem and verify that this now is fixed and will not regress as will
      be tested before each pull req sent upstream.
      Reported-by: default avatarVineet Gupta <Vineet.Gupta1@synopsys.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Jiri Olsa <jolsa@kernel.org>
      CC: linux-snps-arc@lists.infradead.org
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/r/20190426193531.GC28586@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      18f90d37
    • Arnaldo Carvalho de Melo's avatar
      tools build: Add -ldl to the disassembler-four-args feature test · c638417e
      Arnaldo Carvalho de Melo authored
      Thomas Backlund reported that the perf build was failing on the Mageia 7
      distro, that is because it uses:
      
        cat /tmp/build/perf/feature/test-disassembler-four-args.make.output
        /usr/bin/ld: /usr/lib64/libbfd.a(plugin.o): in function `try_load_plugin':
        /home/iurt/rpmbuild/BUILD/binutils-2.32/objs/bfd/../../bfd/plugin.c:243:
        undefined reference to `dlopen'
        /usr/bin/ld:
        /home/iurt/rpmbuild/BUILD/binutils-2.32/objs/bfd/../../bfd/plugin.c:271:
        undefined reference to `dlsym'
        /usr/bin/ld:
        /home/iurt/rpmbuild/BUILD/binutils-2.32/objs/bfd/../../bfd/plugin.c:256:
        undefined reference to `dlclose'
        /usr/bin/ld:
        /home/iurt/rpmbuild/BUILD/binutils-2.32/objs/bfd/../../bfd/plugin.c:246:
        undefined reference to `dlerror'
        as we allow dynamic linking and loading
      
      Mageia 7 uses these linker flags:
        $ rpm --eval %ldflags
          -Wl,--as-needed -Wl,--no-undefined -Wl,-z,relro -Wl,-O1 -Wl,--build-id -Wl,--enable-new-dtags
      
      So add -ldl to this feature LDFLAGS.
      Reported-by: default avatarThomas Backlund <tmb@mageia.org>
      Tested-by: default avatarThomas Backlund <tmb@mageia.org>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Song Liu <songliubraving@fb.com>
      Link: https://lkml.kernel.org/r/20190501173158.GC21436@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      c638417e
    • Leo Yan's avatar
      perf cs-etm: Always allocate memory for cs_etm_queue::prev_packet · 35bb59c1
      Leo Yan authored
      Robert Walker reported a segmentation fault is observed when process
      CoreSight trace data; this issue can be easily reproduced by the command
      'perf report --itrace=i1000i' for decoding tracing data.
      
      If neither the 'b' flag (synthesize branches events) nor 'l' flag
      (synthesize last branch entries) are specified to option '--itrace',
      cs_etm_queue::prev_packet will not been initialised.  After merging the
      code to support exception packets and sample flags, there introduced a
      number of uses of cs_etm_queue::prev_packet without checking whether it
      is valid, for these cases any accessing to uninitialised prev_packet
      will cause crash.
      
      As cs_etm_queue::prev_packet is used more widely now and it's already
      hard to follow which functions have been called in a context where the
      validity of cs_etm_queue::prev_packet has been checked, this patch
      always allocates memory for cs_etm_queue::prev_packet.
      Reported-by: default avatarRobert Walker <robert.walker@arm.com>
      Suggested-by: default avatarRobert Walker <robert.walker@arm.com>
      Signed-off-by: default avatarLeo Yan <leo.yan@linaro.org>
      Tested-by: default avatarRobert Walker <robert.walker@arm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
      Cc: Mike Leach <mike.leach@linaro.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Suzuki K Poulouse <suzuki.poulose@arm.com>
      Cc: linux-arm-kernel@lists.infradead.org
      Fixes: 7100b12c ("perf cs-etm: Generate branch sample for exception packet")
      Fixes: 24fff5eb ("perf cs-etm: Avoid stale branch samples when flush packet")
      Link: http://lkml.kernel.org/r/20190428083228.20246-1-leo.yan@linaro.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      35bb59c1
    • Leo Yan's avatar
      perf cs-etm: Don't check cs_etm_queue::prev_packet validity · cf0c37b6
      Leo Yan authored
      Since cs_etm_queue::prev_packet is allocated for all cases, it will
      never be NULL pointer; now validity checking prev_packet is pointless,
      remove all of them.
      Signed-off-by: default avatarLeo Yan <leo.yan@linaro.org>
      Tested-by: default avatarRobert Walker <robert.walker@arm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
      Cc: Mike Leach <mike.leach@linaro.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Suzuki K Poulouse <suzuki.poulose@arm.com>
      Cc: linux-arm-kernel@lists.infradead.org
      Link: http://lkml.kernel.org/r/20190428083228.20246-2-leo.yan@linaro.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      cf0c37b6
    • Thomas Richter's avatar
      perf report: Report OOM in status line in the GTK UI · 167e418f
      Thomas Richter authored
      An -ENOMEM error is not reported in the GTK GUI.  Instead this error
      message pops up on the screen:
      
      [root@m35lp76 perf]# ./perf  report -i perf.data.error68-1
      
      	Processing events... [974K/3M]
      	Error:failed to process sample
      
      	0xf4198 [0x8]: failed to process type: 68
      
      However when I use the same perf.data file with --stdio it works:
      
      [root@m35lp76 perf]# ./perf  report -i perf.data.error68-1 --stdio \
      		| head -12
      
        # Total Lost Samples: 0
        #
        # Samples: 76K of event 'cycles'
        # Event count (approx.): 99056160000
        #
        # Overhead  Command          Shared Object      Symbol
        # ........  ...............  .................  .........
        #
           8.81%  find             [kernel.kallsyms]  [k] ftrace_likely_update
           8.74%  swapper          [kernel.kallsyms]  [k] ftrace_likely_update
           8.34%  sshd             [kernel.kallsyms]  [k] ftrace_likely_update
           2.19%  kworker/u512:1-  [kernel.kallsyms]  [k] ftrace_likely_update
      
      The sample precentage is a bit low.....
      
      The GUI always fails in the FINISHED_ROUND event (68) and does not
      indicate the reason why.
      
      When happened is the following. Perf report calls a lot of functions and
      down deep when a FINISHED_ROUND event is processed, these functions are
      called:
      
        perf_session__process_event()
        + perf_session__process_user_event()
          + process_finished_round()
            + ordered_events__flush()
              + __ordered_events__flush()
      	  + do_flush()
      	    + ordered_events__deliver_event()
      	      + perf_session__deliver_event()
      	        + machine__deliver_event()
      	          + perf_evlist__deliver_event()
      	            + process_sample_event()
      	              + hist_entry_iter_add() --> only called in GUI case!!!
      	                + hist_iter__report__callback()
      	                  + symbol__inc_addr_sample()
      
      	                    Now this functions runs out of memory and
      			    returns -ENOMEM. This is reported all the way up
      			    until function
      
      perf_session__process_event() returns to its caller, where -ENOMEM is
      changed to -EINVAL and processing stops:
      
       if ((skip = perf_session__process_event(session, event, head)) < 0) {
            pr_err("%#" PRIx64 " [%#x]: failed to process type: %d\n",
      	     head, event->header.size, event->header.type);
            err = -EINVAL;
            goto out_err;
       }
      
      This occurred in the FINISHED_ROUND event when it has to process some
      10000 entries and ran out of memory.
      
      This patch indicates the root cause and displays it in the status line
      of ther perf report GUI.
      
      Output before (on GUI status line):
      
        0xf4198 [0x8]: failed to process type: 68
      
      Output after:
      
        0xf4198 [0x8]: failed to process type: 68 [not enough memory]
      
      Committer notes:
      
      the 'skip' variable needs to be initialized to -EINVAL, so that when the
      size is less than sizeof(struct perf_event_attr) we avoid this valid
      compiler warning:
      
        util/session.c: In function ‘perf_session__process_events’:
        util/session.c:1936:7: error: ‘skip’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
           err = skip;
           ~~~~^~~~~~
        util/session.c:1874:6: note: ‘skip’ was declared here
          s64 skip;
              ^~~~
        cc1: all warnings being treated as errors
      Signed-off-by: default avatarThomas Richter <tmricht@linux.ibm.com>
      Reviewed-by: default avatarHendrik Brueckner <brueckner@linux.ibm.com>
      Reviewed-by: default avatarJiri Olsa <jolsa@redhat.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Link: http://lkml.kernel.org/r/20190423105303.61683-1-tmricht@linux.ibm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      167e418f
    • Arnaldo Carvalho de Melo's avatar
      perf bench numa: Add define for RUSAGE_THREAD if not present · bf561d3c
      Arnaldo Carvalho de Melo authored
      While cross building perf to the ARC architecture on a fedora 30 host,
      we were failing with:
      
            CC       /tmp/build/perf/bench/numa.o
        bench/numa.c: In function ‘worker_thread’:
        bench/numa.c:1261:12: error: ‘RUSAGE_THREAD’ undeclared (first use in this function); did you mean ‘SIGEV_THREAD’?
          getrusage(RUSAGE_THREAD, &rusage);
                    ^~~~~~~~~~~~~
                    SIGEV_THREAD
        bench/numa.c:1261:12: note: each undeclared identifier is reported only once for each function it appears in
      
      [perfbuilder@60d5802468f6 perf]$ /arc_gnu_2019.03-rc1_prebuilt_uclibc_le_archs_linux_install/bin/arc-linux-gcc --version | head -1
      arc-linux-gcc (ARCv2 ISA Linux uClibc toolchain 2019.03-rc1) 8.3.1 20190225
      [perfbuilder@60d5802468f6 perf]$
      
      Trying to reproduce a report by Vineet, I noticed that, with just
      cross-built zlib and numactl libraries, I ended up with the above
      failure.
      
      So, since RUSAGE_THREAD is available as a define, check for that and
      numactl libraries, I ended up with the above failure.
      
      So, since RUSAGE_THREAD is available as a define in the system headers,
      check if it is defined in the 'perf bench numa' sources and define it if
      not.
      
      Now it builds and I have to figure out if the problem reported by Vineet
      only takes place if we have libelf or some other library available.
      
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: linux-snps-arc@lists.infradead.org
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Vineet Gupta <Vineet.Gupta1@synopsys.com>
      Link: https://lkml.kernel.org/n/tip-2wb4r1gir9xrevbpq7qp0amk@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      bf561d3c
    • Leo Yan's avatar
      tools lib traceevent: Change tag string for error · 5f05182f
      Leo Yan authored
      The traceevent lib is used by the perf tool, and when executing
      
        perf test -v 6
      
      it outputs error log on the ARM64 platform:
      
        running test 33 '*:*'trace-cmd: No such file or directory
      
        [...]
      
        trace-cmd: Invalid argument
      
      The trace event parsing code originally came from trace-cmd so it keeps
      the tag string "trace-cmd" for errors, this easily introduces the
      impression that the perf tool launches trace-cmd command for trace event
      parsing, but in fact the related parsing is accomplished by the
      traceevent lib.
      
      This patch changes the tag string to "libtraceevent" so that we can
      avoid confusion and let users to more easily connect the error with
      traceevent lib.
      Signed-off-by: default avatarLeo Yan <leo.yan@linaro.org>
      Acked-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
      Link: http://lkml.kernel.org/r/20190424013802.27569-1-leo.yan@linaro.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      5f05182f
    • Thadeu Lima de Souza Cascardo's avatar
      perf annotate: Fix build on 32 bit for BPF annotation · 01e985e9
      Thadeu Lima de Souza Cascardo authored
      Commit 6987561c ("perf annotate: Enable annotation of BPF programs") adds
      support for BPF programs annotations but the new code does not build on 32-bit.
      Signed-off-by: default avatarThadeu Lima de Souza Cascardo <cascardo@canonical.com>
      Acked-by: default avatarSong Liu <songliubraving@fb.com>
      Fixes: 6987561c ("perf annotate: Enable annotation of BPF programs")
      Link: http://lkml.kernel.org/r/20190403194452.10845-1-cascardo@canonical.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      01e985e9
    • Arnaldo Carvalho de Melo's avatar
      tools uapi x86: Sync vmx.h with the kernel · 24e45b49
      Arnaldo Carvalho de Melo authored
      To pick up the changes from:
      
        2b27924b ("KVM: nVMX: always use early vmcs check when EPT is disabled")
      
      That causes this object in the tools/perf build process to be rebuilt:
      
        CC       /tmp/build/perf/arch/x86/util/kvm-stat.o
      
      But it isn't using VMX_ABORT_ prefixed constants, so no change in
      behaviour.
      
      This silences this perf build warning:
      
        Warning: Kernel ABI header at 'tools/arch/x86/include/uapi/asm/vmx.h' differs from latest version at 'arch/x86/include/uapi/asm/vmx.h'
        diff -u tools/arch/x86/include/uapi/asm/vmx.h arch/x86/include/uapi/asm/vmx.h
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Link: https://lkml.kernel.org/n/tip-bjbo3zc0r8i8oa0udpvftya6@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      24e45b49
    • Bo YU's avatar
      perf bpf: Return value with unlocking in perf_env__find_btf() · 2e712675
      Bo YU authored
      In perf_env__find_btf(), we're returning without unlocking
      "env->bpf_progs.lock". There may be cause lockdep issue.
      
      Detected by CoversityScan, CID# 1444762:(program hangs(LOCK))
      Signed-off-by: default avatarBo YU <tsu.yubo@gmail.com>
      Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Alexei Starovoitov <ast@kernel.org>
      Cc: Daniel Borkmann <daniel@iogearbox.net>
      Cc: Martin KaFai Lau <kafai@fb.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Song Liu <songliubraving@fb.com>
      Cc: Yonghong Song <yhs@fb.com>
      Cc: bpf@vger.kernel.org
      Cc: netdev@vger.kernel.org
      Fixes: 2db7b1e0: (perf bpf: Return NULL when RB tree lookup fails in perf_env__find_btf())
      Link: http://lkml.kernel.org/r/20190422080138.10088-1-tsu.yubo@gmail.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      2e712675