1. 08 Mar, 2022 1 commit
  2. 07 Mar, 2022 1 commit
    • Mark Rutland's avatar
      arm64: prevent instrumentation of bp hardening callbacks · 614c0b9f
      Mark Rutland authored
      We may call arm64_apply_bp_hardening() early during entry (e.g. in
      el0_ia()) before it is safe to run instrumented code. Unfortunately this
      may result in running instrumented code in two cases:
      
      * The hardening callbacks called by arm64_apply_bp_hardening() are not
        marked as `noinstr`, and have been observed to be instrumented when
        compiled with either GCC or LLVM.
      
      * Since arm64_apply_bp_hardening() itself is only marked as `inline`
        rather than `__always_inline`, it is possible that the compiler
        decides to place it out-of-line, whereupon it may be instrumented.
      
      For example, with defconfig built with clang 13.0.0,
      call_hvc_arch_workaround_1() is compiled as:
      
      | <call_hvc_arch_workaround_1>:
      |        d503233f        paciasp
      |        f81f0ffe        str     x30, [sp, #-16]!
      |        320183e0        mov     w0, #0x80008000
      |        d503201f        nop
      |        d4000002        hvc     #0x0
      |        f84107fe        ldr     x30, [sp], #16
      |        d50323bf        autiasp
      |        d65f03c0        ret
      
      ... but when CONFIG_FTRACE=y and CONFIG_KCOV=y this is compiled as:
      
      | <call_hvc_arch_workaround_1>:
      |        d503245f        bti     c
      |        d503201f        nop
      |        d503201f        nop
      |        d503233f        paciasp
      |        a9bf7bfd        stp     x29, x30, [sp, #-16]!
      |        910003fd        mov     x29, sp
      |        94000000        bl      0 <__sanitizer_cov_trace_pc>
      |        320183e0        mov     w0, #0x80008000
      |        d503201f        nop
      |        d4000002        hvc     #0x0
      |        a8c17bfd        ldp     x29, x30, [sp], #16
      |        d50323bf        autiasp
      |        d65f03c0        ret
      
      ... with a patchable function entry registered with ftrace, and a direct
      call to __sanitizer_cov_trace_pc(). Neither of these are safe early
      during entry sequences.
      
      This patch avoids the unsafe instrumentation by marking
      arm64_apply_bp_hardening() as `__always_inline` and by marking the
      hardening functions as `noinstr`. This avoids the potential for
      instrumentation, and causes clang to consistently generate the function
      as with the defconfig sample.
      
      Note: in the defconfig compilation, when CONFIG_SVE=y, x30 is spilled to
      the stack without being placed in a frame record, which will result in a
      missing entry if call_hvc_arch_workaround_1() is backtraced. Similar is
      true of qcom_link_stack_sanitisation(), where inline asm spills the LR
      to a GPR prior to corrupting it. This is not a significant issue
      presently as we will only backtrace here if an exception is taken, and
      in such cases we may omit entries for other reasons today.
      
      The relevant hardening functions were introduced in commits:
      
        ec82b567 ("arm64: Implement branch predictor hardening for Falkor")
        b092201e ("arm64: Add ARM_SMCCC_ARCH_WORKAROUND_1 BP hardening support")
      
      ... and these were subsequently moved in commit:
      
        d4647f0a ("arm64: Rewrite Spectre-v2 mitigation code")
      
      The arm64_apply_bp_hardening() function was introduced in commit:
      
        0f15adbb ("arm64: Add skeleton to harden the branch predictor against aliasing attacks")
      
      ... and was subsequently moved and reworked in commit:
      
        6279017e ("KVM: arm64: Move BP hardening helpers into spectre.h")
      
      Fixes: ec82b567 ("arm64: Implement branch predictor hardening for Falkor")
      Fixes: b092201e ("arm64: Add ARM_SMCCC_ARCH_WORKAROUND_1 BP hardening support")
      Fixes: d4647f0a ("arm64: Rewrite Spectre-v2 mitigation code")
      Fixes: 0f15adbb ("arm64: Add skeleton to harden the branch predictor against aliasing attacks")
      Fixes: 6279017e ("KVM: arm64: Move BP hardening helpers into spectre.h")
      Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
      Cc: Ard Biesheuvel <ardb@kernel.org>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: James Morse <james.morse@arm.com>
      Cc: Marc Zyngier <maz@kernel.org>
      Cc: Mark Brown <broonie@kernel.org>
      Cc: Will Deacon <will@kernel.org>
      Acked-by: default avatarMarc Zyngier <maz@kernel.org>
      Reviewed-by: default avatarMark Brown <broonie@kernel.org>
      Link: https://lore.kernel.org/r/20220224181028.512873-1-mark.rutland@arm.comSigned-off-by: default avatarWill Deacon <will@kernel.org>
      614c0b9f
  3. 25 Feb, 2022 1 commit
    • Vladimir Murzin's avatar
      arm64: cpufeature: Remove cpu_has_fwb() check · 032e6c33
      Vladimir Murzin authored
      cpu_has_fwb() is supposed to warn user is following architectural
      requirement is not valid:
      
      LoUU, bits [29:27] - Level of Unification Uniprocessor for the cache
                           hierarchy.
      
        Note
      
          When FEAT_S2FWB is implemented, the architecture requires that
          this field is zero so that no levels of data cache need to be
          cleaned in order to manage coherency with instruction fetches.
      
      LoUIS, bits [23:21] - Level of Unification Inner Shareable for the
                            cache hierarchy.
      
        Note
      
          When FEAT_S2FWB is implemented, the architecture requires that
          this field is zero so that no levels of data cache need to be
          cleaned in order to manage coherency with instruction fetches.
      
      It is not really clear what user have to do if assertion fires. Having
      assertions about the CPU design like this inspire even more assertions
      to be added and the kernel definitely is not the right place for that,
      so let's remove cpu_has_fwb() altogether.
      Signed-off-by: default avatarVladimir Murzin <vladimir.murzin@arm.com>
      Link: https://lore.kernel.org/r/20220224164739.119168-1-vladimir.murzin@arm.comSigned-off-by: default avatarWill Deacon <will@kernel.org>
      032e6c33
  4. 15 Feb, 2022 2 commits
    • Mark Rutland's avatar
      arm64: atomics: remove redundant static branch · 16860a20
      Mark Rutland authored
      Due to a historical oversight, we emit a redundant static branch for
      each atomic/atomic64 operation when CONFIG_ARM64_LSE_ATOMICS is
      selected. We can safely remove this, making the kernel Image reasonably
      smaller.
      
      When CONFIG_ARM64_LSE_ATOMICS is selected, every LSE atomic operation
      has two preceding static branches with the same target, e.g.
      
      	b	f7c <kernel_init_freeable+0xa4>
      	b	f7c <kernel_init_freeable+0xa4>
      	mov	w0, #0x1                   	// #1
      	ldadd	w0, w0, [x19]
      
      This is because the __lse_ll_sc_body() wrapper uses
      system_uses_lse_atomics(), which checks both `arm64_const_caps_ready`
      and `cpu_hwcap_keys[ARM64_HAS_LSE_ATOMICS]`, each of which emits a
      static branch. This has been the case since commit:
      
        addfc386 ("arm64: atomics: avoid out-of-line ll/sc atomics")
      
      However, there was never a need to check `arm64_const_caps_ready`, which
      was itself introduced in commit:
      
        63a1e1c9 ("arm64/cpufeature: don't use mutex in bringup path")
      
      ... so that cpus_have_const_cap() could fall back to checking the
      `cpu_hwcaps` bitmap prior to the static keys for individual caps
      becoming enabled. As system_uses_lse_atomics() doesn't check
      `cpu_hwcaps`, and doesn't need to as we can safely use the LL/SC atomics
      prior to enabling the `ARM64_HAS_LSE_ATOMICS` static key, it doesn't
      need to check `arm64_const_caps_ready`.
      
      This patch removes the `arm64_const_caps_ready` check from
      system_uses_lse_atomics(). As the arch_atomic_* routines are meant to be
      safely usable in noinstr code, I've also marked
      system_uses_lse_atomics() as __always_inline.
      
      This results in one fewer static branch per atomic operation, with the
      prior example becoming:
      
      	b	f78 <kernel_init_freeable+0xa0>
      	mov	w0, #0x1                   	// #1
      	ldadd	w0, w0, [x19]
      
      Each static branch consists of the branch itself and an associated
      __jump_table entry. Removing these has a reasonable impact on the Image
      size, with a GCC 11.1.0 defconfig v5.17-rc2 Image being reduced by
      128KiB:
      
      | [mark@lakrids:~/src/linux]% ls -al Image*
      | -rw-r--r-- 1 mark mark 34619904 Feb  3 18:24 Image.baseline
      | -rw-r--r-- 1 mark mark 34488832 Feb  3 18:33 Image.onebranch
      Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
      Cc: Ard Biesheuvel <ardb@kernel.org>
      Cc: Catalin Marinas <catalin.marinas@arm.com>
      Cc: Suzuki Poulose <suzuki.poulose@arm.com>
      Cc: Will Deacon <will@kernel.org>
      Link: https://lore.kernel.org/r/20220204104439.270567-1-mark.rutland@arm.comSigned-off-by: default avatarWill Deacon <will@kernel.org>
      16860a20
    • He Ying's avatar
      arm64: entry: Save some nops when CONFIG_ARM64_PSEUDO_NMI is not set · 3352a555
      He Ying authored
      Arm64 pseudo-NMI feature code brings some additional nops
      when CONFIG_ARM64_PSEUDO_NMI is not set, which is not
      necessary. So add necessary ifdeffery to avoid it.
      Signed-off-by: default avatarHe Ying <heying24@huawei.com>
      Acked-by: default avatarMark Rutland <mark.rutland@arm.com>
      Link: https://lore.kernel.org/r/20220112032410.29231-1-heying24@huawei.comSigned-off-by: default avatarWill Deacon <will@kernel.org>
      3352a555
  5. 06 Feb, 2022 19 commits
    • Linus Torvalds's avatar
      Linux 5.17-rc3 · dfd42fac
      Linus Torvalds authored
      dfd42fac
    • Linus Torvalds's avatar
      Merge tag 'ext4_for_linus_stable' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 · d8ad2ce8
      Linus Torvalds authored
      Pull ext4 fixes from Ted Ts'o:
       "Various bug fixes for ext4 fast commit and inline data handling.
      
        Also fix regression introduced as part of moving to the new mount API"
      
      * tag 'ext4_for_linus_stable' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
        fs/ext4: fix comments mentioning i_mutex
        ext4: fix incorrect type issue during replay_del_range
        jbd2: fix kernel-doc descriptions for jbd2_journal_shrink_{scan,count}()
        ext4: fix potential NULL pointer dereference in ext4_fill_super()
        jbd2: refactor wait logic for transaction updates into a common function
        jbd2: cleanup unused functions declarations from jbd2.h
        ext4: fix error handling in ext4_fc_record_modified_inode()
        ext4: remove redundant max inline_size check in ext4_da_write_inline_data_begin()
        ext4: fix error handling in ext4_restore_inline_data()
        ext4: fast commit may miss file actions
        ext4: fast commit may not fallback for ineligible commit
        ext4: modify the logic of ext4_mb_new_blocks_simple
        ext4: prevent used blocks from being allocated during fast commit replay
      d8ad2ce8
    • Linus Torvalds's avatar
      Merge tag 'perf-tools-fixes-for-v5.17-2022-02-06' of... · 18118a42
      Linus Torvalds authored
      Merge tag 'perf-tools-fixes-for-v5.17-2022-02-06' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux
      
      Pull perf tools fixes from Arnaldo Carvalho de Melo:
      
       - Fix display of grouped aliased events in 'perf stat'.
      
       - Add missing branch_sample_type to perf_event_attr__fprintf().
      
       - Apply correct label to user/kernel symbols in branch mode.
      
       - Fix 'perf ftrace' system_wide tracing, it has to be set before
         creating the maps.
      
       - Return error if procfs isn't mounted for PID namespaces when
         synthesizing records for pre-existing processes.
      
       - Set error stream of objdump process for 'perf annotate' TUI, to avoid
         garbling the screen.
      
       - Add missing arm64 support to perf_mmap__read_self(), the kernel part
         got into 5.17.
      
       - Check for NULL pointer before dereference writing debug info about a
         sample.
      
       - Update UAPI copies for asound, perf_event, prctl and kvm headers.
      
       - Fix a typo in bpf_counter_cgroup.c.
      
      * tag 'perf-tools-fixes-for-v5.17-2022-02-06' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux:
        perf ftrace: system_wide collection is not effective by default
        libperf: Add arm64 support to perf_mmap__read_self()
        tools include UAPI: Sync sound/asound.h copy with the kernel sources
        perf stat: Fix display of grouped aliased events
        perf tools: Apply correct label to user/kernel symbols in branch mode
        perf bpf: Fix a typo in bpf_counter_cgroup.c
        perf synthetic-events: Return error if procfs isn't mounted for PID namespaces
        perf session: Check for NULL pointer before dereference
        perf annotate: Set error stream of objdump process for TUI
        perf tools: Add missing branch_sample_type to perf_event_attr__fprintf()
        tools headers UAPI: Sync linux/kvm.h with the kernel sources
        tools headers UAPI: Sync linux/prctl.h with the kernel sources
        perf beauty: Make the prctl arg regexp more strict to cope with PR_SET_VMA
        tools headers cpufeatures: Sync with the kernel sources
        tools headers UAPI: Sync linux/perf_event.h with the kernel sources
        tools include UAPI: Sync sound/asound.h copy with the kernel sources
      18118a42
    • Linus Torvalds's avatar
      Merge tag 'perf_urgent_for_v5.17_rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · c3bf8a14
      Linus Torvalds authored
      Pull perf fixes from Borislav Petkov:
      
       - Intel/PT: filters could crash the kernel
      
       - Intel: default disable the PMU for SMM, some new-ish EFI firmware has
         started using CPL3 and the PMU CPL filters don't discriminate against
         SMM, meaning that CPL3 (userspace only) events now also count EFI/SMM
         cycles.
      
       - Fixup for perf_event_attr::sig_data
      
      * tag 'perf_urgent_for_v5.17_rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        perf/x86/intel/pt: Fix crash with stop filters in single-range mode
        perf: uapi: Document perf_event_attr::sig_data truncation on 32 bit architectures
        selftests/perf_events: Test modification of perf_event_attr::sig_data
        perf: Copy perf_event_attr::sig_data on modification
        x86/perf: Default set FREEZE_ON_SMI for all
      c3bf8a14
    • Linus Torvalds's avatar
      Merge tag 'objtool_urgent_for_v5.17_rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · aeabe1e0
      Linus Torvalds authored
      Pull objtool fix from Borislav Petkov:
       "Fix a potential truncated string warning triggered by gcc12"
      
      * tag 'objtool_urgent_for_v5.17_rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        objtool: Fix truncated string warning
      aeabe1e0
    • Linus Torvalds's avatar
      Merge tag 'irq_urgent_for_v5.17_rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · b72e40b1
      Linus Torvalds authored
      Pull irq fix from Borislav Petkov:
       "Remove a bogus warning introduced by the recent PCI MSI irq affinity
        overhaul"
      
      * tag 'irq_urgent_for_v5.17_rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        PCI/MSI: Remove bogus warning in pci_irq_get_affinity()
      b72e40b1
    • Linus Torvalds's avatar
      Merge tag 'edac_urgent_for_v5.17_rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras · 898b5841
      Linus Torvalds authored
      Pull EDAC fixes from Borislav Petkov:
       "Fix altera and xgene EDAC drivers to propagate the correct error code
        from platform_get_irq() so that deferred probing still works"
      
      * tag 'edac_urgent_for_v5.17_rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras:
        EDAC/xgene: Fix deferred probing
        EDAC/altera: Fix deferred probing
      898b5841
    • Changbin Du's avatar
      perf ftrace: system_wide collection is not effective by default · fceb6212
      Changbin Du authored
      The ftrace.target.system_wide must be set before invoking
      evlist__create_maps(), otherwise it has no effect.
      
      Fixes: 53be5028 ("perf ftrace: Add 'latency' subcommand")
      Signed-off-by: default avatarChangbin Du <changbin.du@gmail.com>
      Acked-by: default avatarNamhyung Kim <namhyung@gmail.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: https://lore.kernel.org/r/20220127132010.4836-1-changbin.du@gmail.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      fceb6212
    • Rob Herring's avatar
      libperf: Add arm64 support to perf_mmap__read_self() · 407eb43a
      Rob Herring authored
      Add the arm64 variants for read_perf_counter() and read_timestamp().
      Unfortunately the counter number is encoded into the instruction, so the
      code is a bit verbose to enumerate all possible counters.
      Tested-by: default avatarMasayoshi Mizuma <m.mizuma@jp.fujitsu.com>
      Signed-off-by: default avatarRob Herring <robh@kernel.org>
      Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
      Tested-by: default avatarJohn Garry <john.garry@huawei.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Link: https://lore.kernel.org/r/20220201214056.702854-1-robh@kernel.org
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Will Deacon <will@kernel.org>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: linux-kernel@vger.kernel.org
      Cc: linux-perf-users@vger.kernel.org
      407eb43a
    • Arnaldo Carvalho de Melo's avatar
      tools include UAPI: Sync sound/asound.h copy with the kernel sources · 4f249273
      Arnaldo Carvalho de Melo authored
      Picking the changes from:
      
        06feec60 ("ASoC: hdmi-codec: Fix OOB memory accesses")
      
      Which entails no changes in the tooling side as it doesn't introduce new
      SNDRV_PCM_IOCTL_ ioctls.
      
      To silence this perf tools build warning:
      
        Warning: Kernel ABI header at 'tools/include/uapi/sound/asound.h' differs from latest version at 'include/uapi/sound/asound.h'
        diff -u tools/include/uapi/sound/asound.h include/uapi/sound/asound.h
      
      Cc: Dmitry Osipenko <digetx@gmail.com>
      Cc: Mark Brown <broonie@kernel.org>
      Cc: Takashi Iwai <tiwai@suse.de>
      Link: https://lore.kernel.org/lkml/Yf+6OT+2eMrYDEeX@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      4f249273
    • Ian Rogers's avatar
      perf stat: Fix display of grouped aliased events · b2b1aa73
      Ian Rogers authored
      An event may have a number of uncore aliases that when added to the
      evlist are consecutive.
      
      If there are multiple uncore events in a group then
      parse_events__set_leader_for_uncore_aliase will reorder the evlist so
      that events on the same PMU are adjacent.
      
      The collect_all_aliases function assumes that aliases are in blocks so
      that only the first counter is printed and all others are marked merged.
      
      The reordering for groups breaks the assumption and so all counts are
      printed.
      
      This change removes the assumption from collect_all_aliases
      that the events are in blocks and instead processes the entire evlist.
      
      Before:
      
        ```
        $ perf stat -e '{UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE,UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE},duration_time' -a -A -- sleep 1
      
         Performance counter stats for 'system wide':
      
        CPU0                  256,866      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 494,413      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                      967      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,738      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  285,161      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 429,920      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                      955      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,443      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  310,753      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 416,657      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,231      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,573      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  416,067      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 405,966      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,481      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,447      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  312,911      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 408,154      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,086      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,380      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  333,994      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 370,349      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,287      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,335      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  188,107      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 302,423      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                      701      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,070      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  307,221      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 383,642      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,036      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,158      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  318,479      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 821,545      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,028      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   2,550      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  227,618      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 372,272      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                      903      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,456      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  376,783      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 419,827      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,406      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,453      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  286,583      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 429,956      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                      999      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,436      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  313,867      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 370,159      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,114      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,291      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  342,083      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 409,111      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,399      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,684      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  365,828      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 376,037      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,378      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,411      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  382,456      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 621,743      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,232      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,955      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  342,316      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 385,067      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,176      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,268      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  373,588      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 386,163      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,394      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,464      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  381,206      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 546,891      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,266      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,712      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  221,176      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 392,069      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                      831      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,456      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  355,401      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 705,595      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,235      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   2,216      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  371,436      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 428,103      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,306      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,442      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  384,352      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 504,200      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,468      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,860      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  228,856      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 287,976      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                      832      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,060      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  215,121      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 334,162      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                      681      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,026      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  296,179      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 436,083      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,084      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,525      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  262,296      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 416,573      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                      986      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,533      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  285,852      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 359,842      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,073      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,326      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  303,379      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 367,222      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,008      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,156      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  273,487      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 425,449      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                      932      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,367      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  297,596      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 414,793      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,140      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,601      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  342,365      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 360,422      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,291      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,342      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  327,196      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 580,858      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,122      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   2,014      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  296,564      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 452,817      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,087      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,694      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  375,002      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 389,393      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,478      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   1,540      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0                  365,213      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36                 594,685      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                    1,401      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                   2,222      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0            1,000,749,060 ns   duration_time
      
               1.000749060 seconds time elapsed
        ```
      
      After:
      
        ```
         Performance counter stats for 'system wide':
      
        CPU0               20,547,434      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU36              45,202,862      UNC_CHA_TOR_OCCUPANCY.IA_MISS_DRD_REMOTE
        CPU0                   82,001      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU36                 159,688      UNC_CHA_TOR_INSERTS.IA_MISS_DRD_REMOTE
        CPU0            1,000,464,828 ns   duration_time
      
               1.000464828 seconds time elapsed
        ```
      
      Fixes: 3cdc5c2c ("perf parse-events: Handle uncore event aliases in small groups properly")
      Reviewed-by: default avatarAndi Kleen <ak@linux.intel.com>
      Signed-off-by: default avatarIan Rogers <irogers@google.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
      Cc: Asaf Yaffe <asaf.yaffe@intel.com>
      Cc: Caleb Biggers <caleb.biggers@intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: James Clark <james.clark@arm.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: John Garry <john.garry@huawei.com>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Kshipra Bopardikar <kshipra.bopardikar@intel.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Perry Taylor <perry.taylor@intel.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Vineet Singh <vineet.singh@intel.com>
      Cc: Zhengjun Xing <zhengjun.xing@linux.intel.com>
      Link: https://lore.kernel.org/r/20220205010941.1065469-1-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      b2b1aa73
    • German Gomez's avatar
      perf tools: Apply correct label to user/kernel symbols in branch mode · 05b5a9d6
      German Gomez authored
      In branch mode, the branch symbols were being displayed with incorrect
      cpumode labels. So fix this.
      
      For example, before:
        # perf record -b -a -- sleep 1
        # perf report -b
      
        Overhead  Command  Source Shared Object  Source Symbol               Target Symbol
           0.08%  swapper  [kernel.kallsyms]     [k] rcu_idle_enter          [k] cpuidle_enter_state
       ==> 0.08%  cmd0     [kernel.kallsyms]     [.] psi_group_change        [.] psi_group_change
           0.08%  cmd1     [kernel.kallsyms]     [k] psi_group_change        [k] psi_group_change
      
      After:
        # perf report -b
      
        Overhead  Command  Source Shared Object  Source Symbol               Target Symbol
           0.08%  swapper  [kernel.kallsyms]     [k] rcu_idle_enter          [k] cpuidle_enter_state
           0.08%  cmd0     [kernel.kallsyms]     [k] psi_group_change        [k] pei_group_change
           0.08%  cmd1     [kernel.kallsyms]     [k] psi_group_change        [k] psi_group_change
      Reviewed-by: default avatarJames Clark <james.clark@arm.com>
      Signed-off-by: default avatarGerman Gomez <german.gomez@arm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lore.kernel.org/r/20220126105927.3411216-1-german.gomez@arm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      05b5a9d6
    • Masanari Iida's avatar
      perf bpf: Fix a typo in bpf_counter_cgroup.c · a2887b9b
      Masanari Iida authored
      This patch fixes a spelling typo in error message.
      Signed-off-by: default avatarMasanari Iida <standby24x7@gmail.com>
      Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: https://lore.kernel.org/r/20211225005558.503935-1-standby24x7@gmail.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      a2887b9b
    • Leo Yan's avatar
      perf synthetic-events: Return error if procfs isn't mounted for PID namespaces · bc9c806e
      Leo Yan authored
      For perf recording, it retrieves process info by iterating nodes in proc
      fs.  If we run perf in a non-root PID namespace with command:
      
        # unshare --fork --pid perf record -e cycles -a -- test_program
      
      ... in this case, unshare command creates a child PID namespace and
      launches perf tool in it, but the issue is the proc fs is not mounted
      for the non-root PID namespace, this leads to the perf tool gathering
      process info from its parent PID namespace.
      
      We can use below command to observe the process nodes under proc fs:
      
        # unshare --pid --fork ls /proc
      1    137   1968  2128  3    342  48  62   78	     crypto	  kcore        net	      uptime
      10   138   2	 2142  30   35	 49  63   8	     devices	  keys	       pagetypeinfo   version
      11   139   20	 2143  304  36	 50  64   82	     device-tree  key-users    partitions     vmallocinfo
      12   14    2011  22    305  37	 51  65   83	     diskstats	  kmsg	       self	      vmstat
      128  140   2038  23    307  39	 52  656  84	     driver	  kpagecgroup  slabinfo       zoneinfo
      129  15    2074  24    309  4	 53  67   9	     execdomains  kpagecount   softirqs
      13   16    2094  241   31   40	 54  68   asound     fb		  kpageflags   stat
      130  164   2096  242   310  41	 55  69   buddyinfo  filesystems  loadavg      swaps
      131  17    2098  25    317  42	 56  70   bus	     fs		  locks        sys
      132  175   21	 26    32   43	 57  71   cgroups    interrupts   meminfo      sysrq-trigger
      133  179   2102  263   329  44	 58  75   cmdline    iomem	  misc	       sysvipc
      134  1875  2103  27    330  45	 59  76   config.gz  ioports	  modules      thread-self
      135  19    2117  29    333  46	 6   77   consoles   irq	  mounts       timer_list
      136  1941  2121  298   34   47	 60  773  cpuinfo    kallsyms	  mtd	       tty
      
      So it shows many existed tasks, since unshared command has not mounted
      the proc fs for the new created PID namespace, it still accesses the
      proc fs of the root PID namespace.  This leads to two prominent issues:
      
      - Firstly, PID values are mismatched between thread info and samples.
        The gathered thread info are coming from the proc fs of the root PID
        namespace, but samples record its PID from the child PID namespace.
      
      - The second issue is profiled program 'test_program' returns its forked
        PID number from the child PID namespace, perf tool wrongly uses this
        PID number to retrieve the process info via the proc fs of the root
        PID namespace.
      
      To avoid issues, we need to mount proc fs for the child PID namespace
      with the option '--mount-proc' when use unshare command:
      
        # unshare --fork --pid --mount-proc perf record -e cycles -a -- test_program
      
      Conversely, when the proc fs of the root PID namespace is used by child
      namespace, perf tool can detect the multiple PID levels and
      nsinfo__is_in_root_namespace() returns false, this patch reports error
      for this case:
      
        # unshare --fork --pid perf record -e cycles -a -- test_program
        Couldn't synthesize bpf events.
        Perf runs in non-root PID namespace but it tries to gather process info from its parent PID namespace.
        Please mount the proc file system properly, e.g. add the option '--mount-proc' for unshare command.
      Reviewed-by: default avatarJames Clark <james.clark@arm.com>
      Signed-off-by: default avatarLeo Yan <leo.yan@linaro.org>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Alexei Starovoitov <ast@kernel.org>
      Cc: Andrii Nakryiko <andrii@kernel.org>
      Cc: Daniel Borkmann <daniel@iogearbox.net>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: John Fastabend <john.fastabend@gmail.com>
      Cc: KP Singh <kpsingh@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      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>
      Link: https://lore.kernel.org/r/20211224124014.2492751-1-leo.yan@linaro.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      bc9c806e
    • Ameer Hamza's avatar
      perf session: Check for NULL pointer before dereference · d792a7a9
      Ameer Hamza authored
      Move NULL pointer check before dereferencing the variable.
      
      Addresses-Coverity: 1497622 ("Derereference before null check")
      Reviewed-by: default avatarJames Clark <james.clark@arm.com>
      Signed-off-by: default avatarAmeer Hamza <amhamza.mgc@gmail.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Alexey Bayduraev <alexey.v.bayduraev@linux.intel.com>
      Cc: German Gomez <german.gomez@arm.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Leo Yan <leo.yan@linaro.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Riccardo Mancini <rickyman7@gmail.com>
      Link: https://lore.kernel.org/r/20220125121141.18347-1-amhamza.mgc@gmail.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      d792a7a9
    • Namhyung Kim's avatar
      perf annotate: Set error stream of objdump process for TUI · a663520f
      Namhyung Kim authored
      The stderr should be set to a pipe when using TUI.  Otherwise it'd
      print to stdout and break TUI windows with an error message.
      Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20220202070828.143303-2-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      a663520f
    • Anshuman Khandual's avatar
      perf tools: Add missing branch_sample_type to perf_event_attr__fprintf() · ae65b443
      Anshuman Khandual authored
      This updates branch sample type with missing PERF_SAMPLE_BRANCH_TYPE_SAVE.
      Suggested-by: default avatarJames Clark <james.clark@arm.com>
      Signed-off-by: default avatarAnshuman Khandual <anshuman.khandual@arm.com>
      Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
      Cc: James Clark <james.clark@arm.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: linux-arm-kernel@lists.infradead.org
      Link: http://lore.kernel.org/lkml/1643799443-15109-1-git-send-email-anshuman.khandual@arm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      ae65b443
    • Arnaldo Carvalho de Melo's avatar
      tools headers UAPI: Sync linux/kvm.h with the kernel sources · b7b9825f
      Arnaldo Carvalho de Melo authored
      To pick the changes in:
      
        f6c6804c ("kvm: Move KVM_GET_XSAVE2 IOCTL definition at the end of kvm.h")
      
      That just rebuilds perf, as these patches don't add any new KVM ioctl to
      be harvested for the the 'perf trace' ioctl syscall argument
      beautifiers.
      
      This is also by now used by tools/testing/selftests/kvm/, a simple test
      build succeeded.
      
      This silences this perf build warning:
      
        Warning: Kernel ABI header at 'tools/include/uapi/linux/kvm.h' differs from latest version at 'include/uapi/linux/kvm.h'
        diff -u tools/include/uapi/linux/kvm.h include/uapi/linux/kvm.h
      
      Cc: Janosch Frank <frankja@linux.ibm.com>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Link: http://lore.kernel.org/lkml/Yf+4k5Fs5Q3HdSG9@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      b7b9825f
    • Arnaldo Carvalho de Melo's avatar
      Merge remote-tracking branch 'torvalds/master' into perf/urgent · 9334030c
      Arnaldo Carvalho de Melo authored
      To check if more kernel API sync is needed and also to see if the perf
      build tests continue to pass.
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      9334030c
  6. 05 Feb, 2022 7 commits
    • Linus Torvalds's avatar
      Merge tag 'for-linus-5.17a-rc3-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip · 90c9e950
      Linus Torvalds authored
      Pull xen fixes from Juergen Gross:
      
       - documentation fixes related to Xen
      
       - enable x2apic mode when available when running as hardware
         virtualized guest under Xen
      
       - cleanup and fix a corner case of vcpu enumeration when running a
         paravirtualized Xen guest
      
      * tag 'for-linus-5.17a-rc3-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
        x86/Xen: streamline (and fix) PV CPU enumeration
        xen: update missing ioctl magic numers documentation
        Improve docs for IOCTL_GNTDEV_MAP_GRANT_REF
        xen: xenbus_dev.h: delete incorrect file name
        xen/x2apic: enable x2apic mode when supported for HVM
      90c9e950
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · 5fdb2621
      Linus Torvalds authored
      Pull kvm fixes from Paolo Bonzini:
       "ARM:
      
         - A couple of fixes when handling an exception while a SError has
           been delivered
      
         - Workaround for Cortex-A510's single-step erratum
      
        RISC-V:
      
         - Make CY, TM, and IR counters accessible in VU mode
      
         - Fix SBI implementation version
      
        x86:
      
         - Report deprecation of x87 features in supported CPUID
      
         - Preparation for fixing an interrupt delivery race on AMD hardware
      
         - Sparse fix
      
        All except POWER and s390:
      
         - Rework guest entry code to correctly mark noinstr areas and fix
           vtime' accounting (for x86, this was already mostly correct but not
           entirely; for ARM, MIPS and RISC-V it wasn't)"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
        KVM: x86: Use ERR_PTR_USR() to return -EFAULT as a __user pointer
        KVM: x86: Report deprecated x87 features in supported CPUID
        KVM: arm64: Workaround Cortex-A510's single-step and PAC trap errata
        KVM: arm64: Stop handle_exit() from handling HVC twice when an SError occurs
        KVM: arm64: Avoid consuming a stale esr value when SError occur
        RISC-V: KVM: Fix SBI implementation version
        RISC-V: KVM: make CY, TM, and IR counters accessible in VU mode
        kvm/riscv: rework guest entry logic
        kvm/arm64: rework guest entry logic
        kvm/x86: rework guest entry logic
        kvm/mips: rework guest entry logic
        kvm: add guest_state_{enter,exit}_irqoff()
        KVM: x86: Move delivery of non-APICv interrupt into vendor code
        kvm: Move KVM_GET_XSAVE2 IOCTL definition at the end of kvm.h
      5fdb2621
    • Linus Torvalds's avatar
      Merge tag 'xfs-5.17-fixes-1' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux · fbc04bf0
      Linus Torvalds authored
      Pull xfs fixes from Darrick Wong:
       "I was auditing operations in XFS that clear file privileges, and
        realized that XFS' fallocate implementation drops suid/sgid but
        doesn't clear file capabilities the same way that file writes and
        reflink do.
      
        There are VFS helpers that do it correctly, so refactor XFS to use
        them. I also noticed that we weren't flushing the log at the correct
        point in the fallocate operation, so that's fixed too.
      
        Summary:
      
         - Fix fallocate so that it drops all file privileges when files are
           modified instead of open-coding that incompletely.
      
         - Fix fallocate to flush the log if the caller wanted synchronous
           file updates"
      
      * tag 'xfs-5.17-fixes-1' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux:
        xfs: ensure log flush at the end of a synchronous fallocate call
        xfs: move xfs_update_prealloc_flags() to xfs_pnfs.c
        xfs: set prealloc flag in xfs_alloc_file_space()
        xfs: fallocate() should call file_modified()
        xfs: remove XFS_PREALLOC_SYNC
        xfs: reject crazy array sizes being fed to XFS_IOC_GETBMAP*
      fbc04bf0
    • Linus Torvalds's avatar
      Merge tag 'vfs-5.17-fixes-2' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux · ea7b3e6d
      Linus Torvalds authored
      Pull vfs fixes from Darrick Wong:
       "I was auditing the sync_fs code paths recently and noticed that most
        callers of ->sync_fs ignore its return value (and many implementations
        never return nonzero even if the fs is broken!), which means that
        internal fs errors and corruption are not passed up to userspace
        callers of syncfs(2) or FIFREEZE. Hence fixing the common code and
        XFS, and I'll start working on the ext4/btrfs folks if this is merged.
      
        Summary:
      
         - Fix a bug where callers of ->sync_fs (e.g. sync_filesystem and
           syncfs(2)) ignore the return value.
      
         - Fix a bug where callers of sync_filesystem (e.g. fs freeze) ignore
           the return value.
      
         - Fix a bug in XFS where xfs_fs_sync_fs never passed back error
           returns"
      
      * tag 'vfs-5.17-fixes-2' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux:
        xfs: return errors in xfs_fs_sync_fs
        quota: make dquot_quota_sync return errors from ->sync_fs
        vfs: make sync_filesystem return errors from ->sync_fs
        vfs: make freeze_super abort when sync_filesystem returns error
      ea7b3e6d
    • Linus Torvalds's avatar
      Merge tag 'iomap-5.17-fixes-1' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux · 524446e2
      Linus Torvalds authored
      Pull iomap fix from Darrick Wong:
       "A single bugfix for iomap.
      
        The fix should eliminate occasional complaints about stall warnings
        when a lot of writeback IO completes all at once and we have to then
        go clearing status on a large number of folios.
      
        Summary:
      
         - Limit the length of ioend chains in writeback so that we don't trip
           the softlockup watchdog and to limit long tail latency on clearing
           PageWriteback"
      
      * tag 'iomap-5.17-fixes-1' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux:
        xfs, iomap: limit individual ioend chain lengths in writeback
      524446e2
    • Paolo Bonzini's avatar
      Merge tag 'kvmarm-fixes-5.17-2' of... · 7e6a6b40
      Paolo Bonzini authored
      Merge tag 'kvmarm-fixes-5.17-2' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD
      
      KVM/arm64 fixes for 5.17, take #2
      
      - A couple of fixes when handling an exception while a SError has been
        delivered
      
      - Workaround for Cortex-A510's single-step[ erratum
      7e6a6b40
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma · 0457e515
      Linus Torvalds authored
      Pull rdma fixes from Jason Gunthorpe:
       "Some medium sized bugs in the various drivers. A couple are more
        recent regressions:
      
         - Fix two panics in hfi1 and two allocation problems
      
         - Send the IGMP to the correct address in cma
      
         - Squash a syzkaller bug related to races reading the multicast list
      
         - Memory leak in siw and cm
      
         - Fix a corner case spec compliance for HFI/QIB
      
         - Correct the implementation of fences in siw
      
         - Error unwind bug in mlx4"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma:
        RDMA/mlx4: Don't continue event handler after memory allocation failure
        RDMA/siw: Fix broken RDMA Read Fence/Resume logic.
        IB/rdmavt: Validate remote_addr during loopback atomic tests
        IB/cm: Release previously acquired reference counter in the cm_id_priv
        RDMA/siw: Fix refcounting leak in siw_create_qp()
        RDMA/ucma: Protect mc during concurrent multicast leaves
        RDMA/cma: Use correct address when leaving multicast group
        IB/hfi1: Fix tstats alloc and dealloc
        IB/hfi1: Fix AIP early init panic
        IB/hfi1: Fix alloc failure with larger txqueuelen
        IB/hfi1: Fix panic with larger ipoib send_queue_size
      0457e515
  7. 04 Feb, 2022 9 commits
    • Linus Torvalds's avatar
      Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · fc93310c
      Linus Torvalds authored
      Pull SCSI fixes from James Bottomley:
       "Seven fixes, six of which are fairly obvious driver fixes.
      
        The one core change to the device budget depth is to try to ensure
        that if the default depth is large (which can produce quite a sizeable
        bitmap allocation per device), we give back the memory we don't need
        if there's a queue size reduction in slave_configure (which happens to
        a lot of devices)"
      
      * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
        scsi: hisi_sas: Fix setting of hisi_sas_slot.is_internal
        scsi: pm8001: Fix use-after-free for aborted SSP/STP sas_task
        scsi: pm8001: Fix use-after-free for aborted TMF sas_task
        scsi: pm8001: Fix warning for undescribed param in process_one_iomb()
        scsi: core: Reallocate device's budget map on queue depth change
        scsi: bnx2fc: Make bnx2fc_recv_frame() mp safe
        scsi: pm80xx: Fix double completion for SATA devices
      fc93310c
    • Linus Torvalds's avatar
      Merge tag 'pci-v5.17-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci · e09e1a40
      Linus Torvalds authored
      Pull pci fixes from Bjorn Helgaas:
      
       - Restructure j721e_pcie_probe() so we don't dereference a NULL pointer
         (Bjorn Helgaas)
      
       - Add a kirin_pcie_data struct to identify different Kirin variants to
         fix probe failure for controllers with an internal PHY (Bjorn
         Helgaas)
      
      * tag 'pci-v5.17-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
        PCI: kirin: Add dev struct for of_device_get_match_data()
        PCI: j721e: Initialize pcie->cdns_pcie before using it
      e09e1a40
    • Bjorn Helgaas's avatar
      PCI: kirin: Add dev struct for of_device_get_match_data() · 7dd38762
      Bjorn Helgaas authored
      Bean reported that a622435f ("PCI: kirin: Prefer
      of_device_get_match_data()") broke kirin_pcie_probe() because it assumed
      match data of 0 was a failure when in fact, it meant the match data was
      "(void *)PCIE_KIRIN_INTERNAL_PHY".
      
      Therefore, probing of "hisilicon,kirin960-pcie" devices failed with -EINVAL
      and an "OF data missing" message.
      
      Add a struct kirin_pcie_data to encode the PHY type.  Then the result of
      of_device_get_match_data() should always be a non-NULL pointer to a struct
      kirin_pcie_data that contains the PHY type.
      
      Fixes: a622435f ("PCI: kirin: Prefer of_device_get_match_data()")
      Link: https://lore.kernel.org/r/20220202162659.GA12603@bhelgaas
      Link: https://lore.kernel.org/r/20220201215941.1203155-1-huobean@gmail.comReported-by: default avatarBean Huo <beanhuo@micron.com>
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      7dd38762
    • Linus Torvalds's avatar
      Merge tag 'for-5.17-rc2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux · 86286e48
      Linus Torvalds authored
      Pull btrfs fixes from David Sterba:
       "A few fixes and error handling improvements:
      
         - fix deadlock between quota disable and qgroup rescan worker
      
         - fix use-after-free after failure to create a snapshot
      
         - skip warning on unmount after log cleanup failure
      
         - don't start transaction for scrub if the fs is mounted read-only
      
         - tree checker verifies item sizes"
      
      * tag 'for-5.17-rc2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
        btrfs: skip reserved bytes warning on unmount after log cleanup failure
        btrfs: fix use of uninitialized variable at rm device ioctl
        btrfs: fix use-after-free after failure to create a snapshot
        btrfs: tree-checker: check item_size for dev_item
        btrfs: tree-checker: check item_size for inode_item
        btrfs: fix deadlock between quota disable and qgroup rescan worker
        btrfs: don't start transaction for scrub if the fs is mounted read-only
      86286e48
    • Linus Torvalds's avatar
      Merge tag 'erofs-for-5.17-rc3-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs · b0bc0cb8
      Linus Torvalds authored
      Pull erofs fixes from Gao Xiang:
       "Two fixes related to fsdax cleanup in this cycle and ztailpacking to
        fix small compressed data inlining. There is also a trivial cleanup to
        rearrange code for better reading.
      
        Summary:
      
         - fix fsdax partition offset misbehavior
      
         - clean up z_erofs_decompressqueue_work() declaration
      
         - fix up EOF lcluster inlining, especially for small compressed data"
      
      * tag 'erofs-for-5.17-rc3-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs:
        erofs: fix small compressed files inlining
        erofs: avoid unnecessary z_erofs_decompressqueue_work() declaration
        erofs: fix fsdax partition offset handling
      b0bc0cb8
    • Linus Torvalds's avatar
      Merge tag 'block-5.17-2022-02-04' of git://git.kernel.dk/linux-block · 7c4a9459
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
      
       - NVMe pull request
          - fix use-after-free in rdma and tcp controller reset (Sagi Grimberg)
          - fix the state check in nvmf_ctlr_matches_baseopts (Uday Shankar)
      
       - MD nowait null pointer fix (Song)
      
       - blk-integrity seed advance fix (Martin)
      
       - Fix a dio regression in this merge window (Ilya)
      
      * tag 'block-5.17-2022-02-04' of git://git.kernel.dk/linux-block:
        block: bio-integrity: Advance seed correctly for larger interval sizes
        nvme-fabrics: fix state check in nvmf_ctlr_matches_baseopts()
        md: fix NULL pointer deref with nowait but no mddev->queue
        block: fix DIO handling regressions in blkdev_read_iter()
        nvme-rdma: fix possible use-after-free in transport error_recovery work
        nvme-tcp: fix possible use-after-free in transport error_recovery work
        nvme: fix a possible use-after-free in controller reset during load
      7c4a9459
    • Linus Torvalds's avatar
      Merge tag 'ata-5.17-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/libata · 494a2c2b
      Linus Torvalds authored
      Pull ATA fixes from Damien Le Moal:
      
       - Sergey volunteered to be a reviewer for the Renesas R-Car SATA driver
         and PATA drivers. Update the MAINTAINERS file accordingly.
      
       - Regression fix: add a horkage flag to prevent accessing the log
         directory log page with SATADOM-ML 3ME SATA devices as they react
         badly to reading that log page (from Anton).
      
      * tag 'ata-5.17-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/dlemoal/libata:
        ata: libata-core: Introduce ATA_HORKAGE_NO_LOG_DIR horkage
        MAINTAINERS: add myself as Renesas R-Car SATA driver reviewer
        MAINTAINERS: add myself as PATA drivers reviewer
      494a2c2b
    • Linus Torvalds's avatar
      Merge tag 'iommu-fixes-v5.17-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu · 07cd9ac4
      Linus Torvalds authored
      Pull iommu fixes from Joerg Roedel:
      
       - Warning fixes and a fix for a potential use-after-free in IOMMU core
         code
      
       - Another potential memory leak fix for the Intel VT-d driver
      
       - Fix for an IO polling loop timeout issue in the AMD IOMMU driver
      
      * tag 'iommu-fixes-v5.17-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu:
        iommu/amd: Fix loop timeout issue in iommu_ga_log_enable()
        iommu/vt-d: Fix potential memory leak in intel_setup_irq_remapping()
        iommu: Fix some W=1 warnings
        iommu: Fix potential use-after-free during probe
      07cd9ac4
    • Linus Torvalds's avatar
      Merge tag 'random-5.17-rc3-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/crng/random · ba6ef8af
      Linus Torvalds authored
      Pull random number generator fixes from Jason Donenfeld:
       "For this week, we have:
      
         - A fix to make more frequent use of hwgenerator randomness, from
           Dominik.
      
         - More cleanups to the boot initialization sequence, from Dominik.
      
         - A fix for an old shortcoming with the ZAP ioctl, from me.
      
         - A workaround for a still unfixed Clang CFI/FullLTO compiler bug,
           from me. On one hand, it's a bummer to commit workarounds for
           experimental compiler features that have bugs. But on the other, I
           think this actually improves the code somewhat, independent of the
           bug. So a win-win"
      
      * tag 'random-5.17-rc3-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/crng/random:
        random: only call crng_finalize_init() for primary_crng
        random: access primary_pool directly rather than through pointer
        random: wake up /dev/random writers after zap
        random: continually use hwgenerator randomness
        lib/crypto: blake2s: avoid indirect calls to compression function for Clang CFI
      ba6ef8af