1. 11 May, 2023 3 commits
  2. 09 May, 2023 3 commits
    • Mark Brown's avatar
      ASoC: add and use asoc_dummy_dlc · 850d1746
      Mark Brown authored
      Merge series from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:
      
      Many ASoC drivers are using dummy DAI.
      I have 2 concern about it. 1st one is there is no guarantee that local
      strings ("snd-soc-dummy-dai",  "snd-soc-dummy") are kept until the card
      was binded if it was added at subfunction.
      2nd one is we can use common snd_soc_dai_link_component for it.
      This patch-set adds common asoc_dummy_dlc, and use it.
      850d1746
    • Jack Yu's avatar
      ASoC: rt722-sdca: Add RT722 SDCA driver · 7f5d6036
      Jack Yu authored
      This is the initial codec driver for rt722-sdca.
      
      Signed-off-by: Jack Yu <jack.yu@realtek.com
      Link: https://lore.kernel.org/r/20230421030116.26245-1-jack.yu@realtek.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      7f5d6036
    • Mark Brown's avatar
      ASoC: MediaTek MT8195/86 Cleanups · 5782f019
      Mark Brown authored
      Merge series from AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>:
      
      This series performs some cleanups for mainly MT8195 and switches
      both MT8195 and MT8186's SOF driver to the snd_sof_ipc_process_reply()
      helper.
      5782f019
  3. 07 May, 2023 34 commits
    • Shengjiu Wang's avatar
      ASoC: fsl_sai: MCLK bind with TX/RX enable bit · 3e4a8261
      Shengjiu Wang authored
      On i.MX8MP, the sai MCLK is bound with TX/RX enable bit,
      which means the TX/RE enable bit need to be enabled then
      MCLK can be output on PAD.
      
      Some codec (for example: WM8962) needs the MCLK output
      earlier, otherwise there will be issue for codec
      configuration.
      
      Add new soc data "mclk_with_tere" for this platform and
      enable the MCLK output in startup stage.
      
      As "mclk_with_tere" only applied to i.MX8MP, currently
      The soc data is shared with i.MX8MN, so need to add
      an i.MX8MN own soc data with "mclk_with_tere" disabled.
      
      Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com
      Link: https://lore.kernel.org/r/1683273322-2525-1-git-send-email-shengjiu.wang@nxp.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      3e4a8261
    • Yang Li's avatar
      ASoC: codecs: wcd938x: Remove unneeded semicolon · 101b2383
      Yang Li authored
      ./sound/soc/codecs/wcd938x-sdw.c:1274:2-3: Unneeded semicolon
      
      Reported-by: Abaci Robot <abaci@linux.alibaba.com
      Link: https://bugzilla.openanolis.cn/show_bug.cgi?id=4862
      Signed-off-by: Yang Li <yang.lee@linux.alibaba.com
      Link: https://lore.kernel.org/r/20230505004538.70270-1-yang.lee@linux.alibaba.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      101b2383
    • Anup Sharma's avatar
      ASoC: dt-bindings: nau8540: Convert to dtschema · 0f0d70c2
      Anup Sharma authored
      Convert the NAU8540 audio CODEC bindings to DT schema
      
      Signed-off-by: Anup Sharma <anupnewsmail@gmail.com
      
      Changes:
      V1 -> V2: Adhere to the correct procedure by including the maintainer's name.
                Drop Mark from maintainer.
      
      Link: https://lore.kernel.org/r/ZFYxWVdE9YkMKvXv@yoga
      Signed-off-by: Mark Brown <broonie@kernel.org
      0f0d70c2
    • Syed Saba Kareem's avatar
      ASoC: amd: ps: refactor acp power on and reset functions. · ea79b0a6
      Syed Saba Kareem authored
      Instead of a busy waiting while loop using udelay in
      acp63_power_on and acp63_reset functions use readl_poll_timeout
      function to check the condition.
      
      Signed-off-by: Syed Saba Kareem <Syed.SabaKareem@amd.com
      Reviewed-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com
      Link: https://lore.kernel.org/r/20230426122219.3745586-2-Syed.SabaKareem@amd.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      ea79b0a6
    • Syed Saba Kareem's avatar
      ASoC: amd: ps: remove the register read and write wrappers. · ec54f810
      Syed Saba Kareem authored
      Instead of acp63_readl() and acp63_writel() wrappers
      readl and writel functions can be used directly.
      Remove acp63_readl() and acp63_writel() wrappers.
      
      Signed-off-by: Syed Saba Kareem <Syed.SabaKareem@amd.com
      Reviewed-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com
      Link: https://lore.kernel.org/r/20230426122219.3745586-1-Syed.SabaKareem@amd.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      ec54f810
    • Uwe Kleine-König's avatar
      ASoC: Switch i2c drivers back to use .probe() · 9abcd240
      Uwe Kleine-König authored
      After commit b8a1a4cd ("i2c: Provide a temporary .probe_new()
      call-back type"), all drivers being converted to .probe_new() and then
      03c835f4 ("i2c: Switch .probe() to not take an id parameter") convert
      back to (the new) .probe() to be able to eventually drop .probe_new() from
      struct i2c_driver.
      
      Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de
      Link: https://lore.kernel.org/r/20230425095716.331419-1-u.kleine-koenig@pengutronix.de
      Signed-off-by: Mark Brown <broonie@kernel.org
      9abcd240
    • Carlos Bilbao's avatar
      ASoC: amd: ps: Update copyright notice · 501c2825
      Carlos Bilbao authored
      The most recent changes to ASoC, such as new module parameters, date to the
      year 2023. Update copyright statement accordingly.
      
      Signed-off-by: Carlos Bilbao <carlos.bilbao@amd.com
      Link: https://lore.kernel.org/r/20230420180212.3101178-1-carlos.bilbao@amd.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      501c2825
    • Maxim Kochetkov's avatar
      ASoC: dwc: extend supported formats · 7f2a9750
      Maxim Kochetkov authored
      The COMP1_TX_WORDSIZE_0/COMP2_RX_WORDSIZE_0 fields in the comp
      registers indicate the maximum wordsize supported. DWC I2S controller
      can operate with any smaller wordsize. So extend the formats to let
      I2S to operate in any allowed modes.
      
      Signed-off-by: Maxim Kochetkov <fido_max@inbox.ru
      Link: https://lore.kernel.org/r/20230505053521.18233-1-fido_max@inbox.ru
      Signed-off-by: Mark Brown <broonie@kernel.org
      7f2a9750
    • Mark Brown's avatar
      ASoC: rt5682: Use a maple tree based register cache · 582ed316
      Mark Brown authored
      regmap has introduced a maple tree based register cache which makes use of
      this more advanced data structure which has been added to the kernel
      recently. Maple trees are much flatter than rbtrees, meaning that they do
      not grow to such depths when the register map is sparse which makes access
      a bit more efficient. The maple tree cache type is still a bit of a work
      in progress but should be effective for some devices already.
      
      RT5682 seems like a good candidate for maple tree. It only supports single
      register read/write operations so will gain minimal benefit from storing
      the register data in device native format like rbtree does (none for
      SoundWire) and has some sparsity in the register map which is a good fit
      for maple tree.
      
      Convert to use maple tree. There should be little if any visible difference
      at runtime.
      
      Signed-off-by: Mark Brown <broonie@kernel.org
      Link: https://lore.kernel.org/r/20230419-asoc-rt5682-maple-v1-1-ed40369c9099@kernel.org
      Signed-off-by: Mark Brown <broonie@kernel.org
      582ed316
    • Rob Herring's avatar
      ASoC: dt-bindings: More dropping unneeded quotes · e09eb6ac
      Rob Herring authored
      Another batch of dropping unneeded quotes on $id and $schema which were
      missed in the last round. Once all these are fixed, checking for this can
      be enabled in yamllint.
      
      Signed-off-by: Rob Herring <robh@kernel.org
      Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org
      Link: https://lore.kernel.org/r/20230421214810.1811962-1-robh@kernel.org
      Signed-off-by: Mark Brown <broonie@kernel.org
      e09eb6ac
    • Krzysztof Kozlowski's avatar
      ASoC: dt-bindings: google,sc7180-trogdor: allow up to four codec DAIs · 853a954b
      Krzysztof Kozlowski authored
      SC7180 Trogdor sound cards come with multiple audio amplifiers, so allow
      up to four of them to fix dtbs_check warnings like:
      
        sc7180-trogdor-homestar-r3.dtb: sound: dai-link@1:codec:sound-dai: [[275], [276], [277], [278]] is too long
      
      Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org
      Acked-by: Conor Dooley <conor.dooley@microchip.com
      Link: https://lore.kernel.org/r/20230507174543.264987-1-krzysztof.kozlowski@linaro.org
      Signed-off-by: Mark Brown <broonie@kernel.org
      853a954b
    • Mark Brown's avatar
      ASoC: rt715: Use maple tree register cache · 50f65542
      Mark Brown authored
      regmap has introduced a maple tree based register cache which makes use of
      this more advanced data structure which has been added to the kernel
      recently. Maple trees are much flatter than rbtrees, meaning that they do
      not grow to such depths when the register map is sparse which makes access
      a bit more efficient. The maple tree cache type is still a bit of a work
      in progress but should be effective for some devices already.
      
      RT715 seems like a good candidate for maple tree. It is a SoundWire MBQ
      device and therefore supports only single register read/write operations
      which do not use raw I/O and will therefore save the cost of converting
      to and from device native format when accessing the cache while not having
      a negative impact from the current lack of bulk operations in maple tree
      cache sync. It has a moderately large and quite sparse register map which
      is a good fit for storing in a maple tree.
      
      Convert to use maple tree. There should be little if any visible difference
      at runtime.
      
      Signed-off-by: Mark Brown <broonie@kernel.org
      Link: https://lore.kernel.org/r/20230412-asoc-rt715-maple-v1-1-200a84835fde@kernel.org
      Signed-off-by: Mark Brown <broonie@kernel.org
      50f65542
    • Maxim Kochetkov's avatar
      ASoC: dt-bindings: designware-i2s: add optional resets · 12b99ec3
      Maxim Kochetkov authored
      Some SoC may have resets for I2S subsystem. So add optional resets support.
      
      Signed-off-by: Maxim Kochetkov <fido_max@inbox.ru
      Link: https://lore.kernel.org/r/20230504071618.52012-2-fido_max@inbox.ru
      Signed-off-by: Mark Brown <broonie@kernel.org
      12b99ec3
    • Maxim Kochetkov's avatar
      ASoC: dwc: add optional reset support · c00018ca
      Maxim Kochetkov authored
      Some SoC may have resets for I2S subsystem. So add optional reset support.
      
      Signed-off-by: Maxim Kochetkov <fido_max@inbox.ru
      Link: https://lore.kernel.org/r/20230504071618.52012-1-fido_max@inbox.ru
      Signed-off-by: Mark Brown <broonie@kernel.org
      c00018ca
    • AngeloGioacchino Del Regno's avatar
      ASoC: mediatek: mt8195-afe-pcm: Simplify with dev_err_probe() · 863da1c1
      AngeloGioacchino Del Regno authored
      Shorten the probe function by switching to dev_err_probe() where
      possible.
      
      Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com
      Link: https://lore.kernel.org/r/20230503113413.149235-5-angelogioacchino.delregno@collabora.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      863da1c1
    • AngeloGioacchino Del Regno's avatar
      ASoC: mediatek: mt8195-afe-pcm: Simplify runtime PM during probe · 2ca0ec01
      AngeloGioacchino Del Regno authored
      Use devm_pm_runtime_enable() and pm_runtime_resume_and_get() to
      to simplify the probe function.
      
      Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com
      Link: https://lore.kernel.org/r/20230503113413.149235-4-angelogioacchino.delregno@collabora.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      2ca0ec01
    • AngeloGioacchino Del Regno's avatar
      ASoC: mediatek: mt8195-afe-pcm: Clean up unnecessary functions · 686d0416
      AngeloGioacchino Del Regno authored
      Function mt8195_afe_init_registers() performs just a single call to
      regmap_multi_reg_write(), it returns int and it's not error checked;
      move that call to the probe function and also add some error check.
      
      While at it, also move the contents of mt8195_afe_parse_of() to the
      probe function as well: since this is getting a handle to topckgen
      and since that's optional, the ifdef for CONFIG_SND_SOC_MT6359 can
      also be removed.
      
      Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com
      Acked-by: Trevor Wu <trevor.wu@mediatek.com
      Link: https://lore.kernel.org/r/20230503113413.149235-6-angelogioacchino.delregno@collabora.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      686d0416
    • AngeloGioacchino Del Regno's avatar
      ASoC: SOF: mediatek: mt8186: Use snd_sof_ipc_process_reply() helper · 709f34b4
      AngeloGioacchino Del Regno authored
      Function mt8186_get_reply() performs practically the same operation
      as the common snd_sof_ipc_get_reply() helper: removing the custom
      function allows us to simply perform a call to the sof-priv helper
      snd_sof_ipc_process_reply(), simplifying and shortening this driver
      and getting all the benefits of using a common API.
      
      Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com
      Link: https://lore.kernel.org/r/20230503113413.149235-3-angelogioacchino.delregno@collabora.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      709f34b4
    • AngeloGioacchino Del Regno's avatar
      ASoC: SOF: mediatek: mt8195: Use snd_sof_ipc_process_reply() helper · 06ba8020
      AngeloGioacchino Del Regno authored
      Function mt8195_get_reply() performs practically the same operation
      as the common snd_sof_ipc_get_reply() helper: removing the custom
      function allows us to simply perform a call to the sof-priv helper
      snd_sof_ipc_process_reply(), simplifying and shortening this driver
      and getting all the benefits of using a common API.
      
      Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com
      Link: https://lore.kernel.org/r/20230503113413.149235-2-angelogioacchino.delregno@collabora.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      06ba8020
    • Kuninori Morimoto's avatar
      ASoC: soc-topology.c: add comment for Platform/Codec · 5a7bec81
      Kuninori Morimoto authored
      Not only Platform but Codec also might be overwritten on Topology.
      This patch adds comment about it not to use asoc_dummy_dlc here.
      
      Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com
      Link: https://lore.kernel.org/r/87sfcqyphq.wl-kuninori.morimoto.gx@renesas.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      5a7bec81
    • Kuninori Morimoto's avatar
      ASoC: simple_card_utils.c: use asoc_dummy_dlc · 4d626112
      Kuninori Morimoto authored
      Now we can share asoc_dummy_dlc. This patch use it.
      
      Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com
      Link: https://lore.kernel.org/r/87ttx6ypi3.wl-kuninori.morimoto.gx@renesas.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      4d626112
    • Kuninori Morimoto's avatar
      ASoC: intel: skylake: use asoc_dummy_dlc · 1a39e178
      Kuninori Morimoto authored
      Now we can share asoc_dummy_dlc. This patch use it.
      
      Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com
      Link: https://lore.kernel.org/r/87v8hmypia.wl-kuninori.morimoto.gx@renesas.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      1a39e178
    • Kuninori Morimoto's avatar
      ASoC: intel: sof: use asoc_dummy_dlc · 1785af9f
      Kuninori Morimoto authored
      Now we can share asoc_dummy_dlc. This patch use it.
      
      Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com
      Link: https://lore.kernel.org/r/87wn22ypig.wl-kuninori.morimoto.gx@renesas.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      1785af9f
    • Kuninori Morimoto's avatar
      ASoC: intel: avs: use asoc_dummy_dlc · 82528f31
      Kuninori Morimoto authored
      Now we can share asoc_dummy_dlc. This patch use it.
      
      Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com
      Link: https://lore.kernel.org/r/87y1miypim.wl-kuninori.morimoto.gx@renesas.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      82528f31
    • Kuninori Morimoto's avatar
      ASoC: meson: use asoc_dummy_dlc · 0c16ed1a
      Kuninori Morimoto authored
      Now we can share asoc_dummy_dlc. This patch use it.
      
      Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com
      Link: https://lore.kernel.org/r/87zg6yypit.wl-kuninori.morimoto.gx@renesas.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      0c16ed1a
    • Kuninori Morimoto's avatar
      ASoC: atmel: use asoc_dummy_dlc · ccfc8750
      Kuninori Morimoto authored
      Now we can share asoc_dummy_dlc. This patch use it.
      
      Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com
      Link: https://lore.kernel.org/r/871qka0zwb.wl-kuninori.morimoto.gx@renesas.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      ccfc8750
    • Kuninori Morimoto's avatar
      ASoC: qcom: use asoc_dummy_dlc · 1cef66f5
      Kuninori Morimoto authored
      Now we can share asoc_dummy_dlc. This patch use it.
      
      Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com
      Link: https://lore.kernel.org/r/87354q0zwj.wl-kuninori.morimoto.gx@renesas.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      1cef66f5
    • Kuninori Morimoto's avatar
      ASoC: fsl: use asoc_dummy_dlc · 87e39e9b
      Kuninori Morimoto authored
      Now we can share asoc_dummy_dlc. This patch use it.
      
      Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com
      Link: https://lore.kernel.org/r/874jp60zwq.wl-kuninori.morimoto.gx@renesas.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      87e39e9b
    • Kuninori Morimoto's avatar
      ASoC: amd: use asoc_dummy_dlc · 42e0861d
      Kuninori Morimoto authored
      Now we can share asoc_dummy_dlc. This patch use it.
      
      Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com
      Link: https://lore.kernel.org/r/875y9m0zwz.wl-kuninori.morimoto.gx@renesas.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      42e0861d
    • Kuninori Morimoto's avatar
      ASoC: sof: use asoc_dummy_dlc · 91cd742b
      Kuninori Morimoto authored
      Now we can share asoc_dummy_dlc. This patch use it.
      
      Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com
      Link: https://lore.kernel.org/r/877cu20zx8.wl-kuninori.morimoto.gx@renesas.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      91cd742b
    • Kuninori Morimoto's avatar
      ASoC: ti: use asoc_dummy_dlc · 5a6ca949
      Kuninori Morimoto authored
      Now we can share asoc_dummy_dlc. This patch use it.
      
      Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com
      Link: https://lore.kernel.org/r/878rei0zxn.wl-kuninori.morimoto.gx@renesas.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      5a6ca949
    • Kuninori Morimoto's avatar
      ASoC: soc-utils.c: add asoc_dummy_dlc · d2a4e0d7
      Kuninori Morimoto authored
      ASoC uses dummy Component, sharing snd_soc_dai_link_component
      for it is better idea. This patch adds it.
      
      Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com
      Link: https://lore.kernel.org/r/87a5yy0zyk.wl-kuninori.morimoto.gx@renesas.com
      Signed-off-by: Mark Brown <broonie@kernel.org
      d2a4e0d7
    • Linus Torvalds's avatar
      Linux 6.4-rc1 · ac9a7868
      Linus Torvalds authored
      ac9a7868
    • Linus Torvalds's avatar
      Merge tag 'perf-tools-for-v6.4-3-2023-05-06' of... · f085df1b
      Linus Torvalds authored
      Merge tag 'perf-tools-for-v6.4-3-2023-05-06' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux
      
      Pull perf tool updates from Arnaldo Carvalho de Melo:
       "Third version of perf tool updates, with the build problems with with
        using a 'vmlinux.h' generated from the main build fixed, and the bpf
        skeleton build disabled by default.
      
        Build:
      
         - Require libtraceevent to build, one can disable it using
           NO_LIBTRACEEVENT=1.
      
           It is required for tools like 'perf sched', 'perf kvm', 'perf
           trace', etc.
      
           libtraceevent is available in most distros so installing
           'libtraceevent-devel' should be a one-time event to continue
           building perf as usual.
      
           Using NO_LIBTRACEEVENT=1 produces tooling that is functional and
           sufficient for lots of users not interested in those libtraceevent
           dependent features.
      
         - Allow Python support in 'perf script' when libtraceevent isn't
           linked, as not all features requires it, for instance Intel PT does
           not use tracepoints.
      
         - Error if the python interpreter needed for jevents to work isn't
           available and NO_JEVENTS=1 isn't set, preventing a build without
           support for JSON vendor events, which is a rare but possible
           condition. The two check error messages:
      
              $(error ERROR: No python interpreter needed for jevents generation. Install python or build with NO_JEVENTS=1.)
              $(error ERROR: Python interpreter needed for jevents generation too old (older than 3.6). Install a newer python or build with NO_JEVENTS=1.)
      
         - Make libbpf 1.0 the minimum required when building with out of
           tree, distro provided libbpf.
      
         - Use libsdtc++'s and LLVM's libcxx's __cxa_demangle, a portable C++
           demangler, add 'perf test' entry for it.
      
         - Make binutils libraries opt in, as distros disable building with it
           due to licensing, they were used for C++ demangling, for instance.
      
         - Switch libpfm4 to opt-out rather than opt-in, if libpfm-devel (or
           equivalent) isn't installed, we'll just have a build warning:
      
             Makefile.config:1144: libpfm4 not found, disables libpfm4 support. Please install libpfm4-dev
      
         - Add a feature test for scandirat(), that is not implemented so far
           in musl and uclibc, disabling features that need it, such as
           scanning for tracepoints in /sys/kernel/tracing/events.
      
        perf BPF filters:
      
         - New feature where BPF can be used to filter samples, for instance:
      
            $ sudo ./perf record -e cycles --filter 'period > 1000' true
            $ sudo ./perf script
                 perf-exec 2273949 546850.708501:       5029 cycles:  ffffffff826f9e25 finish_wait+0x5 ([kernel.kallsyms])
                 perf-exec 2273949 546850.708508:      32409 cycles:  ffffffff826f9e25 finish_wait+0x5 ([kernel.kallsyms])
                 perf-exec 2273949 546850.708526:     143369 cycles:  ffffffff82b4cdbf xas_start+0x5f ([kernel.kallsyms])
                 perf-exec 2273949 546850.708600:     372650 cycles:  ffffffff8286b8f7 __pagevec_lru_add+0x117 ([kernel.kallsyms])
                 perf-exec 2273949 546850.708791:     482953 cycles:  ffffffff829190de __mod_memcg_lruvec_state+0x4e ([kernel.kallsyms])
                      true 2273949 546850.709036:     501985 cycles:  ffffffff828add7c tlb_gather_mmu+0x4c ([kernel.kallsyms])
                      true 2273949 546850.709292:     503065 cycles:      7f2446d97c03 _dl_map_object_deps+0x973 (/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2)
      
         - In addition to 'period' (PERF_SAMPLE_PERIOD), the other
           PERF_SAMPLE_ can be used for filtering, and also some other sample
           accessible values, from tools/perf/Documentation/perf-record.txt:
      
              Essentially the BPF filter expression is:
      
              <term> <operator> <value> (("," | "||") <term> <operator> <value>)*
      
           The <term> can be one of:
              ip, id, tid, pid, cpu, time, addr, period, txn, weight, phys_addr,
              code_pgsz, data_pgsz, weight1, weight2, weight3, ins_lat, retire_lat,
              p_stage_cyc, mem_op, mem_lvl, mem_snoop, mem_remote, mem_lock,
              mem_dtlb, mem_blk, mem_hops
      
           The <operator> can be one of:
              ==, !=, >, >=, <, <=, &
      
           The <value> can be one of:
              <number> (for any term)
              na, load, store, pfetch, exec (for mem_op)
              l1, l2, l3, l4, cxl, io, any_cache, lfb, ram, pmem (for mem_lvl)
              na, none, hit, miss, hitm, fwd, peer (for mem_snoop)
              remote (for mem_remote)
              na, locked (for mem_locked)
              na, l1_hit, l1_miss, l2_hit, l2_miss, any_hit, any_miss, walk, fault (for mem_dtlb)
              na, by_data, by_addr (for mem_blk)
              hops0, hops1, hops2, hops3 (for mem_hops)
      
        perf lock contention:
      
         - Show lock type with address.
      
         - Track and show mmap_lock, siglock and per-cpu rq_lock with address.
           This is done for mmap_lock by following the current->mm pointer:
      
            $ sudo ./perf lock con -abl -- sleep 10
             contended   total wait     max wait     avg wait            address   symbol
             ...
                 16344    312.30 ms      2.22 ms     19.11 us   ffff8cc702595640
                 17686    310.08 ms      1.49 ms     17.53 us   ffff8cc7025952c0
                     3     84.14 ms     45.79 ms     28.05 ms   ffff8cc78114c478   mmap_lock
                  3557     76.80 ms     68.75 us     21.59 us   ffff8cc77ca3af58
                     1     68.27 ms     68.27 ms     68.27 ms   ffff8cda745dfd70
                     9     54.53 ms      7.96 ms      6.06 ms   ffff8cc7642a48b8   mmap_lock
                 14629     44.01 ms     60.00 us      3.01 us   ffff8cc7625f9ca0
                  3481     42.63 ms    140.71 us     12.24 us   ffffffff937906ac   vmap_area_lock
                 16194     38.73 ms     42.15 us      2.39 us   ffff8cd397cbc560
                    11     38.44 ms     10.39 ms      3.49 ms   ffff8ccd6d12fbb8   mmap_lock
                     1      5.43 ms      5.43 ms      5.43 ms   ffff8cd70018f0d8
                  1674      5.38 ms    422.93 us      3.21 us   ffffffff92e06080   tasklist_lock
                   581      4.51 ms    130.68 us      7.75 us   ffff8cc9b1259058
                     5      3.52 ms      1.27 ms    703.23 us   ffff8cc754510070
                   112      3.47 ms     56.47 us     31.02 us   ffff8ccee38b3120
                   381      3.31 ms     73.44 us      8.69 us   ffffffff93790690   purge_vmap_area_lock
                   255      3.19 ms     36.35 us     12.49 us   ffff8d053ce30c80
      
         - Update default map size to 16384.
      
         - Allocate single letter option -M for --map-nr-entries, as it is
           proving being frequently used.
      
         - Fix struct rq lock access for older kernels with BPF's CO-RE
           (Compile once, run everywhere).
      
         - Fix problems found with MSAn.
      
        perf report/top:
      
         - Add inline information when using --call-graph=fp or lbr, as was
           already done to the --call-graph=dwarf callchain mode.
      
         - Improve the 'srcfile' sort key performance by really using an
           optimization introduced in 6.2 for the 'srcline' sort key that
           avoids calling addr2line for comparision with each sample.
      
        perf sched:
      
         - Make 'perf sched latency/map/replay' to use "sched:sched_waking"
           instead of "sched:sched_waking", consistent with 'perf record'
           since d566a9c2 ("perf sched: Prefer sched_waking event when it
           exists").
      
        perf ftrace:
      
         - Make system wide the default target for latency subcommand, run the
           following command then generate some network traffic and press
           control+C:
      
             # perf ftrace latency -T __kfree_skb
           ^C
               DURATION     |      COUNT | GRAPH                                          |
                0 - 1    us |         27 | #############                                  |
                1 - 2    us |         22 | ###########                                    |
                2 - 4    us |          8 | ####                                           |
                4 - 8    us |          5 | ##                                             |
                8 - 16   us |         24 | ############                                   |
               16 - 32   us |          2 | #                                              |
               32 - 64   us |          1 |                                                |
               64 - 128  us |          0 |                                                |
              128 - 256  us |          0 |                                                |
              256 - 512  us |          0 |                                                |
              512 - 1024 us |          0 |                                                |
                1 - 2    ms |          0 |                                                |
                2 - 4    ms |          0 |                                                |
                4 - 8    ms |          0 |                                                |
                8 - 16   ms |          0 |                                                |
               16 - 32   ms |          0 |                                                |
               32 - 64   ms |          0 |                                                |
               64 - 128  ms |          0 |                                                |
              128 - 256  ms |          0 |                                                |
              256 - 512  ms |          0 |                                                |
              512 - 1024 ms |          0 |                                                |
                1 - ...   s |          0 |                                                |
             #
      
        perf top:
      
         - Add --branch-history (LBR: Last Branch Record) option, just like
           already available for 'perf record'.
      
         - Fix segfault in thread__comm_len() where thread->comm was being
           used outside thread->comm_lock.
      
        perf annotate:
      
         - Allow configuring objdump and addr2line in ~/.perfconfig., so that
           you can use alternative binaries, such as llvm's.
      
        perf kvm:
      
         - Add TUI mode for 'perf kvm stat report'.
      
        Reference counting:
      
         - Add reference count checking infrastructure to check for use after
           free, done to the 'cpumap', 'namespaces', 'maps' and 'map' structs,
           more to come.
      
           To build with it use -DREFCNT_CHECKING=1 in the make command line
           to build tools/perf. Documented at:
      
             https://perf.wiki.kernel.org/index.php/Reference_Count_Checking
      
         - The above caught, for instance, fix, present in this series:
      
              - Fix maps use after put in 'perf test "Share thread maps"':
      
                'maps' is copied from leader, but the leader is put on line 79
                and then 'maps' is used to read the reference count below - so
                a use after put, with the put of maps happening within
                thread__put.
      
           Fixed by reversing the order of puts so that the leader is put
           last.
      
         - Also several fixes were made to places where reference counts were
           not being held.
      
         - Make this one of the tests in 'make -C tools/perf build-test' to
           regularly build test it and to make sure no direct access to the
           reference counted structs are made, doing that via accessors to
           check the validity of the struct pointer.
      
        ARM64:
      
         - Fix 'perf report' segfault when filtering coresight traces by
           sparse lists of CPUs.
      
         - Add support for 'simd' as a sort field for 'perf report', to show
           ARM's NEON SIMD's predicate flags: "partial" and "empty".
      
        arm64 vendor events:
      
         - Add N1 metrics.
      
        Intel vendor events:
      
         - Add graniterapids, grandridge and sierraforrest events.
      
         - Refresh events for: alderlake, aldernaken, broadwell, broadwellde,
           broadwellx, cascadelakx, haswell, haswellx, icelake, icelakex,
           jaketown, meteorlake, knightslanding, sandybridge, sapphirerapids,
           silvermont, skylake, tigerlake and westmereep-dp
      
         - Refresh metrics for alderlake-n, broadwell, broadwellde,
           broadwellx, haswell, haswellx, icelakex, ivybridge, ivytown and
           skylakex.
      
        perf stat:
      
         - Implement --topdown using JSON metrics.
      
         - Add TopdownL1 JSON metric as a default if present, but disable it
           for now for some Intel hybrid architectures, a series of patches
           addressing this is being reviewed and will be submitted for v6.5.
      
         - Use metrics for --smi-cost.
      
         - Update topdown documentation.
      
        Vendor events (JSON) infrastructure:
      
         - Add support for computing and printing metric threshold values. For
           instance, here is one found in thesapphirerapids json file:
      
             {
                 "BriefDescription": "Percentage of cycles spent in System Management Interrupts.",
                 "MetricExpr": "((msr@aperf@ - cycles) / msr@aperf@ if msr@smi@ > 0 else 0)",
                 "MetricGroup": "smi",
                 "MetricName": "smi_cycles",
                 "MetricThreshold": "smi_cycles > 0.1",
                 "ScaleUnit": "100%"
             },
      
         - Test parsing metric thresholds with the fake PMU in 'perf test
           pmu-events'.
      
         - Support for printing metric thresholds in 'perf list'.
      
         - Add --metric-no-threshold option to 'perf stat'.
      
         - Add rand (reverse and) and has_pmem (optane memory) support to
           metrics.
      
         - Sort list of input files to avoid depending on the order from
           readdir() helping in obtaining reproducible builds.
      
        S/390:
      
         - Add common metrics: - CPI (cycles per instruction), prbstate (ratio
           of instructions executed in problem state compared to total number
           of instructions), l1mp (Level one instruction and data cache misses
           per 100 instructions).
      
         - Add cache metrics for z13, z14, z15 and z16.
      
         - Add metric for TLB and cache.
      
        ARM:
      
         - Add raw decoding for SPE (Statistical Profiling Extension) v1.3 MTE
           (Memory Tagging Extension) and MOPS (Memory Operations) load/store.
      
        Intel PT hardware tracing:
      
         - Add event type names UINTR (User interrupt delivered) and UIRET
           (Exiting from user interrupt routine), documented in table 32-50
           "CFE Packet Type and Vector Fields Details" in the Intel Processor
           Trace chapter of The Intel SDM Volume 3 version 078.
      
         - Add support for new branch instructions ERETS and ERETU.
      
         - Fix CYC timestamps after standalone CBR
      
        ARM CoreSight hardware tracing:
      
         - Allow user to override timestamp and contextid settings.
      
         - Fix segfault in dso lookup.
      
         - Fix timeless decode mode detection.
      
         - Add separate decode paths for timeless and per-thread modes.
      
        auxtrace:
      
         - Fix address filter entire kernel size.
      
        Miscellaneous:
      
         - Fix use-after-free and unaligned bugs in the PLT handling routines.
      
         - Use zfree() to reduce chances of use after free.
      
         - Add missing 0x prefix for addresses printed in hexadecimal in 'perf
           probe'.
      
         - Suppress massive unsupported target platform errors in the unwind
           code.
      
         - Fix return incorrect build_id size in elf_read_build_id().
      
         - Fix 'perf scripts intel-pt-events.py' IPC output for Python 2 .
      
         - Add missing new parameter in kfree_skb tracepoint to the python
           scripts using it.
      
         - Add 'perf bench syscall fork' benchmark.
      
         - Add support for printing PERF_MEM_LVLNUM_UNC (Uncached access) in
           'perf mem'.
      
         - Fix wrong size expectation for perf test 'Setup struct
           perf_event_attr' caused by the patch adding
           perf_event_attr::config3.
      
         - Fix some spelling mistakes"
      
      * tag 'perf-tools-for-v6.4-3-2023-05-06' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux: (365 commits)
        Revert "perf build: Make BUILD_BPF_SKEL default, rename to NO_BPF_SKEL"
        Revert "perf build: Warn for BPF skeletons if endian mismatches"
        perf metrics: Fix SEGV with --for-each-cgroup
        perf bpf skels: Stop using vmlinux.h generated from BTF, use subset of used structs + CO-RE
        perf stat: Separate bperf from bpf_profiler
        perf test record+probe_libc_inet_pton: Fix call chain match on x86_64
        perf test record+probe_libc_inet_pton: Fix call chain match on s390
        perf tracepoint: Fix memory leak in is_valid_tracepoint()
        perf cs-etm: Add fix for coresight trace for any range of CPUs
        perf build: Fix unescaped # in perf build-test
        perf unwind: Suppress massive unsupported target platform errors
        perf script: Add new parameter in kfree_skb tracepoint to the python scripts using it
        perf script: Print raw ip instead of binary offset for callchain
        perf symbols: Fix return incorrect build_id size in elf_read_build_id()
        perf list: Modify the warning message about scandirat(3)
        perf list: Fix memory leaks in print_tracepoint_events()
        perf lock contention: Rework offset calculation with BPF CO-RE
        perf lock contention: Fix struct rq lock access
        perf stat: Disable TopdownL1 on hybrid
        perf stat: Avoid SEGV on counter->name
        ...
      f085df1b