1. 29 Jan, 2024 9 commits
    • Tejun Heo's avatar
      workqueue: Implement system-wide nr_active enforcement for unbound workqueues · 5797b1c1
      Tejun Heo authored
      A pool_workqueue (pwq) represents the connection between a workqueue and a
      worker_pool. One of the roles that a pwq plays is enforcement of the
      max_active concurrency limit. Before 636b927e ("workqueue: Make unbound
      workqueues to use per-cpu pool_workqueues"), there was one pwq per each CPU
      for per-cpu workqueues and per each NUMA node for unbound workqueues, which
      was a natural result of per-cpu workqueues being served by per-cpu pools and
      unbound by per-NUMA pools.
      
      In terms of max_active enforcement, this was, while not perfect, workable.
      For per-cpu workqueues, it was fine. For unbound, it wasn't great in that
      NUMA machines would get max_active that's multiplied by the number of nodes
      but didn't cause huge problems because NUMA machines are relatively rare and
      the node count is usually pretty low.
      
      However, cache layouts are more complex now and sharing a worker pool across
      a whole node didn't really work well for unbound workqueues. Thus, a series
      of commits culminating on 8639eceb ("workqueue: Make unbound workqueues
      to use per-cpu pool_workqueues") implemented more flexible affinity
      mechanism for unbound workqueues which enables using e.g. last-level-cache
      aligned pools. In the process, 636b927e ("workqueue: Make unbound
      workqueues to use per-cpu pool_workqueues") made unbound workqueues use
      per-cpu pwqs like per-cpu workqueues.
      
      While the change was necessary to enable more flexible affinity scopes, this
      came with the side effect of blowing up the effective max_active for unbound
      workqueues. Before, the effective max_active for unbound workqueues was
      multiplied by the number of nodes. After, by the number of CPUs.
      
      636b927e ("workqueue: Make unbound workqueues to use per-cpu
      pool_workqueues") claims that this should generally be okay. It is okay for
      users which self-regulates concurrency level which are the vast majority;
      however, there are enough use cases which actually depend on max_active to
      prevent the level of concurrency from going bonkers including several IO
      handling workqueues that can issue a work item for each in-flight IO. With
      targeted benchmarks, the misbehavior can easily be exposed as reported in
      http://lkml.kernel.org/r/dbu6wiwu3sdhmhikb2w6lns7b27gbobfavhjj57kwi2quafgwl@htjcc5oikcr3.
      
      Unfortunately, there is no way to express what these use cases need using
      per-cpu max_active. A CPU may issue most of in-flight IOs, so we don't want
      to set max_active too low but as soon as we increase max_active a bit, we
      can end up with unreasonable number of in-flight work items when many CPUs
      issue IOs at the same time. ie. The acceptable lowest max_active is higher
      than the acceptable highest max_active.
      
      Ideally, max_active for an unbound workqueue should be system-wide so that
      the users can regulate the total level of concurrency regardless of node and
      cache layout. The reasons workqueue hasn't implemented that yet are:
      
      - One max_active enforcement decouples from pool boundaires, chaining
        execution after a work item finishes requires inter-pool operations which
        would require lock dancing, which is nasty.
      
      - Sharing a single nr_active count across the whole system can be pretty
        expensive on NUMA machines.
      
      - Per-pwq enforcement had been more or less okay while we were using
        per-node pools.
      
      It looks like we no longer can avoid decoupling max_active enforcement from
      pool boundaries. This patch implements system-wide nr_active mechanism with
      the following design characteristics:
      
      - To avoid sharing a single counter across multiple nodes, the configured
        max_active is split across nodes according to the proportion of each
        workqueue's online effective CPUs per node. e.g. A node with twice more
        online effective CPUs will get twice higher portion of max_active.
      
      - Workqueue used to be able to process a chain of interdependent work items
        which is as long as max_active. We can't do this anymore as max_active is
        distributed across the nodes. Instead, a new parameter min_active is
        introduced which determines the minimum level of concurrency within a node
        regardless of how max_active distribution comes out to be.
      
        It is set to the smaller of max_active and WQ_DFL_MIN_ACTIVE which is 8.
        This can lead to higher effective max_weight than configured and also
        deadlocks if a workqueue was depending on being able to handle chains of
        interdependent work items that are longer than 8.
      
        I believe these should be fine given that the number of CPUs in each NUMA
        node is usually higher than 8 and work item chain longer than 8 is pretty
        unlikely. However, if these assumptions turn out to be wrong, we'll need
        to add an interface to adjust min_active.
      
      - Each unbound wq has an array of struct wq_node_nr_active which tracks
        per-node nr_active. When its pwq wants to run a work item, it has to
        obtain the matching node's nr_active. If over the node's max_active, the
        pwq is queued on wq_node_nr_active->pending_pwqs. As work items finish,
        the completion path round-robins the pending pwqs activating the first
        inactive work item of each, which involves some pool lock dancing and
        kicking other pools. It's not the simplest code but doesn't look too bad.
      
      v4: - wq_adjust_max_active() updated to invoke wq_update_node_max_active().
      
          - wq_adjust_max_active() is now protected by wq->mutex instead of
            wq_pool_mutex.
      
      v3: - wq_node_max_active() used to calculate per-node max_active on the fly
            based on system-wide CPU online states. Lai pointed out that this can
            lead to skewed distributions for workqueues with restricted cpumasks.
            Update the max_active distribution to use per-workqueue effective
            online CPU counts instead of system-wide and cache the calculation
            results in node_nr_active->max.
      
      v2: - wq->min/max_active now uses WRITE/READ_ONCE() as suggested by Lai.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reported-by: default avatarNaohiro Aota <Naohiro.Aota@wdc.com>
      Link: http://lkml.kernel.org/r/dbu6wiwu3sdhmhikb2w6lns7b27gbobfavhjj57kwi2quafgwl@htjcc5oikcr3
      Fixes: 636b927e ("workqueue: Make unbound workqueues to use per-cpu pool_workqueues")
      Reviewed-by: default avatarLai Jiangshan <jiangshanlai@gmail.com>
      5797b1c1
    • Tejun Heo's avatar
      workqueue: Introduce struct wq_node_nr_active · 91ccc6e7
      Tejun Heo authored
      Currently, for both percpu and unbound workqueues, max_active applies
      per-cpu, which is a recent change for unbound workqueues. The change for
      unbound workqueues was a significant departure from the previous behavior of
      per-node application. It made some use cases create undesirable number of
      concurrent work items and left no good way of fixing them. To address the
      problem, workqueue is implementing a NUMA node segmented global nr_active
      mechanism, which will be explained further in the next patch.
      
      As a preparation, this patch introduces struct wq_node_nr_active. It's a
      data structured allocated for each workqueue and NUMA node pair and
      currently only tracks the workqueue's number of active work items on the
      node. This is split out from the next patch to make it easier to understand
      and review.
      
      Note that there is an extra wq_node_nr_active allocated for the invalid node
      nr_node_ids which is used to track nr_active for pools which don't have NUMA
      node associated such as the default fallback system-wide pool.
      
      This doesn't cause any behavior changes visible to userland yet. The next
      patch will expand to implement the control mechanism on top.
      
      v4: - Fixed out-of-bound access when freeing per-cpu workqueues.
      
      v3: - Use flexible array for wq->node_nr_active as suggested by Lai.
      
      v2: - wq->max_active now uses WRITE/READ_ONCE() as suggested by Lai.
      
          - Lai pointed out that pwq_tryinc_nr_active() incorrectly dropped
            pwq->max_active check. Restored. As the next patch replaces the
            max_active enforcement mechanism, this doesn't change the end result.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarLai Jiangshan <jiangshanlai@gmail.com>
      91ccc6e7
    • Tejun Heo's avatar
      workqueue: Move pwq_dec_nr_in_flight() to the end of work item handling · dd6c3c54
      Tejun Heo authored
      The planned shared nr_active handling for unbound workqueues will make
      pwq_dec_nr_active() sometimes drop the pool lock temporarily to acquire
      other pool locks, which is necessary as retirement of an nr_active count
      from one pool may need kick off an inactive work item in another pool.
      
      This patch moves pwq_dec_nr_in_flight() call in try_to_grab_pending() to the
      end of work item handling so that work item state changes stay atomic.
      process_one_work() which is the other user of pwq_dec_nr_in_flight() already
      calls it at the end of work item handling. Comments are added to both call
      sites and pwq_dec_nr_in_flight().
      
      This shouldn't cause any behavior changes.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarLai Jiangshan <jiangshanlai@gmail.com>
      dd6c3c54
    • Tejun Heo's avatar
      workqueue: RCU protect wq->dfl_pwq and implement accessors for it · 9f66cff2
      Tejun Heo authored
      wq->cpu_pwq is RCU protected but wq->dfl_pwq isn't. This is okay because
      currently wq->dfl_pwq is used only accessed to install it into wq->cpu_pwq
      which doesn't require RCU access. However, we want to be able to access
      wq->dfl_pwq under RCU in the future to access its __pod_cpumask and the code
      can be made easier to read by making the two pwq fields behave in the same
      way.
      
      - Make wq->dfl_pwq RCU protected.
      
      - Add unbound_pwq_slot() and unbound_pwq() which can access both ->dfl_pwq
        and ->cpu_pwq. The former returns the double pointer that can be used
        access and update the pwqs. The latter performs locking check and
        dereferences the double pointer.
      
      - pwq accesses and updates are converted to use unbound_pwq[_slot]().
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarLai Jiangshan <jiangshanlai@gmail.com>
      9f66cff2
    • Tejun Heo's avatar
      workqueue: Make wq_adjust_max_active() round-robin pwqs while activating · c5404d4e
      Tejun Heo authored
      wq_adjust_max_active() needs to activate work items after max_active is
      increased. Previously, it did that by visiting each pwq once activating all
      that could be activated. While this makes sense with per-pwq nr_active,
      nr_active will be shared across multiple pwqs for unbound wqs. Then, we'd
      want to round-robin through pwqs to be fairer.
      
      In preparation, this patch makes wq_adjust_max_active() round-robin pwqs
      while activating. While the activation ordering changes, this shouldn't
      cause user-noticeable behavior changes.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarLai Jiangshan <jiangshanlai@gmail.com>
      c5404d4e
    • Tejun Heo's avatar
      workqueue: Move nr_active handling into helpers · 1c270b79
      Tejun Heo authored
      __queue_work(), pwq_dec_nr_in_flight() and wq_adjust_max_active() were
      open-coding nr_active handling, which is fine given that the operations are
      trivial. However, the planned unbound nr_active update will make them more
      complicated, so let's move them into helpers.
      
      - pwq_tryinc_nr_active() is added. It increments nr_active if under
        max_active limit and return a boolean indicating whether inc was
        successful. Note that the function is structured to accommodate future
        changes. __queue_work() is updated to use the new helper.
      
      - pwq_activate_first_inactive() is updated to use pwq_tryinc_nr_active() and
        thus no longer assumes that nr_active is under max_active and returns a
        boolean to indicate whether a work item has been activated.
      
      - wq_adjust_max_active() no longer tests directly whether a work item can be
        activated. Instead, it's updated to use the return value of
        pwq_activate_first_inactive() to tell whether a work item has been
        activated.
      
      - nr_active decrement and activating the first inactive work item is
        factored into pwq_dec_nr_active().
      
      v3: - WARN_ON_ONCE(!WORK_STRUCT_INACTIVE) added to __pwq_activate_work() as
            now we're calling the function unconditionally from
            pwq_activate_first_inactive().
      
      v2: - wq->max_active now uses WRITE/READ_ONCE() as suggested by Lai.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarLai Jiangshan <jiangshanlai@gmail.com>
      1c270b79
    • Tejun Heo's avatar
      workqueue: Replace pwq_activate_inactive_work() with [__]pwq_activate_work() · 4c638030
      Tejun Heo authored
      To prepare for unbound nr_active handling improvements, move work activation
      part of pwq_activate_inactive_work() into __pwq_activate_work() and add
      pwq_activate_work() which tests WORK_STRUCT_INACTIVE and updates nr_active.
      
      pwq_activate_first_inactive() and try_to_grab_pending() are updated to use
      pwq_activate_work(). The latter conversion is functionally identical. For
      the former, this conversion adds an unnecessary WORK_STRUCT_INACTIVE
      testing. This is temporary and will be removed by the next patch.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarLai Jiangshan <jiangshanlai@gmail.com>
      4c638030
    • Tejun Heo's avatar
      workqueue: Factor out pwq_is_empty() · afa87ce8
      Tejun Heo authored
      "!pwq->nr_active && list_empty(&pwq->inactive_works)" test is repeated
      multiple times. Let's factor it out into pwq_is_empty().
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarLai Jiangshan <jiangshanlai@gmail.com>
      afa87ce8
    • Tejun Heo's avatar
      workqueue: Move pwq->max_active to wq->max_active · a045a272
      Tejun Heo authored
      max_active is a workqueue-wide setting and the configured value is stored in
      wq->saved_max_active; however, the effective value was stored in
      pwq->max_active. While this is harmless, it makes max_active update process
      more complicated and gets in the way of the planned max_active semantic
      updates for unbound workqueues.
      
      This patches moves pwq->max_active to wq->max_active. This simplifies the
      code and makes freezing and noop max_active updates cheaper too. No
      user-visible behavior change is intended.
      
      As wq->max_active is updated while holding wq mutex but read without any
      locking, it now uses WRITE/READ_ONCE(). A new locking locking rule WO is
      added for it.
      
      v2: wq->max_active now uses WRITE/READ_ONCE() as suggested by Lai.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarLai Jiangshan <jiangshanlai@gmail.com>
      a045a272
  2. 26 Jan, 2024 2 commits
  3. 25 Jan, 2024 2 commits
  4. 19 Jan, 2024 1 commit
    • Marcelo Tosatti's avatar
      workqueue: mark power efficient workqueue as unbounded if nohz_full enabled · 7bd20b6b
      Marcelo Tosatti authored
      A customer using nohz_full has experienced the following interruption:
      
      oslat-1004510 [018] timer_cancel:         timer=0xffff90a7ca663cf8
      oslat-1004510 [018] timer_expire_entry:   timer=0xffff90a7ca663cf8 function=delayed_work_timer_fn now=4709188240 baseclk=4709188240
      oslat-1004510 [018] workqueue_queue_work: work struct=0xffff90a7ca663cd8 function=fb_flashcursor workqueue=events_power_efficient req_cpu=8192 cpu=18
      oslat-1004510 [018] workqueue_activate_work: work struct 0xffff90a7ca663cd8
      oslat-1004510 [018] sched_wakeup:         kworker/18:1:326 [120] CPU:018
      oslat-1004510 [018] timer_expire_exit:    timer=0xffff90a7ca663cf8
      oslat-1004510 [018] irq_work_entry:       vector=246
      oslat-1004510 [018] irq_work_exit:        vector=246
      oslat-1004510 [018] tick_stop:            success=0 dependency=SCHED
      oslat-1004510 [018] hrtimer_start:        hrtimer=0xffff90a70009cb00 function=tick_sched_timer/0x0 ...
      oslat-1004510 [018] softirq_exit:         vec=1 [action=TIMER]
      oslat-1004510 [018] softirq_entry:        vec=7 [action=SCHED]
      oslat-1004510 [018] softirq_exit:         vec=7 [action=SCHED]
      oslat-1004510 [018] tick_stop:            success=0 dependency=SCHED
      oslat-1004510 [018] sched_switch:         oslat:1004510 [120] R ==> kworker/18:1:326 [120]
      kworker/18:1-326 [018] workqueue_execute_start: work struct 0xffff90a7ca663cd8: function fb_flashcursor
      kworker/18:1-326 [018] workqueue_queue_work: work struct=0xffff9078f119eed0 function=drm_fb_helper_damage_work workqueue=events req_cpu=8192 cpu=18
      kworker/18:1-326 [018] workqueue_activate_work: work struct 0xffff9078f119eed0
      kworker/18:1-326 [018] timer_start:          timer=0xffff90a7ca663cf8 function=delayed_work_timer_fn ...
      
      Set wq_power_efficient to true, in case nohz_full is enabled.
      This makes the power efficient workqueue be unbounded, which allows
      workqueue items there to be moved to HK CPUs.
      Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      7bd20b6b
  5. 16 Jan, 2024 4 commits
  6. 13 Jan, 2024 4 commits
    • Linus Torvalds's avatar
      Merge tag 'exfat-for-6.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat · 052d5343
      Linus Torvalds authored
      Pull exfat updates from Namjae Jeon:
      
       - Replace the internal table lookup algorithm with the hweight library
         and ffs of the bitops library.
      
       - Handle the two types of stream entry, valid data size (has been
         written) and data size separately. It improves compatibility with two
         differently sized files created on Windows.
      
      * tag 'exfat-for-6.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat:
        exfat: do not zero the extended part
        exfat: change to get file size from DataLength
        exfat: using ffs instead of internal logic
        exfat: using hweight instead of internal logic
      052d5343
    • Linus Torvalds's avatar
      Merge tag 'pull-bcachefs-fix' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · f16ab99c
      Linus Torvalds authored
      Pull bcachefs locking fix from Al Viro:
       "Fix broken locking in bch2_ioctl_subvolume_destroy()"
      
      * tag 'pull-bcachefs-fix' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        bch2_ioctl_subvolume_destroy(): fix locking
        new helper: user_path_locked_at()
      f16ab99c
    • Linus Torvalds's avatar
      Merge tag 'pull-simple_recursive_removal' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 1acc24b3
      Linus Torvalds authored
      Pull nfsctl update from Al Viro:
       "More simple_recursive_removal() conversions.
      
        nfsctl this time..."
      
      * tag 'pull-simple_recursive_removal' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        nfsctl: switch to simple_recursive_removal()
      1acc24b3
    • Linus Torvalds's avatar
      Merge tag 'rcu.release.v6.8' of https://github.com/neeraju/linux · 23a80d46
      Linus Torvalds authored
      Pull RCU updates from Neeraj Upadhyay:
      
       - Documentation and comment updates
      
       - RCU torture, locktorture updates that include cleanups; nolibc init
         build support for mips, ppc and rv64; testing of mid stall duration
         scenario and fixing fqs task creation conditions
      
       - Misc fixes, most notably restricting usage of RCU CPU stall
         notifiers, to confine their usage primarily to debug kernels
      
       - RCU tasks minor fixes
      
       - lockdep annotation fix for NMI-safe accesses, callback
         advancing/acceleration cleanup and documentation improvements
      
      * tag 'rcu.release.v6.8' of https://github.com/neeraju/linux:
        rcu: Force quiescent states only for ongoing grace period
        doc: Clarify historical disclaimers in memory-barriers.txt
        doc: Mention address and data dependencies in rcu_dereference.rst
        doc: Clarify RCU Tasks reader/updater checklist
        rculist.h: docs: Fix wrong function summary
        Documentation: RCU: Remove repeated word in comments
        srcu: Use try-lock lockdep annotation for NMI-safe access.
        srcu: Explain why callbacks invocations can't run concurrently
        srcu: No need to advance/accelerate if no callback enqueued
        srcu: Remove superfluous callbacks advancing from srcu_gp_start()
        rcu: Remove unused macros from rcupdate.h
        rcu: Restrict access to RCU CPU stall notifiers
        rcu-tasks: Mark RCU Tasks accesses to current->rcu_tasks_idle_cpu
        rcutorture: Add fqs_holdoff check before fqs_task is created
        rcutorture: Add mid-sized stall to TREE07
        rcutorture: add nolibc init support for mips, ppc and rv64
        locktorture: Increase Hamming distance between call_rcu_chain and rcu_call_chains
      23a80d46
  7. 12 Jan, 2024 18 commits
    • Linus Torvalds's avatar
      Merge tag 'devicetree-for-6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux · 38814330
      Linus Torvalds authored
      Pull devicetree updates from Rob Herring:
      
       - Convert FPGA bridge, all TPMs (finally), and Rockchip HDMI bindings
         to schemas
      
       - Improvements in Samsung GPU schemas
      
       - A few more cases of dropping unneeded quotes in schemas
      
       - Merge QCom idle-states txt binding into common idle-states schema
      
       - Add X1E80100, SM8650, SM8650, and SDX75 SoCs to QCom Power Domain
         Controller
      
       - Add NXP i.mx8dl to SCU PD
      
       - Add synaptics r63353 panel controller
      
       - Clarify the wording around the use of 'wakeup-source' property
      
       - Add a DTS coding style doc
      
       - Add smi vendor prefix
      
       - Fix DT_SCHEMA_FILES incorrect matching of paths outside the kernel
         tree
      
       - Disable sysfb (e.g. EFI FB) when simple-framebuffer node is present
      
       - Fix double free in of_parse_phandle_with_args_map()
      
       - A couple of kerneldoc fixes
      
      * tag 'devicetree-for-6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (37 commits)
        of: unittest: Fix of_count_phandle_with_args() expected value message
        dt-bindings: fpga: altera: Convert bridge bindings to yaml
        dt-bindings: fpga: Convert bridge binding to yaml
        dt-bindings: vendor-prefixes: Add smi
        dt-bindings: power: Clarify wording for wakeup-source property
        of: Fix double free in of_parse_phandle_with_args_map
        dt-bindings: ignore paths outside kernel for DT_SCHEMA_FILES
        drivers: of: Fixed kernel doc warning
        dt-bindings: tpm: Document Microsoft fTPM bindings
        dt-bindings: tpm: Convert IBM vTPM bindings to DT schema
        dt-bindings: tpm: Convert Google Cr50 bindings to DT schema
        dt-bindings: tpm: Consolidate TCG TIS bindings
        dt-bindings: display: rockchip,inno-hdmi: Document RK3128 compatible
        dt-bindings: arm: Add remote etm dt-binding
        dt-bindings: mmc: sdhci-pxa: Fix 'regs' typo
        media: dt-bindings: samsung,s5p-mfc: Fix iommu properties schemas
        dt-bindings: display: panel: Add synaptics r63353 panel controller
        dt-bindings: arm: merge qcom,idle-state with idle-state
        dt-bindings: drm: rockchip: convert inno_hdmi-rockchip.txt to yaml
        dt-bindings: cache: qcom,llcc: correct QDU1000 reg entries
        ...
      38814330
    • Linus Torvalds's avatar
      Merge tag 'pwm/for-6.8-rc1' of... · 42bff4d0
      Linus Torvalds authored
      Merge tag 'pwm/for-6.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm
      
      Pull pwm updates from Thierry Reding:
       "This contains a bunch of cleanups and simplifications across the
        board, as well as a number of small fixes.
      
        Perhaps the most notable change here is the addition of an API that
        allows PWMs to be used in atomic contexts, which is useful when time-
        critical operations are involved, such as using a PWM to generate IR
        signals.
      
        Finally, I have decided to step down as PWM subsystem maintainer. Due
        to other responsibilities I have lately not been able to find the time
        that the subsystem deserves and Uwe, who has been helping out a lot
        for the past few years and has many things planned for the future, has
        kindly volunteered to take over. I have no doubt that he will be a
        suitable replacement"
      
      * tag 'pwm/for-6.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm: (44 commits)
        MAINTAINERS: pwm: Thierry steps down, Uwe takes over
        pwm: linux/pwm.h: fix Excess kernel-doc description warning
        pwm: Add pwm_apply_state() compatibility stub
        pwm: cros-ec: Drop documentation for dropped struct member
        pwm: Drop two unused API functions
        pwm: lpc18xx-sct: Don't modify the cached period of other PWM outputs
        pwm: meson: Simplify using dev_err_probe()
        pwm: stmpe: Silence duplicate error messages
        pwm: Reduce number of pointer dereferences in pwm_device_request()
        pwm: crc: Use consistent variable naming for driver data
        pwm: omap-dmtimer: Drop locking
        dt-bindings: pwm: ti,pwm-omap-dmtimer: Update binding for yaml
        media: pwm-ir-tx: Trigger edges from hrtimer interrupt context
        pwm: bcm2835: Allow PWM driver to be used in atomic context
        pwm: Make it possible to apply PWM changes in atomic context
        pwm: renesas: Remove unused include
        pwm: Replace ENOTSUPP with EOPNOTSUPP
        pwm: Rename pwm_apply_state() to pwm_apply_might_sleep()
        pwm: Stop referencing pwm->chip
        pwm: Update kernel doc for struct pwm_chip
        ...
      42bff4d0
    • Linus Torvalds's avatar
      Merge tag 'hid-for-linus-2024010801' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid · fef018d8
      Linus Torvalds authored
      Pull HID updates from Jiri Kosina:
      
       - assorted functional fixes for hid-steam ported from SteamOS betas
         (Vicki Pfau)
      
       - fix for custom sensor-hub sensors (hinge angle sensor and LISS
         sensors) not working (Yauhen Kharuzhy)
      
       - functional fix for handling Confidence in Wacom driver (Jason
         Gerecke)
      
       - support for Ilitek ili2901 touchscreen (Zhengqiao Xia)
      
       - power management fix for Wacom userspace battery exporting
         (Tatsunosuke Tobita)
      
       - rework of wait-for-reset in order to reduce the need for
         I2C_HID_QUIRK_NO_IRQ_AFTER_RESET qurk; the success rate is now 50%
         better, but there are still further improvements to be made (Hans de
         Goede)
      
       - greatly improved coverage of Tablets in hid-selftests (Benjamin
         Tissoires)
      
       - support for Nintendo NSO controllers -- SNES, Genesis and N64 (Ryan
         McClelland)
      
       - support for controlling mcp2200 GPIOs (Johannes Roith)
      
       - power management improvement for EHL OOB wakeup in intel-ish
         (Kai-Heng Feng)
      
       - other assorted device-specific fixes and code cleanups
      
      * tag 'hid-for-linus-2024010801' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid: (53 commits)
        HID: amd_sfh: Add a new interface for exporting ALS data
        HID: amd_sfh: Add a new interface for exporting HPD data
        HID: amd_sfh: rename float_to_int() to amd_sfh_float_to_int()
        HID: i2c-hid: elan: Add ili2901 timing
        dt-bindings: HID: i2c-hid: elan: Introduce Ilitek ili2901
        HID: bpf: make bus_type const in struct hid_bpf_ops
        HID: make ishtp_cl_bus_type const
        HID: make hid_bus_type const
        HID: hid-steam: Add gamepad-only mode switched to by holding options
        HID: hid-steam: Better handling of serial number length
        HID: hid-steam: Update list of identifiers from SDL
        HID: hid-steam: Make client_opened a counter
        HID: hid-steam: Clean up locking
        HID: hid-steam: Disable watchdog instead of using a heartbeat
        HID: hid-steam: Avoid overwriting smoothing parameter
        HID: magicmouse: fix kerneldoc for struct magicmouse_sc
        HID: sensor-hub: Enable hid core report processing for all devices
        HID: wacom: Add additional tests of confidence behavior
        HID: wacom: Correct behavior when processing some confidence == false touches
        HID: nintendo: add support for nso controllers
        ...
      fef018d8
    • Linus Torvalds's avatar
      Merge tag 'fbdev-for-6.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/linux-fbdev · d97a7842
      Linus Torvalds authored
      Pull fbdev updates from Helge Deller:
       "Three fbdev drivers (~8500 lines of code) removed. The Carillo Ranch
        fbdev driver is for an Intel product which was never shipped, and for
        the intelfb and the amba-clcd drivers the drm drivers can be used
        instead.
      
        The other code changes are minor: some fb_deferred_io flushing fixes,
        imxfb margin fixes and stifb cleanups.
      
        Summary:
         - Remove intelfb fbdev driver (Thomas Zimmermann)
         - Remove amba-clcd fbdev driver (Linus Walleij)
         - Remove vmlfb Carillo Ranch fbdev driver (Matthew Wilcox)
         - fb_deferred_io flushing fixes (Nam Cao)
         - imxfb code fixes and cleanups (Dario Binacchi)
         - stifb primary screen detection cleanups (Thomas Zimmermann)"
      
      * tag 'fbdev-for-6.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/linux-fbdev: (28 commits)
        fbdev/intelfb: Remove driver
        fbdev/hyperv_fb: Do not clear global screen_info
        firmware/sysfb: Clear screen_info state after consuming it
        fbdev/hyperv_fb: Remove firmware framebuffers with aperture helpers
        drm/hyperv: Remove firmware framebuffers with aperture helper
        fbdev/sis: Remove dependency on screen_info
        video/logo: use %u format specifier for unsigned int values
        video/sticore: Remove info field from STI struct
        arch/parisc: Detect primary video device from device instance
        fbdev/stifb: Allocate fb_info instance with framebuffer_alloc()
        video/sticore: Store ROM device in STI struct
        fbdev: flush deferred IO before closing
        fbdev: flush deferred work in fb_deferred_io_fsync()
        fbdev: amba-clcd: Delete the old CLCD driver
        fbdev: Remove support for Carillo Ranch driver
        fbdev: hgafb: fix kernel-doc comments
        fbdev: mmp: Fix typo and wording in code comment
        fbdev: fsl-diu-fb: Fix sparse warning due to virt_to_phys() prototype change
        fbdev: imxfb: add '*/' on a separate line in block comment
        fbdev: imxfb: use __func__ for function name
        ...
      d97a7842
    • Linus Torvalds's avatar
      Merge tag 'media/v6.8-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media · 61da593f
      Linus Torvalds authored
      Pull media updates from Mauro Carvalho Chehab:
      
       - v4l core: subdev frame interval now supports which field
      
       - v4l kapi: moves and renames the init_cfg pad op to init_state as an
         internal op.
      
       - new sensor drivers: gc0308, gc2145, Avnet Alvium, ov64a40, tw9900
      
       - new camera driver: STM32 DCMIPP
      
       - s5p-mfc has gained MFC v12 support
      
       - new ISP driver added to staging: Starfive
      
       - new stateful encoder/decoded: Wave5 codec It is found on the J721S2
         SoC, JH7100 SoC, ssd202d SoC. Etc.
      
       - fwnode gained support for MIPI "DisCo for Imaging"
         (https://www.mipi.org/specifications/mipi-disco-imaging)
      
       - as usual, lots of cleanups, fixups and driver improvements.
      
      * tag 'media/v6.8-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (309 commits)
        media: i2c: thp7312: select CONFIG_FW_LOADER
        media: i2c: mt9m114: use fsleep() in place of udelay()
        media: videobuf2: core: Rename min_buffers_needed field in vb2_queue
        media: i2c: thp7312: Store frame interval in subdev state
        media: docs: uAPI: Fix documentation of 'which' field for routing ioctls
        media: docs: uAPI: Expand error documentation for invalid 'which' value
        media: docs: uAPI: Clarify error documentation for invalid 'which' value
        media: v4l2-subdev: Store frame interval in subdev state
        media: v4l2-subdev: Add which field to struct v4l2_subdev_frame_interval
        media: v4l2-subdev: Turn .[gs]_frame_interval into pad operations
        media: v4l: subdev: Move out subdev state lock macros outside CONFIG_MEDIA_CONTROLLER
        media: s5p-mfc: DPB Count Independent of VIDIOC_REQBUF
        media: s5p-mfc: Load firmware for each run in MFCv12.
        media: s5p-mfc: Set context for valid case before calling try_run
        media: s5p-mfc: Add support for DMABUF for encoder
        media: s5p-mfc: Add support for UHD encoding.
        media: s5p-mfc: Add support for rate controls in MFCv12
        media: s5p-mfc: Add YV12 and I420 multiplanar format support
        media: s5p-mfc: Add initial support for MFCv12
        media: s5p-mfc: Rename IS_MFCV10 macro
        ...
      61da593f
    • Linus Torvalds's avatar
      Merge tag 'libnvdimm-for-6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm · a3cc31e7
      Linus Torvalds authored
      Pull libnvdimm updates from Ira Weiny:
       "A mix of bug fixes and updates to interfaces used by nvdimm:
      
         - Updates to interfaces include:
              Use the new scope based management
              Remove deprecated ida interfaces
              Update to sysfs_emit()
      
         - Fixup kdoc comments"
      
      * tag 'libnvdimm-for-6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm:
        acpi/nfit: Use sysfs_emit() for all attributes
        nvdimm/namespace: fix kernel-doc for function params
        nvdimm/dimm_devs: fix kernel-doc for function params
        nvdimm/btt: fix btt_blk_cleanup() kernel-doc
        nvdimm-btt: simplify code with the scope based resource management
        nvdimm: Remove usage of the deprecated ida_simple_xx() API
        ACPI: NFIT: Use cleanup.h helpers instead of devm_*()
      a3cc31e7
    • Linus Torvalds's avatar
      Merge tag 'mmc-v6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc · 20077583
      Linus Torvalds authored
      Pull MMC updates from Ulf Hansson:
       "MMC core:
         - Don't force a retune before eMMC RPMB switch
         - Add optional HS400 tuning in HS400es initialization
         - Add a sysfs node to for write-protect-group-size
         - Add re-tuning test to the mmc-test module
         - Use mrq.sbc to support close-ended ioctl requests
      
        MMC host:
         - mmci: Add support for SDIO in-band irqs for the stm32 variant
         - mmc_spi: Remove broken support custom DMA mapped buffers
         - mtk-sd: Improve and extend the support for tunings
         - renesas_sdhi: Document support for the RZ/Five variant
         - sdhci_am654: Drop support for the ti,otap-del-sel DT property
         - sdhci-brcmstb: Add support for the brcm 74165b0 variant
         - sdhci-msm: Add compatibles for IPQ4019 and IPQ8074
         - sdhci-of-dwcmshc: Add support for the T-Head TH1520 variant
         - sdhci-xenon: Add support for the Marvell ac5 variant"
      
      * tag 'mmc-v6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc: (27 commits)
        mmc: xenon: Add ac5 support via bounce buffer
        dt-bindings: mmc: add Marvell ac5
        mmc: sdhci-brcmstb: add new sdhci reset sequence for brcm 74165b0
        dt-bindings: mmc: brcm,sdhci-brcmstb: Add support for 74165b0
        mmc: core: Do not force a retune before RPMB switch
        mmc: core: Add HS400 tuning in HS400es initialization
        mmc: sdhci_omap: Fix TI SoC dependencies
        mmc: sdhci_am654: Fix TI SoC dependencies
        mmc: core: Add wp_grp_size sysfs node
        mmc: mmc_test: Add re-tuning test
        mmc: mmc_spi: remove custom DMA mapped buffers
        dt-bindings: mmc: sdhci-msm: document dedicated IPQ4019 and IPQ8074
        dt-bindings: mmc: synopsys-dw-mshc: add iommus for Intel SocFPGA
        mmc: mtk-sd: Extend number of tuning steps
        dt-bindings: mmc: mtk-sd: add tuning steps related property
        mmc: sdhci-omap: don't misuse kernel-doc marker
        mmc: mtk-sd: Increase the verbosity of msdc_track_cmd_data
        mmc: core: Use mrq.sbc in close-ended ffu
        mmc: sdhci_am654: Drop lookup for deprecated ti,otap-del-sel
        mmc: sdhci-of-dwcmshc: Use logical OR instead of bitwise OR in dwcmshc_probe()
        ...
      20077583
    • Linus Torvalds's avatar
      Merge tag 'pmdomain-v6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm · 0c4b09cb
      Linus Torvalds authored
      Pull pmdomain updates from Ulf Hansson:
       "Core:
         - Move the generic PM domain and its governor to the pmdomain
           subsystem
         - Drop the unused pm_genpd_opp_to_performance_state()
      
        Providers:
         - Convert some providers to let the ->remove() callback return void
         - amlogic: Add support for G12A ISP power domain
         - arm: Move the SCPI power-domain driver to the pmdomain subsystem
         - arm: Move Kconfig options to the pmdomain subsystem
         - qcom: Update part number to X1E80100 for the rpmhpd"
      
      * tag 'pmdomain-v6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm:
        PM: domains: Move genpd and its governor to the pmdomain subsystem
        PM: domains: Drop redundant header for genpd
        PM: domains: Drop the unused pm_genpd_opp_to_performance_state()
        PM: domains: fix domain_governor kernel-doc warnings
        pmdomain: xilinx/zynqmp: Convert to platform remove callback returning void
        pmdomain: qcom-cpr: Convert to platform remove callback returning void
        pmdomain: imx93-pd: Convert to platform remove callback returning void
        pmdomain: imx93-blk-ctrl: Convert to platform remove callback returning void
        pmdomain: imx8mp-blk-ctrl: Convert to platform remove callback returning void
        pmdomain: imx8m-blk-ctrl: Convert to platform remove callback returning void
        pmdomain: imx-gpcv2: Convert to platform remove callback returning void
        pmdomain: imx-gpc: Convert to platform remove callback returning void
        pmdomain: imx-pgc: Convert to platform remove callback returning void
        pmdomain: amlogic: meson-ee-pwrc: add support for G12A ISP power domain
        dt-bindings: power: meson-g12a-power: document ISP power domain
        firmware: arm_scpi: Move power-domain driver to the pmdomain dir
        pmdomain: arm_scmi: Move Kconfig options to the pmdomain subsystem
        pmdomain: qcom: rpmhpd: Update part number to X1E80100
        dt-bindings: power: rpmpd: Update part number to X1E80100
      0c4b09cb
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma · bf9ca811
      Linus Torvalds authored
      Pull rdma updates from Jason Gunthorpe:
       "Small cycle, with some typical driver updates:
      
         - General code tidying in siw, hfi1, idrdma, usnic, hns rtrs and
           bnxt_re
      
         - Many small siw cleanups without an overeaching theme
      
         - Debugfs stats for hns
      
         - Fix a TX queue timeout in IPoIB and missed locking of the mcast
           list
      
         - Support more features of P7 devices in bnxt_re including a new work
           submission protocol
      
         - CQ interrupts for MANA
      
         - netlink stats for erdma
      
         - EFA multipath PCI support
      
         - Fix Incorrect MR invalidation in iser"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma: (66 commits)
        RDMA/bnxt_re: Fix error code in bnxt_re_create_cq()
        RDMA/efa: Add EFA query MR support
        IB/iser: Prevent invalidating wrong MR
        RDMA/erdma: Add hardware statistics support
        RDMA/erdma: Introduce dma pool for hardware responses of CMDQ requests
        IB/iser: iscsi_iser.h: fix kernel-doc warning and spellos
        RDMA/mana_ib: Add CQ interrupt support for RAW QP
        RDMA/mana_ib: query device capabilities
        RDMA/mana_ib: register RDMA device with GDMA
        RDMA/bnxt_re: Fix the sparse warnings
        RDMA/bnxt_re: Fix the offset for GenP7 adapters for user applications
        RDMA/bnxt_re: Share a page to expose per CQ info with userspace
        RDMA/bnxt_re: Add UAPI to share a page with user space
        IB/ipoib: Fix mcast list locking
        RDMA/mlx5: Expose register c0 for RDMA device
        net/mlx5: E-Switch, expose eswitch manager vport
        net/mlx5: Manage ICM type of SW encap
        RDMA/mlx5: Support handling of SW encap ICM area
        net/mlx5: Introduce indirect-sw-encap ICM properties
        RDMA/bnxt_re: Adds MSN table capability for Gen P7 adapters
        ...
      bf9ca811
    • Linus Torvalds's avatar
      Merge tag 'firewire-updates-6.8' of... · 141d9c6e
      Linus Torvalds authored
      Merge tag 'firewire-updates-6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394
      
      Pull firewire updates from Takashi Sakamoto:
       "This includes the series of changes related to device attributes, as
        well as slight code refactoring.
      
        Some old devices are recognized to have legacy layout of configuration
        ROM. They have an inconvenience that FireWire subsystem adds no
        attributes for vendor information to corresponding devices. The main
        purpose of this update is to rectify the inconvenience.
      
        We have a slight concern about regression. The update changes the
        value of modalias for the unit devices by populating its model field,
        which was previously left as zero in the case. I've assessed the
        potential impact of this change and anticipate it to have minimal
        concern for both the kernel and user lands. The change is enough
        acceptable"
      
      * tag 'firewire-updates-6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394:
        firewire: core: fill model field in modalias of unit device for legacy layout of configuration ROM
        firewire: core: detect model name for legacy layout of configuration ROM
        firewire: core: detect numeric model identifier for legacy layout of configuration ROM
        firewire: test: add test of device attributes for legacy AV/C device
        firewire: test: add test of device attributes for simple AV/C device
        firewire: test: add KUnit test for device attributes
        firewire: core: replace magic number with macro
        firewire: core: adds constant qualifier for local helper functions
        firewire: make fw_bus_type const
      141d9c6e
    • Linus Torvalds's avatar
      Merge tag 'gnss-6.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/johan/gnss · 645f910f
      Linus Torvalds authored
      Pull GNSS updates from Johan Hovold:
      
       - support for the reset pin found on some u-blox receivers
      
       - use new regulator helper for the u-blox backup supply
      
      * tag 'gnss-6.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/johan/gnss:
        gnss: ubx: add support for the reset gpio
        dt-bindings: gnss: u-blox: add "reset-gpios" binding
        gnss: ubx: use new helper to remove open coded regulator handling
      645f910f
    • Linus Torvalds's avatar
      Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux · c736c9a9
      Linus Torvalds authored
      Pull clk updates from Stephen Boyd:
       "Only a couple new SoCs have support added this time, primarily for
        Qualcomm SM8650 based on the diffstat. Otherwise this is a collection
        of non-critical fixes and cleanups to various clk drivers and their DT
        bindings.
      
        Nothing is changed in the core clk framework this time, although
        there's a patch to fix a basic clk type initialization function. In
        general, this pile looks to be on the smaller side.
      
        New Drivers:
         - Global, display, gpu, tcsr, and rpmh clocks on Qualcomm SM8650
         - Mediatek MT7988 SoC clocks
      
        Updates:
         - Update Zynqmp driver for Versal NET platforms
         - Add clk driver for Versal clocking wizard IP
         - Support for stm32mp25 clks
         - Add glitch free PLL setting support to si5351 clk driver
         - Add DSI clocks on Amlogic g12/sm1
         - Add CSI and ISP clocks on Amlogic g12/sm1
         - Document bindings for i.MX93 ANATOP clock driver
         - Free clk_node in i.MX SCU driver for resource with different owner
         - Update the LVDS clocks to be compatible with i.MX SCU firmware 1.15
         - Fix the name of the fvco in i.MX pll14xx by renaming it to fout
         - Add EtherNet TSN and PCIe clocks on the Renesas R-Car V4H SoC
         - Add interrupt controller and Ethernet clocks and resets on Renesas
           RZ/G3S
         - Check reset monitor registers on Renesas RZ/G2L-alike SoCs
         - Reuse reset functionality in the Renesas RZ/G2L clock driver
         - Global and RPMh clock support for the Qualcomm X1E80100 SoC
         - Support for the Stromer APCS PLL found in Qualcomm IPQ5018
         - Add a new type of branch clock, with support for controlling
           separate memory control bits, to the Qualcomm clk driver
         - Use above new branch type in Qualcomm ECPRI clk driver for QDU1000
           and QRU1000
         - Add a number of missing clocks related to CSI2 on Qualcomm MSM8939
         - Add support for the camera clock controller on Qualcomm SC8280XP
         - Correct PLL configuration in GPU and video clock controllers for
           Qualcomm SM8150
         - Add runtime PM support and a few missing resets to Qualcomm SM8150
           video clock controller
         - Fix configuration of various GCC GDSCs on Qualcomm SM8550
         - Mark shared RCGs appropriately in the Qualcomm SM8550 GCC driver
         - Fix up GPU and display clock controllers PLL configuration settings
           on Qualcomm SM8550
         - Cleanup variable init in Allwinner nkm module
         - Convert various DT bindings to YAML
         - A few kernel-doc fixes for Samsung SoC clock controllers"
      
      * tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux: (93 commits)
        clk: mediatek: add drivers for MT7988 SoC
        clk: mediatek: add pcw_chg_bit control for PLLs of MT7988
        dt-bindings: clock: mediatek: add clock controllers of MT7988
        dt-bindings: reset: mediatek: add MT7988 ethwarp reset IDs
        dt-bindings: clock: mediatek: add MT7988 clock IDs
        clk: mediatek: mt8188-topckgen: Refactor parents for top_dp/edp muxes
        clk: mediatek: mt8195-topckgen: Refactor parents for top_dp/edp muxes
        clk: mediatek: clk-mux: Support custom parent indices for muxes
        dt-bindings: clock: sophgo: Add clock controller of CV1800 series SoC
        clk: starfive: jh7100: Add CLK_SET_RATE_PARENT to gmac_tx
        clk: starfive: Add flags argument to JH71X0__MUX macro
        clk: imx: pll14xx: change naming of fvco to fout
        clk: imx: clk-imx8qxp: fix LVDS bypass, pixel and phy clocks
        clk: imx: scu: Fix memory leak in __imx_clk_gpr_scu()
        clk: fixed-rate: fix clk_hw_register_fixed_rate_with_accuracy_parent_hw
        clk: qcom: dispcc-sm8650: Add test_ctl parameters to PLL config
        clk: qcom: gpucc-sm8650: Add test_ctl parameters to PLL config
        clk: qcom: dispcc-sm8550: Use the correct PLL configuration function
        clk: qcom: dispcc-sm8550: Update disp PLL settings
        clk: qcom: gpucc-sm8550: Update GPU PLL settings
        ...
      c736c9a9
    • Linus Torvalds's avatar
      Merge tag 'gpio-updates-for-v6.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux · 576db734
      Linus Torvalds authored
      Pull gpio updates from Bartosz Golaszewski:
       "We have two new drivers, an assortment of updates and cleanups to many
        others, and first part of the big rework of the core GPIOLIB that's
        currently underway.
      
        Add to that some code shrink in the character device module and
        updates to DT bindings and that's pretty much it.
      
        Core GPIOLIB:
         - protect the global list of GPIO devices with a read-write semaphore
           as it is rarely modified but can be traversed by multiple readers
           at once
         - remove GPIO devices from the global list when they are
           *unregistered* and not when they are *released* (which only happens
           when the last reference is dropped) as this may lead to a
           successful lookup of an unregistered device
         - remove the unnecessary "extra_checks" switch
         - rename functions that are called with a lock taken
         - remove duplicate includes
      
        Character device handling:
         - use locking guards to reduce the code size
         - allocate the big linereq structure using the more suitable
           kvzalloc()
         - redulce the size of critical sections
         - improve documentation
         - move the debounce_period_us field out of struct gpio_desc
      
        New drivers:
         - Nuvoton NPCM SGPIO driver for BMC NPCM7xx/NPCM8xx
         - Realtek DHC (Digital Home Center) SoC GPIO driver
      
        Driver improvements:
         - replace gpiochip_is_requested() with a safer alternative in the
           form of gpiochip_dup_line_label() as the former returns a pointer
           to a string that can be deleted
         - implement the dbg_show() callback in gpio-sim
         - improve the coding style for local variables by removing
           unnecessary tabs
         - use generic device properties instead of OF variants in gpio-mmio
         - use the preferred coding style for __free() in gpio-mockup
         - reuse PM ops from the gpio-tangier in gpio-elkhartlake
         - rework PM and use cleanup helpers in gpio-tangier
         - fix the EIC configuration in gpio-pmic-eic-sprd
         - remove the unneeded call to platform_set_drvdata() in gpio-sifive
         - use generic GPIO helpers for driver callbacks in gpio-dwapb
         - add clock support on certain pins of gpio-ixp4xx
         - don't use the core-specific DEBUG_GPIO switch in drivers
         - kerneldoc improvements
      
        DT bindings:
         - add bindings for the new Realtek and Nuvoton devices
         - allow gpio-ranges in gpio-dwapb
         - support GPIO hogs in gpio-rockchip
         - describe the label property in gpio-zynqmp-modepin
      
        Other:
         - header cleanups
         - forward declarations cleanups"
      
      * tag 'gpio-updates-for-v6.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux: (55 commits)
        gpiolib: replace the GPIO device mutex with a read-write semaphore
        gpiolib: remove the GPIO device from the list when it's unregistered
        gpio: nuvoton: Add Nuvoton NPCM sgpio driver
        dt-bindings: gpio: add NPCM sgpio driver bindings
        gpio: rtd: Add support for Realtek DHC(Digital Home Center) RTD SoCs
        dt-bindings: gpio: realtek: Add realtek,rtd-gpio
        gpio: pmic-eic-sprd: Configure the bit corresponding to the EIC through offset
        gpio: dwapb: Use generic request, free and set_config
        gpio: sysfs: drop tabs from local variable declarations
        gpiolib: drop tabs from local variable declarations
        gpiolib: remove extra_checks
        gpio: tps65219: don't use CONFIG_DEBUG_GPIO
        gpiolib: cdev: replace locking wrappers for gpio_device with guards
        gpiolib: cdev: replace locking wrappers for config_mutex with guards
        gpiolib: cdev: allocate linereq using kvzalloc()
        gpiolib: cdev: include overflow.h
        gpiolib: cdev: reduce locking in gpio_desc_to_lineinfo()
        gpiolib: cdev: improve documentation of get/set values
        gpiolib: cdev: fully adopt guard() and scoped_guard()
        gpiolib: remove debounce_period_us from struct gpio_desc
        ...
      576db734
    • Linus Torvalds's avatar
      Merge tag 'linux-watchdog-6.8-rc1' of git://www.linux-watchdog.org/linux-watchdog · 61f4c3e6
      Linus Torvalds authored
      Pull watchdog updates from Wim Van Sebroeck:
      
       - Add Mediatek MT7988 watchdog
      
       - Add IT8659 watchdog
      
       - watchdog: set cdev owner before adding
      
       - hpwdt: Only claim UNKNOWN NMI if from iLO
      
       - Various other fixes and improvements
      
      * tag 'linux-watchdog-6.8-rc1' of git://www.linux-watchdog.org/linux-watchdog: (30 commits)
        watchdog: mlx_wdt: fix all kernel-doc warnings
        dt-bindings: watchdog: qcom,pm8916-wdt: add parent spmi node to example
        dt-bindings: watchdog: nxp,pnx4008-wdt: convert txt to yaml
        dt-bindings: watchdog: qca,ar7130-wdt: convert txt to yaml
        dt-bindings: watchdog: intel,keembay: reference common watchdog schema
        dt-bindings: watchdog: re-order entries to match coding convention
        watchdog: it87_wdt: Keep WDTCTRL bit 3 unmodified for IT8784/IT8786
        watchdog: it87_wdt: Add IT8659 ID
        watchdog: it87_wdt: Remove redundant max_units setting
        watchdog: it87_wdt: add blank line after variable declaration
        dt-bindings: wdt: Add ts72xx
        dt-bindings: watchdog: dlg,da9062-watchdog: Document DA9063 watchdog
        dt-bindings: watchdog: dlg,da9062-watchdog: Add fallback for DA9061 watchdog
        watchdog: rti_wdt: Drop runtime pm reference count when watchdog is unused
        watchdog: starfive: add lock annotations to fix context imbalances
        watchdog: mediatek: mt7988: add wdt support
        dt-bindings: watchdog: mediatek,mtk-wdt: add MT7988 watchdog and toprgu
        dt-bindings: watchdog: realtek,rtd1295-watchdog: convert txt to yaml
        watchdog: bcm2835_wdt: Fix WDIOC_SETTIMEOUT handling
        watchdog/hpwdt: Remove unused variable
        ...
      61f4c3e6
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-v6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging · 5dfec3cf
      Linus Torvalds authored
      Pull hwmon updates from Guenter Roeck:
       "New drivers:
         - pmbus: Support for MPS Multi-phase mp2856/mp2857 controller
         - pmbus: Support for MPS Multi-phase mp5990
         - Driver for Gigabyte AORUS Waterforce AIO coolers
      
        Added support to existing drivers:
         - lm75: Support for AMS AS6200 temperature sensor
         - k10temp: Support for AMD Family 19h Model 8h
         - max31827: Support for max31828 and max31829
         - sht3x: Support for sts3x
         - Add support for WMI SMM interface, and various related improvements.
          Add support for Optiplex 7000
         - emc1403: Support for EMC1442
         - npcm750-pwm-fan: Support for NPCM8xx
         - nct6775: Add support for 2 additional fan controls
      
        Minor improvements and bug fixes:
         - gigabyte_waterforce: Mark status report as received under a spinlock
         - aquacomputer_d5next: Remove unneeded CONFIG_DEBUG_FS #ifdef
         - gpio-fan: Convert txt bindings to yaml
         - smsc47m1: Various cleanups / improvements
         - corsair-cpro: use NULL instead of 0
         - hp-wmi-sensors: Fix failure to load on EliteDesk 800 G6
         - tmp513: Various cleanups
         - peci/dimmtemp: Bump timeout
         - pc87360: Bounds check data->innr usage
         - nct6775: Fix fan speed set failure in automatic mode
         - ABI: sysfs-class-hwmon: document various missing attributes
         - lm25066, max6650, nct6775: Use i2c_get_match_data()
         - aspeed-pwm-tacho: Fix -Wstringop-overflow warning"
      
      * tag 'hwmon-for-v6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging: (59 commits)
        hwmon: (gigabyte_waterforce) Mark status report as received under a spinlock
        hwmon: (lm75) Fix tmp112 default config
        hwmon: (lm75) Add AMS AS6200 temperature sensor
        dt-bindings: hwmon: (lm75) Add AMS AS6200 temperature sensor
        hwmon: (lm75) remove now-unused include
        hwmon: (pmbus) Add support for MPS Multi-phase mp2856/mp2857 controller
        dt-bindings: Add MP2856/MP2857 voltage regulator device
        hwmon: (aquacomputer_d5next) Remove unneeded CONFIG_DEBUG_FS #ifdef
        dt-bindings: hwmon: gpio-fan: Convert txt bindings to yaml
        hwmon: (k10temp) Add support for AMD Family 19h Model 8h
        hwmon: Add driver for Gigabyte AORUS Waterforce AIO coolers
        hwmon: (smsc47m1) Rename global platform device variable
        hwmon: (smsc47m1) Simplify device registration
        hwmon: (smsc47m1) Convert to platform remove callback returning void
        hwmon: (smsc47m1) Mark driver struct with __refdata to prevent section mismatch
        MAINTAINERS: Add maintainer for Baikal-T1 PVT hwmon driver
        hwmon: (sht3x) add sts3x support
        hwmon: (pmbus) Add ltc4286 driver
        dt-bindings: hwmon: Add lltc ltc4286 driver bindings
        hwmon: (max31827) Add custom attribute for resolution
        ...
      5dfec3cf
    • Linus Torvalds's avatar
      Merge tag 'sound-6.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 7912a639
      Linus Torvalds authored
      Pull sound updates from Takashi Iwai:
       "It was a calm development cycle. There were an ALSA core extension for
        subformat PCM bits and a few ASoC core changes to support N:M
        mappings, while the most of remaining changes are driver-specific.
      
        Core:
         - API extensions for properly limiting PCM format bits via subformat
         - Enhanced support for N:M CPU:CODEC mappings in the core and in
           audio-graph-card2
      
        ASoC:
         - Lots of SOF updates: fallback support to older IPC versions,
           notification on control changes with IPC4. Also supports for ACPI
           parse for the ES83xx driver that reduces quirks.
         - Device tree support for describing parts of the card which can be
           active over suspend (for very low power playback or wake word use
           cases)
         - Support for more AMD and Intel systems, NXP i.MX8m MICFIL, Qualcomm
           SM8250, SM8550, SM8650 and X1E80100
         - Drop of Freescale MPC8610 code that is no longer supported
      
        HD-audio:
         - More CS35L41 codec extensions for Dell, HP and Lenovo models
         - TAS2781 codec extensions for Lenovo and co
         - New PCM subformat supports
      
        Others:
         - More enhancement for Scarlett2 USB mixer support
         - Various kselftest fixes"
      
      * tag 'sound-6.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (337 commits)
        kselftest/alsa - conf: Stringify the printed errno in sysfs_get()
        kselftest/alsa - mixer-test: Fix the print format specifier warning
        kselftest/alsa - mixer-test: Fix the print format specifier warning
        kselftest/alsa - mixer-test: fix the number of parameters to ksft_exit_fail_msg()
        ALSA: hda/tas2781: annotate calibration data endianness
        ALSA: hda/realtek: Fix mute and mic-mute LEDs for HP Envy X360 13-ay0xxx
        ALSA: hda/conexant: Fix headset auto detect fail in cx8070 and SN6140
        ALSA: ac97: fix build regression
        ALSA: hda: cs35l41: Support more HP models without _DSD
        ALSA: hda/tas2781: add fixup for Lenovo 14ARB7
        ALSA: hda/tas2781: add TAS2563 support for 14ARB7
        ALSA: hda/tas2781: add configurable global i2c address
        ALSA: hda/tas2781: add ptrs to calibration functions
        ALSA: hda: Add driver properties for cs35l41 for Lenovo Legion Slim 7 Gen 8 serie
        ALSA: hda/realtek: enable SND_PCI_QUIRK for Lenovo Legion Slim 7 Gen 8 (2023) serie
        ALSA: hda/tas2781: configure the amp after firmware load
        ALSA: mark all struct bus_type as const
        ASoC: pxa: sspa: Don't select SND_ARM
        ASoC: rt5663: cancel the work when system suspends
        ALSA: scarlett2: Add PCM Input Switch for Solo Gen 4
        ...
      7912a639
    • Linus Torvalds's avatar
      Merge tag 'drm-next-2024-01-10' of git://anongit.freedesktop.org/drm/drm · cf65598d
      Linus Torvalds authored
      Pull drm updates from Dave Airlie:
       "This contains two major new drivers:
      
         - imagination is a first driver for Imagination Technologies devices,
           it only covers very specific devices, but there is hope to grow it
      
         - xe is a reboot of the i915 GPU (shares display) side using a more
           upstream focused development model, and trying to maximise code
           sharing. It's not enabled for any hw by default, and will hopefully
           get switched on for Intel's Lunarlake.
      
        This also drops a bunch of the old UMS ioctls. It's been dead long
        enough.
      
        amdgpu has a bunch of new color management code that is being used in
        the Steam Deck.
      
        amdgpu also has a new ACPI WBRF interaction to help avoid radio
        interference.
      
        Otherwise it's the usual lots of changes in lots of places.
      
        Detailed summary:
      
        new drivers:
         - imagination - new driver for Imagination Technologies GPU
         - xe - new driver for Intel GPUs using core drm concepts
      
        core:
         - add CLOSE_FB ioctl
         - remove old UMS ioctls
         - increase max objects to accomodate AMD color mgmt
      
        encoder:
         - create per-encoder debugfs directory
      
        edid:
         - split out drm_eld
         - SAD helpers
         - drop edid_firmware module parameter
      
        format-helper:
         - cache format conversion buffers
      
        sched:
         - move from kthread to workqueue
         - rename some internals
         - implement dynamic job-flow control
      
        gpuvm:
         - provide more features to handle GEM objects
      
        client:
         - don't acquire module reference
      
        displayport:
         - add mst path property documentation
      
        fdinfo:
         - alignment fix
      
        dma-buf:
         - add fence timestamp helper
         - add fence deadline support
      
        bridge:
         - transparent aux-bridge for DP/USB-C
         - lt8912b: add suspend/resume support and power regulator support
      
        panel:
         - edp: AUO B116XTN02, BOE NT116WHM-N21,836X2, NV116WHM-N49
         - chromebook panel support
         - elida-kd35t133: rework pm
         - powkiddy RK2023 panel
         - himax-hx8394: drop prepare/unprepare and shutdown logic
         - BOE BP101WX1-100, Powkiddy X55, Ampire AM8001280G
         - Evervision VGG644804, SDC ATNA45AF01
         - nv3052c: register docs, init sequence fixes, fascontek FS035VG158
         - st7701: Anbernic RG-ARC support
         - r63353 panel controller
         - Ilitek ILI9805 panel controller
         - AUO G156HAN04.0
      
        simplefb:
         - support memory regions
         - support power domains
      
        amdgpu:
         - add new 64-bit sequence number infrastructure
         - add AMD specific color management
         - ACPI WBRF support for RF interference handling
         - GPUVM updates
         - RAS updates
         - DCN 3.5 updates
         - Rework PCIe link speed handling
         - Document GPU reset types
         - DMUB fixes
         - eDP fixes
         - NBIO 7.9/7.11 updates
         - SubVP updates
         - XGMI PCIe state dumping for aqua vanjaram
         - GFX11 golden register updates
         - enable tunnelling on high pri compute
      
        amdkfd:
         - Migrate TLB flushing logic to amdgpu
         - Trap handler fixes
         - Fix restore workers handling on suspend/resume
         - Fix possible memory leak in pqm_uninit()
         - support import/export of dma-bufs using GEM handles
      
        radeon:
         - fix possible overflows in command buffer checking
         - check for errors in ring_lock
      
        i915:
         - reorg display code for reuse in xe driver
         - fdinfo memory stats printing
         - DP MST bandwidth mgmt improvements
         - DP panel replay enabling
         - MTL C20 phy state verification
         - MTL DP DSC fractional bpp support
         - Audio fastset support
         - use dma_fence interfaces instead of i915_sw_fence
         - Separate gem and display code
         - AUX register macro refactoring
         - Separate display module/device parameters
         - Move display capabilities debugfs under display
         - Makefile cleanups
         - Register cleanups
         - Move display lock inits under display/
         - VLV/CHV DPIO PHY register and interface refactoring
         - DSI VBT sequence refactoring
         - C10/C20 PHY PLL hardware readout
         - DPLL code cleanups
         - Cleanup PXP plane protection checks
         - Improve display debug msgs
         - PSR selective fetch fixes/improvements
         - DP MST fixes
         - Xe2LPD FBC restrictions removed
         - DGFX uses direct VBT pin mapping
         - more MTL WAs
         - fix MTL eDP bug
         - eliminate use of kmap_atomic
      
        habanalabs:
         - sysfs entry to identify a device minor id with debugfs path
         - sysfs entry to expose device module id
         - add signed device info retrieval through INFO ioctl
         - add Gaudi2C device support
         - pcie reset prepare/done hooks
      
        msm:
         - Add support for SDM670, SM8650
         - Handle the CFG interconnect to fix the obscure hangs / timeouts
         - Kconfig fix for QMP dependency
         - use managed allocators
         - DPU: SDM670, SM8650 support
         - DPU: Enable SmartDMA on SM8350 and SM8450
         - DP: enable runtime PM support
         - GPU: add metadata UAPI
         - GPU: move devcoredumps to GPU device
         - GPU: convert to drm_exec
      
        ivpu:
         - update FW API
         - new debugfs file
         - a new NOP job submission test mode
         - improve suspend/resume
         - PM improvements
         - MMU PT optimizations
         - firmware profile frequency support
         - support for uncached buffers
         - switch to gem shmem helpers
         - replace kthread with threaded irqs
      
        rockchip:
         - rk3066_hdmi: convert to atomic
         - vop2: support nv20 and nv30
         - rk3588 support
      
        mediatek:
         - use devm_platform_ioremap_resource
         - stop using iommu_present
         - MT8188 VDOSYS1 display support
      
        panfrost:
         - PM improvements
         - improve interrupt handling as poweroff
      
        qaic:
         - allow to run with single MSI
         - support host/device time sync
         - switch to persistent DRM devices
      
        exynos:
         - fix potential error pointer dereference
         - fix wrong error checking
         - add missing call to drm_atomic_helper_shutdown
      
        omapdrm:
         - dma-fence lockdep annotation fix
      
        tidss:
         - dma-fence lockdep annotation fix
         - support for AM62A7
      
        v3d:
         - BCM2712 - rpi5 support
         - fdinfo + gputop support
         - uapi for CPU job handling
      
        virtio-gpu:
         - add context debug name"
      
      * tag 'drm-next-2024-01-10' of git://anongit.freedesktop.org/drm/drm: (2340 commits)
        drm/amd/display: Allow z8/z10 from driver
        drm/amd/display: fix bandwidth validation failure on DCN 2.1
        drm/amdgpu: apply the RV2 system aperture fix to RN/CZN as well
        drm/amd/display: Move fixpt_from_s3132 to amdgpu_dm
        drm/amd/display: Fix recent checkpatch errors in amdgpu_dm
        Revert "drm/amdkfd: Relocate TBA/TMA to opposite side of VM hole"
        drm/amd/display: avoid stringop-overflow warnings for dp_decide_lane_settings()
        drm/amd/display: Fix power_helpers.c codestyle
        drm/amd/display: Fix hdcp_log.h codestyle
        drm/amd/display: Fix hdcp2_execution.c codestyle
        drm/amd/display: Fix hdcp_psp.h codestyle
        drm/amd/display: Fix freesync.c codestyle
        drm/amd/display: Fix hdcp_psp.c codestyle
        drm/amd/display: Fix hdcp1_execution.c codestyle
        drm/amd/pm/smu7: fix a memleak in smu7_hwmgr_backend_init
        drm/amdkfd: Fix iterator used outside loop in 'kfd_add_peer_prop()'
        drm/amdgpu: Drop 'fence' check in 'to_amdgpu_amdkfd_fence()'
        drm/amdkfd: Confirm list is non-empty before utilizing list_first_entry in kfd_topology.c
        drm/amdgpu: Fix '*fw' from request_firmware() not released in 'amdgpu_ucode_request()'
        drm/amdgpu: Fix variable 'mca_funcs' dereferenced before NULL check in 'amdgpu_mca_smu_get_mca_entry()'
        ...
      cf65598d
    • Uwe Kleine-König's avatar
      MAINTAINERS: pwm: Thierry steps down, Uwe takes over · 7afc0e7f
      Uwe Kleine-König authored
      It's not easy to let go responsibility for a subsystem that one cared
      for for a long time, but Thierry realized that his heart isn't in the
      pwm framework any more.
      
      Thierry cared for the pwm subsystem (commit 200efedd ("pwm: Take
      over maintainership of the PWM subsystem")) as a maintainer during
      nearly 12 years. A big thanks for the time, effort and dedication spend
      during that time.
      
      Uwe takes over maintenance.
      Reviewed-by: default avatarNeil Armstrong <neil.armstrong@linaro.org>
      Signed-off-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
      Signed-off-by: default avatarThierry Reding <thierry.reding@gmail.com>
      7afc0e7f