workqueue: Changes for v6.9

This cycle, a lot of workqueue changes including some that are significant
and invasive.

- During v6.6 cycle, unbound workqueues were updated so that they are more
  topology aware and flexible, which among other things improved workqueue
  behavior on modern multi-L3 CPUs. In the process, 636b927eba5b
  ("workqueue: Make unbound workqueues to use per-cpu pool_workqueues")
  switched unbound workqueues to use per-CPU frontend pool_workqueues as a
  part of increasing front-back mapping flexibility.

  An unwelcome side effect of this change was that this made max concurrency
  enforcement per-CPU blowing up the maximum number of allowed concurrent
  executions. I incorrectly assumed that this wouldn't cause practical
  problems as most unbound workqueue users are self-regulate max
  concurrency; however, there definitely are which don't (e.g. on IO paths)
  and the drastic increase in the allowed max concurrency led to noticeable
  perf regressions in some use cases.

  This is now addressed by separating out max concurrency enforcement to a
  separate struct - wq_node_nr_active - which makes @max_active consistently
  mean system-wide max concurrency regardless of the number of CPUs or
  (finally) NUMA nodes. This is a rather invasive and, in places, a bit
  clunky; however, the clunkiness rises from the the inherent requirement to
  handle the disagreement between the execution locality domain and max
  concurrency enforcement domain on some modern machines. See 5797b1c18919
  ("workqueue: Implement system-wide nr_active enforcement for unbound
  workqueues") for more details.

- BH workqueue support is added. They are similar to per-CPU workqueues but
  execute work items in the softirq context. This is expected to replace
  tasklet. However, currently, it's missing the ability to disable and
  enable work items which is needed to convert many tasklet users. To avoid
  crowding this merge window too much, this will be included in the next
  merge window. A separate pull request will be sent for the couple
  conversion patches that are currently pending.

- Waiman plugged a long-standing hole in workqueue CPU isolation where
  ordered workqueues didn't follow wq_unbound_cpumask updates. Ordered
  workqueues now follow the same rules as other unbound workqueues.

- More CPU isolation improvements: Juri fixed another deficit in workqueue
  isolation where unbound rescuers don't respect wq_unbound_cpumask.
  Leonardo fixed delayed_work timers firing on isolated CPUs.

- Other misc changes.