1. 17 Aug, 2022 7 commits
    • Daniel Lezcano's avatar
      thermal/drivers/uniphier: Switch to new of API · c5f12023
      Daniel Lezcano authored
      The thermal OF code has a new API allowing to migrate the OF
      initialization to a simpler approach. The ops are no longer device
      tree specific and are the generic ones provided by the core code.
      
      Convert the ops to the thermal_zone_device_ops format and use the new
      API to register the thermal zone with these generic ops.
      Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linexp.org>
      Link: https://lore.kernel.org/r/20220804224349.1926752-5-daniel.lezcano@linexp.orgReviewed-by: default avatarKunihiko Hayashi <hayashi.kunihiko@socionext.com>
      Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
      c5f12023
    • Daniel Lezcano's avatar
      thermal/drivers/rockchip: Switch to new of API · 90b2ca02
      Daniel Lezcano authored
      The thermal OF code has a new API allowing to migrate the OF
      initialization to a simpler approach. The ops are no longer device
      tree specific and are the generic ones provided by the core code.
      
      Convert the ops to the thermal_zone_device_ops format and use the new
      API to register the thermal zone with these generic ops.
      Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linexp.org>
      Link: https://lore.kernel.org/r/20220804224349.1926752-4-daniel.lezcano@linexp.orgSigned-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
      90b2ca02
    • Daniel Lezcano's avatar
      thermal/of: Make new code and old code co-exist · 48ad3b10
      Daniel Lezcano authored
      This transient change allows to use old and new OF together until all
      the drivers are converted to use the new OF API.
      
      This will go away when the old OF code will be removed.
      Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linexp.org>
      Link: https://lore.kernel.org/r/20220804224349.1926752-3-daniel.lezcano@linexp.orgSigned-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
      48ad3b10
    • Daniel Lezcano's avatar
      thermal/of: Fix free after use in thermal_of_unregister() · 8fb5b71e
      Daniel Lezcano authored
      The thermal zone is freed after being unregistered. The release method
      devm_thermal_zone_device_register() calls
        -> thermal_of_zone_device_unregister()
      
      This one calls thermal_zone_device_unregister() which frees the
      thermal zone. However, thermal_of_zone_device_unregister() does access
      this freed pointer to free different resources allocated by the
      thermal_of framework which is invalid.
      
      It results in a kernel panic:
      
      [    1.915140] thermal_sys: Failed to find thermal zone for tmu id=2
      [    1.921279] qoriq_thermal 1f80000.tmu: Failed to register sensors
      [    1.927395] qoriq_thermal: probe of 1f80000.tmu failed with error -22
      [    1.934189] Unable to handle kernel paging request at virtual address 01adadadadadad88
      [    1.942146] Mem abort info:
      [    1.944948]   ESR = 0x0000000096000004
      [    1.948708]   EC = 0x25: DABT (current EL), IL = 32 bits
      [    1.954042]   SET = 0, FnV = 0
      [    1.957107]   EA = 0, S1PTW = 0
      [    1.960253]   FSC = 0x04: level 0 translation fault
      [    1.965147] Data abort info:
      [    1.968030]   ISV = 0, ISS = 0x00000004
      [    1.971878]   CM = 0, WnR = 0
      [    1.974852] [01adadadadadad88] address between user and kernel address ranges
      [    1.982016] Internal error: Oops: 96000004 [#1] SMP
      [    1.986907] Modules linked in:
      [    1.989969] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 5.19.0-next-20220808-00080-g1c46f44502e0 #1697
      [    1.999135] Hardware name: Kontron KBox A-230-LS (DT)
      [    2.004199] pstate: 20000005 (nzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
      [    2.011185] pc : kfree+0x5c/0x3c0
      [    2.014516] lr : devm_thermal_of_zone_release+0x38/0x60
      [    2.019761] sp : ffff80000a22bad0
      [    2.023081] x29: ffff80000a22bad0 x28: 0000000000000000 x27: ffff800009960464
      [    2.030245] x26: ffff800009a16960 x25: 0000000000000006 x24: ffff800009f09a40
      [    2.037407] x23: ffff800009ab9008 x22: ffff800008d0eea8 x21: 01adadadadadad80
      [    2.044569] x20: 6b6b6b6b6b6b6b6b x19: ffff00200232b800 x18: 00000000fffffffb
      [    2.051731] x17: ffff800008d0eea0 x16: ffff800008d07d44 x15: ffff800008d0d154
      [    2.056647] usb 1-1: new high-speed USB device number 2 using xhci-hcd
      [    2.058893] x14: ffff800008d0cddc x13: ffff8000088d1c2c x12: ffff8000088d5034
      [    2.072597] x11: ffff8000088d46d4 x10: 0000000000000000 x9 : ffff800008d0eea8
      [    2.079759] x8 : ffff002000b1a158 x7 : bbbbbbbbbbbbbbbb x6 : ffff80000a0f53b8
      [    2.086921] x5 : ffff80000a22b960 x4 : 0000000000000000 x3 : 0000000000000000
      [    2.094082] x2 : fffffc0000000000 x1 : ffff002000838040 x0 : 01adb1adadadad80
      [    2.101244] Call trace:
      [    2.103692]  kfree+0x5c/0x3c0
      [    2.106666]  devm_thermal_of_zone_release+0x38/0x60
      [    2.111561]  release_nodes+0x64/0xd0
      [    2.115146]  devres_release_all+0xbc/0x350
      [    2.119253]  device_unbind_cleanup+0x20/0x70
      [    2.123536]  really_probe+0x1a0/0x2e4
      [    2.127208]  __driver_probe_device+0x80/0xec
      [    2.131490]  driver_probe_device+0x44/0x130
      [    2.135685]  __driver_attach+0x104/0x1b4
      [    2.139619]  bus_for_each_dev+0x7c/0xe0
      [    2.143465]  driver_attach+0x30/0x40
      [    2.147048]  bus_add_driver+0x160/0x210
      [    2.150894]  driver_register+0x84/0x140
      [    2.154741]  __platform_driver_register+0x34/0x40
      [    2.159461]  qoriq_tmu_init+0x28/0x34
      [    2.163133]  do_one_initcall+0x50/0x250
      [    2.166979]  kernel_init_freeable+0x278/0x31c
      [    2.171349]  kernel_init+0x30/0x140
      [    2.174847]  ret_from_fork+0x10/0x20
      [    2.178433] Code: b25657e2 d34cfc00 d37ae400 8b020015 (f94006a1)
      [    2.184546] ---[ end trace 0000000000000000 ]---
      
      Store the allocated resource pointers before the thermal zone is free
      and use them to release the resource after unregistering the thermal
      zone.
      
      Fixes: 3bd52ac87347 ("thermal/of: Rework the thermal device tree initialization")
      Reported-by: default avatarMichael Walle <michael@walle.cc>
      Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
      Tested-by: default avatarMichael Walle <michael@walle.cc>
      Reviewed-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Link: https://lore.kernel.org/r/20220809085629.509116-4-daniel.lezcano@linaro.org
      8fb5b71e
    • Daniel Lezcano's avatar
      thermal/of: Return -ENODEV instead of -EINVAL if registration fails · 9d6792df
      Daniel Lezcano authored
      The previous version of the OF code was returning -ENODEV if no
      thermal zones description was found or if the lookup of the sensor in
      the thermal zones was not found.
      
      The backend drivers are expecting this return value as an information
      about skipping the sensor initialization and considered as normal.
      
      Fix the return value by replacing -EINVAL by -ENODEV and remove the
      error message as this missing is not considered as an error.
      
      Fixes: 3bd52ac87347 ("thermal/of: Rework the thermal device tree initialization")
      Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
      Tested-by: default avatarMichael Walle <michael@walle.cc>
      Reviewed-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Link: https://lore.kernel.org/r/20220809085629.509116-2-daniel.lezcano@linaro.org
      9d6792df
    • Dan Carpenter's avatar
      thermal/of: Fix error code in of_thermal_zone_find() · 45b8850b
      Dan Carpenter authored
      Currently, if we cannot find the correct thermal zone then this error
      path returns NULL and it would lead to an Oops in the caller.  Return
      ERR_PTR(-EINVAL) instead.
      
      Fixes: 3bd52ac87347 ("thermal/of: Rework the thermal device tree initialization")
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Link: https://lore.kernel.org/r/YvDzovkMCQecPDjz@kiliSigned-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
      45b8850b
    • Daniel Lezcano's avatar
      thermal/of: Rework the thermal device tree initialization · 3fd6d6e2
      Daniel Lezcano authored
      The following changes are reworking entirely the thermal device tree
      initialization. The old version is kept until the different drivers
      using it are converted to the new API.
      
      The old approach creates the different actors independently. This
      approach is the source of the code duplication in the thermal OF
      because a thermal zone is created but a sensor is registered
      after. The thermal zones are created unconditionnaly with a fake
      sensor at init time, thus forcing to provide fake ops and store all
      the thermal zone related information in duplicated structures. Then
      the sensor is initialized and the code looks up the thermal zone name
      using the device tree. Then the sensor is associated to the thermal
      zone, and the sensor specific ops are called with a second level of
      indirection from the thermal zone ops.
      
      When a sensor is removed (with a module unload), the thermal zone
      stays there with the fake sensor.
      
      The cooling device associated with a thermal zone and a trip point is
      stored in a list, again duplicating information, using the node name
      of the device tree to match afterwards the cooling devices.
      
      The new approach is simpler, it creates a thermal zone when the sensor
      is registered and destroys it when the sensor is removed. All the
      matching between the cooling device, trip points and thermal zones are
      done using the device tree, as well as bindings. The ops are no longer
      specific but uses the generic ones provided by the thermal framework.
      
      When the old code won't have any users, it can be removed and the
      remaining thermal OF code will be much simpler.
      Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linexp.org>
      Link: https://lore.kernel.org/r/20220804224349.1926752-2-daniel.lezcano@linexp.orgSigned-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
      3fd6d6e2
  2. 15 Aug, 2022 2 commits
    • Daniel Lezcano's avatar
      dt-bindings: thermal: Fix missing required property · 8c596324
      Daniel Lezcano authored
      When the thermal zone description was converted to yaml schema, the
      required 'trips' property was forgotten.
      
      The initial text bindings was describing:
      
      "
      [ ... ]
      
      * Thermal zone nodes
      
      The thermal zone node is the node containing all the required info
      for describing a thermal zone, including its cooling device bindings. The
      thermal zone node must contain, apart from its own properties, one sub-node
      containing trip nodes and one sub-node containing all the zone cooling maps.
      
      Required properties:
      - polling-delay:        The maximum number of milliseconds to wait between polls
        Type: unsigned        when checking this thermal zone.
        Size: one cell
      
      - polling-delay-passive: The maximum number of milliseconds to wait
        Type: unsigned        between polls when performing passive cooling.
        Size: one cell
      
      - thermal-sensors:      A list of thermal sensor phandles and sensor specifier
        Type: list of         used while monitoring the thermal zone.
        phandles + sensor
        specifier
      
      - trips:                A sub-node which is a container of only trip point nodes
        Type: sub-node        required to describe the thermal zone.
      
      Optional property:
      - cooling-maps:         A sub-node which is a container of only cooling device
        Type: sub-node        map nodes, used to describe the relation between trips
                              and cooling devices.
        [ ... ]
      
      "
      
      Now the schema describes:
      
      "
          [ ... ]
      
          required:
            - polling-delay
            - polling-delay-passive
            - thermal-sensors
      
          [ ... ]
      "
      
      Add the missing 'trips' property in the required properties.
      
      Fixed: 1202a442 ("dt-bindings: thermal: Add yaml bindings for thermal zones")
      Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
      Acked-by: default avatarRob Herring <robh@kernel.org>
      Link: https://lore.kernel.org/r/20220809085629.509116-3-daniel.lezcano@linaro.org
      8c596324
    • Daniel Lezcano's avatar
      thermal/core: Add missing EXPORT_SYMBOL_GPL · a921be53
      Daniel Lezcano authored
      The function thermal_zone_device_register_with_trips() is not exported
      for modules.
      
      Add the missing EXPORT_SYMBOL_GPL().
      
      Fixes: fae11de5 ("thermal/core: Add thermal_trip in thermal_zone")
      Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
      Link: https://lore.kernel.org/r/20220810100731.749317-1-daniel.lezcano@linaro.org
      a921be53
  3. 14 Aug, 2022 10 commits
    • Linus Torvalds's avatar
      Linux 6.0-rc1 · 568035b0
      Linus Torvalds authored
      568035b0
    • Yury Norov's avatar
      radix-tree: replace gfp.h inclusion with gfp_types.h · 9f162193
      Yury Norov authored
      Radix tree header includes gfp.h for __GFP_BITS_SHIFT only. Now we
      have gfp_types.h for this.
      
      Fixes powerpc allmodconfig build:
      
         In file included from include/linux/nodemask.h:97,
                          from include/linux/mmzone.h:17,
                          from include/linux/gfp.h:7,
                          from include/linux/radix-tree.h:12,
                          from include/linux/idr.h:15,
                          from include/linux/kernfs.h:12,
                          from include/linux/sysfs.h:16,
                          from include/linux/kobject.h:20,
                          from include/linux/pci.h:35,
                          from arch/powerpc/kernel/prom_init.c:24:
         include/linux/random.h: In function 'add_latent_entropy':
      >> include/linux/random.h:25:46: error: 'latent_entropy' undeclared (first use in this function); did you mean 'add_latent_entropy'?
            25 |         add_device_randomness((const void *)&latent_entropy, sizeof(latent_entropy));
               |                                              ^~~~~~~~~~~~~~
               |                                              add_latent_entropy
         include/linux/random.h:25:46: note: each undeclared identifier is reported only once for each function it appears in
      Reported-by: default avatarkernel test robot <lkp@intel.com>
      CC: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
      CC: Andrew Morton <akpm@linux-foundation.org>
      CC: Jason A. Donenfeld <Jason@zx2c4.com>
      Signed-off-by: default avatarYury Norov <yury.norov@gmail.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9f162193
    • Linus Torvalds's avatar
      Merge tag 'pull-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 74cbb480
      Linus Torvalds authored
      Pull vfs lseek fix from Al Viro:
       "Fix proc_reg_llseek() breakage. Always had been possible if somebody
        left NULL ->proc_lseek, became a practical issue now"
      
      * tag 'pull-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        take care to handle NULL ->proc_lseek()
      74cbb480
    • Al Viro's avatar
      take care to handle NULL ->proc_lseek() · 3f61631d
      Al Viro authored
      Easily done now, just by clearing FMODE_LSEEK in ->f_mode
      during proc_reg_open() for such entries.
      
      Fixes: 868941b1 "fs: remove no_llseek"
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      3f61631d
    • Linus Torvalds's avatar
      Merge tag 'for-linus-6.0-rc1b-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip · 5d6a0f4d
      Linus Torvalds authored
      Pull more xen updates from Juergen Gross:
      
       - fix the handling of the "persistent grants" feature negotiation
         between Xen blkfront and Xen blkback drivers
      
       - a cleanup of xen.config and adding xen.config to Xen section in
         MAINTAINERS
      
       - support HVMOP_set_evtchn_upcall_vector, which is more compliant to
         "normal" interrupt handling than the global callback used up to now
      
       - further small cleanups
      
      * tag 'for-linus-6.0-rc1b-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
        MAINTAINERS: add xen config fragments to XEN HYPERVISOR sections
        xen: remove XEN_SCRUB_PAGES in xen.config
        xen/pciback: Fix comment typo
        xen/xenbus: fix return type in xenbus_file_read()
        xen-blkfront: Apply 'feature_persistent' parameter when connect
        xen-blkback: Apply 'feature_persistent' parameter when connect
        xen-blkback: fix persistent grants negotiation
        x86/xen: Add support for HVMOP_set_evtchn_upcall_vector
      5d6a0f4d
    • Linus Torvalds's avatar
      Merge tag 'perf-tools-fixes-for-v6.0-2022-08-13' of... · 96f86ff0
      Linus Torvalds authored
      Merge tag 'perf-tools-fixes-for-v6.0-2022-08-13' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux
      
      Pull more perf tool updates from Arnaldo Carvalho de Melo:
      
       - 'perf c2c' now supports ARM64, adjust its output to cope with
         differences with what is in x86_64. Now go find false sharing on
         ARM64 (at least Neoverse) as well!
      
       - Refactor the JSON processing, making the output more compact and thus
         reducing the size of the resulting perf binary
      
       - Improvements for 'perf offcpu' profiling, including tracking child
         processes
      
       - Update Intel JSON metrics and events files for broadwellde,
         broadwellx, cascadelakex, haswellx, icelakex, ivytown, jaketown,
         knightslanding, sapphirerapids, skylakex and snowridgex
      
       - Add 'perf stat' JSON output and a 'perf test' entry for it
      
       - Ignore memfd and anonymous mmap events if jitdump present
      
       - Refactor 'perf test' shell tests allowing subdirs
      
       - Fix an error handling path in 'parse_perf_probe_command()'
      
       - Fixes for the guest Intel PT tracing patchkit in the 1st batch of
         this merge window
      
       - Print debuginfod queries if -v option is used, to explain delays in
         processing when debuginfo servers are enabled to fetch DSOs with
         richer symbol tables
      
       - Improve error message for 'perf record -p not_existing_pid'
      
       - Fix openssl and libbpf feature detection
      
       - Add PMU pai_crypto event description for IBM z16 on 'perf list'
      
       - Fix typos and duplicated words on comments in various places
      
      * tag 'perf-tools-fixes-for-v6.0-2022-08-13' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux: (81 commits)
        perf test: Refactor shell tests allowing subdirs
        perf vendor events: Update events for snowridgex
        perf vendor events: Update events and metrics for skylakex
        perf vendor events: Update metrics for sapphirerapids
        perf vendor events: Update events for knightslanding
        perf vendor events: Update metrics for jaketown
        perf vendor events: Update metrics for ivytown
        perf vendor events: Update events and metrics for icelakex
        perf vendor events: Update events and metrics for haswellx
        perf vendor events: Update events and metrics for cascadelakex
        perf vendor events: Update events and metrics for broadwellx
        perf vendor events: Update metrics for broadwellde
        perf jevents: Fold strings optimization
        perf jevents: Compress the pmu_events_table
        perf metrics: Copy entire pmu_event in find metric
        perf pmu-events: Hide the pmu_events
        perf pmu-events: Don't assume pmu_event is an array
        perf pmu-events: Move test events/metrics to JSON
        perf test: Use full metric resolution
        perf pmu-events: Hide pmu_events_map
        ...
      96f86ff0
    • Linus Torvalds's avatar
      Merge tag 'powerpc-6.0-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · d785610f
      Linus Torvalds authored
      Pull powerpc fixes from Michael Ellerman:
      
       - Ensure we never emit lwarx with EH=1 on 32-bit, because some 32-bit
         CPUs trap on it rather than ignoring it as they should.
      
       - Fix ftrace when building with clang, which was broken by some
         refactoring.
      
       - A couple of other minor fixes.
      
      Thanks to Christophe Leroy, Naveen N.  Rao, Nick Desaulniers, Ondrej
      Mosnacek, Pali Rohár, Russell Currey, and Segher Boessenkool.
      
      * tag 'powerpc-6.0-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
        powerpc/kexec: Fix build failure from uninitialised variable
        powerpc/ppc-opcode: Fix PPC_RAW_TW()
        powerpc64/ftrace: Fix ftrace for clang builds
        powerpc: Make eh value more explicit when using lwarx
        powerpc: Don't hide eh field of lwarx behind a macro
        powerpc: Fix eh field when calling lwarx on PPC32
      d785610f
    • Linus Torvalds's avatar
      Merge tag 'pull-work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · aea23e7c
      Linus Torvalds authored
      Pull /proc/mounts fix from Al Viro:
       "Fix for /proc/mounts escaping - escape the '#' character too"
      
      * tag 'pull-work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        vfs: escape hash as well
      aea23e7c
    • Linus Torvalds's avatar
      Merge tag '5.20-rc-smb3-client-fixes-part2' of git://git.samba.org/sfrench/cifs-2.6 · 332019e2
      Linus Torvalds authored
      Pull more cifs updates from Steve French:
      
       - two fixes for stable, one for a lock length miscalculation, and
         another fixes a lease break timeout bug
      
       - improvement to handle leases, allows the close timeout to be
         configured more safely
      
       - five restructuring/cleanup patches
      
      * tag '5.20-rc-smb3-client-fixes-part2' of git://git.samba.org/sfrench/cifs-2.6:
        cifs: Do not access tcon->cfids->cfid directly from is_path_accessible
        cifs: Add constructor/destructors for tcon->cfid
        SMB3: fix lease break timeout when multiple deferred close handles for the same file.
        smb3: allow deferred close timeout to be configurable
        cifs: Do not use tcon->cfid directly, use the cfid we get from open_cached_dir
        cifs: Move cached-dir functions into a separate file
        cifs: Remove {cifs,nfs}_fscache_release_page()
        cifs: fix lock length calculation
      332019e2
    • David Howells's avatar
      afs: Enable multipage folio support · 8549a263
      David Howells authored
      Enable multipage folio support for the afs filesystem.
      
      Support has already been implemented in netfslib, fscache and cachefiles
      and in most of afs, but I've waited for Matthew Wilcox's latest folio
      changes.
      
      Note that it does require a change to afs_write_begin() to return the
      correct subpage.  This is a "temporary" change as we're working on
      getting rid of the need for ->write_begin() and ->write_end()
      completely, at least as far as network filesystems are concerned - but
      it doesn't prevent afs from making use of the capability.
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Acked-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
      Tested-by: kafs-testing@auristor.com
      Cc: Marc Dionne <marc.dionne@auristor.com>
      Cc: linux-afs@lists.infradead.org
      Link: https://lore.kernel.org/lkml/2274528.1645833226@warthog.procyon.org.uk/Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8549a263
  4. 13 Aug, 2022 21 commits