[PATCH 0/4] Workqueue: rename system workqueue and add WQ_PERCPU

Marco Crivellari posted 4 patches 9 months, 1 week ago
There is a newer version of this series
arch/s390/kernel/diag/diag324.c               |  4 +-
arch/s390/kernel/hiperdispatch.c              |  2 +-
block/bio-integrity-auto.c                    |  5 ++-
block/bio.c                                   |  3 +-
block/blk-core.c                              |  3 +-
block/blk-throttle.c                          |  3 +-
block/blk-zoned.c                             |  3 +-
crypto/cryptd.c                               |  3 +-
drivers/accel/ivpu/ivpu_hw_btrs.c             |  2 +-
drivers/accel/ivpu/ivpu_ipc.c                 |  2 +-
drivers/accel/ivpu/ivpu_job.c                 |  2 +-
drivers/accel/ivpu/ivpu_mmu.c                 |  2 +-
drivers/accel/ivpu/ivpu_pm.c                  |  4 +-
drivers/acpi/ec.c                             |  3 +-
drivers/acpi/osl.c                            |  6 +--
drivers/acpi/scan.c                           |  2 +-
drivers/acpi/thermal.c                        |  3 +-
drivers/ata/libata-sff.c                      |  3 +-
drivers/base/core.c                           |  2 +-
drivers/base/dd.c                             |  2 +-
drivers/base/devcoredump.c                    |  2 +-
drivers/block/aoe/aoemain.c                   |  2 +-
drivers/block/nbd.c                           |  2 +-
drivers/block/rbd.c                           |  2 +-
drivers/block/rnbd/rnbd-clt.c                 |  2 +-
drivers/block/sunvdc.c                        |  4 +-
drivers/block/virtio_blk.c                    |  2 +-
drivers/block/zram/zram_drv.c                 |  2 +-
drivers/bus/mhi/ep/main.c                     |  2 +-
drivers/char/random.c                         |  8 ++--
drivers/char/tpm/tpm-dev-common.c             |  3 +-
drivers/char/xillybus/xillybus_core.c         |  2 +-
drivers/char/xillybus/xillyusb.c              |  4 +-
drivers/cpufreq/tegra194-cpufreq.c            |  3 +-
drivers/crypto/atmel-i2c.c                    |  2 +-
drivers/crypto/cavium/nitrox/nitrox_mbx.c     |  2 +-
drivers/crypto/intel/qat/qat_common/adf_aer.c |  4 +-
drivers/crypto/intel/qat/qat_common/adf_isr.c |  3 +-
.../crypto/intel/qat/qat_common/adf_sriov.c   |  3 +-
.../crypto/intel/qat/qat_common/adf_vf_isr.c  |  3 +-
drivers/cxl/pci.c                             |  2 +-
drivers/extcon/extcon-intel-int3496.c         |  4 +-
drivers/firewire/core-transaction.c           |  3 +-
drivers/firewire/ohci.c                       |  3 +-
drivers/gpio/gpiolib-cdev.c                   |  4 +-
drivers/gpu/drm/amd/amdgpu/aldebaran.c        |  2 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c    |  6 +--
drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c     |  2 +-
drivers/gpu/drm/amd/amdkfd/kfd_process.c      |  3 +-
drivers/gpu/drm/bridge/analogix/anx7625.c     |  3 +-
drivers/gpu/drm/bridge/ite-it6505.c           |  2 +-
drivers/gpu/drm/bridge/ti-tfp410.c            |  2 +-
drivers/gpu/drm/drm_atomic_helper.c           |  6 +--
drivers/gpu/drm/drm_probe_helper.c            |  2 +-
drivers/gpu/drm/drm_self_refresh_helper.c     |  2 +-
drivers/gpu/drm/exynos/exynos_hdmi.c          |  2 +-
.../drm/i915/display/intel_display_driver.c   |  3 +-
.../drm/i915/display/intel_display_power.c    |  2 +-
drivers/gpu/drm/i915/display/intel_tc.c       |  4 +-
drivers/gpu/drm/i915/gem/i915_gem_ttm_move.c  |  2 +-
drivers/gpu/drm/i915/gt/uc/intel_guc.c        |  4 +-
drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c     |  4 +-
.../gpu/drm/i915/gt/uc/intel_guc_submission.c |  6 +--
drivers/gpu/drm/i915/i915_active.c            |  2 +-
drivers/gpu/drm/i915/i915_driver.c            |  5 ++-
drivers/gpu/drm/i915/i915_drv.h               |  2 +-
drivers/gpu/drm/i915/i915_sw_fence_work.c     |  2 +-
drivers/gpu/drm/i915/i915_vma_resource.c      |  2 +-
drivers/gpu/drm/i915/pxp/intel_pxp.c          |  2 +-
drivers/gpu/drm/i915/pxp/intel_pxp_irq.c      |  2 +-
.../gpu/drm/i915/selftests/i915_sw_fence.c    |  2 +-
.../gpu/drm/i915/selftests/mock_gem_device.c  |  2 +-
drivers/gpu/drm/nouveau/dispnv50/disp.c       |  2 +-
drivers/gpu/drm/nouveau/nouveau_drm.c         |  2 +-
drivers/gpu/drm/nouveau/nouveau_sched.c       |  3 +-
drivers/gpu/drm/radeon/radeon_display.c       |  3 +-
.../gpu/drm/rockchip/dw_hdmi_qp-rockchip.c    |  4 +-
drivers/gpu/drm/rockchip/rockchip_drm_vop.c   |  2 +-
drivers/gpu/drm/scheduler/sched_main.c        |  2 +-
drivers/gpu/drm/tilcdc/tilcdc_crtc.c          |  2 +-
drivers/gpu/drm/vc4/vc4_hdmi.c                |  4 +-
drivers/gpu/drm/xe/xe_devcoredump.c           |  2 +-
drivers/gpu/drm/xe/xe_device.c                |  4 +-
drivers/gpu/drm/xe/xe_execlist.c              |  2 +-
drivers/gpu/drm/xe/xe_ggtt.c                  |  2 +-
drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c   |  6 +--
drivers/gpu/drm/xe/xe_guc_ct.c                |  4 +-
drivers/gpu/drm/xe/xe_hw_engine_group.c       |  3 +-
drivers/gpu/drm/xe/xe_oa.c                    |  2 +-
drivers/gpu/drm/xe/xe_pt.c                    |  2 +-
drivers/gpu/drm/xe/xe_sriov.c                 |  2 +-
drivers/gpu/drm/xe/xe_vm.c                    |  4 +-
drivers/greybus/operation.c                   |  2 +-
drivers/hid/hid-nintendo.c                    |  3 +-
drivers/hte/hte.c                             |  2 +-
drivers/hv/mshv_eventfd.c                     |  2 +-
drivers/i3c/master.c                          |  2 +-
drivers/iio/adc/pac1934.c                     |  2 +-
drivers/infiniband/core/cm.c                  |  2 +-
drivers/infiniband/core/device.c              |  4 +-
drivers/infiniband/core/ucma.c                |  2 +-
drivers/infiniband/hw/hfi1/init.c             |  3 +-
drivers/infiniband/hw/hfi1/opfn.c             |  3 +-
drivers/infiniband/hw/mlx4/cm.c               |  2 +-
drivers/infiniband/hw/mlx5/odp.c              |  4 +-
drivers/infiniband/sw/rdmavt/cq.c             |  3 +-
drivers/infiniband/ulp/iser/iscsi_iser.c      |  2 +-
drivers/infiniband/ulp/isert/ib_isert.c       |  2 +-
drivers/infiniband/ulp/rtrs/rtrs-clt.c        |  2 +-
drivers/infiniband/ulp/rtrs/rtrs-srv.c        |  2 +-
drivers/input/keyboard/gpio_keys.c            |  2 +-
drivers/input/misc/palmas-pwrbutton.c         |  2 +-
drivers/input/mouse/psmouse-smbus.c           |  2 +-
drivers/input/mouse/synaptics_i2c.c           |  8 ++--
drivers/isdn/capi/kcapi.c                     |  2 +-
drivers/leds/trigger/ledtrig-input-events.c   |  2 +-
drivers/md/bcache/btree.c                     |  3 +-
drivers/md/bcache/super.c                     | 30 +++++++------
drivers/md/bcache/writeback.c                 |  2 +-
drivers/md/dm-bufio.c                         |  3 +-
drivers/md/dm-cache-target.c                  |  3 +-
drivers/md/dm-clone-target.c                  |  3 +-
drivers/md/dm-crypt.c                         |  6 ++-
drivers/md/dm-delay.c                         |  4 +-
drivers/md/dm-integrity.c                     | 15 ++++---
drivers/md/dm-kcopyd.c                        |  3 +-
drivers/md/dm-log-userspace-base.c            |  3 +-
drivers/md/dm-mpath.c                         |  5 ++-
drivers/md/dm-raid1.c                         |  5 ++-
drivers/md/dm-snap-persistent.c               |  3 +-
drivers/md/dm-stripe.c                        |  2 +-
drivers/md/dm-verity-target.c                 |  4 +-
drivers/md/dm-writecache.c                    |  3 +-
drivers/md/dm.c                               |  3 +-
drivers/md/md.c                               |  4 +-
drivers/media/pci/ddbridge/ddbridge-core.c    |  2 +-
.../platform/mediatek/mdp3/mtk-mdp3-core.c    |  6 ++-
.../platform/synopsys/hdmirx/snps_hdmirx.c    |  8 ++--
drivers/message/fusion/mptbase.c              |  7 ++-
drivers/mmc/core/block.c                      |  3 +-
drivers/mmc/host/mtk-sd.c                     |  4 +-
drivers/mmc/host/omap.c                       |  2 +-
drivers/mmc/host/sdhci.c                      |  2 +-
drivers/net/can/spi/hi311x.c                  |  3 +-
drivers/net/can/spi/mcp251x.c                 |  3 +-
.../net/ethernet/cavium/liquidio/lio_core.c   |  2 +-
.../net/ethernet/cavium/liquidio/lio_main.c   |  8 ++--
.../ethernet/cavium/liquidio/lio_vf_main.c    |  3 +-
.../cavium/liquidio/request_manager.c         |  2 +-
.../cavium/liquidio/response_manager.c        |  3 +-
.../net/ethernet/freescale/dpaa2/dpaa2-eth.c  |  2 +-
.../hisilicon/hns3/hns3pf/hclge_main.c        |  3 +-
drivers/net/ethernet/intel/fm10k/fm10k_main.c |  2 +-
drivers/net/ethernet/intel/i40e/i40e_main.c   |  2 +-
.../net/ethernet/marvell/octeontx2/af/cgx.c   |  2 +-
.../marvell/octeontx2/af/mcs_rvu_if.c         |  2 +-
.../ethernet/marvell/octeontx2/af/rvu_cgx.c   |  2 +-
.../ethernet/marvell/octeontx2/af/rvu_rep.c   |  2 +-
.../marvell/octeontx2/nic/cn10k_ipsec.c       |  3 +-
.../ethernet/marvell/prestera/prestera_main.c |  2 +-
.../ethernet/marvell/prestera/prestera_pci.c  |  2 +-
drivers/net/ethernet/mellanox/mlxsw/core.c    |  4 +-
drivers/net/ethernet/netronome/nfp/nfp_main.c |  2 +-
drivers/net/ethernet/qlogic/qed/qed_main.c    |  3 +-
drivers/net/ethernet/sfc/efx_channels.c       |  2 +-
drivers/net/ethernet/sfc/siena/efx_channels.c |  2 +-
drivers/net/ethernet/wiznet/w5100.c           |  2 +-
drivers/net/fjes/fjes_main.c                  |  5 ++-
drivers/net/macvlan.c                         |  2 +-
drivers/net/netdevsim/dev.c                   |  6 +--
drivers/net/phy/sfp.c                         | 12 ++---
drivers/net/wireguard/device.c                |  6 ++-
drivers/net/wireless/ath/ath6kl/usb.c         |  2 +-
drivers/net/wireless/intel/ipw2x00/ipw2100.c  |  6 +--
drivers/net/wireless/intel/ipw2x00/ipw2200.c  |  2 +-
drivers/net/wireless/intel/iwlwifi/fw/dbg.c   |  4 +-
.../net/wireless/intel/iwlwifi/iwl-trans.h    |  2 +-
drivers/net/wireless/intel/iwlwifi/mvm/tdls.c |  6 +--
.../net/wireless/marvell/libertas/if_sdio.c   |  3 +-
.../net/wireless/marvell/libertas/if_spi.c    |  3 +-
.../net/wireless/marvell/libertas_tf/main.c   |  2 +-
.../net/wireless/mediatek/mt76/mt7921/init.c  |  2 +-
.../net/wireless/mediatek/mt76/mt7925/init.c  |  2 +-
drivers/net/wireless/quantenna/qtnfmac/core.c |  3 +-
drivers/net/wireless/realtek/rtlwifi/base.c   |  2 +-
drivers/net/wireless/realtek/rtw88/usb.c      |  3 +-
drivers/net/wireless/silabs/wfx/main.c        |  2 +-
drivers/net/wireless/st/cw1200/bh.c           |  4 +-
drivers/net/wwan/t7xx/t7xx_hif_dpmaif_rx.c    |  3 +-
drivers/net/wwan/wwan_hwsim.c                 |  2 +-
drivers/nvdimm/security.c                     |  4 +-
drivers/nvme/host/core.c                      |  8 ++--
drivers/nvme/host/tcp.c                       |  2 +-
drivers/nvme/target/admin-cmd.c               |  2 +-
drivers/nvme/target/core.c                    |  5 ++-
drivers/nvme/target/fabrics-cmd-auth.c        |  2 +-
drivers/nvme/target/fc.c                      |  6 +--
drivers/nvme/target/tcp.c                     |  2 +-
drivers/pci/endpoint/functions/pci-epf-mhi.c  |  2 +-
drivers/pci/endpoint/functions/pci-epf-ntb.c  |  5 ++-
drivers/pci/endpoint/functions/pci-epf-test.c |  3 +-
drivers/pci/endpoint/functions/pci-epf-vntb.c |  5 ++-
drivers/pci/endpoint/pci-ep-cfs.c             |  2 +-
drivers/pci/hotplug/pnv_php.c                 |  3 +-
drivers/pci/hotplug/shpchp_core.c             |  3 +-
drivers/phy/allwinner/phy-sun4i-usb.c         | 14 +++---
.../platform/cznic/turris-omnia-mcu-gpio.c    |  2 +-
.../surface/aggregator/ssh_packet_layer.c     |  2 +-
.../surface/aggregator/ssh_request_layer.c    |  2 +-
.../platform/surface/surface_acpi_notify.c    |  2 +-
drivers/platform/x86/gpd-pocket-fan.c         |  4 +-
.../x86/x86-android-tablets/vexia_atla10_ec.c |  2 +-
drivers/power/supply/ab8500_btemp.c           |  3 +-
drivers/power/supply/bq2415x_charger.c        |  2 +-
drivers/power/supply/bq24190_charger.c        |  2 +-
drivers/power/supply/bq27xxx_battery.c        |  6 +--
drivers/power/supply/ipaq_micro_battery.c     |  3 +-
drivers/power/supply/rk817_charger.c          |  6 +--
drivers/power/supply/ucs1002_power.c          |  2 +-
drivers/power/supply/ug3105_battery.c         |  6 +--
drivers/rapidio/rio.c                         |  2 +-
drivers/ras/cec.c                             |  2 +-
drivers/regulator/irq_helpers.c               |  2 +-
drivers/regulator/qcom-labibb-regulator.c     |  4 +-
drivers/s390/char/tape_3590.c                 |  2 +-
drivers/scsi/be2iscsi/be_main.c               |  3 +-
drivers/scsi/bnx2fc/bnx2fc_fcoe.c             |  2 +-
drivers/scsi/device_handler/scsi_dh_alua.c    |  2 +-
drivers/scsi/fcoe/fcoe.c                      |  2 +-
drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c      |  3 +-
drivers/scsi/lpfc/lpfc_init.c                 |  2 +-
drivers/scsi/pm8001/pm8001_init.c             |  2 +-
drivers/scsi/qedf/qedf_main.c                 | 15 ++++---
drivers/scsi/qedi/qedi_main.c                 |  2 +-
drivers/scsi/qla2xxx/qla_os.c                 |  4 +-
drivers/scsi/qla2xxx/qla_target.c             |  2 +-
drivers/scsi/qla2xxx/tcm_qla2xxx.c            |  2 +-
drivers/scsi/qla4xxx/ql4_os.c                 |  3 +-
drivers/scsi/scsi_transport_fc.c              |  7 +--
drivers/scsi/scsi_transport_iscsi.c           |  2 +-
drivers/soc/fsl/qbman/qman.c                  |  2 +-
drivers/soc/xilinx/zynqmp_power.c             |  6 +--
drivers/staging/greybus/sdio.c                |  2 +-
drivers/target/sbp/sbp_target.c               |  8 ++--
drivers/target/target_core_transport.c        |  4 +-
drivers/target/target_core_xcopy.c            |  2 +-
drivers/target/tcm_fc/tfc_conf.c              |  2 +-
drivers/thunderbolt/tb.c                      |  2 +-
drivers/tty/serial/8250/8250_dw.c             |  4 +-
drivers/tty/tty_buffer.c                      |  8 ++--
drivers/usb/core/hub.c                        |  2 +-
drivers/usb/dwc3/gadget.c                     |  2 +-
drivers/usb/gadget/function/f_hid.c           |  3 +-
drivers/usb/host/xhci-dbgcap.c                |  8 ++--
drivers/usb/host/xhci-ring.c                  |  2 +-
drivers/usb/storage/uas.c                     |  2 +-
drivers/usb/typec/anx7411.c                   |  3 +-
drivers/vdpa/vdpa_user/vduse_dev.c            |  3 +-
drivers/virt/acrn/irqfd.c                     |  3 +-
drivers/virtio/virtio_balloon.c               |  3 +-
drivers/xen/events/events_base.c              |  6 +--
drivers/xen/privcmd.c                         |  3 +-
fs/afs/callback.c                             |  4 +-
fs/afs/main.c                                 |  4 +-
fs/afs/write.c                                |  2 +-
fs/aio.c                                      |  2 +-
fs/bcachefs/btree_write_buffer.c              |  2 +-
fs/bcachefs/io_read.c                         | 12 ++---
fs/bcachefs/journal_io.c                      |  2 +-
fs/bcachefs/super.c                           | 10 ++---
fs/btrfs/async-thread.c                       |  3 +-
fs/btrfs/block-group.c                        |  2 +-
fs/btrfs/disk-io.c                            | 11 +++--
fs/btrfs/extent_map.c                         |  2 +-
fs/btrfs/scrub.c                              |  3 +-
fs/btrfs/space-info.c                         |  4 +-
fs/btrfs/zoned.c                              |  2 +-
fs/ceph/super.c                               |  2 +-
fs/dlm/lowcomms.c                             |  2 +-
fs/dlm/main.c                                 |  2 +-
fs/ext4/mballoc.c                             |  2 +-
fs/fs-writeback.c                             |  4 +-
fs/fuse/dev.c                                 |  2 +-
fs/fuse/inode.c                               |  2 +-
fs/gfs2/main.c                                |  5 ++-
fs/gfs2/ops_fstype.c                          |  6 ++-
fs/netfs/objects.c                            |  2 +-
fs/netfs/read_collect.c                       |  2 +-
fs/netfs/write_collect.c                      |  2 +-
fs/nfs/namespace.c                            |  2 +-
fs/nfs/nfs4renewd.c                           |  2 +-
fs/nfsd/filecache.c                           |  2 +-
fs/notify/mark.c                              |  4 +-
fs/ocfs2/dlm/dlmdomain.c                      |  3 +-
fs/ocfs2/dlmfs/dlmfs.c                        |  3 +-
fs/quota/dquot.c                              |  2 +-
fs/smb/client/cifsfs.c                        | 16 ++++---
fs/smb/server/ksmbd_work.c                    |  2 +-
fs/smb/server/transport_rdma.c                |  3 +-
fs/super.c                                    |  3 +-
fs/verity/verify.c                            |  2 +-
fs/xfs/xfs_log.c                              |  3 +-
fs/xfs/xfs_mru_cache.c                        |  3 +-
fs/xfs/xfs_super.c                            | 15 ++++---
include/drm/gpu_scheduler.h                   |  2 +-
include/linux/closure.h                       |  2 +-
include/linux/workqueue.h                     | 35 ++++++++-------
io_uring/io_uring.c                           |  4 +-
kernel/bpf/cgroup.c                           |  5 ++-
kernel/bpf/cpumap.c                           |  2 +-
kernel/bpf/helpers.c                          |  4 +-
kernel/bpf/memalloc.c                         |  2 +-
kernel/bpf/syscall.c                          |  2 +-
kernel/cgroup/cgroup-v1.c                     |  2 +-
kernel/cgroup/cgroup.c                        |  4 +-
kernel/module/dups.c                          |  4 +-
kernel/padata.c                               |  9 ++--
kernel/power/main.c                           |  2 +-
kernel/rcu/tasks.h                            |  4 +-
kernel/rcu/tree.c                             |  4 +-
kernel/sched/core.c                           |  4 +-
kernel/sched/ext.c                            |  4 +-
kernel/smp.c                                  |  2 +-
kernel/trace/trace_events_user.c              |  2 +-
kernel/umh.c                                  |  2 +-
kernel/workqueue.c                            | 45 ++++++++++++-------
mm/backing-dev.c                              |  6 +--
mm/kfence/core.c                              |  6 +--
mm/memcontrol.c                               |  4 +-
mm/slub.c                                     |  3 +-
mm/vmstat.c                                   |  3 +-
net/bridge/br_cfm.c                           |  6 +--
net/bridge/br_mrp.c                           |  8 ++--
net/ceph/messenger.c                          |  3 +-
net/ceph/mon_client.c                         |  2 +-
net/core/link_watch.c                         |  4 +-
net/core/skmsg.c                              |  2 +-
net/core/sock_diag.c                          |  2 +-
net/devlink/core.c                            |  2 +-
net/ipv4/inet_fragment.c                      |  2 +-
net/netfilter/nf_conntrack_ecache.c           |  2 +-
net/openvswitch/dp_notify.c                   |  2 +-
net/rds/ib_rdma.c                             |  3 +-
net/rfkill/input.c                            |  2 +-
net/rxrpc/rxperf.c                            |  2 +-
net/smc/af_smc.c                              |  6 +--
net/smc/smc_core.c                            |  4 +-
net/tls/tls_device.c                          |  2 +-
net/unix/garbage.c                            |  2 +-
net/vmw_vsock/af_vsock.c                      |  2 +-
net/vmw_vsock/virtio_transport.c              |  2 +-
net/vmw_vsock/vsock_loopback.c                |  2 +-
net/wireless/core.c                           |  4 +-
net/wireless/sysfs.c                          |  2 +-
rust/kernel/workqueue.rs                      | 12 ++---
sound/soc/codecs/aw88081.c                    |  2 +-
sound/soc/codecs/aw88166.c                    |  2 +-
sound/soc/codecs/aw88261.c                    |  2 +-
sound/soc/codecs/aw88395/aw88395.c            |  2 +-
sound/soc/codecs/aw88399.c                    |  2 +-
sound/soc/codecs/cs42l43-jack.c               |  6 +--
sound/soc/codecs/cs42l43.c                    |  4 +-
sound/soc/codecs/es8326.c                     | 12 ++---
sound/soc/codecs/rt5663.c                     |  6 +--
sound/soc/codecs/wm_adsp.c                    |  2 +-
sound/soc/intel/boards/sof_es8336.c           |  2 +-
sound/soc/sof/intel/cnl.c                     |  2 +-
sound/soc/sof/intel/hda-ipc.c                 |  2 +-
virt/kvm/eventfd.c                            |  2 +-
369 files changed, 729 insertions(+), 601 deletions(-)
[PATCH 0/4] Workqueue: rename system workqueue and add WQ_PERCPU
Posted by Marco Crivellari 9 months, 1 week ago
Hi!

This series is the follow up of the discussion from:
	"workqueue: Always use wq_select_unbound_cpu() for WORK_CPU_UNBOUND."
	https://lore.kernel.org/all/20250221112003.1dSuoGyc@linutronix.de/

1)  [P 1-2] system workqueue rename:
 
	system_wq is a per-CPU workqueue, but his name is not clear.
	system_unbound_wq is to be used when locality is not required.
	
	system_wq renamed in system_percpu_wq, while system_unbound_wq
	became system_dfl_wq.

2)  [P 3] Introduction of WQ_PERCPU.

	This patch adds a new WQ_PERCPU flag to explicitly request the legacy
	per-CPU behavior. WQ_UNBOUND will be removed once the migration is
	complete.

	Every alloc_workqueue() caller should use one among WQ_PERCPU or
	WQ_UNBOUND. This is actually enforced warning if both or none of them
	are present at the same time.

3)  [P 4] alloc_workqueue() callee should pass explicitly WQ_PERCPU.

	This patch ensures that every caller that needs per-cpu workqueue
	will explicitly require it, using the WQ_PERCPU flag.
	

Marco Crivellari (4):
  Workqueue: rename system_wq to system_percpu_wq
  Workqueue: rename system_unbound_wq to system_dfl_wq
  Workqueue: add WQ_PERCPU
  Workqueue: add WQ_PERCPU to every alloc_workqueue user

 arch/s390/kernel/diag/diag324.c               |  4 +-
 arch/s390/kernel/hiperdispatch.c              |  2 +-
 block/bio-integrity-auto.c                    |  5 ++-
 block/bio.c                                   |  3 +-
 block/blk-core.c                              |  3 +-
 block/blk-throttle.c                          |  3 +-
 block/blk-zoned.c                             |  3 +-
 crypto/cryptd.c                               |  3 +-
 drivers/accel/ivpu/ivpu_hw_btrs.c             |  2 +-
 drivers/accel/ivpu/ivpu_ipc.c                 |  2 +-
 drivers/accel/ivpu/ivpu_job.c                 |  2 +-
 drivers/accel/ivpu/ivpu_mmu.c                 |  2 +-
 drivers/accel/ivpu/ivpu_pm.c                  |  4 +-
 drivers/acpi/ec.c                             |  3 +-
 drivers/acpi/osl.c                            |  6 +--
 drivers/acpi/scan.c                           |  2 +-
 drivers/acpi/thermal.c                        |  3 +-
 drivers/ata/libata-sff.c                      |  3 +-
 drivers/base/core.c                           |  2 +-
 drivers/base/dd.c                             |  2 +-
 drivers/base/devcoredump.c                    |  2 +-
 drivers/block/aoe/aoemain.c                   |  2 +-
 drivers/block/nbd.c                           |  2 +-
 drivers/block/rbd.c                           |  2 +-
 drivers/block/rnbd/rnbd-clt.c                 |  2 +-
 drivers/block/sunvdc.c                        |  4 +-
 drivers/block/virtio_blk.c                    |  2 +-
 drivers/block/zram/zram_drv.c                 |  2 +-
 drivers/bus/mhi/ep/main.c                     |  2 +-
 drivers/char/random.c                         |  8 ++--
 drivers/char/tpm/tpm-dev-common.c             |  3 +-
 drivers/char/xillybus/xillybus_core.c         |  2 +-
 drivers/char/xillybus/xillyusb.c              |  4 +-
 drivers/cpufreq/tegra194-cpufreq.c            |  3 +-
 drivers/crypto/atmel-i2c.c                    |  2 +-
 drivers/crypto/cavium/nitrox/nitrox_mbx.c     |  2 +-
 drivers/crypto/intel/qat/qat_common/adf_aer.c |  4 +-
 drivers/crypto/intel/qat/qat_common/adf_isr.c |  3 +-
 .../crypto/intel/qat/qat_common/adf_sriov.c   |  3 +-
 .../crypto/intel/qat/qat_common/adf_vf_isr.c  |  3 +-
 drivers/cxl/pci.c                             |  2 +-
 drivers/extcon/extcon-intel-int3496.c         |  4 +-
 drivers/firewire/core-transaction.c           |  3 +-
 drivers/firewire/ohci.c                       |  3 +-
 drivers/gpio/gpiolib-cdev.c                   |  4 +-
 drivers/gpu/drm/amd/amdgpu/aldebaran.c        |  2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c    |  6 +--
 drivers/gpu/drm/amd/amdgpu/amdgpu_reset.c     |  2 +-
 drivers/gpu/drm/amd/amdkfd/kfd_process.c      |  3 +-
 drivers/gpu/drm/bridge/analogix/anx7625.c     |  3 +-
 drivers/gpu/drm/bridge/ite-it6505.c           |  2 +-
 drivers/gpu/drm/bridge/ti-tfp410.c            |  2 +-
 drivers/gpu/drm/drm_atomic_helper.c           |  6 +--
 drivers/gpu/drm/drm_probe_helper.c            |  2 +-
 drivers/gpu/drm/drm_self_refresh_helper.c     |  2 +-
 drivers/gpu/drm/exynos/exynos_hdmi.c          |  2 +-
 .../drm/i915/display/intel_display_driver.c   |  3 +-
 .../drm/i915/display/intel_display_power.c    |  2 +-
 drivers/gpu/drm/i915/display/intel_tc.c       |  4 +-
 drivers/gpu/drm/i915/gem/i915_gem_ttm_move.c  |  2 +-
 drivers/gpu/drm/i915/gt/uc/intel_guc.c        |  4 +-
 drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c     |  4 +-
 .../gpu/drm/i915/gt/uc/intel_guc_submission.c |  6 +--
 drivers/gpu/drm/i915/i915_active.c            |  2 +-
 drivers/gpu/drm/i915/i915_driver.c            |  5 ++-
 drivers/gpu/drm/i915/i915_drv.h               |  2 +-
 drivers/gpu/drm/i915/i915_sw_fence_work.c     |  2 +-
 drivers/gpu/drm/i915/i915_vma_resource.c      |  2 +-
 drivers/gpu/drm/i915/pxp/intel_pxp.c          |  2 +-
 drivers/gpu/drm/i915/pxp/intel_pxp_irq.c      |  2 +-
 .../gpu/drm/i915/selftests/i915_sw_fence.c    |  2 +-
 .../gpu/drm/i915/selftests/mock_gem_device.c  |  2 +-
 drivers/gpu/drm/nouveau/dispnv50/disp.c       |  2 +-
 drivers/gpu/drm/nouveau/nouveau_drm.c         |  2 +-
 drivers/gpu/drm/nouveau/nouveau_sched.c       |  3 +-
 drivers/gpu/drm/radeon/radeon_display.c       |  3 +-
 .../gpu/drm/rockchip/dw_hdmi_qp-rockchip.c    |  4 +-
 drivers/gpu/drm/rockchip/rockchip_drm_vop.c   |  2 +-
 drivers/gpu/drm/scheduler/sched_main.c        |  2 +-
 drivers/gpu/drm/tilcdc/tilcdc_crtc.c          |  2 +-
 drivers/gpu/drm/vc4/vc4_hdmi.c                |  4 +-
 drivers/gpu/drm/xe/xe_devcoredump.c           |  2 +-
 drivers/gpu/drm/xe/xe_device.c                |  4 +-
 drivers/gpu/drm/xe/xe_execlist.c              |  2 +-
 drivers/gpu/drm/xe/xe_ggtt.c                  |  2 +-
 drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c   |  6 +--
 drivers/gpu/drm/xe/xe_guc_ct.c                |  4 +-
 drivers/gpu/drm/xe/xe_hw_engine_group.c       |  3 +-
 drivers/gpu/drm/xe/xe_oa.c                    |  2 +-
 drivers/gpu/drm/xe/xe_pt.c                    |  2 +-
 drivers/gpu/drm/xe/xe_sriov.c                 |  2 +-
 drivers/gpu/drm/xe/xe_vm.c                    |  4 +-
 drivers/greybus/operation.c                   |  2 +-
 drivers/hid/hid-nintendo.c                    |  3 +-
 drivers/hte/hte.c                             |  2 +-
 drivers/hv/mshv_eventfd.c                     |  2 +-
 drivers/i3c/master.c                          |  2 +-
 drivers/iio/adc/pac1934.c                     |  2 +-
 drivers/infiniband/core/cm.c                  |  2 +-
 drivers/infiniband/core/device.c              |  4 +-
 drivers/infiniband/core/ucma.c                |  2 +-
 drivers/infiniband/hw/hfi1/init.c             |  3 +-
 drivers/infiniband/hw/hfi1/opfn.c             |  3 +-
 drivers/infiniband/hw/mlx4/cm.c               |  2 +-
 drivers/infiniband/hw/mlx5/odp.c              |  4 +-
 drivers/infiniband/sw/rdmavt/cq.c             |  3 +-
 drivers/infiniband/ulp/iser/iscsi_iser.c      |  2 +-
 drivers/infiniband/ulp/isert/ib_isert.c       |  2 +-
 drivers/infiniband/ulp/rtrs/rtrs-clt.c        |  2 +-
 drivers/infiniband/ulp/rtrs/rtrs-srv.c        |  2 +-
 drivers/input/keyboard/gpio_keys.c            |  2 +-
 drivers/input/misc/palmas-pwrbutton.c         |  2 +-
 drivers/input/mouse/psmouse-smbus.c           |  2 +-
 drivers/input/mouse/synaptics_i2c.c           |  8 ++--
 drivers/isdn/capi/kcapi.c                     |  2 +-
 drivers/leds/trigger/ledtrig-input-events.c   |  2 +-
 drivers/md/bcache/btree.c                     |  3 +-
 drivers/md/bcache/super.c                     | 30 +++++++------
 drivers/md/bcache/writeback.c                 |  2 +-
 drivers/md/dm-bufio.c                         |  3 +-
 drivers/md/dm-cache-target.c                  |  3 +-
 drivers/md/dm-clone-target.c                  |  3 +-
 drivers/md/dm-crypt.c                         |  6 ++-
 drivers/md/dm-delay.c                         |  4 +-
 drivers/md/dm-integrity.c                     | 15 ++++---
 drivers/md/dm-kcopyd.c                        |  3 +-
 drivers/md/dm-log-userspace-base.c            |  3 +-
 drivers/md/dm-mpath.c                         |  5 ++-
 drivers/md/dm-raid1.c                         |  5 ++-
 drivers/md/dm-snap-persistent.c               |  3 +-
 drivers/md/dm-stripe.c                        |  2 +-
 drivers/md/dm-verity-target.c                 |  4 +-
 drivers/md/dm-writecache.c                    |  3 +-
 drivers/md/dm.c                               |  3 +-
 drivers/md/md.c                               |  4 +-
 drivers/media/pci/ddbridge/ddbridge-core.c    |  2 +-
 .../platform/mediatek/mdp3/mtk-mdp3-core.c    |  6 ++-
 .../platform/synopsys/hdmirx/snps_hdmirx.c    |  8 ++--
 drivers/message/fusion/mptbase.c              |  7 ++-
 drivers/mmc/core/block.c                      |  3 +-
 drivers/mmc/host/mtk-sd.c                     |  4 +-
 drivers/mmc/host/omap.c                       |  2 +-
 drivers/mmc/host/sdhci.c                      |  2 +-
 drivers/net/can/spi/hi311x.c                  |  3 +-
 drivers/net/can/spi/mcp251x.c                 |  3 +-
 .../net/ethernet/cavium/liquidio/lio_core.c   |  2 +-
 .../net/ethernet/cavium/liquidio/lio_main.c   |  8 ++--
 .../ethernet/cavium/liquidio/lio_vf_main.c    |  3 +-
 .../cavium/liquidio/request_manager.c         |  2 +-
 .../cavium/liquidio/response_manager.c        |  3 +-
 .../net/ethernet/freescale/dpaa2/dpaa2-eth.c  |  2 +-
 .../hisilicon/hns3/hns3pf/hclge_main.c        |  3 +-
 drivers/net/ethernet/intel/fm10k/fm10k_main.c |  2 +-
 drivers/net/ethernet/intel/i40e/i40e_main.c   |  2 +-
 .../net/ethernet/marvell/octeontx2/af/cgx.c   |  2 +-
 .../marvell/octeontx2/af/mcs_rvu_if.c         |  2 +-
 .../ethernet/marvell/octeontx2/af/rvu_cgx.c   |  2 +-
 .../ethernet/marvell/octeontx2/af/rvu_rep.c   |  2 +-
 .../marvell/octeontx2/nic/cn10k_ipsec.c       |  3 +-
 .../ethernet/marvell/prestera/prestera_main.c |  2 +-
 .../ethernet/marvell/prestera/prestera_pci.c  |  2 +-
 drivers/net/ethernet/mellanox/mlxsw/core.c    |  4 +-
 drivers/net/ethernet/netronome/nfp/nfp_main.c |  2 +-
 drivers/net/ethernet/qlogic/qed/qed_main.c    |  3 +-
 drivers/net/ethernet/sfc/efx_channels.c       |  2 +-
 drivers/net/ethernet/sfc/siena/efx_channels.c |  2 +-
 drivers/net/ethernet/wiznet/w5100.c           |  2 +-
 drivers/net/fjes/fjes_main.c                  |  5 ++-
 drivers/net/macvlan.c                         |  2 +-
 drivers/net/netdevsim/dev.c                   |  6 +--
 drivers/net/phy/sfp.c                         | 12 ++---
 drivers/net/wireguard/device.c                |  6 ++-
 drivers/net/wireless/ath/ath6kl/usb.c         |  2 +-
 drivers/net/wireless/intel/ipw2x00/ipw2100.c  |  6 +--
 drivers/net/wireless/intel/ipw2x00/ipw2200.c  |  2 +-
 drivers/net/wireless/intel/iwlwifi/fw/dbg.c   |  4 +-
 .../net/wireless/intel/iwlwifi/iwl-trans.h    |  2 +-
 drivers/net/wireless/intel/iwlwifi/mvm/tdls.c |  6 +--
 .../net/wireless/marvell/libertas/if_sdio.c   |  3 +-
 .../net/wireless/marvell/libertas/if_spi.c    |  3 +-
 .../net/wireless/marvell/libertas_tf/main.c   |  2 +-
 .../net/wireless/mediatek/mt76/mt7921/init.c  |  2 +-
 .../net/wireless/mediatek/mt76/mt7925/init.c  |  2 +-
 drivers/net/wireless/quantenna/qtnfmac/core.c |  3 +-
 drivers/net/wireless/realtek/rtlwifi/base.c   |  2 +-
 drivers/net/wireless/realtek/rtw88/usb.c      |  3 +-
 drivers/net/wireless/silabs/wfx/main.c        |  2 +-
 drivers/net/wireless/st/cw1200/bh.c           |  4 +-
 drivers/net/wwan/t7xx/t7xx_hif_dpmaif_rx.c    |  3 +-
 drivers/net/wwan/wwan_hwsim.c                 |  2 +-
 drivers/nvdimm/security.c                     |  4 +-
 drivers/nvme/host/core.c                      |  8 ++--
 drivers/nvme/host/tcp.c                       |  2 +-
 drivers/nvme/target/admin-cmd.c               |  2 +-
 drivers/nvme/target/core.c                    |  5 ++-
 drivers/nvme/target/fabrics-cmd-auth.c        |  2 +-
 drivers/nvme/target/fc.c                      |  6 +--
 drivers/nvme/target/tcp.c                     |  2 +-
 drivers/pci/endpoint/functions/pci-epf-mhi.c  |  2 +-
 drivers/pci/endpoint/functions/pci-epf-ntb.c  |  5 ++-
 drivers/pci/endpoint/functions/pci-epf-test.c |  3 +-
 drivers/pci/endpoint/functions/pci-epf-vntb.c |  5 ++-
 drivers/pci/endpoint/pci-ep-cfs.c             |  2 +-
 drivers/pci/hotplug/pnv_php.c                 |  3 +-
 drivers/pci/hotplug/shpchp_core.c             |  3 +-
 drivers/phy/allwinner/phy-sun4i-usb.c         | 14 +++---
 .../platform/cznic/turris-omnia-mcu-gpio.c    |  2 +-
 .../surface/aggregator/ssh_packet_layer.c     |  2 +-
 .../surface/aggregator/ssh_request_layer.c    |  2 +-
 .../platform/surface/surface_acpi_notify.c    |  2 +-
 drivers/platform/x86/gpd-pocket-fan.c         |  4 +-
 .../x86/x86-android-tablets/vexia_atla10_ec.c |  2 +-
 drivers/power/supply/ab8500_btemp.c           |  3 +-
 drivers/power/supply/bq2415x_charger.c        |  2 +-
 drivers/power/supply/bq24190_charger.c        |  2 +-
 drivers/power/supply/bq27xxx_battery.c        |  6 +--
 drivers/power/supply/ipaq_micro_battery.c     |  3 +-
 drivers/power/supply/rk817_charger.c          |  6 +--
 drivers/power/supply/ucs1002_power.c          |  2 +-
 drivers/power/supply/ug3105_battery.c         |  6 +--
 drivers/rapidio/rio.c                         |  2 +-
 drivers/ras/cec.c                             |  2 +-
 drivers/regulator/irq_helpers.c               |  2 +-
 drivers/regulator/qcom-labibb-regulator.c     |  4 +-
 drivers/s390/char/tape_3590.c                 |  2 +-
 drivers/scsi/be2iscsi/be_main.c               |  3 +-
 drivers/scsi/bnx2fc/bnx2fc_fcoe.c             |  2 +-
 drivers/scsi/device_handler/scsi_dh_alua.c    |  2 +-
 drivers/scsi/fcoe/fcoe.c                      |  2 +-
 drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c      |  3 +-
 drivers/scsi/lpfc/lpfc_init.c                 |  2 +-
 drivers/scsi/pm8001/pm8001_init.c             |  2 +-
 drivers/scsi/qedf/qedf_main.c                 | 15 ++++---
 drivers/scsi/qedi/qedi_main.c                 |  2 +-
 drivers/scsi/qla2xxx/qla_os.c                 |  4 +-
 drivers/scsi/qla2xxx/qla_target.c             |  2 +-
 drivers/scsi/qla2xxx/tcm_qla2xxx.c            |  2 +-
 drivers/scsi/qla4xxx/ql4_os.c                 |  3 +-
 drivers/scsi/scsi_transport_fc.c              |  7 +--
 drivers/scsi/scsi_transport_iscsi.c           |  2 +-
 drivers/soc/fsl/qbman/qman.c                  |  2 +-
 drivers/soc/xilinx/zynqmp_power.c             |  6 +--
 drivers/staging/greybus/sdio.c                |  2 +-
 drivers/target/sbp/sbp_target.c               |  8 ++--
 drivers/target/target_core_transport.c        |  4 +-
 drivers/target/target_core_xcopy.c            |  2 +-
 drivers/target/tcm_fc/tfc_conf.c              |  2 +-
 drivers/thunderbolt/tb.c                      |  2 +-
 drivers/tty/serial/8250/8250_dw.c             |  4 +-
 drivers/tty/tty_buffer.c                      |  8 ++--
 drivers/usb/core/hub.c                        |  2 +-
 drivers/usb/dwc3/gadget.c                     |  2 +-
 drivers/usb/gadget/function/f_hid.c           |  3 +-
 drivers/usb/host/xhci-dbgcap.c                |  8 ++--
 drivers/usb/host/xhci-ring.c                  |  2 +-
 drivers/usb/storage/uas.c                     |  2 +-
 drivers/usb/typec/anx7411.c                   |  3 +-
 drivers/vdpa/vdpa_user/vduse_dev.c            |  3 +-
 drivers/virt/acrn/irqfd.c                     |  3 +-
 drivers/virtio/virtio_balloon.c               |  3 +-
 drivers/xen/events/events_base.c              |  6 +--
 drivers/xen/privcmd.c                         |  3 +-
 fs/afs/callback.c                             |  4 +-
 fs/afs/main.c                                 |  4 +-
 fs/afs/write.c                                |  2 +-
 fs/aio.c                                      |  2 +-
 fs/bcachefs/btree_write_buffer.c              |  2 +-
 fs/bcachefs/io_read.c                         | 12 ++---
 fs/bcachefs/journal_io.c                      |  2 +-
 fs/bcachefs/super.c                           | 10 ++---
 fs/btrfs/async-thread.c                       |  3 +-
 fs/btrfs/block-group.c                        |  2 +-
 fs/btrfs/disk-io.c                            | 11 +++--
 fs/btrfs/extent_map.c                         |  2 +-
 fs/btrfs/scrub.c                              |  3 +-
 fs/btrfs/space-info.c                         |  4 +-
 fs/btrfs/zoned.c                              |  2 +-
 fs/ceph/super.c                               |  2 +-
 fs/dlm/lowcomms.c                             |  2 +-
 fs/dlm/main.c                                 |  2 +-
 fs/ext4/mballoc.c                             |  2 +-
 fs/fs-writeback.c                             |  4 +-
 fs/fuse/dev.c                                 |  2 +-
 fs/fuse/inode.c                               |  2 +-
 fs/gfs2/main.c                                |  5 ++-
 fs/gfs2/ops_fstype.c                          |  6 ++-
 fs/netfs/objects.c                            |  2 +-
 fs/netfs/read_collect.c                       |  2 +-
 fs/netfs/write_collect.c                      |  2 +-
 fs/nfs/namespace.c                            |  2 +-
 fs/nfs/nfs4renewd.c                           |  2 +-
 fs/nfsd/filecache.c                           |  2 +-
 fs/notify/mark.c                              |  4 +-
 fs/ocfs2/dlm/dlmdomain.c                      |  3 +-
 fs/ocfs2/dlmfs/dlmfs.c                        |  3 +-
 fs/quota/dquot.c                              |  2 +-
 fs/smb/client/cifsfs.c                        | 16 ++++---
 fs/smb/server/ksmbd_work.c                    |  2 +-
 fs/smb/server/transport_rdma.c                |  3 +-
 fs/super.c                                    |  3 +-
 fs/verity/verify.c                            |  2 +-
 fs/xfs/xfs_log.c                              |  3 +-
 fs/xfs/xfs_mru_cache.c                        |  3 +-
 fs/xfs/xfs_super.c                            | 15 ++++---
 include/drm/gpu_scheduler.h                   |  2 +-
 include/linux/closure.h                       |  2 +-
 include/linux/workqueue.h                     | 35 ++++++++-------
 io_uring/io_uring.c                           |  4 +-
 kernel/bpf/cgroup.c                           |  5 ++-
 kernel/bpf/cpumap.c                           |  2 +-
 kernel/bpf/helpers.c                          |  4 +-
 kernel/bpf/memalloc.c                         |  2 +-
 kernel/bpf/syscall.c                          |  2 +-
 kernel/cgroup/cgroup-v1.c                     |  2 +-
 kernel/cgroup/cgroup.c                        |  4 +-
 kernel/module/dups.c                          |  4 +-
 kernel/padata.c                               |  9 ++--
 kernel/power/main.c                           |  2 +-
 kernel/rcu/tasks.h                            |  4 +-
 kernel/rcu/tree.c                             |  4 +-
 kernel/sched/core.c                           |  4 +-
 kernel/sched/ext.c                            |  4 +-
 kernel/smp.c                                  |  2 +-
 kernel/trace/trace_events_user.c              |  2 +-
 kernel/umh.c                                  |  2 +-
 kernel/workqueue.c                            | 45 ++++++++++++-------
 mm/backing-dev.c                              |  6 +--
 mm/kfence/core.c                              |  6 +--
 mm/memcontrol.c                               |  4 +-
 mm/slub.c                                     |  3 +-
 mm/vmstat.c                                   |  3 +-
 net/bridge/br_cfm.c                           |  6 +--
 net/bridge/br_mrp.c                           |  8 ++--
 net/ceph/messenger.c                          |  3 +-
 net/ceph/mon_client.c                         |  2 +-
 net/core/link_watch.c                         |  4 +-
 net/core/skmsg.c                              |  2 +-
 net/core/sock_diag.c                          |  2 +-
 net/devlink/core.c                            |  2 +-
 net/ipv4/inet_fragment.c                      |  2 +-
 net/netfilter/nf_conntrack_ecache.c           |  2 +-
 net/openvswitch/dp_notify.c                   |  2 +-
 net/rds/ib_rdma.c                             |  3 +-
 net/rfkill/input.c                            |  2 +-
 net/rxrpc/rxperf.c                            |  2 +-
 net/smc/af_smc.c                              |  6 +--
 net/smc/smc_core.c                            |  4 +-
 net/tls/tls_device.c                          |  2 +-
 net/unix/garbage.c                            |  2 +-
 net/vmw_vsock/af_vsock.c                      |  2 +-
 net/vmw_vsock/virtio_transport.c              |  2 +-
 net/vmw_vsock/vsock_loopback.c                |  2 +-
 net/wireless/core.c                           |  4 +-
 net/wireless/sysfs.c                          |  2 +-
 rust/kernel/workqueue.rs                      | 12 ++---
 sound/soc/codecs/aw88081.c                    |  2 +-
 sound/soc/codecs/aw88166.c                    |  2 +-
 sound/soc/codecs/aw88261.c                    |  2 +-
 sound/soc/codecs/aw88395/aw88395.c            |  2 +-
 sound/soc/codecs/aw88399.c                    |  2 +-
 sound/soc/codecs/cs42l43-jack.c               |  6 +--
 sound/soc/codecs/cs42l43.c                    |  4 +-
 sound/soc/codecs/es8326.c                     | 12 ++---
 sound/soc/codecs/rt5663.c                     |  6 +--
 sound/soc/codecs/wm_adsp.c                    |  2 +-
 sound/soc/intel/boards/sof_es8336.c           |  2 +-
 sound/soc/sof/intel/cnl.c                     |  2 +-
 sound/soc/sof/intel/hda-ipc.c                 |  2 +-
 virt/kvm/eventfd.c                            |  2 +-
 369 files changed, 729 insertions(+), 601 deletions(-)

-- 
2.49.0
Re: [PATCH 0/4] Workqueue: rename system workqueue and add WQ_PERCPU
Posted by Tejun Heo 9 months, 1 week ago
Hello,

On Sat, May 03, 2025 at 10:28:30AM +0200, Marco Crivellari wrote:
> Hi!
> 
> This series is the follow up of the discussion from:
> 	"workqueue: Always use wq_select_unbound_cpu() for WORK_CPU_UNBOUND."
> 	https://lore.kernel.org/all/20250221112003.1dSuoGyc@linutronix.de/

Can you please make a summary of the discussion here? Referring to old
thread is useful but it'd be nice to have the rationales laid out in the
patchset - why this is desirable, what is the transition plan and what are
the rationales for it? Also, please include a short summary in the patches.

> 1)  [P 1-2] system workqueue rename:
>  
> 	system_wq is a per-CPU workqueue, but his name is not clear.
> 	system_unbound_wq is to be used when locality is not required.
> 	
> 	system_wq renamed in system_percpu_wq, while system_unbound_wq
> 	became system_dfl_wq.

Let's keep the old names for a release or two and trigger printk_once()
warnings about the renames. These are pretty widely used, so I think it
warrants a bit of extra effort.

> 2)  [P 3] Introduction of WQ_PERCPU.
> 
> 	This patch adds a new WQ_PERCPU flag to explicitly request the legacy
> 	per-CPU behavior. WQ_UNBOUND will be removed once the migration is
> 	complete.

I wouldn't call per-cpu behavior legacy. There are plenty of cases that need
per-cpu behavior for correctness and/or performance.

> 	Every alloc_workqueue() caller should use one among WQ_PERCPU or
> 	WQ_UNBOUND. This is actually enforced warning if both or none of them
> 	are present at the same time.

Similarly, let's warn about violations and assume the old behavior at first.

> 3)  [P 4] alloc_workqueue() callee should pass explicitly WQ_PERCPU.

Do you mean caller?

> 
> 	This patch ensures that every caller that needs per-cpu workqueue
> 	will explicitly require it, using the WQ_PERCPU flag.

How is 3) different from 2)?

Thanks.

-- 
tejun
Re: [PATCH 0/4] Workqueue: rename system workqueue and add WQ_PERCPU
Posted by Marco Crivellari 9 months, 1 week ago
Hi,

> Can you please make a summary of the discussion here? Referring to old
> thread is useful but it'd be nice to have the rationales laid out in the
> patchset - why this is desirable, what is the transition plan and what are
> the rationales for it? Also, please include a short summary in the patches.

Sure, thanks for the advice.

> Let's keep the old names for a release or two and trigger printk_once()
> warnings about the renames. These are pretty widely used, so I think it
> warrants a bit of extra effort.

Good, sounds fine.
But I don't understand where printk_once() should be placed.
Can you give me some further guidance?

> Similarly, let's warn about violations and assume the old behavior at first.

Ok, so warn (printk_once()) if both flags are present but if none among
WQ_UNBOUND nor WQ_PERCPU are present, assume WQ_PERCPU.

Did I understand correctly?

> Do you mean caller?

Yes, sorry. I meant "every alloc_workqueue() caller".

> How is 3) different from 2)?

I get your point, I will use a single patch.

Many thanks in advance, about my questions.


On Tue, May 6, 2025 at 1:39 AM Tejun Heo <tj@kernel.org> wrote:
>
> Hello,
>
> On Sat, May 03, 2025 at 10:28:30AM +0200, Marco Crivellari wrote:
> > Hi!
> >
> > This series is the follow up of the discussion from:
> >       "workqueue: Always use wq_select_unbound_cpu() for WORK_CPU_UNBOUND."
> >       https://lore.kernel.org/all/20250221112003.1dSuoGyc@linutronix.de/
>
> Can you please make a summary of the discussion here? Referring to old
> thread is useful but it'd be nice to have the rationales laid out in the
> patchset - why this is desirable, what is the transition plan and what are
> the rationales for it? Also, please include a short summary in the patches.
>
> > 1)  [P 1-2] system workqueue rename:
> >
> >       system_wq is a per-CPU workqueue, but his name is not clear.
> >       system_unbound_wq is to be used when locality is not required.
> >
> >       system_wq renamed in system_percpu_wq, while system_unbound_wq
> >       became system_dfl_wq.
>
> Let's keep the old names for a release or two and trigger printk_once()
> warnings about the renames. These are pretty widely used, so I think it
> warrants a bit of extra effort.
>
> > 2)  [P 3] Introduction of WQ_PERCPU.
> >
> >       This patch adds a new WQ_PERCPU flag to explicitly request the legacy
> >       per-CPU behavior. WQ_UNBOUND will be removed once the migration is
> >       complete.
>
> I wouldn't call per-cpu behavior legacy. There are plenty of cases that need
> per-cpu behavior for correctness and/or performance.
>
> >       Every alloc_workqueue() caller should use one among WQ_PERCPU or
> >       WQ_UNBOUND. This is actually enforced warning if both or none of them
> >       are present at the same time.
>
> Similarly, let's warn about violations and assume the old behavior at first.
>
> > 3)  [P 4] alloc_workqueue() callee should pass explicitly WQ_PERCPU.
>
> Do you mean caller?
>
> >
> >       This patch ensures that every caller that needs per-cpu workqueue
> >       will explicitly require it, using the WQ_PERCPU flag.
>
> How is 3) different from 2)?
>
> Thanks.
>
> --
> tejun



--

Marco Crivellari

L3 Support Engineer, Technology & Product




marco.crivellari@suse.com
Re: [PATCH 0/4] Workqueue: rename system workqueue and add WQ_PERCPU
Posted by Frederic Weisbecker 9 months, 1 week ago
Le Tue, May 06, 2025 at 12:10:18PM +0200, Marco Crivellari a écrit :
> Hi,
> 
> > Can you please make a summary of the discussion here? Referring to old
> > thread is useful but it'd be nice to have the rationales laid out in the
> > patchset - why this is desirable, what is the transition plan and what are
> > the rationales for it? Also, please include a short summary in the patches.
> 
> Sure, thanks for the advice.
> 
> > Let's keep the old names for a release or two and trigger printk_once()
> > warnings about the renames. These are pretty widely used, so I think it
> > warrants a bit of extra effort.
> 
> Good, sounds fine.
> But I don't understand where printk_once() should be placed.
> Can you give me some further guidance?

So one possibility to achieve this is to not do a rename of system_wq
to system_percpu_wq but eventually keep system_wq around and create the
new system_percpu_wq. Convert all current users of system_wq to system_percpu_wq
and warn from queue_work() when system_wq is used.

I would personally prefer that we use WARN_ON_ONCE() so that this really
gets noticed. Tejun what do you think?

Thanks.

-- 
Frederic Weisbecker
SUSE Labs
Re: [PATCH 0/4] Workqueue: rename system workqueue and add WQ_PERCPU
Posted by Tejun Heo 9 months, 1 week ago
On Tue, May 06, 2025 at 02:55:14PM +0200, Frederic Weisbecker wrote:
> Le Tue, May 06, 2025 at 12:10:18PM +0200, Marco Crivellari a écrit :
> > Hi,
> > 
> > > Can you please make a summary of the discussion here? Referring to old
> > > thread is useful but it'd be nice to have the rationales laid out in the
> > > patchset - why this is desirable, what is the transition plan and what are
> > > the rationales for it? Also, please include a short summary in the patches.
> > 
> > Sure, thanks for the advice.
> > 
> > > Let's keep the old names for a release or two and trigger printk_once()
> > > warnings about the renames. These are pretty widely used, so I think it
> > > warrants a bit of extra effort.
> > 
> > Good, sounds fine.
> > But I don't understand where printk_once() should be placed.
> > Can you give me some further guidance?
> 
> So one possibility to achieve this is to not do a rename of system_wq
> to system_percpu_wq but eventually keep system_wq around and create the
> new system_percpu_wq. Convert all current users of system_wq to system_percpu_wq
> and warn from queue_work() when system_wq is used.
> 
> I would personally prefer that we use WARN_ON_ONCE() so that this really
> gets noticed. Tejun what do you think?

I'd stick with printk_once() at least for a while. There are systems set up
to panic on warnings and there will be a bunch of out-of-tree usages too.
Let's latch it up over multiple releases.

Thanks.

-- 
tejun
Re: [PATCH 0/4] Workqueue: rename system workqueue and add WQ_PERCPU
Posted by Frederic Weisbecker 9 months ago
Le Tue, May 06, 2025 at 02:42:26PM -1000, Tejun Heo a écrit :
> On Tue, May 06, 2025 at 02:55:14PM +0200, Frederic Weisbecker wrote:
> > Le Tue, May 06, 2025 at 12:10:18PM +0200, Marco Crivellari a écrit :
> > > Hi,
> > > 
> > > > Can you please make a summary of the discussion here? Referring to old
> > > > thread is useful but it'd be nice to have the rationales laid out in the
> > > > patchset - why this is desirable, what is the transition plan and what are
> > > > the rationales for it? Also, please include a short summary in the patches.
> > > 
> > > Sure, thanks for the advice.
> > > 
> > > > Let's keep the old names for a release or two and trigger printk_once()
> > > > warnings about the renames. These are pretty widely used, so I think it
> > > > warrants a bit of extra effort.
> > > 
> > > Good, sounds fine.
> > > But I don't understand where printk_once() should be placed.
> > > Can you give me some further guidance?
> > 
> > So one possibility to achieve this is to not do a rename of system_wq
> > to system_percpu_wq but eventually keep system_wq around and create the
> > new system_percpu_wq. Convert all current users of system_wq to system_percpu_wq
> > and warn from queue_work() when system_wq is used.
> > 
> > I would personally prefer that we use WARN_ON_ONCE() so that this really
> > gets noticed. Tejun what do you think?
> 
> I'd stick with printk_once() at least for a while. There are systems set up
> to panic on warnings and there will be a bunch of out-of-tree usages too.
> Let's latch it up over multiple releases.

Fair enough!

Thanks.

-- 
Frederic Weisbecker
SUSE Labs
Re: [PATCH 0/4] Workqueue: rename system workqueue and add WQ_PERCPU
Posted by Sebastian Andrzej Siewior 9 months, 1 week ago
On 2025-05-03 10:28:30 [+0200], Marco Crivellari wrote:
> Hi!
Hi,

> This series is the follow up of the discussion from:
> 	"workqueue: Always use wq_select_unbound_cpu() for WORK_CPU_UNBOUND."
> 	https://lore.kernel.org/all/20250221112003.1dSuoGyc@linutronix.de/
> 
> 1)  [P 1-2] system workqueue rename:
>  
> 	system_wq is a per-CPU workqueue, but his name is not clear.
> 	system_unbound_wq is to be used when locality is not required.
> 	
> 	system_wq renamed in system_percpu_wq, while system_unbound_wq
> 	became system_dfl_wq.
> 
> 2)  [P 3] Introduction of WQ_PERCPU.
> 
> 	This patch adds a new WQ_PERCPU flag to explicitly request the legacy
> 	per-CPU behavior. WQ_UNBOUND will be removed once the migration is
> 	complete.
> 
> 	Every alloc_workqueue() caller should use one among WQ_PERCPU or
> 	WQ_UNBOUND. This is actually enforced warning if both or none of them
> 	are present at the same time.
> 
> 3)  [P 4] alloc_workqueue() callee should pass explicitly WQ_PERCPU.
> 
> 	This patch ensures that every caller that needs per-cpu workqueue
> 	will explicitly require it, using the WQ_PERCPU flag.

Sounds like a plan.
I assume the huge patches were made with coccinelle?

Sebastian
Re: [PATCH 0/4] Workqueue: rename system workqueue and add WQ_PERCPU
Posted by Michal Hocko 9 months, 1 week ago
On Mon 05-05-25 08:51:21, Sebastian Andrzej Siewior wrote:
> On 2025-05-03 10:28:30 [+0200], Marco Crivellari wrote:
> > Hi!
> Hi,
> 
> > This series is the follow up of the discussion from:
> > 	"workqueue: Always use wq_select_unbound_cpu() for WORK_CPU_UNBOUND."
> > 	https://lore.kernel.org/all/20250221112003.1dSuoGyc@linutronix.de/
> > 
> > 1)  [P 1-2] system workqueue rename:
> >  
> > 	system_wq is a per-CPU workqueue, but his name is not clear.
> > 	system_unbound_wq is to be used when locality is not required.
> > 	
> > 	system_wq renamed in system_percpu_wq, while system_unbound_wq
> > 	became system_dfl_wq.
> > 
> > 2)  [P 3] Introduction of WQ_PERCPU.
> > 
> > 	This patch adds a new WQ_PERCPU flag to explicitly request the legacy
> > 	per-CPU behavior. WQ_UNBOUND will be removed once the migration is
> > 	complete.
> > 
> > 	Every alloc_workqueue() caller should use one among WQ_PERCPU or
> > 	WQ_UNBOUND. This is actually enforced warning if both or none of them
> > 	are present at the same time.
> > 
> > 3)  [P 4] alloc_workqueue() callee should pass explicitly WQ_PERCPU.
> > 
> > 	This patch ensures that every caller that needs per-cpu workqueue
> > 	will explicitly require it, using the WQ_PERCPU flag.
> 
> Sounds like a plan.
> I assume the huge patches were made with coccinelle?

Yes, this makes a lot of sense. I think it is worth mentioning why do we
want/need to go through this major refactoring. From my POV this will
help cpu isolation in a long term because it reduces unpredictable
interference from pcp workers. 
-- 
Michal Hocko
SUSE Labs
Re: [PATCH 0/4] Workqueue: rename system workqueue and add WQ_PERCPU
Posted by Marco Crivellari 9 months, 1 week ago
Hi Michal,

I will integrate the cover letter with more information
(also pointed out by Tejun, I noticed).

Thanks!


On Mon, May 5, 2025 at 11:25 AM Michal Hocko <mhocko@suse.com> wrote:
>
> On Mon 05-05-25 08:51:21, Sebastian Andrzej Siewior wrote:
> > On 2025-05-03 10:28:30 [+0200], Marco Crivellari wrote:
> > > Hi!
> > Hi,
> >
> > > This series is the follow up of the discussion from:
> > >     "workqueue: Always use wq_select_unbound_cpu() for WORK_CPU_UNBOUND."
> > >     https://lore.kernel.org/all/20250221112003.1dSuoGyc@linutronix.de/
> > >
> > > 1)  [P 1-2] system workqueue rename:
> > >
> > >     system_wq is a per-CPU workqueue, but his name is not clear.
> > >     system_unbound_wq is to be used when locality is not required.
> > >
> > >     system_wq renamed in system_percpu_wq, while system_unbound_wq
> > >     became system_dfl_wq.
> > >
> > > 2)  [P 3] Introduction of WQ_PERCPU.
> > >
> > >     This patch adds a new WQ_PERCPU flag to explicitly request the legacy
> > >     per-CPU behavior. WQ_UNBOUND will be removed once the migration is
> > >     complete.
> > >
> > >     Every alloc_workqueue() caller should use one among WQ_PERCPU or
> > >     WQ_UNBOUND. This is actually enforced warning if both or none of them
> > >     are present at the same time.
> > >
> > > 3)  [P 4] alloc_workqueue() callee should pass explicitly WQ_PERCPU.
> > >
> > >     This patch ensures that every caller that needs per-cpu workqueue
> > >     will explicitly require it, using the WQ_PERCPU flag.
> >
> > Sounds like a plan.
> > I assume the huge patches were made with coccinelle?
>
> Yes, this makes a lot of sense. I think it is worth mentioning why do we
> want/need to go through this major refactoring. From my POV this will
> help cpu isolation in a long term because it reduces unpredictable
> interference from pcp workers.
> --
> Michal Hocko
> SUSE Labs



-- 

Marco Crivellari

L3 Support Engineer, Technology & Product




marco.crivellari@suse.com
Re: [PATCH 0/4] Workqueue: rename system workqueue and add WQ_PERCPU
Posted by Marco Crivellari 9 months, 1 week ago
Hi,

> I assume the huge patches were made with coccinelle?

Yes, the majority of P4 at least. Considering my lack of experience with
Coccinelle I made just the big parts with it, then I just "grepped" for the
rest (well, I used LazyVim and its "search and replace").

P 1-2: only with the "search and replace" of LazyVim.

Thanks!



On Mon, May 5, 2025 at 8:51 AM Sebastian Andrzej Siewior
<bigeasy@linutronix.de> wrote:
>
> On 2025-05-03 10:28:30 [+0200], Marco Crivellari wrote:
> > Hi!
> Hi,
>
> > This series is the follow up of the discussion from:
> >       "workqueue: Always use wq_select_unbound_cpu() for WORK_CPU_UNBOUND."
> >       https://lore.kernel.org/all/20250221112003.1dSuoGyc@linutronix.de/
> >
> > 1)  [P 1-2] system workqueue rename:
> >
> >       system_wq is a per-CPU workqueue, but his name is not clear.
> >       system_unbound_wq is to be used when locality is not required.
> >
> >       system_wq renamed in system_percpu_wq, while system_unbound_wq
> >       became system_dfl_wq.
> >
> > 2)  [P 3] Introduction of WQ_PERCPU.
> >
> >       This patch adds a new WQ_PERCPU flag to explicitly request the legacy
> >       per-CPU behavior. WQ_UNBOUND will be removed once the migration is
> >       complete.
> >
> >       Every alloc_workqueue() caller should use one among WQ_PERCPU or
> >       WQ_UNBOUND. This is actually enforced warning if both or none of them
> >       are present at the same time.
> >
> > 3)  [P 4] alloc_workqueue() callee should pass explicitly WQ_PERCPU.
> >
> >       This patch ensures that every caller that needs per-cpu workqueue
> >       will explicitly require it, using the WQ_PERCPU flag.
>
> Sounds like a plan.
> I assume the huge patches were made with coccinelle?
>
> Sebastian



--

Marco Crivellari

L3 Support Engineer, Technology & Product




marco.crivellari@suse.com