1. 02 Jul, 2021 6 commits
    • Linus Torvalds's avatar
      Merge tag 'asm-generic-unaligned-5.14' of... · 4cad6719
      Linus Torvalds authored
      Merge tag 'asm-generic-unaligned-5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic
      
      Pull asm/unaligned.h unification from Arnd Bergmann:
       "Unify asm/unaligned.h around struct helper
      
        The get_unaligned()/put_unaligned() helpers are traditionally
        architecture specific, with the two main variants being the
        "access-ok.h" version that assumes unaligned pointer accesses always
        work on a particular architecture, and the "le-struct.h" version that
        casts the data to a byte aligned type before dereferencing, for
        architectures that cannot always do unaligned accesses in hardware.
      
        Based on the discussion linked below, it appears that the access-ok
        version is not realiable on any architecture, but the struct version
        probably has no downsides. This series changes the code to use the
        same implementation on all architectures, addressing the few
        exceptions separately"
      
      Link: https://lore.kernel.org/lkml/75d07691-1e4f-741f-9852-38c0b4f520bc@synopsys.com/
      Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100363
      Link: https://lore.kernel.org/lkml/20210507220813.365382-14-arnd@kernel.org/
      Link: git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic.git unaligned-rework-v2
      Link: https://lore.kernel.org/lkml/CAHk-=whGObOKruA_bU3aPGZfoDqZM1_9wBkwREp0H0FgR-90uQ@mail.gmail.com/
      
      * tag 'asm-generic-unaligned-5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic:
        asm-generic: simplify asm/unaligned.h
        asm-generic: uaccess: 1-byte access is always aligned
        netpoll: avoid put_unaligned() on single character
        mwifiex: re-fix for unaligned accesses
        apparmor: use get_unaligned() only for multi-byte words
        partitions: msdos: fix one-byte get_unaligned()
        asm-generic: unaligned always use struct helpers
        asm-generic: unaligned: remove byteshift helpers
        powerpc: use linux/unaligned/le_struct.h on LE power7
        m68k: select CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
        sh: remove unaligned access for sh4a
        openrisc: always use unaligned-struct header
        asm-generic: use asm-generic/unaligned.h for most architectures
      4cad6719
    • Linus Torvalds's avatar
      Merge tag 'perf-tools-for-v5.14-2021-07-01' of... · 40625491
      Linus Torvalds authored
      Merge tag 'perf-tools-for-v5.14-2021-07-01' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux
      
      Pull perf tool updates from Arnaldo Carvalho de Melo:
       "Tools:
      
         - Add cgroup support for 'perf top' (-G).
      
         - Add support for KVM MSRs in 'perf kvm stat'
      
         - Support probes on init functions in 'perf probe', to support the
           bootconfig format.
      
         - Improve error reporting in 'perf probe'.
      
         - No need to synthesize BUILD_ID records in 'perf inject' if the
           MMAP2 records have build ids already.
      
         - Allow toggling source code ('s' hotkey) in 'perf annotate' in all
           lines.
      
         - Add itrace options support to 'perf annotate'.
      
         - Support to custom DSO filters for 'perf script'.
      
        Hardware enablement:
      
         - Support the HYBRID_TOPOLOGY and HYBRID_CPU_PMU_CAPS features in the
           perf.data file header.
      
         - Support PMU prefix for mem-load and mem-store events, to support
           hybrid (BIG little) CPUs such as Intel's Alderlake.
      
         - Support hybrid CPUs in 'perf mem' and 'perf c2c'.
      
        Hardware tracing:
      
         - Intel PT now supports tracing KVM guests.
      
         - Timestamp improvements for ARM's Coresight.
      
        Build:
      
         - Add 'make -C tools/perf build-test' entries for
           libopencsd/CORESIGHT=1 and libbpf/LIBBPF_DYNAMIC=1.
      
         - Use bison's --file-prefix-map option to avoid storing full paths
           when using O= in the perf build.
      
        Tests:
      
         - Improve the 'perf test' entries for libpfm4 and BPF counters.
      
        Misc:
      
         - Sync msr-index.h, mount.h, kvm headers with the kernel originals.
      
         - Add vendor events and metrics for Intel's Icelake Server & Client"
      
      * tag 'perf-tools-for-v5.14-2021-07-01' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux: (123 commits)
        perf session: Add missing evlist__delete when deleting a session
        perf annotate: Allow 's' on source code lines
        perf dlfilter: Add object_code() to perf_dlfilter_fns
        perf dlfilter: Add attr() to perf_dlfilter_fns
        perf dlfilter: Add srcline() to perf_dlfilter_fns
        perf dlfilter: Add insn() to perf_dlfilter_fns
        perf dlfilter: Add resolve_address() to perf_dlfilter_fns
        perf build: Install perf_dlfilter.h
        perf script: Add option to pass arguments to dlfilters
        perf script: Add option to list dlfilters
        perf script: Add dlfilter__filter_event_early()
        perf script: Add API for filtering via dynamically loaded shared object
        perf llvm: Return -ENOMEM when asprintf() fails
        perf cs-etm: Delay decode of non-timeless data until cs_etm__flush_events()
        tools headers UAPI: Synch KVM's svm.h header with the kernel
        tools kvm headers arm64: Update KVM headers from the kernel sources
        tools headers UAPI: Sync linux/kvm.h with the kernel sources
        tools headers cpufeatures: Sync with the kernel sources
        tools include UAPI: Update linux/mount.h copy
        tools arch x86: Sync the msr-index.h copy with the kernel sources
        ...
      40625491
    • Linus Torvalds's avatar
      Merge branch 'akpm' (patches from Andrew) · 71bd9341
      Linus Torvalds authored
      Merge more updates from Andrew Morton:
       "190 patches.
      
        Subsystems affected by this patch series: mm (hugetlb, userfaultfd,
        vmscan, kconfig, proc, z3fold, zbud, ras, mempolicy, memblock,
        migration, thp, nommu, kconfig, madvise, memory-hotplug, zswap,
        zsmalloc, zram, cleanups, kfence, and hmm), procfs, sysctl, misc,
        core-kernel, lib, lz4, checkpatch, init, kprobes, nilfs2, hfs,
        signals, exec, kcov, selftests, compress/decompress, and ipc"
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (190 commits)
        ipc/util.c: use binary search for max_idx
        ipc/sem.c: use READ_ONCE()/WRITE_ONCE() for use_global_lock
        ipc: use kmalloc for msg_queue and shmid_kernel
        ipc sem: use kvmalloc for sem_undo allocation
        lib/decompressors: remove set but not used variabled 'level'
        selftests/vm/pkeys: exercise x86 XSAVE init state
        selftests/vm/pkeys: refill shadow register after implicit kernel write
        selftests/vm/pkeys: handle negative sys_pkey_alloc() return code
        selftests/vm/pkeys: fix alloc_random_pkey() to make it really, really random
        kcov: add __no_sanitize_coverage to fix noinstr for all architectures
        exec: remove checks in __register_bimfmt()
        x86: signal: don't do sas_ss_reset() until we are certain that sigframe won't be abandoned
        hfsplus: report create_date to kstat.btime
        hfsplus: remove unnecessary oom message
        nilfs2: remove redundant continue statement in a while-loop
        kprobes: remove duplicated strong free_insn_page in x86 and s390
        init: print out unknown kernel parameters
        checkpatch: do not complain about positive return values starting with EPOLL
        checkpatch: improve the indented label test
        checkpatch: scripts/spdxcheck.py now requires python3
        ...
      71bd9341
    • Linus Torvalds's avatar
      Merge branch 'for-5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup · 3dbdb38e
      Linus Torvalds authored
      Pull cgroup updates from Tejun Heo:
      
       - cgroup.kill is added which implements atomic killing of the whole
         subtree.
      
         Down the line, this should be able to replace the multiple userland
         implementations of "keep killing till empty".
      
       - PSI can now be turned off at boot time to avoid overhead for
         configurations which don't care about PSI.
      
      * 'for-5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:
        cgroup: make per-cgroup pressure stall tracking configurable
        cgroup: Fix kernel-doc
        cgroup: inline cgroup_task_freeze()
        tests/cgroup: test cgroup.kill
        tests/cgroup: move cg_wait_for(), cg_prepare_for_wait()
        tests/cgroup: use cgroup.kill in cg_killall()
        docs/cgroup: add entry for cgroup.kill
        cgroup: introduce cgroup.kill
      3dbdb38e
    • Linus Torvalds's avatar
      Merge branch 'for-5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/dennis/percpu · e267992f
      Linus Torvalds authored
      Pull percpu updates from Dennis Zhou:
      
       - percpu chunk depopulation - depopulate backing pages for chunks with
         empty pages when we exceed a global threshold without those pages.
         This lets us reclaim a portion of memory that would previously be
         lost until the full chunk would be freed (possibly never).
      
       - memcg accounting cleanup - previously separate chunks were managed
         for normal allocations and __GFP_ACCOUNT allocations. These are now
         consolidated which cleans up the code quite a bit.
      
       - a few misc clean ups for clang warnings
      
      * 'for-5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/dennis/percpu:
        percpu: optimize locking in pcpu_balance_workfn()
        percpu: initialize best_upa variable
        percpu: rework memcg accounting
        mm, memcg: introduce mem_cgroup_kmem_disabled()
        mm, memcg: mark cgroup_memory_nosocket, nokmem and noswap as __ro_after_init
        percpu: make symbol 'pcpu_free_slot' static
        percpu: implement partial chunk depopulation
        percpu: use pcpu_free_slot instead of pcpu_nr_slots - 1
        percpu: factor out pcpu_check_block_hint()
        percpu: split __pcpu_balance_workfn()
        percpu: fix a comment about the chunks ordering
      e267992f
    • Linus Torvalds's avatar
      Merge tag 'mips_5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux · 19b43859
      Linus Torvalds authored
      Pull MIPS updates from Thomas Bogendoerfer:
      
       - add support for OpeneEmbed SOM9331 board
      
       - Ingenic fixes/improvments
      
       - other fixes and cleanups
      
      * tag 'mips_5.14' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux: (39 commits)
        MIPS: Fix PKMAP with 32-bit MIPS huge page support
        MIPS: CI20: Add second percpu timer for SMP.
        MIPS: CI20: Reduce clocksource to 750 kHz.
        MIPS: Ingenic: Add MAC syscon nodes for Ingenic SoCs.
        dt-bindings: clock: Add documentation for MAC PHY control bindings.
        MIPS: X1830: Respect cell count of common properties.
        MIPS: set mips32r5 for virt extensions
        MIPS: loongsoon64: Reserve memory below starting pfn to prevent Oops
        MIPS: MT extensions are not available on MIPS32r1
        mips/kvm: Use BUG_ON instead of if condition followed by BUG
        MIPS: OCTEON: octeon-usb: Use devm_platform_get_and_ioremap_resource()
        MIPS: add PMD table accounting into MIPS'pmd_alloc_one
        MIPS: Loongson64: fix spelling of SPDX tag
        MIPS: ingenic: rs90: Add dedicated VRAM memory region
        MIPS: ingenic: gcw0: Set codec to cap-less mode for FM radio
        MIPS: ingenic: jz4780: Fix I2C nodes to match DT doc
        MIPS: ingenic: Select CPU_SUPPORTS_CPUFREQ && MIPS_EXTERNAL_TIMER
        MIPS: Kconfig: ingenic: Ensure MACH_INGENIC_GENERIC selects all SoCs
        MIPS: cpu-probe: Fix FPU detection on Ingenic JZ4760(B)
        MIPS: boot: Support specifying UART port on Ingenic SoCs
        ...
      19b43859
  2. 01 Jul, 2021 34 commits
    • Linus Torvalds's avatar
      Merge tag 'pinctrl-v5.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl · a32b344e
      Linus Torvalds authored
      Pull pin control updates from Linus Walleij:
       "This is the bulk of pin control changes for the v5.14 kernel. Not so
        much going on. No core changes, just drivers.
      
        The most interesting would be that MIPS Ralink is migrating to pin
        control and we have some bindings but not yet code for the Apple M1
        pin controller.
      
        New drivers:
      
         - Last merge window we created a driver for the Ralink RT2880. We are
           now moving the Ralink SoC pin control drivers out of the MIPS
           architecture code and into the pin control subsystem. This concerns
           RT288X, MT7620, RT305X, RT3883 and MT7621.
      
         - Qualcomm SM6125 SoC pin control driver.
      
         - Qualcomm spmi-gpio support for PM7325.
      
         - Qualcomm spmi-mpp also handles PMI8994 (just a compatible string)
      
         - Mediatek MT8365 SoC pin controller.
      
         - New device HID for the AMD GPIO controller.
      
        Improvements:
      
         - Pin bias config support for a slew of Renesas pin controllers.
      
         - Incremental improvements and non-urgent bug fixes to the Renesas
           SoC drivers.
      
         - Implement irq_set_wake on the AMD pin controller so we can wake up
           from external pin events.
      
        Misc:
      
         - Devicetree bindings for the Apple M1 pin controller, we will
           probably see a proper driver for this soon as well"
      
      * tag 'pinctrl-v5.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: (54 commits)
        pinctrl: ralink: rt305x: add missing include
        pinctrl: stm32: check for IRQ MUX validity during alloc()
        pinctrl: zynqmp: some code cleanups
        drivers: qcom: pinctrl: Add pinctrl driver for sm6125
        dt-bindings: pinctrl: qcom: sm6125: Document SM6125 pinctrl driver
        dt-bindings: pinctrl: mcp23s08: add documentation for reset-gpios
        pinctrl: mcp23s08: Add optional reset GPIO
        pinctrl: mediatek: fix mode encoding
        pinctrl: mcp23s08: Fix missing unlock on error in mcp23s08_irq()
        pinctrl: bcm: Constify static pinmux_ops
        pinctrl: bcm: Constify static pinctrl_ops
        pinctrl: ralink: move RT288X SoC pinmux config into a new 'pinctrl-rt288x.c' file
        pinctrl: ralink: move MT7620 SoC pinmux config into a new 'pinctrl-mt7620.c' file
        pinctrl: ralink: move RT305X SoC pinmux config into a new 'pinctrl-rt305x.c' file
        pinctrl: ralink: move RT3883 SoC pinmux config into a new 'pinctrl-rt3883.c' file
        pinctrl: ralink: move MT7621 SoC pinmux config into a new 'pinctrl-mt7621.c' file
        pinctrl: ralink: move ralink architecture pinmux header into the driver
        pinctrl: single: config: enable the pin's input
        pinctrl: mtk: Fix mt8365 Kconfig dependency
        pinctrl: mcp23s08: fix race condition in irq handler
        ...
      a32b344e
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma · e04360a2
      Linus Torvalds authored
      Pull rdma updates from Jason Gunthorpe:
       "This contains a replacement driver for Intel iWarp hardware. This new
        driver supports the old ethernet hardware and also newer chips that
        can do ROCE.
      
        Other than that, this contains the typical mix of patches:
      
         - Driver updates and cleanups for bnxt_re, cxgb4, mlx4, and mlx5
      
         - Many static checker driven code clean ups, including a wide
           refcount_t conversion
      
         - Several series for the hns driver, more HIP09 HW capabilities,
           migration to new HW register manipulators, and code cleanups
      
         - Minor fixes and improvements in srp, rts, and cm
      
         - Improvements throughout for sysfs related code to use
           DEVICE_ATTR_*, make the ib_port sysfs first-class, and overall use
           sysfs APIs properly
      
         - Intel's new irdma driver replacing i40iw
      
         - rxe general clean ups and Memory Window support"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma: (211 commits)
        RDMA/core: Always release restrack object
        RDMA/mlx5: Don't access NULL-cleared mpi pointer
        RDMA/irdma: Fix potential overflow expression in irdma_prm_get_pbles
        RDMA/irdma: Check contents of user-space irdma_mem_reg_req object
        RDMA/rxe: Missing unlock on error in get_srq_wqe()
        RDMA/cma: Fix rdma_resolve_route() memory leak
        RDMA/core/sa_query: Remove unused argument
        RDMA/cma: Fix incorrect Packet Lifetime calculation
        RDMA/cma: Protect RMW with qp_mutex
        RDMA/cma: Remove unnecessary INIT->INIT transition
        RDMA/hns: Add window selection field of congestion control
        RDMA/hfi1: Remove use of kmap()
        RDMA/irdma: Remove use of kmap()
        RDMA/bnxt_re: Fix uninitialized struct bit field rsvd1
        IB/isert: Align target max I/O size to initiator size
        RDMA/hns: Fix incorrect vlan enable bit in QPC
        MAINTAINERS: Update Broadcom RDMA maintainers
        RDMA/irdma: Use the queried port attributes
        RDMA/rxe: Fix redundant skb_put_zero
        RDMA/rxe: Fix extra copy in prepare_ack_packet
        ...
      e04360a2
    • Linus Torvalds's avatar
      Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux · 514798d3
      Linus Torvalds authored
      Pull clk updates from Stephen Boyd:
       "This round has a diffstat dominated by Qualcomm clk drivers. Honestly
        though that's just a bunch of data so the diffstat reflects that.
        Looking beyond that there's just a bunch of updates all around in
        various clk drivers. Renesas and NXP (for i.MX) are two SoC vendors
        that have a lot of patches in here.
      
        Overall the driver changes look to be mostly enabling more clks and
        non-critical fixes that we could hold until the next merge window.
      
        I'm especially excited about the series from Arnd that graduates
        clkdev to be the only implementation of clk_get() and clk_put().
        That's a good step in the right direction to migreate eveerything over
        to the common clk framework. Now we don't have to worry about clkdev
        specific details, they're just part of the clk API now.
      
        Core:
         - clkdev is now the only option, i.e. clk_get()/clk_put() is
           implemented in only one place in the kernel instead of in
           drivers/clk/clkdev.c and in architectures that want their own
           implementation
      
        New Drivers:
         - Texas Instruments' LMK04832 Ultra Low-Noise JESD204B Compliant
           Clock Jitter Cleaner With Dual Loop PLLs
         - Qualcomm MDM9607 GCC
         - Qualcomm SC8180X display clks
         - Qualcomm SM6125 GCC
         - Qualcomm SM8250 CAMCC (camera)
         - Renesas RZ/G2L SoC
         - Hisilicon hi3559A SoC
      
        Updates:
         - Stop using clock-output-names in ST clk drivers (yay!)
         - Support secure mode of STM32MP1 SoCs
         - Improve clock support for Actions S500 SoC
         - duty cycle setting support on qcom clks
         - Add TI am33xx spread spectrum clock support
         - Use determine_rate() for the Amlogic pll ops instead of
           round_rate()
         - Restrict Amlogic gp0/1 and audio plls range on g12a/sm1
         - Improve Amlogic axg-audio controller error on deferral
         - Add NNA clocks on Amlogic g12a
         - Reduce memory footprint of Rockchip PLL rate tables
         - A fix for the newly added Rockchip rk3568 clk driver
         - Exported clock for the newly added Rockchip video decoder
         - Remove audio ipg clock from i.MX8MP
         - Remove deprecated legacy clock binding for i.MX SCU clock driver
         - Use common clk-imx8qxp for both i.MX8QXP and i.MX8QM
         - Add multiple clocks to clk-imx8qxp driver (enet, hdmi, lcdif,
           audio, parallel interface)
         - Add dedicated clock ops for i.MX paralel interface
         - Different fixes for clocks controlled by ATF on i.MX SoCs
         - Add A53/A72 frequency scaling support i.MX clk-scu driver
         - Add special case for DCSS clock on suspend for i.MX clk-scu driver
         - Add parent save/restore on suspend/resume to i.MX clk-scu driver
         - Skip runtime PM enablement for CPU clocks in i.MX clk-scu driver
         - Remove the sys1_pll/sys2_pll clock gates for i.MX8MQ and their
           bindings
         - Tegra clk driver no longer deasserts resets on clk_enable as it
           gets in the way of certain power-up sequences
         - Fix compile testing for Tegra clk driver
         - One patch to fix a divider on the Allwinner v3s Audio PLL
         - Add support for CPU core clock boost modes on Renesas R-Car Gen3
         - Add ISPCS (Image Signal Processor) clocks on Renesas R-Car V3U
         - Switch SH/R-Mobile and R-Car "DIV6" clocks to .determine_rate() and
           improve support for multiple parents
         - Switch Renesas RZ/N1 divider clocks to .determine_rate()
         - Add ZA2 (Audio Clock Generator) clock on Renesas R-Car D3
         - Convert ar7 to common clk framework
         - Convert ralink to common clk framework"
      
      * tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux: (161 commits)
        clk: zynqmp: Handle divider specific read only flag
        clk: zynqmp: Use firmware specific mux clock flags
        clk: zynqmp: Use firmware specific divider clock flags
        clk: zynqmp: Use firmware specific common clock flags
        clk: lmk04832: Use of match table
        clk: lmk04832: Depend on SPI
        clk: stm32mp1: new compatible for secure RCC support
        dt-bindings: clock: stm32mp1 new compatible for secure rcc
        dt-bindings: reset: add MCU HOLD BOOT ID for SCMI reset domains on stm32mp15
        dt-bindings: reset: add IDs for SCMI reset domains on stm32mp15
        dt-bindings: clock: add IDs for SCMI clocks on stm32mp15
        reset: stm32mp1: remove stm32mp1 reset
        clk: hisilicon: Add clock driver for hi3559A SoC
        dt-bindings: Document the hi3559a clock bindings
        clk: si5341: Add sysfs properties to allow checking/resetting device faults
        clk: si5341: Add silabs,iovdd-33 property
        clk: si5341: Add silabs,xaxb-ext-clk property
        clk: si5341: Allow different output VDD_SEL values
        clk: si5341: Update initialization magic
        clk: si5341: Check for input clock presence and PLL lock on startup
        ...
      514798d3
    • Linus Torvalds's avatar
      Merge tag 'drm-next-2021-07-01' of git://anongit.freedesktop.org/drm/drm · e058a84b
      Linus Torvalds authored
      Pull drm updates from Dave Airlie:
       "Highlights:
      
         - AMD enables two more GPUs, with resulting header files
      
         - i915 has started to move to TTM for discrete GPU and enable DG1
           discrete GPU support (not by default yet)
      
         - new HyperV drm driver
      
         - vmwgfx adds arm64 support
      
         - TTM refactoring ongoing
      
         - 16bpc display support for AMD hw
      
        Otherwise it's just the usual insane amounts of work all over the
        place in lots of drivers and the core, as mostly summarised below:
      
        Core:
         - mark AGP ioctls as legacy
         - disable force probing for non-master clients
         - HDR metadata property helpers
         - HDMI infoframe signal colorimetry support
         - remove drm_device.pdev pointer
         - remove DRM_KMS_FB_HELPER config option
         - remove drm_pci_alloc/free
         - drm_err_*/drm_dbg_* helpers
         - use drm driver names for fbdev
         - leaked DMA handle fix
         - 16bpc fixed point format fourcc
         - add prefetching memcpy for WC
         - Documentation fixes
      
        aperture:
         - add aperture ownership helpers
      
        dp:
         - aux fixes
         - downstream 0 port handling
         - use extended base receiver capability DPCD
         - Rename DP_PSR_SELECTIVE_UPDATE to better mach eDP spec
         - mst: use khz as link rate during init
         - VCPI fixes for StarTech hub
      
        ttm:
         - provide tt_shrink file via debugfs
         - warn about freeing pinned BOs
         - fix swapping error handling
         - move page alignment into BO
         - cleanup ttm_agp_backend
         - add ttm_sys_manager
         - don't override vm_ops
         - ttm_bo_mmap removed
         - make ttm_resource base of all managers
         - remove VM_MIXEDMAP usage
      
        panel:
         - sysfs_emit support
         - simple: runtime PM support
         - simple: power up panel when reading EDID + caching
      
        bridge:
         - MHDP8546: HDCP support + DT bindings
         - MHDP8546: Register DP AUX channel with userspace
         - TI SN65DSI83 + SN65DSI84: add driver
         - Sil8620: Fix module dependencies
         - dw-hdmi: make CEC driver loading optional
         - Ti-sn65dsi86: refclk fixes, subdrivers, runtime pm
         - It66121: Add driver + DT bindings
         - Adv7511: Support I2S IEC958 encoding
         - Anx7625: fix power-on delay
         - Nwi-dsi: Modesetting fixes; Cleanups
         - lt6911: add missing MODULE_DEVICE_TABLE
         - cdns: fix PM reference leak
      
        hyperv:
         - add new DRM driver for HyperV graphics
      
        efifb:
         - non-PCI device handling fixes
      
        i915:
         - refactor IP/device versioning
         - XeLPD Display IP preperation work
         - ADL-P enablement patches
         - DG1 uAPI behind BROKEN
         - disable mmap ioctl for discerte GPUs
         - start enabling HuC loading for Gen12+
         - major GuC backend rework for new platforms
         - initial TTM support for Discrete GPUs
         - locking rework for TTM prep
         - use correct max source link rate for eDP
         - %p4cc format printing
         - GLK display fixes
         - VLV DSI panel power fixes
         - PSR2 disabled for RKL and ADL-S
         - ACPI _DSM invalid access fixed
         - DMC FW path abstraction
         - ADL-S PCI ID update
         - uAPI headers converted to kerneldoc
         - initial LMEM support for DG1
         - x86/gpu: add Jasperlake to gen11 early quirks
      
        amdgpu:
         - Aldebaran updates + initial SR-IOV
         - new GPU: Beige Goby and Yellow Carp support
         - more LTTPR display work
         - Vangogh updates
         - SDMA 5.x GCR fixes
         - PCIe ASPM support
         - Renoir TMZ enablement
         - initial multiple eDP panel support
         - use fdinfo to track devices/process info
         - pin/unpin TTM fixes
         - free resource on fence usage query
         - fix fence calculation
         - fix hotunplug/suspend issues
         - GC/MM register access macro cleanup for SR-IOV
         - W=1 fixes
         - ACPI ATCS/ATIF handling rework
         - 16bpc fixed point format support
         - Initial smartshift support
         - RV/PCO power tuning fixes
         - new INFO query for additional vbios info
      
        amdkfd:
         - SR-IOV aldebaran support
         - HMM SVM support
      
        radeon:
         - SMU regression fixes
         - Oland flickering fix
      
        vmwgfx:
         - enable console with fbdev emulation
         - fix cpu updates of coherent multisample surfaces
         - remove reservation semaphore
         - add initial SVGA3 support
         - support arm64
      
        msm:
         - devcoredump support for display errors
         - dpu/dsi: yaml bindings conversion
         - mdp5: alpha/blend_mode/zpos support
         - a6xx: cached coherent buffer support
         - gpu iova fault improvement
         - a660 support
      
        rockchip:
         - RK3036 win1 scaling support
         - RK3066/3188 missing register support
         - RK3036/3066/3126/3188 alpha support
      
        mediatek:
         - MT8167 HDMI support
         - MT8183 DPI dual edge support
      
        tegra:
         - fixed YUV support/scaling on Tegra186+
      
        ast:
         - use pcim_iomap
         - fix DP501 EDID
      
        bochs:
         - screen blanking support
      
        etnaviv:
         - export more GPU ID values to userspace
         - add HWDB entry for GPU on i.MX8MP
         - rework linear window calcs
      
        exynos:
         - pm runtime changes
      
        imx:
         - Annotate dma_fence critical section
         - fix PRG modifiers after drmm conversion
         - Add 8 pixel alignment fix for 1366x768
         - fix YUV advertising
         - add color properties
      
        ingenic:
         - IPU planes fix
      
        panfrost:
         - Mediatek MT8183 support + DT bindings
         - export AFBC_FEATURES register to userspace
      
        simpledrm:
         - %pr for printing resources
      
        nouveau:
         - pin/unpin TTM fixes
      
        qxl:
         - unpin shadow BO
      
        virtio:
         - create dumb BOs as guest blob
      
        vkms:
         - drmm_universal_plane_alloc
         - add XRGB plane composition
         - overlay support"
      
      * tag 'drm-next-2021-07-01' of git://anongit.freedesktop.org/drm/drm: (1570 commits)
        drm/i915: Reinstate the mmap ioctl for some platforms
        drm/i915/dsc: abstract helpers to get bigjoiner primary/secondary crtc
        Revert "drm/msm/mdp5: provide dynamic bandwidth management"
        drm/msm/mdp5: provide dynamic bandwidth management
        drm/msm/mdp5: add perf blocks for holding fudge factors
        drm/msm/mdp5: switch to standard zpos property
        drm/msm/mdp5: add support for alpha/blend_mode properties
        drm/msm/mdp5: use drm_plane_state for pixel blend mode
        drm/msm/mdp5: use drm_plane_state for storing alpha value
        drm/msm/mdp5: use drm atomic helpers to handle base drm plane state
        drm/msm/dsi: do not enable PHYs when called for the slave DSI interface
        drm/msm: Add debugfs to trigger shrinker
        drm/msm/dpu: Avoid ABBA deadlock between IRQ modules
        drm/msm: devcoredump iommu fault support
        iommu/arm-smmu-qcom: Add stall support
        drm/msm: Improve the a6xx page fault handler
        iommu/arm-smmu-qcom: Add an adreno-smmu-priv callback to get pagefault info
        iommu/arm-smmu: Add support for driver IOMMU fault handlers
        drm/msm: export hangcheck_period in debugfs
        drm/msm/a6xx: add support for Adreno 660 GPU
        ...
      e058a84b
    • Linus Torvalds's avatar
      Merge tag 'for-5.14/io_uring-2021-06-30' of git://git.kernel.dk/linux-block · c288d9cd
      Linus Torvalds authored
      Pull io_uring updates from Jens Axboe:
      
       - Multi-queue iopoll improvement (Fam)
      
       - Allow configurable io-wq CPU masks (me)
      
       - renameat/linkat tightening (me)
      
       - poll re-arm improvement (Olivier)
      
       - SQPOLL race fix (Olivier)
      
       - Cancelation unification (Pavel)
      
       - SQPOLL cleanups (Pavel)
      
       - Enable file backed buffers for shmem/memfd (Pavel)
      
       - A ton of cleanups and performance improvements (Pavel)
      
       - Followup and misc fixes (Colin, Fam, Hao, Olivier)
      
      * tag 'for-5.14/io_uring-2021-06-30' of git://git.kernel.dk/linux-block: (83 commits)
        io_uring: code clean for kiocb_done()
        io_uring: spin in iopoll() only when reqs are in a single queue
        io_uring: pre-initialise some of req fields
        io_uring: refactor io_submit_flush_completions
        io_uring: optimise hot path restricted checks
        io_uring: remove not needed PF_EXITING check
        io_uring: mainstream sqpoll task_work running
        io_uring: refactor io_arm_poll_handler()
        io_uring: reduce latency by reissueing the operation
        io_uring: add IOPOLL and reserved field checks to IORING_OP_UNLINKAT
        io_uring: add IOPOLL and reserved field checks to IORING_OP_RENAMEAT
        io_uring: refactor io_openat2()
        io_uring: simplify struct io_uring_sqe layout
        io_uring: update sqe layout build checks
        io_uring: fix code style problems
        io_uring: refactor io_sq_thread()
        io_uring: don't change sqpoll creds if not needed
        io_uring: Create define to modify a SQPOLL parameter
        io_uring: Fix race condition when sqp thread goes to sleep
        io_uring: improve in tctx_task_work() resubmission
        ...
      c288d9cd
    • Riccardo Mancini's avatar
      perf session: Add missing evlist__delete when deleting a session · cf96b8e4
      Riccardo Mancini authored
      ASan reports a memory leak caused by evlist not being deleted on exit in
      perf-report, perf-script and perf-data.
      The problem is caused by evlist->session not being deleted, which is
      allocated in perf_session__read_header, called in perf_session__new if
      perf_data is in read mode.
      In case of write mode, the session->evlist is filled by the caller.
      This patch solves the problem by calling evlist__delete in
      perf_session__delete if perf_data is in read mode.
      
      Changes in v2:
       - call evlist__delete from within perf_session__delete
      
      v1: https://lore.kernel.org/lkml/20210621234317.235545-1-rickyman7@gmail.com/
      
      ASan report follows:
      
      $ ./perf script report flamegraph
      =================================================================
      ==227640==ERROR: LeakSanitizer: detected memory leaks
      
      <SNIP unrelated>
      
      Indirect leak of 2704 byte(s) in 1 object(s) allocated from:
          #0 0x4f4137 in calloc (/home/user/linux/tools/perf/perf+0x4f4137)
          #1 0xbe3d56 in zalloc /home/user/linux/tools/lib/perf/../../lib/zalloc.c:8:9
          #2 0x7f999e in evlist__new /home/user/linux/tools/perf/util/evlist.c:77:26
          #3 0x8ad938 in perf_session__read_header /home/user/linux/tools/perf/util/header.c:3797:20
          #4 0x8ec714 in perf_session__open /home/user/linux/tools/perf/util/session.c:109:6
          #5 0x8ebe83 in perf_session__new /home/user/linux/tools/perf/util/session.c:213:10
          #6 0x60c6de in cmd_script /home/user/linux/tools/perf/builtin-script.c:3856:12
          #7 0x7b2930 in run_builtin /home/user/linux/tools/perf/perf.c:313:11
          #8 0x7b120f in handle_internal_command /home/user/linux/tools/perf/perf.c:365:8
          #9 0x7b2493 in run_argv /home/user/linux/tools/perf/perf.c:409:2
          #10 0x7b0c89 in main /home/user/linux/tools/perf/perf.c:539:3
          #11 0x7f5260654b74  (/lib64/libc.so.6+0x27b74)
      
      Indirect leak of 568 byte(s) in 1 object(s) allocated from:
          #0 0x4f4137 in calloc (/home/user/linux/tools/perf/perf+0x4f4137)
          #1 0xbe3d56 in zalloc /home/user/linux/tools/lib/perf/../../lib/zalloc.c:8:9
          #2 0x80ce88 in evsel__new_idx /home/user/linux/tools/perf/util/evsel.c:268:24
          #3 0x8aed93 in evsel__new /home/user/linux/tools/perf/util/evsel.h:210:9
          #4 0x8ae07e in perf_session__read_header /home/user/linux/tools/perf/util/header.c:3853:11
          #5 0x8ec714 in perf_session__open /home/user/linux/tools/perf/util/session.c:109:6
          #6 0x8ebe83 in perf_session__new /home/user/linux/tools/perf/util/session.c:213:10
          #7 0x60c6de in cmd_script /home/user/linux/tools/perf/builtin-script.c:3856:12
          #8 0x7b2930 in run_builtin /home/user/linux/tools/perf/perf.c:313:11
          #9 0x7b120f in handle_internal_command /home/user/linux/tools/perf/perf.c:365:8
          #10 0x7b2493 in run_argv /home/user/linux/tools/perf/perf.c:409:2
          #11 0x7b0c89 in main /home/user/linux/tools/perf/perf.c:539:3
          #12 0x7f5260654b74  (/lib64/libc.so.6+0x27b74)
      
      Indirect leak of 264 byte(s) in 1 object(s) allocated from:
          #0 0x4f4137 in calloc (/home/user/linux/tools/perf/perf+0x4f4137)
          #1 0xbe3d56 in zalloc /home/user/linux/tools/lib/perf/../../lib/zalloc.c:8:9
          #2 0xbe3e70 in xyarray__new /home/user/linux/tools/lib/perf/xyarray.c:10:23
          #3 0xbd7754 in perf_evsel__alloc_id /home/user/linux/tools/lib/perf/evsel.c:361:21
          #4 0x8ae201 in perf_session__read_header /home/user/linux/tools/perf/util/header.c:3871:7
          #5 0x8ec714 in perf_session__open /home/user/linux/tools/perf/util/session.c:109:6
          #6 0x8ebe83 in perf_session__new /home/user/linux/tools/perf/util/session.c:213:10
          #7 0x60c6de in cmd_script /home/user/linux/tools/perf/builtin-script.c:3856:12
          #8 0x7b2930 in run_builtin /home/user/linux/tools/perf/perf.c:313:11
          #9 0x7b120f in handle_internal_command /home/user/linux/tools/perf/perf.c:365:8
          #10 0x7b2493 in run_argv /home/user/linux/tools/perf/perf.c:409:2
          #11 0x7b0c89 in main /home/user/linux/tools/perf/perf.c:539:3
          #12 0x7f5260654b74  (/lib64/libc.so.6+0x27b74)
      
      Indirect leak of 32 byte(s) in 1 object(s) allocated from:
          #0 0x4f4137 in calloc (/home/user/linux/tools/perf/perf+0x4f4137)
          #1 0xbe3d56 in zalloc /home/user/linux/tools/lib/perf/../../lib/zalloc.c:8:9
          #2 0xbd77e0 in perf_evsel__alloc_id /home/user/linux/tools/lib/perf/evsel.c:365:14
          #3 0x8ae201 in perf_session__read_header /home/user/linux/tools/perf/util/header.c:3871:7
          #4 0x8ec714 in perf_session__open /home/user/linux/tools/perf/util/session.c:109:6
          #5 0x8ebe83 in perf_session__new /home/user/linux/tools/perf/util/session.c:213:10
          #6 0x60c6de in cmd_script /home/user/linux/tools/perf/builtin-script.c:3856:12
          #7 0x7b2930 in run_builtin /home/user/linux/tools/perf/perf.c:313:11
          #8 0x7b120f in handle_internal_command /home/user/linux/tools/perf/perf.c:365:8
          #9 0x7b2493 in run_argv /home/user/linux/tools/perf/perf.c:409:2
          #10 0x7b0c89 in main /home/user/linux/tools/perf/perf.c:539:3
          #11 0x7f5260654b74  (/lib64/libc.so.6+0x27b74)
      
      Indirect leak of 7 byte(s) in 1 object(s) allocated from:
          #0 0x4b8207 in strdup (/home/user/linux/tools/perf/perf+0x4b8207)
          #1 0x8b4459 in evlist__set_event_name /home/user/linux/tools/perf/util/header.c:2292:16
          #2 0x89d862 in process_event_desc /home/user/linux/tools/perf/util/header.c:2313:3
          #3 0x8af319 in perf_file_section__process /home/user/linux/tools/perf/util/header.c:3651:9
          #4 0x8aa6e9 in perf_header__process_sections /home/user/linux/tools/perf/util/header.c:3427:9
          #5 0x8ae3e7 in perf_session__read_header /home/user/linux/tools/perf/util/header.c:3886:2
          #6 0x8ec714 in perf_session__open /home/user/linux/tools/perf/util/session.c:109:6
          #7 0x8ebe83 in perf_session__new /home/user/linux/tools/perf/util/session.c:213:10
          #8 0x60c6de in cmd_script /home/user/linux/tools/perf/builtin-script.c:3856:12
          #9 0x7b2930 in run_builtin /home/user/linux/tools/perf/perf.c:313:11
          #10 0x7b120f in handle_internal_command /home/user/linux/tools/perf/perf.c:365:8
          #11 0x7b2493 in run_argv /home/user/linux/tools/perf/perf.c:409:2
          #12 0x7b0c89 in main /home/user/linux/tools/perf/perf.c:539:3
          #13 0x7f5260654b74  (/lib64/libc.so.6+0x27b74)
      
      SUMMARY: AddressSanitizer: 3728 byte(s) leaked in 7 allocation(s).
      Signed-off-by: default avatarRiccardo Mancini <rickyman7@gmail.com>
      Acked-by: default avatarIan Rogers <irogers@google.com>
      Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Kan Liang <kan.liang@linux.intel.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>
      Link: http://lore.kernel.org/lkml/20210624231926.212208-1-rickyman7@gmail.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      cf96b8e4
    • Riccardo Mancini's avatar
      perf annotate: Allow 's' on source code lines · 6de249d6
      Riccardo Mancini authored
      In perf annotate, when 's' is pressed on a line containing source code,
      it shows the message "Only available for assembly lines".
      
      This patch gets rid of the error, moving the cursr to the next available
      asm line (or the closest previous one if no asm line is found moving
      forwards), before hiding source code lines.
      
      Changes in v2:
       - handle case of no asm line found in
         annotate_browser__find_next_asm_line by returning NULL and
         handling error in caller.
      Signed-off-by: default avatarRiccardo Mancini <rickyman7@gmail.com>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Acked-by: default avatarIan Rogers <irogers@google.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Martin Liška <mliska@suse.cz>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20210624223423.189550-1-rickyman7@gmail.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      6de249d6
    • Adrian Hunter's avatar
      perf dlfilter: Add object_code() to perf_dlfilter_fns · ec4c00fe
      Adrian Hunter authored
      Add a function, for use by dlfilters, to read object code.
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Kan Liang <kan.liang@linux.intel.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>
      Link: https://lore.kernel.org/r/20210627131818.810-11-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      ec4c00fe
    • Adrian Hunter's avatar
      perf dlfilter: Add attr() to perf_dlfilter_fns · 6495e762
      Adrian Hunter authored
      Add a function, for use by dlfilters, to return the perf_event_attr
      structure.
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Kan Liang <kan.liang@linux.intel.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>
      Link: https://lore.kernel.org/r/20210627131818.810-10-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      6495e762
    • Adrian Hunter's avatar
      perf dlfilter: Add srcline() to perf_dlfilter_fns · 244afc0c
      Adrian Hunter authored
      Add a function, for use by dlfilters, to return source code file name and
      line number.
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Kan Liang <kan.liang@linux.intel.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>
      Link: https://lore.kernel.org/r/20210627131818.810-9-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      244afc0c
    • Adrian Hunter's avatar
      perf dlfilter: Add insn() to perf_dlfilter_fns · e35995ef
      Adrian Hunter authored
      Add a function, for use by dlfilters, to return instruction bytes.
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Kan Liang <kan.liang@linux.intel.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>
      Link: https://lore.kernel.org/r/20210627131818.810-8-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      e35995ef
    • Adrian Hunter's avatar
      perf dlfilter: Add resolve_address() to perf_dlfilter_fns · f645744c
      Adrian Hunter authored
      Add a function, for use by dlfilters, to resolve addresses from branch
      stacks or callchains.
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Kan Liang <kan.liang@linux.intel.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>
      Link: https://lore.kernel.org/r/20210627131818.810-7-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      f645744c
    • Adrian Hunter's avatar
      perf build: Install perf_dlfilter.h · 0beb2183
      Adrian Hunter authored
      Users of the --dlfilter option need to include perf_dlfilter.h
      in their filters. Install it to the include path.
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Kan Liang <kan.liang@linux.intel.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>
      Link: https://lore.kernel.org/r/20210627131818.810-6-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      0beb2183
    • Adrian Hunter's avatar
      perf script: Add option to pass arguments to dlfilters · 3d032a25
      Adrian Hunter authored
      Add option --dlarg to pass arguments to dlfilters. The --dlarg option can
      be repeated to pass more than 1 argument.
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Kan Liang <kan.liang@linux.intel.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>
      Link: https://lore.kernel.org/r/20210627131818.810-5-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      3d032a25
    • Adrian Hunter's avatar
      perf script: Add option to list dlfilters · 638e2b99
      Adrian Hunter authored
      Add option --list-dlfilters to list dlfilters in the current directory or
      the exec-path e.g. ~/libexec/perf-core/dlfilters. Use with option -v (must
      come before option --list-dlfilters) to show long descriptions.
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Kan Liang <kan.liang@linux.intel.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>
      Link: https://lore.kernel.org/r/20210627131818.810-4-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      638e2b99
    • Adrian Hunter's avatar
      perf script: Add dlfilter__filter_event_early() · 9bde93a7
      Adrian Hunter authored
      filter_event_early() can be more than 30% faster than filter_event()
      because it is called before internal filtering. In other respects it
      is the same as filter_event(), except that it will be passed events
      that have yet to be filtered out.
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Kan Liang <kan.liang@linux.intel.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>
      Link: https://lore.kernel.org/r/20210627131818.810-3-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      9bde93a7
    • Adrian Hunter's avatar
      perf script: Add API for filtering via dynamically loaded shared object · 291961fc
      Adrian Hunter authored
      In some cases, users want to filter very large amounts of data (e.g.
      from AUX area tracing like Intel PT) looking for something specific.
      While scripting such as Python can be used, Python is 10 to 20 times
      slower than C. So define a C API so that custom filters can be written
      and loaded.
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Kan Liang <kan.liang@linux.intel.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>
      Link: https://lore.kernel.org/r/20210627131818.810-2-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      291961fc
    • Arnaldo Carvalho de Melo's avatar
      perf llvm: Return -ENOMEM when asprintf() fails · c435c166
      Arnaldo Carvalho de Melo authored
      Zhihao sent a patch but it made llvm__compile_bpf() return what
      asprintf() returns on error, which is just -1, but since this function
      returns -errno, fix it by returning -ENOMEM for this case instead.
      
      Fixes: cb763714 ("perf llvm: Allow passing options to llc ...")
      Fixes: 5eab5a7e ("perf llvm: Display eBPF compiling command ...")
      Reported-by: default avatarHulk Robot <hulkci@huawei.com>
      Reported-by: default avatarZhihao Cheng <chengzhihao1@huawei.com>
      Cc: Alexei Starovoitov <ast@kernel.org>
      Cc: Andrii Nakryiko <andrii@kernel.org>
      Cc: Daniel Borkmann <daniel@iogearbox.net>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Nathan Chancellor <nathan@kernel.org>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Yu Kuai <yukuai3@huawei.com>
      Cc: clang-built-linux@googlegroups.com
      Link: http://lore.kernel.org/lkml/20210609115945.2193194-1-chengzhihao1@huawei.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      c435c166
    • James Clark's avatar
      perf cs-etm: Delay decode of non-timeless data until cs_etm__flush_events() · 0323dea3
      James Clark authored
      Currently, timeless mode starts the decode on PERF_RECORD_EXIT, and
      non-timeless mode starts decoding on the fist PERF_RECORD_AUX record.
      
      This can cause the "data has no samples!" error if the first
      PERF_RECORD_AUX record comes before the first (or any relevant)
      PERF_RECORD_MMAP2 record because the mmaps are required by the decoder
      to access the binary data.
      
      This change pushes the start of non-timeless decoding to the very end of
      parsing the file. The PERF_RECORD_EXIT event can't be used because it
      might not exist in system-wide or snapshot modes.
      
      I have not been able to find the exact cause for the events to be
      intermittently in the wrong order in the basic scenario:
      
      	perf record -e cs_etm/@tmc_etr0/u top
      
      But it can be made to happen every time with the --delay option. This is
      because "enable_on_exec" is disabled, which causes tracing to start
      before the process to be launched is exec'd. For example:
      
      	perf record -e cs_etm/@tmc_etr0/u --delay=1 top
      	perf report -D | grep 'AUX\|MAP'
      
      	0 16714475632740 0x520 [0x40]: PERF_RECORD_AUX offset: 0 size: 0x30 flags: 0 []
      	0 16714476494960 0x5d0 [0x40]: PERF_RECORD_AUX offset: 0x30 size: 0x30 flags: 0 []
      	0 16714478208900 0x660 [0x40]: PERF_RECORD_AUX offset: 0x60 size: 0x30 flags: 0 []
      	4294967295 16714478293340 0x700 [0x70]: PERF_RECORD_MMAP2 8712/8712: [0x557a460000(0x54000) @ 0 00:17 5329258 0]: r-xp /usr/bin/top
      	4294967295 16714478353020 0x770 [0x88]: PERF_RECORD_MMAP2 8712/8712: [0x7f86f72000(0x34000) @ 0 00:17 5214354 0]: r-xp /usr/lib/aarch64-linux-gnu/ld-2.31.so
      
      Another scenario in which decoding from the first aux record fails is a
      workload that forks. Although the aux record comes after 'bash', it
      comes before 'top', which is what we are interested in. For example:
      
      	perf record -e cs_etm/@tmc_etr0/u -- bash -c top
      	perf report -D | grep 'AUX\|MAP'
      
      	4294967295 16853946421300 0x510 [0x70]: PERF_RECORD_MMAP2 8723/8723: [0x558f280000(0x142000) @ 0 00:17 5213953 0]: r-xp /usr/bin/bash
      	4294967295 16853946543560 0x580 [0x88]: PERF_RECORD_MMAP2 8723/8723: [0x7fbba6e000(0x34000) @ 0 00:17 5214354 0]: r-xp /usr/lib/aarch64-linux-gnu/ld-2.31.so
      	4294967295 16853946628420 0x608 [0x68]: PERF_RECORD_MMAP2 8723/8723: [0x7fbba9e000(0x1000) @ 0 00:00 0 0]: r-xp [vdso]
      	0 16853947067300 0x690 [0x40]: PERF_RECORD_AUX offset: 0 size: 0x3a60 flags: 0 []
      	...
      	0 16853966602580 0x1758 [0x40]: PERF_RECORD_AUX offset: 0xc2470 size: 0x30 flags: 0 []
      	4294967295 16853967119860 0x1818 [0x70]: PERF_RECORD_MMAP2 8723/8723: [0x5559e70000(0x54000) @ 0 00:17 5329258 0]: r-xp /usr/bin/top
      	4294967295 16853967181620 0x1888 [0x88]: PERF_RECORD_MMAP2 8723/8723: [0x7f9ed06000(0x34000) @ 0 00:17 5214354 0]: r-xp /usr/lib/aarch64-linux-gnu/ld-2.31.so
      	4294967295 16853967237180 0x1910 [0x68]: PERF_RECORD_MMAP2 8723/8723: [0x7f9ed36000(0x1000) @ 0 00:00 0 0]: r-xp [vdso]
      
      A third scenario is when the majority of time is spent in a shared
      library that is not loaded at startup. For example a dynamically loaded
      plugin.
      
      Testing
      =======
      
      Testing was done by checking if any samples that are present in the
      old output are missing from the new output. Timestamps must be
      stripped out with awk because now they are set to the last AUX sample,
      rather than the first:
      
      	./perf script $4 | awk '!($4="")' > new.script
      	./perf-default script $4 | awk '!($4="")' > default.script
      	comm -13 <(sort -u new.script) <(sort -u default.script)
      
      Testing showed that the new output is a superset of the old. When lines
      appear in the comm output, it is not because they are missing but
      because [unknown] is now resolved to sensible locations. For example
      last putp branch here now resolves to libtinfo, so it's not missing
      from the output, but is actually improved:
      
      Old:
      	top 305 [001]  1 branches:uH: 402830 _init+0x30 (/usr/bin/top.procps) => 404a1c [unknown] (/usr/bin/top.procps)
      	top 305 [001]  1 branches:uH: 404a20 [unknown] (/usr/bin/top.procps) => 402970 putp@plt+0x0 (/usr/bin/top.procps)
      	top 305 [001]  1 branches:uH: 40297c putp@plt+0xc (/usr/bin/top.procps) => 0 [unknown] ([unknown])
      New:
      	top 305 [001]  1 branches:uH: 402830 _init+0x30 (/usr/bin/top.procps) => 404a1c [unknown] (/usr/bin/top.procps)
      	top 305 [001]  1 branches:uH: 404a20 [unknown] (/usr/bin/top.procps) => 402970 putp@plt+0x0 (/usr/bin/top.procps)
      	top 305 [001]  1 branches:uH: 40297c putp@plt+0xc (/usr/bin/top.procps) => 7f8ab39208 putp+0x0 (/lib/libtinfo.so.5.9)
      
      In the following two modes, decoding now works and the "data has no
      samples!" error is not displayed any more:
      
      	perf record -e cs_etm/@tmc_etr0/u -- bash -c top
      	perf record -e cs_etm/@tmc_etr0/u --delay=1 top
      
      In snapshot mode, there is also an improvement to decoding. Previously
      samples for the 'kill' process that was used to send SIGUSR2 were
      completely missing, because the process hadn't started yet. But now
      there are additional samples present:
      
      	perf record -e cs_etm/@tmc_etr0/u --snapshot -a
      	perf script
      
      		stress 19380 [003] 161627.938153:    1000000    instructions:uH:      aaaabb612fb4 [unknown] (/usr/bin/stress)
      		  kill 19644 [000] 161627.938153:    1000000    instructions:uH:      ffffae0ef210 [unknown] (/lib/aarch64-linux-gnu/ld-2.27.so)
      		stress 19380 [003] 161627.938153:    1000000    instructions:uH:      ffff9e754d40 random_r+0x20 (/lib/aarch64-linux-gnu/libc-2.27.so)
      
      Also tested was the round trip of 'perf inject' followed by 'perf
      report' which has the same differences and improvements.
      Signed-off-by: default avatarJames Clark <james.clark@arm.com>
      Reviewed-by: default avatarLeo Yan <leo.yan@linaro.org>
      Tested-by: default avatarLeo Yan <leo.yan@linaro.org>
      Acked-by: default avatarMathieu Poirier <mathieu.poirier@linaro.org>
      Cc: Al Grant <al.grant@arm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Anshuman Khandual <anshuman.khandual@arm.com>
      Cc: Branislav Rankov <branislav.rankov@arm.com>
      Cc: Denis Nikitin <denik@chromium.org>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: John Garry <john.garry@huawei.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mike Leach <mike.leach@linaro.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
      Cc: Will Deacon <will@kernel.org>
      Cc: coresight@lists.linaro.org
      Cc: linux-arm-kernel@lists.infradead.org
      Link: http://lore.kernel.org/lkml/20210609130421.13934-1-james.clark@arm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      0323dea3
    • Arnaldo Carvalho de Melo's avatar
      tools headers UAPI: Synch KVM's svm.h header with the kernel · f88bb1cb
      Arnaldo Carvalho de Melo authored
      To pick up the changes from:
      
        59d21d67 ("KVM: SVM: Software reserved fields")
      
      Picking the new SVM_EXIT_SW exit reasons.
      
      Addressing this perf build warning:
      
        Warning: Kernel ABI header at 'tools/arch/x86/include/uapi/asm/svm.h' differs from latest version at 'arch/x86/include/uapi/asm/svm.h'
        diff -u tools/arch/x86/include/uapi/asm/svm.h arch/x86/include/uapi/asm/svm.h
      
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Vineeth Pillai <viremana@linux.microsoft.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      f88bb1cb
    • Arnaldo Carvalho de Melo's avatar
      tools kvm headers arm64: Update KVM headers from the kernel sources · 795c4ab8
      Arnaldo Carvalho de Melo authored
      To pick the changes from:
      
        f0376edb ("KVM: arm64: Add ioctl to fetch/store tags in a guest")
      
      That don't causes any changes in tooling (when built on x86), only
      addresses this perf build warning:
      
        Warning: Kernel ABI header at 'tools/arch/arm64/include/uapi/asm/kvm.h' differs from latest version at 'arch/arm64/include/uapi/asm/kvm.h'
        diff -u tools/arch/arm64/include/uapi/asm/kvm.h arch/arm64/include/uapi/asm/kvm.h
      
      Cc: Marc Zyngier <maz@kernel.org>
      Cc: Steven Price <steven.price@arm.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      795c4ab8
    • Arnaldo Carvalho de Melo's avatar
      tools headers UAPI: Sync linux/kvm.h with the kernel sources · e48f62ae
      Arnaldo Carvalho de Melo authored
      To pick the changes in:
      
        19238e75 ("kvm: x86: Allow userspace to handle emulation errors")
        cb082bfa ("KVM: stats: Add fd-based API to read binary stats data")
        b87cc116 ("KVM: PPC: Book3S HV: Add KVM_CAP_PPC_RPT_INVALIDATE capability")
        f0376edb ("KVM: arm64: Add ioctl to fetch/store tags in a guest")
        0dbb1123 ("KVM: X86: Introduce KVM_HC_MAP_GPA_RANGE hypercall")
        6dba9403 ("KVM: x86: Introduce KVM_GET_SREGS2 / KVM_SET_SREGS2")
        644f7067 ("KVM: x86: hyper-v: Introduce KVM_CAP_HYPERV_ENFORCE_CPUID")
      
      That automatically adds support for these new ioctls:
      
        $ tools/perf/trace/beauty/kvm_ioctl.sh > before
        $ cp include/uapi/linux/kvm.h tools/include/uapi/linux/kvm.h
        $ tools/perf/trace/beauty/kvm_ioctl.sh > after
        $ diff -u before after
        --- before	2021-07-01 13:42:07.006387354 -0300
        +++ after	2021-07-01 13:45:16.051649301 -0300
        @@ -95,6 +95,9 @@
         	[0xc9] = "XEN_HVM_SET_ATTR",
         	[0xca] = "XEN_VCPU_GET_ATTR",
         	[0xcb] = "XEN_VCPU_SET_ATTR",
        +	[0xcc] = "GET_SREGS2",
        +	[0xcd] = "SET_SREGS2",
        +	[0xce] = "GET_STATS_FD",
         	[0xe0] = "CREATE_DEVICE",
         	[0xe1] = "SET_DEVICE_ATTR",
         	[0xe2] = "GET_DEVICE_ATTR",
        $
      
      This silences these perf build warning:
      
        Warning: Kernel ABI header at 'tools/arch/x86/include/uapi/asm/kvm.h' differs from latest version at 'arch/x86/include/uapi/asm/kvm.h'
        diff -u tools/arch/x86/include/uapi/asm/kvm.h arch/x86/include/uapi/asm/kvm.h
        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: Aaron Lewis <aaronlewis@google.com>
      Cc: Ashish Kalra <ashish.kalra@amd.com>
      Cc: Bharata B Rao <bharata@linux.ibm.com>
      Cc: Jing Zhang <jingzhangos@google.com>
      Cc: Marc Zyngier <maz@kernel.org>
      Cc: Maxim Levitsky <mlevitsk@redhat.com>
      Cc: Michael Ellerman <mpe@ellerman.id.au>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Steven Price <steven.price@arm.com>
      Cc: Vitaly Kuznetsov <vkuznets@redhat.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      e48f62ae
    • Arnaldo Carvalho de Melo's avatar
      tools headers cpufeatures: Sync with the kernel sources · cc200a7d
      Arnaldo Carvalho de Melo authored
      To pick the changes from:
      
        1348924b ("x86/msr: Define new bits in TSX_FORCE_ABORT MSR")
        cbcddaa3 ("perf/x86/rapl: Use CPUID bit on AMD and Hygon parts")
      
      This only causes these perf files to be rebuilt:
      
        CC       /tmp/build/perf/bench/mem-memcpy-x86-64-asm.o
        CC       /tmp/build/perf/bench/mem-memset-x86-64-asm.o
      
      And addresses this perf build warning:
      
        Warning: Kernel ABI header at 'tools/arch/x86/include/asm/cpufeatures.h' differs from latest version at 'arch/x86/include/asm/cpufeatures.h'
        diff -u tools/arch/x86/include/asm/cpufeatures.h arch/x86/include/asm/cpufeatures.h
      
      Cc: Andrew Cooper <andrew.cooper3@citrix.com>
      Cc: Borislav Petkov <bp@suse.de>
      Cc: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      cc200a7d
    • Arnaldo Carvalho de Melo's avatar
      tools include UAPI: Update linux/mount.h copy · 14c6ef2b
      Arnaldo Carvalho de Melo authored
      To pick the changes from:
      
        dd8b477f ("mount: Support "nosymfollow" in new mount api")
      
      That ends up adding support for the new MOUNT_ATTR_NOSYMFOLLOW mount
      attribute:
      
        $ tools/perf/trace/beauty/fsmount.sh > before
        $ cp include/uapi/linux/mount.h tools/include/uapi/linux/mount.h
        $ tools/perf/trace/beauty/fsmount.sh > after
        $ diff -u before after
        --- before	2021-07-01 13:34:04.542517355 -0300
        +++ after	2021-07-01 13:34:12.423694537 -0300
        @@ -7,4 +7,5 @@
         	[ilog2(0x00000020) + 1] = "STRICTATIME",
         	[ilog2(0x00000080) + 1] = "NODIRATIME",
         	[ilog2(0x00100000) + 1] = "IDMAP",
        +	[ilog2(0x00200000) + 1] = "NOSYMFOLLOW",
         };
        $
      
      So now one can use it in --filter expressions for tracepoints.
      
      This silences this perf build warnings:
      
        Warning: Kernel ABI header at 'tools/include/uapi/linux/mount.h' differs from latest version at 'include/uapi/linux/mount.h'
        diff -u tools/include/uapi/linux/mount.h include/uapi/linux/mount.h
      
      Cc: Christian Brauner <christian.brauner@ubuntu.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      14c6ef2b
    • Arnaldo Carvalho de Melo's avatar
      tools arch x86: Sync the msr-index.h copy with the kernel sources · 04df0dc1
      Arnaldo Carvalho de Melo authored
      To pick up the changes from these csets:
      
        1348924b ("x86/msr: Define new bits in TSX_FORCE_ABORT MSR")
      
      That cause no changes to tooling:
      
        $ tools/perf/trace/beauty/tracepoints/x86_msr.sh > before
        $ cp arch/x86/include/asm/msr-index.h tools/arch/x86/include/asm/msr-index.h
        $ tools/perf/trace/beauty/tracepoints/x86_msr.sh > after
        $ diff -u before after
        $
      
      Just silences this perf build warning:
      
        Warning: Kernel ABI header at 'tools/arch/x86/include/asm/msr-index.h' differs from latest version at 'arch/x86/include/asm/msr-index.h'
        diff -u tools/arch/x86/include/asm/msr-index.h arch/x86/include/asm/msr-index.h
      
      Cc: Borislav Petkov <bp@suse.de>
      Cc: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      04df0dc1
    • Leo Yan's avatar
      perf arm-spe: Don't wait for PERF_RECORD_EXIT event · 8941ba50
      Leo Yan authored
      When decode Arm SPE trace, it waits for PERF_RECORD_EXIT event (the last
      perf event) for processing trace data, which is needless and even might
      cause logic error, e.g. it might fail to correlate perf events with Arm
      SPE events correctly.
      
      So this patch removes the condition checking for PERF_RECORD_EXIT event.
      Signed-off-by: default avatarLeo Yan <leo.yan@linaro.org>
      Reviewed-by: default avatarJames Clark <james.clark@arm.com>
      Tested-by: default avatarJames Clark <james.clark@arm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Al Grant <Al.Grant@arm.com>
      Cc: Dave Martin <Dave.Martin@arm.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: John Garry <john.garry@huawei.com>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Will Deacon <will@kernel.org>
      Link: https://lore.kernel.org/r/20210519071939.1598923-6-leo.yan@linaro.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      8941ba50
    • Leo Yan's avatar
      perf arm-spe: Bail out if the trace is later than perf event · afb5e9e4
      Leo Yan authored
      It's possible that record in Arm SPE trace is later than perf event and
      vice versa.  This asks to correlate the perf events and Arm SPE
      synthesized events to be processed in the manner of correct timing.
      
      To achieve the time ordering, this patch reverses the flow, it firstly
      calls arm_spe_sample() and then calls arm_spe_decode().  By comparing
      the timestamp value and detect the perf event is coming earlier than Arm
      SPE trace data, it bails out from the decoding loop, the last record is
      pushed into auxtrace stack and is deferred to generate sample.  To track
      the timestamp, everytime it updates timestamp for the latest record.
      Signed-off-by: default avatarLeo Yan <leo.yan@linaro.org>
      Reviewed-by: default avatarJames Clark <james.clark@arm.com>
      Tested-by: default avatarJames Clark <james.clark@arm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Al Grant <Al.Grant@arm.com>
      Cc: Dave Martin <Dave.Martin@arm.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: John Garry <john.garry@huawei.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Will Deacon <will@kernel.org>
      Cc: linux-arm-kernel@lists.infradead.org
      Link: https://lore.kernel.org/r/20210519071939.1598923-5-leo.yan@linaro.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      afb5e9e4
    • Leo Yan's avatar
      perf arm-spe: Assign kernel time to synthesized event · 85498f75
      Leo Yan authored
      In current code, it assigns the arch timer counter to the synthesized
      samples Arm SPE trace, thus the samples don't contain the kernel time
      but only contain the raw counter value.
      
      To fix the issue, this patch converts the timer counter to kernel time
      and assigns it to sample timestamp.
      Signed-off-by: default avatarLeo Yan <leo.yan@linaro.org>
      Reviewed-by: default avatarJames Clark <james.clark@arm.com>
      Tested-by: default avatarJames Clark <james.clark@arm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Al Grant <Al.Grant@arm.com>
      Cc: Dave Martin <Dave.Martin@arm.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: John Garry <john.garry@huawei.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Will Deacon <will@kernel.org>
      Cc: linux-arm-kernel@lists.infradead.org
      Link: https://lore.kernel.org/r/20210519071939.1598923-4-leo.yan@linaro.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      85498f75
    • Leo Yan's avatar
      perf arm-spe: Convert event kernel time to counter value · 63051901
      Leo Yan authored
      When handle a perf event, Arm SPE decoder needs to decide if this perf
      event is earlier or later than the samples from Arm SPE trace data; to
      do comparision, it needs to use the same unit for the time.
      
      This patch converts the event kernel time to arch timer's counter value,
      thus it can be used to compare with counter value contained in Arm SPE
      Timestamp packet.
      Signed-off-by: default avatarLeo Yan <leo.yan@linaro.org>
      Reviewed-by: default avatarJames Clark <james.clark@arm.com>
      Tested-by: default avatarJames Clark <james.clark@arm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Al Grant <Al.Grant@arm.com>
      Cc: Dave Martin <Dave.Martin@arm.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: John Garry <john.garry@huawei.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Will Deacon <will@kernel.org>
      Cc: linux-arm-kernel@lists.infradead.org
      Link: https://lore.kernel.org/r/20210519071939.1598923-3-leo.yan@linaro.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      63051901
    • Leo Yan's avatar
      perf arm-spe: Save clock parameters from TIME_CONV event · c210c306
      Leo Yan authored
      During the recording phase, "perf record" tool synthesizes event
      PERF_RECORD_TIME_CONV for the hardware clock parameters and saves the
      event into the data file.
      
      Afterwards, when processing the data file, the event TIME_CONV will be
      processed at the very early time and is stored into session context.
      
      This patch extracts these parameters from the session context and saves
      into the structure "spe->tc" with the type perf_tsc_conversion, so that
      the parameters are ready for conversion between clock counter and time
      stamp.
      Signed-off-by: default avatarLeo Yan <leo.yan@linaro.org>
      Reviewed-by: default avatarJames Clark <james.clark@arm.com>
      Tested-by: default avatarJames Clark <james.clark@arm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Al Grant <Al.Grant@arm.com>
      Cc: Dave Martin <Dave.Martin@arm.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: John Garry <john.garry@huawei.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Will Deacon <will@kernel.org>
      Cc: linux-arm-kernel@lists.infradead.org
      Link: https://lore.kernel.org/r/20210519071939.1598923-2-leo.yan@linaro.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      c210c306
    • Leo Yan's avatar
      perf cs-etm: Remove callback cs_etm_find_snapshot() · 2f01c200
      Leo Yan authored
      The callback cs_etm_find_snapshot() is invoked for snapshot mode, its
      main purpose is to find the correct AUX trace data and returns "head"
      and "old" (we can call "old" as "old head") to the caller, the caller
      __auxtrace_mmap__read() uses these two pointers to decide the AUX trace
      data size.
      
      This patch removes cs_etm_find_snapshot() with below reasons:
      
      - The first thing in cs_etm_find_snapshot() is to check if the head has
        wrapped around, if it is not, directly bails out.  The checking is
        pointless, this is because the "head" and "old" pointers both are
        monotonical increasing so they never wrap around.
      
      - cs_etm_find_snapshot() adjusts the "head" and "old" pointers and
        assumes the AUX ring buffer is fully filled with the hardware trace
        data, so it always subtracts the difference "mm->len" from "head" to
        get "old".  Let's imagine the snapshot is taken in very short
        interval, the tracers only fill a small chunk of the trace data into
        the AUX ring buffer, in this case, it's wrongly to copy the whole the
        AUX ring buffer to perf file.
      
      - As the "head" and "old" pointers are monotonically increased, the
        function __auxtrace_mmap__read() handles these two pointers properly.
        It calculates the reminders for these two pointers, and the size is
        clamped to be never more than "snapshot_size".  We can simply reply on
        the function __auxtrace_mmap__read() to calculate the correct result
        for data copying, it's not necessary to add Arm CoreSight specific
        callback.
      Signed-off-by: default avatarLeo Yan <leo.yan@linaro.org>
      Reviewed-by: default avatarJames Clark <james.clark@arm.com>
      Tested-by: default avatarJames Clark <james.clark@arm.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Daniel Kiss <daniel.kiss@arm.com>
      Cc: Denis Nikitin <denik@google.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: John Garry <john.garry@huawei.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
      Cc: Mike Leach <mike.leach@linaro.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
      Cc: Will Deacon <will@kernel.org>
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: coresight@lists.linaro.org
      Link: http://lore.kernel.org/lkml/20210701093537.90759-3-leo.yan@linaro.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      2f01c200
    • Namhyung Kim's avatar
      perf bpf_counter: Move common functions to bpf_counter.h · d6a735ef
      Namhyung Kim authored
      Some helper functions will be used for cgroup counting too.  Move them
      to a header file for sharing.
      
      Committer notes:
      
      Fix the build on older systems with:
      
        -       struct bpf_map_info map_info = {0};
        +       struct bpf_map_info map_info = { .id = 0, };
      
      This wasn't breaking the build in such systems as bpf_counter.c isn't
      built due to:
      
      tools/perf/util/Build:
      
        perf-$(CONFIG_PERF_BPF_SKEL) += bpf_counter.o
      
      The bpf_counter.h file on the other hand is included from places that
      are built everywhere.
      Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Acked-by: default avatarSong Liu <songliubraving@fb.com>
      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>
      Cc: Stephane Eranian <eranian@google.com>
      Link: http://lore.kernel.org/lkml/20210625071826.608504-4-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      d6a735ef
    • Linus Torvalds's avatar
      Merge tag 'fs_for_v5.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs · 911a2997
      Linus Torvalds authored
      Pull misc fs updates from Jan Kara:
       "The new quotactl_fd() syscall (remake of quotactl_path() syscall that
        got introduced & disabled in 5.13 cycle), and couple of udf, reiserfs,
        isofs, and writeback fixes and cleanups"
      
      * tag 'fs_for_v5.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
        writeback: fix obtain a reference to a freeing memcg css
        quota: remove unnecessary oom message
        isofs: remove redundant continue statement
        quota: Wire up quotactl_fd syscall
        quota: Change quotactl_path() systcall to an fd-based one
        reiserfs: Remove unneed check in reiserfs_write_full_page()
        udf: Fix NULL pointer dereference in udf_symlink function
        reiserfs: add check for invalid 1st journal block
      911a2997
    • Manfred Spraul's avatar
      ipc/util.c: use binary search for max_idx · b869d5be
      Manfred Spraul authored
      If semctl(), msgctl() and shmctl() are called with IPC_INFO, SEM_INFO,
      MSG_INFO or SHM_INFO, then the return value is the index of the highest
      used index in the kernel's internal array recording information about all
      SysV objects of the requested type for the current namespace.  (This
      information can be used with repeated ..._STAT or ..._STAT_ANY operations
      to obtain information about all SysV objects on the system.)
      
      There is a cache for this value.  But when the cache needs up be updated,
      then the highest used index is determined by looping over all possible
      values.  With the introduction of IPCMNI_EXTEND_SHIFT, this could be a
      loop over 16 million entries.  And due to /proc/sys/kernel/*next_id, the
      index values do not need to be consecutive.
      
      With <write 16000000 to msg_next_id>, msgget(), msgctl(,IPC_RMID) in a
      loop, I have observed a performance increase of around factor 13000.
      
      As there is no get_last() function for idr structures: Implement a
      "get_last()" using a binary search.
      
      As far as I see, ipc is the only user that needs get_last(), thus
      implement it in ipc/util.c and not in a central location.
      
      [akpm@linux-foundation.org: tweak comment, fix typo]
      
      Link: https://lkml.kernel.org/r/20210425075208.11777-2-manfred@colorfullife.comSigned-off-by: default avatarManfred Spraul <manfred@colorfullife.com>
      Acked-by: default avatarDavidlohr Bueso <dbueso@suse.de>
      Cc: <1vier1@web.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b869d5be