* [PATCH 00/51] treewide: Switch to __pm_runtime_put_autosuspend()
@ 2024-10-04 9:41 Sakari Ailus
2024-10-04 9:41 ` [PATCH 30/51] net: " Sakari Ailus
` (2 more replies)
0 siblings, 3 replies; 15+ messages in thread
From: Sakari Ailus @ 2024-10-04 9:41 UTC (permalink / raw)
To: dri-devel, linux-kernel, linux-bluetooth, linux-clk, linux-crypto,
dmaengine, linux-gpio, amd-gfx, nouveau, linux-stm32,
linux-arm-kernel, linux-i2c, linux-i3c, linux-iio, linux-input,
patches, iommu, imx, linux-mediatek, linux-media, linux-mmc,
linux-mtd, netdev, linux-wireless, linux-pci, linux-phy,
linux-pwm, linux-remoteproc, linux-sound, linux-spi,
linux-staging, linux-usb, linux-serial, greybus-dev, asahi
Cc: laurent.pinchart, rafael, Andy Shevchenko
Hello everyone,
This set will switch the users of pm_runtime_put_autosuspend() to
__pm_runtime_put_autosuspend() while the former will soon be re-purposed
to include a call to pm_runtime_mark_last_busy(). The two are almost
always used together, apart from bugs which are likely common. Going
forward, most new users should be using pm_runtime_put_autosuspend().
Once this conversion is done and pm_runtime_put_autosuspend() re-purposed,
I'll post another set to merge the calls to __pm_runtime_put_autosuspend()
and pm_runtime_mark_last_busy().
The diff in these patches have been generated using the following
Coccinelle script (besides a manual change in
drivers/iio/magnetometer/af8133j.c):
----------8<-------------------
@@
expression E1;
@@
- pm_runtime_put_autosuspend(E1)
+ __pm_runtime_put_autosuspend(E1)
----------8<-------------------
These patches are on top of today's linux-next (i.e. next-20241004).
Sakari Ailus (51):
accel/ivpu: Switch to __pm_runtime_put_autosuspend()
bluetooth: Switch to __pm_runtime_put_autosuspend()
bus: sunxi-rsb: Switch to __pm_runtime_put_autosuspend()
hwrng: Switch to __pm_runtime_put_autosuspend()
clk: Switch to __pm_runtime_put_autosuspend()
crypto: Switch to __pm_runtime_put_autosuspend()
dmaengine: Switch to __pm_runtime_put_autosuspend()
gpio: Switch to __pm_runtime_put_autosuspend()
drm/amd: Switch to __pm_runtime_put_autosuspend()
drm/nouveau: Switch to __pm_runtime_put_autosuspend()
drm/radeon: Switch to __pm_runtime_put_autosuspend()
drm/panfrost: Switch to __pm_runtime_put_autosuspend()
drivers: drm: Switch to __pm_runtime_put_autosuspend()
HSI: omap_ssi_port: Switch to __pm_runtime_put_autosuspend()
stm class: Switch to __pm_runtime_put_autosuspend()
i2c: Switch to __pm_runtime_put_autosuspend()
i3c: master: svc: Switch to __pm_runtime_put_autosuspend()
i3c: dw: Switch to __pm_runtime_put_autosuspend()
iio: Switch to __pm_runtime_put_autosuspend()
Input: omap4-keypad: Switch to __pm_runtime_put_autosuspend()
Input: cs40l50: Switch to __pm_runtime_put_autosuspend()
iommu/arm-smmu: Switch to __pm_runtime_put_autosuspend()
irqchip/imx-irqsteer: Switch to __pm_runtime_put_autosuspend()
mailbox: mtk-cmdq-mailbox: Switch to __pm_runtime_put_autosuspend()
media: Switch to __pm_runtime_put_autosuspend()
mfd: Switch to __pm_runtime_put_autosuspend()
mei: Switch to __pm_runtime_put_autosuspend()
mmc: Switch to __pm_runtime_put_autosuspend()
mtd: rawnand: gpmi: Switch to __pm_runtime_put_autosuspend()
net: Switch to __pm_runtime_put_autosuspend()
nfc: trf7970a: Switch to __pm_runtime_put_autosuspend()
PCI/portdrv: Switch to __pm_runtime_put_autosuspend()
phy: motorola: phy-mapphone-mdm6600: Switch to
__pm_runtime_put_autosuspend()
phy: ti: phy-twl4030-usb: Switch to __pm_runtime_put_autosuspend()
power: Switch to __pm_runtime_put_autosuspend()
pwm: img: Switch to __pm_runtime_put_autosuspend()
regulator: stm32-vrefbuf: Switch to __pm_runtime_put_autosuspend()
remoteproc: omap: Switch to __pm_runtime_put_autosuspend()
slimbus: Switch to __pm_runtime_put_autosuspend()
soundwire: Switch to __pm_runtime_put_autosuspend()
spi: Switch to __pm_runtime_put_autosuspend()
staging: Switch to __pm_runtime_put_autosuspend()
thunderbolt: Switch to __pm_runtime_put_autosuspend()
serial: Switch to __pm_runtime_put_autosuspend()
usb: Switch to __pm_runtime_put_autosuspend()
w1: omap-hdq: Switch to __pm_runtime_put_autosuspend()
staging: greybus: Switch to __pm_runtime_put_autosuspend()
ALSA: hda: Switch to __pm_runtime_put_autosuspend()
ASoC: Switch to __pm_runtime_put_autosuspend()
ALSA: intel_hdmi: Switch to __pm_runtime_put_autosuspend()
soc: apple: mailbox: Switch to __pm_runtime_put_autosuspend()
drivers/accel/ivpu/ivpu_drv.c | 2 +-
drivers/accel/ivpu/ivpu_pm.c | 8 +-
drivers/bluetooth/btmtksdio.c | 2 +-
drivers/bluetooth/hci_bcm.c | 6 +-
drivers/bluetooth/hci_h5.c | 4 +-
drivers/bluetooth/hci_intel.c | 6 +-
drivers/bus/sunxi-rsb.c | 4 +-
drivers/char/hw_random/cctrng.c | 2 +-
drivers/char/hw_random/omap3-rom-rng.c | 2 +-
drivers/clk/imx/clk-imx8qxp-lpcg.c | 2 +-
drivers/clk/imx/clk-scu.c | 2 +-
drivers/clk/qcom/lpassaudiocc-sc7280.c | 4 +-
drivers/clk/qcom/lpasscorecc-sc7180.c | 4 +-
drivers/crypto/ccree/cc_pm.c | 2 +-
drivers/crypto/hisilicon/qm.c | 2 +-
drivers/crypto/omap-aes-gcm.c | 2 +-
drivers/crypto/omap-aes.c | 2 +-
drivers/crypto/omap-des.c | 2 +-
drivers/crypto/omap-sham.c | 2 +-
drivers/crypto/rockchip/rk3288_crypto_ahash.c | 2 +-
.../crypto/rockchip/rk3288_crypto_skcipher.c | 2 +-
drivers/crypto/stm32/stm32-crc32.c | 4 +-
drivers/crypto/stm32/stm32-cryp.c | 2 +-
drivers/crypto/stm32/stm32-hash.c | 2 +-
drivers/dma/at_xdmac.c | 24 +--
drivers/dma/pl330.c | 14 +-
drivers/dma/qcom/bam_dma.c | 10 +-
drivers/dma/qcom/hidma.c | 18 +-
drivers/dma/qcom/hidma_dbg.c | 2 +-
drivers/dma/qcom/hidma_mgmt.c | 4 +-
drivers/dma/ste_dma40.c | 16 +-
drivers/dma/ti/cppi41.c | 10 +-
drivers/dma/xilinx/zynqmp_dma.c | 2 +-
drivers/gpio/gpio-arizona.c | 10 +-
drivers/gpio/gpio-mxc.c | 2 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 2 +-
.../gpu/drm/amd/amdgpu/amdgpu_connectors.c | 16 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 120 ++++++------
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 2 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 6 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 6 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 4 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 4 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_rap.c | 4 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 2 +-
.../gpu/drm/amd/amdgpu/amdgpu_securedisplay.c | 4 +-
drivers/gpu/drm/amd/amdkfd/kfd_process.c | 4 +-
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 +-
drivers/gpu/drm/amd/pm/amdgpu_pm.c | 178 +++++++++---------
.../drm/bridge/analogix/analogix_dp_core.c | 2 +-
drivers/gpu/drm/bridge/analogix/anx7625.c | 4 +-
drivers/gpu/drm/bridge/parade-ps8640.c | 4 +-
drivers/gpu/drm/bridge/ti-sn65dsi86.c | 14 +-
drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 12 +-
drivers/gpu/drm/exynos/exynos_drm_fimc.c | 4 +-
drivers/gpu/drm/exynos/exynos_drm_g2d.c | 4 +-
drivers/gpu/drm/exynos/exynos_drm_gsc.c | 6 +-
drivers/gpu/drm/exynos/exynos_drm_rotator.c | 2 +-
drivers/gpu/drm/exynos/exynos_drm_scaler.c | 2 +-
drivers/gpu/drm/i915/intel_runtime_pm.c | 4 +-
drivers/gpu/drm/imx/dcss/dcss-crtc.c | 2 +-
drivers/gpu/drm/lima/lima_sched.c | 2 +-
drivers/gpu/drm/msm/adreno/adreno_device.c | 2 +-
drivers/gpu/drm/msm/adreno/adreno_gpu.c | 2 +-
drivers/gpu/drm/msm/msm_gpu.c | 2 +-
drivers/gpu/drm/msm/msm_iommu.c | 4 +-
drivers/gpu/drm/msm/msm_submitqueue.c | 2 +-
drivers/gpu/drm/nouveau/dispnv50/disp.c | 10 +-
drivers/gpu/drm/nouveau/nouveau_connector.c | 4 +-
drivers/gpu/drm/nouveau/nouveau_debugfs.c | 8 +-
drivers/gpu/drm/nouveau/nouveau_display.c | 4 +-
drivers/gpu/drm/nouveau/nouveau_drm.c | 10 +-
drivers/gpu/drm/nouveau/nouveau_gem.c | 10 +-
drivers/gpu/drm/panel/panel-edp.c | 8 +-
.../gpu/drm/panel/panel-samsung-atna33xc20.c | 6 +-
drivers/gpu/drm/panel/panel-simple.c | 6 +-
drivers/gpu/drm/panfrost/panfrost_job.c | 4 +-
drivers/gpu/drm/panfrost/panfrost_mmu.c | 4 +-
drivers/gpu/drm/panfrost/panfrost_perfcnt.c | 4 +-
drivers/gpu/drm/panthor/panthor_device.c | 2 +-
drivers/gpu/drm/panthor/panthor_sched.c | 6 +-
drivers/gpu/drm/radeon/radeon_acpi.c | 2 +-
drivers/gpu/drm/radeon/radeon_connectors.c | 20 +-
drivers/gpu/drm/radeon/radeon_display.c | 6 +-
drivers/gpu/drm/radeon/radeon_drv.c | 4 +-
drivers/gpu/drm/radeon/radeon_fbdev.c | 4 +-
drivers/gpu/drm/radeon/radeon_kms.c | 10 +-
drivers/gpu/drm/tegra/submit.c | 2 +-
drivers/gpu/drm/tidss/tidss_drv.c | 2 +-
drivers/gpu/drm/vc4/vc4_v3d.c | 2 +-
drivers/hsi/controllers/omap_ssi_port.c | 42 ++---
drivers/hwtracing/stm/core.c | 8 +-
drivers/i2c/busses/i2c-amd-mp2-pci.c | 2 +-
drivers/i2c/busses/i2c-amd-mp2.h | 2 +-
drivers/i2c/busses/i2c-at91-master.c | 2 +-
drivers/i2c/busses/i2c-cadence.c | 2 +-
drivers/i2c/busses/i2c-davinci.c | 4 +-
drivers/i2c/busses/i2c-designware-master.c | 2 +-
drivers/i2c/busses/i2c-designware-pcidrv.c | 2 +-
drivers/i2c/busses/i2c-hix5hd2.c | 2 +-
drivers/i2c/busses/i2c-i801.c | 4 +-
drivers/i2c/busses/i2c-img-scb.c | 6 +-
drivers/i2c/busses/i2c-imx-lpi2c.c | 6 +-
drivers/i2c/busses/i2c-imx.c | 4 +-
drivers/i2c/busses/i2c-mv64xxx.c | 2 +-
drivers/i2c/busses/i2c-nvidia-gpu.c | 4 +-
drivers/i2c/busses/i2c-omap.c | 6 +-
drivers/i2c/busses/i2c-qcom-cci.c | 2 +-
drivers/i2c/busses/i2c-qcom-geni.c | 2 +-
drivers/i2c/busses/i2c-qup.c | 4 +-
drivers/i2c/busses/i2c-riic.c | 4 +-
drivers/i2c/busses/i2c-rzv2m.c | 2 +-
drivers/i2c/busses/i2c-sprd.c | 4 +-
drivers/i2c/busses/i2c-stm32f7.c | 10 +-
drivers/i2c/busses/i2c-xiic.c | 2 +-
drivers/i3c/master/dw-i3c-master.c | 16 +-
drivers/i3c/master/svc-i3c-master.c | 16 +-
drivers/iio/accel/bmc150-accel-core.c | 2 +-
drivers/iio/accel/bmi088-accel-core.c | 6 +-
drivers/iio/accel/fxls8962af-core.c | 2 +-
drivers/iio/accel/kxcjk-1013.c | 2 +-
drivers/iio/accel/kxsd9.c | 6 +-
drivers/iio/accel/mma8452.c | 2 +-
drivers/iio/accel/mma9551_core.c | 2 +-
drivers/iio/accel/msa311.c | 12 +-
drivers/iio/adc/ab8500-gpadc.c | 2 +-
drivers/iio/adc/at91-sama5d2_adc.c | 20 +-
drivers/iio/adc/rcar-gyroadc.c | 2 +-
drivers/iio/adc/stm32-adc-core.c | 2 +-
drivers/iio/adc/stm32-adc.c | 12 +-
drivers/iio/adc/sun4i-gpadc-iio.c | 4 +-
drivers/iio/adc/ti-ads1015.c | 2 +-
drivers/iio/adc/ti-ads1100.c | 2 +-
drivers/iio/adc/ti-ads1119.c | 4 +-
drivers/iio/chemical/atlas-sensor.c | 4 +-
.../common/hid-sensors/hid-sensor-trigger.c | 2 +-
drivers/iio/dac/stm32-dac.c | 6 +-
drivers/iio/gyro/bmg160_core.c | 2 +-
drivers/iio/gyro/fxas21002c_core.c | 2 +-
drivers/iio/gyro/mpu3050-core.c | 6 +-
drivers/iio/gyro/mpu3050-i2c.c | 2 +-
.../iio/imu/inv_icm42600/inv_icm42600_accel.c | 10 +-
.../imu/inv_icm42600/inv_icm42600_buffer.c | 2 +-
.../iio/imu/inv_icm42600/inv_icm42600_gyro.c | 10 +-
.../iio/imu/inv_icm42600/inv_icm42600_temp.c | 2 +-
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c | 14 +-
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c | 4 +-
drivers/iio/imu/kmx61.c | 2 +-
drivers/iio/light/apds9306.c | 6 +-
drivers/iio/light/apds9960.c | 4 +-
drivers/iio/light/bh1780.c | 2 +-
drivers/iio/light/gp2ap002.c | 4 +-
drivers/iio/light/isl29028.c | 2 +-
drivers/iio/light/ltrf216a.c | 2 +-
drivers/iio/light/pa12203001.c | 2 +-
drivers/iio/light/rpr0521.c | 2 +-
drivers/iio/light/tsl2583.c | 2 +-
drivers/iio/light/tsl2591.c | 4 +-
drivers/iio/light/us5182d.c | 2 +-
drivers/iio/light/vcnl4000.c | 2 +-
drivers/iio/light/vcnl4035.c | 2 +-
drivers/iio/magnetometer/af8133j.c | 4 +-
drivers/iio/magnetometer/ak8974.c | 4 +-
drivers/iio/magnetometer/ak8975.c | 2 +-
drivers/iio/magnetometer/bmc150_magn.c | 2 +-
drivers/iio/magnetometer/tmag5273.c | 4 +-
drivers/iio/magnetometer/yamaha-yas530.c | 4 +-
drivers/iio/pressure/bmp280-core.c | 10 +-
drivers/iio/pressure/icp10100.c | 2 +-
drivers/iio/pressure/mpl115.c | 4 +-
drivers/iio/pressure/zpa2326.c | 4 +-
.../iio/proximity/pulsedlight-lidar-lite-v2.c | 2 +-
drivers/iio/proximity/srf04.c | 2 +-
drivers/iio/temperature/mlx90614.c | 4 +-
drivers/iio/temperature/mlx90632.c | 4 +-
drivers/iio/temperature/mlx90635.c | 4 +-
drivers/input/keyboard/omap4-keypad.c | 8 +-
drivers/input/misc/cs40l50-vibra.c | 8 +-
drivers/iommu/arm/arm-smmu/arm-smmu.c | 2 +-
drivers/irqchip/irq-imx-irqsteer.c | 2 +-
drivers/mailbox/mtk-cmdq-mailbox.c | 10 +-
drivers/media/i2c/alvium-csi2.c | 2 +-
drivers/media/i2c/ccs/ccs-core.c | 10 +-
drivers/media/i2c/dw9719.c | 2 +-
drivers/media/i2c/gc0308.c | 6 +-
drivers/media/i2c/gc2145.c | 8 +-
drivers/media/i2c/imx283.c | 6 +-
drivers/media/i2c/imx290.c | 6 +-
drivers/media/i2c/imx296.c | 4 +-
drivers/media/i2c/imx415.c | 4 +-
drivers/media/i2c/mt9m114.c | 12 +-
drivers/media/i2c/ov2680.c | 2 +-
drivers/media/i2c/ov4689.c | 6 +-
drivers/media/i2c/ov5640.c | 8 +-
drivers/media/i2c/ov5645.c | 6 +-
drivers/media/i2c/ov5693.c | 2 +-
drivers/media/i2c/ov64a40.c | 8 +-
drivers/media/i2c/ov7251.c | 2 +-
drivers/media/i2c/ov8858.c | 4 +-
drivers/media/i2c/thp7312.c | 8 +-
drivers/media/i2c/video-i2c.c | 8 +-
.../media/platform/nvidia/tegra-vde/h264.c | 4 +-
drivers/media/platform/qcom/venus/vdec.c | 4 +-
drivers/media/platform/qcom/venus/venc.c | 4 +-
.../platform/raspberrypi/pisp_be/pisp_be.c | 4 +-
.../media/platform/st/sti/delta/delta-v4l2.c | 4 +-
drivers/media/platform/st/sti/hva/hva-hw.c | 8 +-
.../media/platform/verisilicon/hantro_drv.c | 2 +-
drivers/media/rc/gpio-ir-recv.c | 2 +-
drivers/mfd/arizona-irq.c | 2 +-
drivers/mfd/cs40l50-core.c | 2 +-
drivers/mfd/cs42l43.c | 2 +-
drivers/misc/mei/client.c | 14 +-
drivers/mmc/core/core.c | 4 +-
drivers/mmc/host/atmel-mci.c | 4 +-
drivers/mmc/host/dw_mmc-rockchip.c | 2 +-
drivers/mmc/host/dw_mmc.c | 2 +-
drivers/mmc/host/mmci.c | 2 +-
drivers/mmc/host/omap_hsmmc.c | 6 +-
drivers/mmc/host/sdhci-msm.c | 2 +-
drivers/mmc/host/sdhci-of-at91.c | 2 +-
drivers/mmc/host/sdhci-omap.c | 4 +-
drivers/mmc/host/sdhci-pci-core.c | 2 +-
drivers/mmc/host/sdhci-pxav3.c | 6 +-
drivers/mmc/host/sdhci-sprd.c | 2 +-
drivers/mmc/host/sdhci-xenon.c | 2 +-
drivers/mmc/host/sdhci_am654.c | 2 +-
drivers/mmc/host/tmio_mmc_core.c | 2 +-
drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 10 +-
drivers/net/ethernet/cadence/macb_main.c | 10 +-
drivers/net/ethernet/freescale/fec_main.c | 16 +-
drivers/net/ethernet/renesas/ravb_main.c | 8 +-
drivers/net/ethernet/ti/davinci_mdio.c | 14 +-
drivers/net/ipa/ipa_interrupt.c | 2 +-
drivers/net/ipa/ipa_main.c | 2 +-
drivers/net/ipa/ipa_modem.c | 8 +-
drivers/net/ipa/ipa_smp2p.c | 4 +-
drivers/net/ipa/ipa_uc.c | 4 +-
drivers/net/wireless/ath/wil6210/pm.c | 2 +-
drivers/net/wireless/ti/wl18xx/debugfs.c | 6 +-
drivers/net/wireless/ti/wlcore/cmd.c | 2 +-
drivers/net/wireless/ti/wlcore/debugfs.c | 22 +--
drivers/net/wireless/ti/wlcore/main.c | 72 +++----
drivers/net/wireless/ti/wlcore/scan.c | 2 +-
drivers/net/wireless/ti/wlcore/sysfs.c | 2 +-
drivers/net/wireless/ti/wlcore/testmode.c | 4 +-
drivers/net/wireless/ti/wlcore/tx.c | 2 +-
drivers/net/wireless/ti/wlcore/vendor_cmd.c | 6 +-
drivers/net/wwan/qcom_bam_dmux.c | 4 +-
drivers/net/wwan/t7xx/t7xx_hif_cldma.c | 6 +-
drivers/net/wwan/t7xx/t7xx_hif_dpmaif_rx.c | 6 +-
drivers/net/wwan/t7xx/t7xx_hif_dpmaif_tx.c | 4 +-
drivers/nfc/trf7970a.c | 2 +-
drivers/pci/pcie/portdrv.c | 2 +-
drivers/phy/motorola/phy-mapphone-mdm6600.c | 4 +-
drivers/phy/ti/phy-twl4030-usb.c | 8 +-
drivers/power/supply/bq24190_charger.c | 28 +--
drivers/power/supply/twl4030_charger.c | 2 +-
drivers/pwm/pwm-img.c | 4 +-
drivers/regulator/stm32-vrefbuf.c | 12 +-
drivers/remoteproc/omap_remoteproc.c | 6 +-
drivers/slimbus/core.c | 2 +-
drivers/slimbus/messaging.c | 4 +-
drivers/soc/apple/mailbox.c | 2 +-
drivers/soundwire/bus.c | 2 +-
drivers/soundwire/cadence_master.c | 2 +-
drivers/soundwire/qcom.c | 6 +-
drivers/spi/atmel-quadspi.c | 10 +-
drivers/spi/spi-cadence-quadspi.c | 4 +-
drivers/spi/spi-cadence.c | 2 +-
drivers/spi/spi-dw-pci.c | 2 +-
drivers/spi/spi-fsl-espi.c | 4 +-
drivers/spi/spi-fsl-lpspi.c | 4 +-
drivers/spi/spi-imx.c | 6 +-
drivers/spi/spi-mtk-nor.c | 2 +-
drivers/spi/spi-omap2-mcspi.c | 6 +-
drivers/spi/spi-pxa2xx-pci.c | 2 +-
drivers/spi/spi-s3c64xx.c | 6 +-
drivers/spi/spi-sprd.c | 2 +-
drivers/spi/spi-stm32-qspi.c | 14 +-
drivers/spi/spi-stm32.c | 4 +-
drivers/spi/spi-ti-qspi.c | 4 +-
drivers/spi/spi-zynqmp-gqspi.c | 2 +-
drivers/spi/spi.c | 6 +-
drivers/staging/greybus/gbphy.h | 2 +-
drivers/staging/media/rkvdec/rkvdec.c | 2 +-
drivers/thunderbolt/debugfs.c | 22 +--
drivers/thunderbolt/domain.c | 4 +-
drivers/thunderbolt/icm.c | 14 +-
drivers/thunderbolt/nhi.c | 2 +-
drivers/thunderbolt/retimer.c | 4 +-
drivers/thunderbolt/switch.c | 6 +-
drivers/thunderbolt/tb.c | 18 +-
drivers/thunderbolt/usb4_port.c | 4 +-
drivers/tty/serial/8250/8250_omap.c | 18 +-
drivers/tty/serial/8250/8250_port.c | 4 +-
drivers/tty/serial/fsl_lpuart.c | 2 +-
drivers/tty/serial/serial_core.c | 2 +-
drivers/tty/serial/uartlite.c | 4 +-
drivers/tty/serial/xilinx_uartps.c | 2 +-
drivers/usb/cdns3/cdns3-gadget.c | 2 +-
drivers/usb/cdns3/cdnsp-gadget.c | 2 +-
drivers/usb/chipidea/core.c | 2 +-
drivers/usb/chipidea/otg_fsm.c | 2 +-
drivers/usb/dwc3/core.c | 2 +-
drivers/usb/dwc3/dwc3-am62.c | 2 +-
drivers/usb/dwc3/dwc3-imx8mp.c | 2 +-
drivers/usb/gadget/udc/cdns2/cdns2-gadget.c | 2 +-
drivers/usb/host/xhci-mtk.c | 2 +-
drivers/usb/misc/apple-mfi-fastcharge.c | 2 +-
drivers/usb/mtu3/mtu3_plat.c | 2 +-
drivers/usb/musb/musb_core.c | 10 +-
drivers/usb/musb/musb_debugfs.c | 10 +-
drivers/usb/musb/musb_dsps.c | 2 +-
drivers/usb/musb/musb_gadget.c | 8 +-
drivers/usb/musb/omap2430.c | 2 +-
drivers/w1/masters/omap_hdq.c | 10 +-
include/linux/greybus/bundle.h | 2 +-
sound/hda/hdac_device.c | 2 +-
sound/pci/hda/cs35l41_hda.c | 8 +-
sound/pci/hda/cs35l56_hda.c | 2 +-
sound/pci/hda/hda_intel.c | 2 +-
sound/pci/hda/tas2781_hda_i2c.c | 6 +-
sound/soc/atmel/mchp-spdifrx.c | 12 +-
sound/soc/codecs/arizona-jack.c | 12 +-
sound/soc/codecs/arizona.c | 2 +-
sound/soc/codecs/cs35l41.c | 4 +-
sound/soc/codecs/cs35l45.c | 2 +-
sound/soc/codecs/cs35l56-sdw.c | 4 +-
sound/soc/codecs/cs35l56-shared.c | 2 +-
sound/soc/codecs/cs35l56.c | 2 +-
sound/soc/codecs/cs42l42-sdw.c | 2 +-
sound/soc/codecs/cs42l42.c | 4 +-
sound/soc/codecs/cs42l43-jack.c | 10 +-
sound/soc/codecs/cs42l43.c | 4 +-
sound/soc/codecs/hda.c | 6 +-
sound/soc/codecs/madera.c | 6 +-
sound/soc/codecs/max98363.c | 2 +-
sound/soc/codecs/max98373-sdw.c | 2 +-
sound/soc/codecs/rt1017-sdca-sdw.c | 2 +-
sound/soc/codecs/rt1308-sdw.c | 2 +-
sound/soc/codecs/rt1316-sdw.c | 2 +-
sound/soc/codecs/rt1318-sdw.c | 2 +-
sound/soc/codecs/rt1320-sdw.c | 2 +-
sound/soc/codecs/rt5682-sdw.c | 2 +-
sound/soc/codecs/rt700.c | 4 +-
sound/soc/codecs/rt711-sdca.c | 4 +-
sound/soc/codecs/rt711.c | 4 +-
sound/soc/codecs/rt712-sdca-dmic.c | 2 +-
sound/soc/codecs/rt712-sdca.c | 4 +-
sound/soc/codecs/rt715-sdca.c | 2 +-
sound/soc/codecs/rt715.c | 2 +-
sound/soc/codecs/rt722-sdca.c | 4 +-
sound/soc/codecs/wcd-mbhc-v2.c | 4 +-
sound/soc/codecs/wsa881x.c | 2 +-
sound/soc/codecs/wsa884x.c | 2 +-
sound/soc/intel/atom/sst/sst_pvt.c | 2 +-
sound/soc/intel/avs/core.c | 2 +-
sound/soc/intel/avs/debugfs.c | 4 +-
sound/soc/intel/avs/pcm.c | 2 +-
sound/soc/intel/catpt/pcm.c | 12 +-
sound/soc/intel/catpt/sysfs.c | 2 +-
sound/soc/soc-component.c | 2 +-
sound/soc/sof/control.c | 2 +-
sound/soc/sof/debug.c | 2 +-
sound/soc/sof/ipc3-dtrace.c | 2 +-
sound/soc/sof/ipc4-loader.c | 2 +-
sound/soc/sof/pcm.c | 2 +-
sound/soc/sof/sof-client-ipc-flood-test.c | 2 +-
.../soc/sof/sof-client-ipc-kernel-injector.c | 2 +-
sound/soc/sof/sof-client-ipc-msg-injector.c | 2 +-
sound/soc/sof/sof-client-probes.c | 6 +-
sound/x86/intel_hdmi_audio.c | 6 +-
373 files changed, 1076 insertions(+), 1076 deletions(-)
--
2.39.5
^ permalink raw reply [flat|nested] 15+ messages in thread* [PATCH 30/51] net: Switch to __pm_runtime_put_autosuspend() 2024-10-04 9:41 [PATCH 00/51] treewide: Switch to __pm_runtime_put_autosuspend() Sakari Ailus @ 2024-10-04 9:41 ` Sakari Ailus 2024-10-04 9:41 ` [PATCH 31/51] nfc: trf7970a: " Sakari Ailus 2024-10-04 14:38 ` [PATCH 00/51] treewide: " Ulf Hansson 2 siblings, 0 replies; 15+ messages in thread From: Sakari Ailus @ 2024-10-04 9:41 UTC (permalink / raw) To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni; +Cc: netdev pm_runtime_put_autosuspend() will soon be changed to include a call to pm_runtime_mark_last_busy(). This patch switches the current users to __pm_runtime_put_autosuspend() which will continue to have the functionality of old pm_runtime_put_autosuspend(). Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> --- drivers/net/ethernet/cadence/macb_main.c | 10 +-- drivers/net/ethernet/freescale/fec_main.c | 16 ++--- drivers/net/ethernet/renesas/ravb_main.c | 8 +-- drivers/net/ethernet/ti/davinci_mdio.c | 14 ++-- drivers/net/ipa/ipa_interrupt.c | 2 +- drivers/net/ipa/ipa_main.c | 2 +- drivers/net/ipa/ipa_modem.c | 8 +-- drivers/net/ipa/ipa_smp2p.c | 4 +- drivers/net/ipa/ipa_uc.c | 4 +- drivers/net/wireless/ath/wil6210/pm.c | 2 +- drivers/net/wireless/ti/wl18xx/debugfs.c | 6 +- drivers/net/wireless/ti/wlcore/cmd.c | 2 +- drivers/net/wireless/ti/wlcore/debugfs.c | 22 +++---- drivers/net/wireless/ti/wlcore/main.c | 72 ++++++++++----------- drivers/net/wireless/ti/wlcore/scan.c | 2 +- drivers/net/wireless/ti/wlcore/sysfs.c | 2 +- drivers/net/wireless/ti/wlcore/testmode.c | 4 +- drivers/net/wireless/ti/wlcore/tx.c | 2 +- drivers/net/wireless/ti/wlcore/vendor_cmd.c | 6 +- drivers/net/wwan/qcom_bam_dmux.c | 4 +- drivers/net/wwan/t7xx/t7xx_hif_cldma.c | 6 +- drivers/net/wwan/t7xx/t7xx_hif_dpmaif_rx.c | 6 +- drivers/net/wwan/t7xx/t7xx_hif_dpmaif_tx.c | 4 +- 23 files changed, 104 insertions(+), 104 deletions(-) diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c index f06babec04a0..929ac771d5c3 100644 --- a/drivers/net/ethernet/cadence/macb_main.c +++ b/drivers/net/ethernet/cadence/macb_main.c @@ -364,7 +364,7 @@ static int macb_mdio_read_c22(struct mii_bus *bus, int mii_id, int regnum) mdio_read_exit: pm_runtime_mark_last_busy(&bp->pdev->dev); - pm_runtime_put_autosuspend(&bp->pdev->dev); + __pm_runtime_put_autosuspend(&bp->pdev->dev); mdio_pm_exit: return status; } @@ -410,7 +410,7 @@ static int macb_mdio_read_c45(struct mii_bus *bus, int mii_id, int devad, mdio_read_exit: pm_runtime_mark_last_busy(&bp->pdev->dev); - pm_runtime_put_autosuspend(&bp->pdev->dev); + __pm_runtime_put_autosuspend(&bp->pdev->dev); mdio_pm_exit: return status; } @@ -442,7 +442,7 @@ static int macb_mdio_write_c22(struct mii_bus *bus, int mii_id, int regnum, mdio_write_exit: pm_runtime_mark_last_busy(&bp->pdev->dev); - pm_runtime_put_autosuspend(&bp->pdev->dev); + __pm_runtime_put_autosuspend(&bp->pdev->dev); mdio_pm_exit: return status; } @@ -488,7 +488,7 @@ static int macb_mdio_write_c45(struct mii_bus *bus, int mii_id, mdio_write_exit: pm_runtime_mark_last_busy(&bp->pdev->dev); - pm_runtime_put_autosuspend(&bp->pdev->dev); + __pm_runtime_put_autosuspend(&bp->pdev->dev); mdio_pm_exit: return status; } @@ -5180,7 +5180,7 @@ static int macb_probe(struct platform_device *pdev) dev->base_addr, dev->irq, dev->dev_addr); pm_runtime_mark_last_busy(&bp->pdev->dev); - pm_runtime_put_autosuspend(&bp->pdev->dev); + __pm_runtime_put_autosuspend(&bp->pdev->dev); return 0; diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index 31ebf6a4f973..493bfc7e44ee 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -2166,7 +2166,7 @@ static int fec_enet_mdio_read_c22(struct mii_bus *bus, int mii_id, int regnum) out: pm_runtime_mark_last_busy(dev); - pm_runtime_put_autosuspend(dev); + __pm_runtime_put_autosuspend(dev); return ret; } @@ -2215,7 +2215,7 @@ static int fec_enet_mdio_read_c45(struct mii_bus *bus, int mii_id, out: pm_runtime_mark_last_busy(dev); - pm_runtime_put_autosuspend(dev); + __pm_runtime_put_autosuspend(dev); return ret; } @@ -2247,7 +2247,7 @@ static int fec_enet_mdio_write_c22(struct mii_bus *bus, int mii_id, int regnum, netdev_err(fep->netdev, "MDIO write timeout\n"); pm_runtime_mark_last_busy(dev); - pm_runtime_put_autosuspend(dev); + __pm_runtime_put_autosuspend(dev); return ret; } @@ -2291,7 +2291,7 @@ static int fec_enet_mdio_write_c45(struct mii_bus *bus, int mii_id, out: pm_runtime_mark_last_busy(dev); - pm_runtime_put_autosuspend(dev); + __pm_runtime_put_autosuspend(dev); return ret; } @@ -2773,7 +2773,7 @@ static void fec_enet_get_regs(struct net_device *ndev, } pm_runtime_mark_last_busy(dev); - pm_runtime_put_autosuspend(dev); + __pm_runtime_put_autosuspend(dev); } static int fec_enet_get_ts_info(struct net_device *ndev, @@ -3557,7 +3557,7 @@ fec_enet_open(struct net_device *ndev) fec_enet_clk_enable(ndev, false); clk_enable: pm_runtime_mark_last_busy(&fep->pdev->dev); - pm_runtime_put_autosuspend(&fep->pdev->dev); + __pm_runtime_put_autosuspend(&fep->pdev->dev); pinctrl_pm_select_sleep_state(&fep->pdev->dev); return ret; } @@ -3588,7 +3588,7 @@ fec_enet_close(struct net_device *ndev) pinctrl_pm_select_sleep_state(&fep->pdev->dev); pm_runtime_mark_last_busy(&fep->pdev->dev); - pm_runtime_put_autosuspend(&fep->pdev->dev); + __pm_runtime_put_autosuspend(&fep->pdev->dev); fec_enet_free_buffers(ndev); @@ -4535,7 +4535,7 @@ fec_probe(struct platform_device *pdev) INIT_WORK(&fep->tx_timeout_work, fec_enet_timeout_work); pm_runtime_mark_last_busy(&pdev->dev); - pm_runtime_put_autosuspend(&pdev->dev); + __pm_runtime_put_autosuspend(&pdev->dev); return 0; diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c index d2a6518532f3..14c4c2070c2c 100644 --- a/drivers/net/ethernet/renesas/ravb_main.c +++ b/drivers/net/ethernet/renesas/ravb_main.c @@ -1981,7 +1981,7 @@ static int ravb_open(struct net_device *ndev) ravb_set_opmode(ndev, CCC_OPC_RESET); out_rpm_put: pm_runtime_mark_last_busy(dev); - pm_runtime_put_autosuspend(dev); + __pm_runtime_put_autosuspend(dev); out_napi_off: if (info->nc_queues) napi_disable(&priv->napi[RAVB_NC]); @@ -2378,7 +2378,7 @@ static int ravb_close(struct net_device *ndev) return error; pm_runtime_mark_last_busy(dev); - pm_runtime_put_autosuspend(dev); + __pm_runtime_put_autosuspend(dev); return 0; } @@ -3081,7 +3081,7 @@ static int ravb_probe(struct platform_device *pdev) (u32)ndev->base_addr, ndev->dev_addr, ndev->irq); pm_runtime_mark_last_busy(&pdev->dev); - pm_runtime_put_autosuspend(&pdev->dev); + __pm_runtime_put_autosuspend(&pdev->dev); return 0; @@ -3260,7 +3260,7 @@ static int ravb_resume(struct device *dev) out_rpm_put: if (!priv->wol_enabled) { pm_runtime_mark_last_busy(dev); - pm_runtime_put_autosuspend(dev); + __pm_runtime_put_autosuspend(dev); } return ret; diff --git a/drivers/net/ethernet/ti/davinci_mdio.c b/drivers/net/ethernet/ti/davinci_mdio.c index 8e07d4a1b6ba..77893fc41a76 100644 --- a/drivers/net/ethernet/ti/davinci_mdio.c +++ b/drivers/net/ethernet/ti/davinci_mdio.c @@ -235,7 +235,7 @@ static int davinci_mdiobb_read_c22(struct mii_bus *bus, int phy, int reg) ret = mdiobb_read_c22(bus, phy, reg); pm_runtime_mark_last_busy(bus->parent); - pm_runtime_put_autosuspend(bus->parent); + __pm_runtime_put_autosuspend(bus->parent); return ret; } @@ -252,7 +252,7 @@ static int davinci_mdiobb_write_c22(struct mii_bus *bus, int phy, int reg, ret = mdiobb_write_c22(bus, phy, reg, val); pm_runtime_mark_last_busy(bus->parent); - pm_runtime_put_autosuspend(bus->parent); + __pm_runtime_put_autosuspend(bus->parent); return ret; } @@ -269,7 +269,7 @@ static int davinci_mdiobb_read_c45(struct mii_bus *bus, int phy, int devad, ret = mdiobb_read_c45(bus, phy, devad, reg); pm_runtime_mark_last_busy(bus->parent); - pm_runtime_put_autosuspend(bus->parent); + __pm_runtime_put_autosuspend(bus->parent); return ret; } @@ -286,7 +286,7 @@ static int davinci_mdiobb_write_c45(struct mii_bus *bus, int phy, int devad, ret = mdiobb_write_c45(bus, phy, devad, reg, val); pm_runtime_mark_last_busy(bus->parent); - pm_runtime_put_autosuspend(bus->parent); + __pm_runtime_put_autosuspend(bus->parent); return ret; } @@ -333,7 +333,7 @@ static int davinci_mdio_common_reset(struct davinci_mdio_data *data) done: pm_runtime_mark_last_busy(data->dev); - pm_runtime_put_autosuspend(data->dev); + __pm_runtime_put_autosuspend(data->dev); return 0; } @@ -442,7 +442,7 @@ static int davinci_mdio_read(struct mii_bus *bus, int phy_id, int phy_reg) } pm_runtime_mark_last_busy(data->dev); - pm_runtime_put_autosuspend(data->dev); + __pm_runtime_put_autosuspend(data->dev); return ret; } @@ -479,7 +479,7 @@ static int davinci_mdio_write(struct mii_bus *bus, int phy_id, } pm_runtime_mark_last_busy(data->dev); - pm_runtime_put_autosuspend(data->dev); + __pm_runtime_put_autosuspend(data->dev); return ret; } diff --git a/drivers/net/ipa/ipa_interrupt.c b/drivers/net/ipa/ipa_interrupt.c index 245a06997055..737ffff14770 100644 --- a/drivers/net/ipa/ipa_interrupt.c +++ b/drivers/net/ipa/ipa_interrupt.c @@ -150,7 +150,7 @@ static irqreturn_t ipa_isr_thread(int irq, void *dev_id) } out_power_put: pm_runtime_mark_last_busy(dev); - (void)pm_runtime_put_autosuspend(dev); + (void) __pm_runtime_put_autosuspend(dev); return IRQ_HANDLED; } diff --git a/drivers/net/ipa/ipa_main.c b/drivers/net/ipa/ipa_main.c index 5f3dd5a2dcf4..bdb5e7b6cf29 100644 --- a/drivers/net/ipa/ipa_main.c +++ b/drivers/net/ipa/ipa_main.c @@ -912,7 +912,7 @@ static int ipa_probe(struct platform_device *pdev) goto err_deconfig; done: pm_runtime_mark_last_busy(dev); - (void)pm_runtime_put_autosuspend(dev); + (void) __pm_runtime_put_autosuspend(dev); return 0; diff --git a/drivers/net/ipa/ipa_modem.c b/drivers/net/ipa/ipa_modem.c index 8fe0d0e1a00f..17187676edae 100644 --- a/drivers/net/ipa/ipa_modem.c +++ b/drivers/net/ipa/ipa_modem.c @@ -72,7 +72,7 @@ static int ipa_open(struct net_device *netdev) netif_start_queue(netdev); pm_runtime_mark_last_busy(dev); - (void)pm_runtime_put_autosuspend(dev); + (void) __pm_runtime_put_autosuspend(dev); return 0; @@ -103,7 +103,7 @@ static int ipa_stop(struct net_device *netdev) ipa_endpoint_disable_one(priv->tx); out_power_put: pm_runtime_mark_last_busy(dev); - (void)pm_runtime_put_autosuspend(dev); + (void) __pm_runtime_put_autosuspend(dev); return 0; } @@ -176,7 +176,7 @@ ipa_start_xmit(struct sk_buff *skb, struct net_device *netdev) ret = ipa_endpoint_skb_tx(endpoint, skb); pm_runtime_mark_last_busy(dev); - (void)pm_runtime_put_autosuspend(dev); + (void) __pm_runtime_put_autosuspend(dev); if (ret) { if (ret != -E2BIG) @@ -433,7 +433,7 @@ static void ipa_modem_crashed(struct ipa *ipa) out_power_put: pm_runtime_mark_last_busy(dev); - (void)pm_runtime_put_autosuspend(dev); + (void) __pm_runtime_put_autosuspend(dev); } static int ipa_modem_notify(struct notifier_block *nb, unsigned long action, diff --git a/drivers/net/ipa/ipa_smp2p.c b/drivers/net/ipa/ipa_smp2p.c index fcaadd111a8a..6339a1b580f2 100644 --- a/drivers/net/ipa/ipa_smp2p.c +++ b/drivers/net/ipa/ipa_smp2p.c @@ -172,7 +172,7 @@ static irqreturn_t ipa_smp2p_modem_setup_ready_isr(int irq, void *dev_id) out_power_put: pm_runtime_mark_last_busy(dev); - (void)pm_runtime_put_autosuspend(dev); + (void) __pm_runtime_put_autosuspend(dev); return IRQ_HANDLED; } @@ -214,7 +214,7 @@ static void ipa_smp2p_power_release(struct ipa *ipa) return; pm_runtime_mark_last_busy(dev); - (void)pm_runtime_put_autosuspend(dev); + (void) __pm_runtime_put_autosuspend(dev); ipa->smp2p->power_on = false; } diff --git a/drivers/net/ipa/ipa_uc.c b/drivers/net/ipa/ipa_uc.c index 2963db83ab6b..256e6bad66c4 100644 --- a/drivers/net/ipa/ipa_uc.c +++ b/drivers/net/ipa/ipa_uc.c @@ -159,7 +159,7 @@ static void ipa_uc_response_hdlr(struct ipa *ipa) ipa->uc_loaded = true; ipa_power_retention(ipa, true); pm_runtime_mark_last_busy(dev); - (void)pm_runtime_put_autosuspend(dev); + (void) __pm_runtime_put_autosuspend(dev); ipa->uc_powered = false; } else { dev_warn(dev, "unexpected init_completed response\n"); @@ -204,7 +204,7 @@ void ipa_uc_deconfig(struct ipa *ipa) return; pm_runtime_mark_last_busy(dev); - (void)pm_runtime_put_autosuspend(dev); + (void) __pm_runtime_put_autosuspend(dev); } /* Take a proxy power reference for the microcontroller */ diff --git a/drivers/net/wireless/ath/wil6210/pm.c b/drivers/net/wireless/ath/wil6210/pm.c index f521af575e9b..eecafeb2ba90 100644 --- a/drivers/net/wireless/ath/wil6210/pm.c +++ b/drivers/net/wireless/ath/wil6210/pm.c @@ -459,5 +459,5 @@ void wil_pm_runtime_put(struct wil6210_priv *wil) struct device *dev = wil_to_dev(wil); pm_runtime_mark_last_busy(dev); - pm_runtime_put_autosuspend(dev); + __pm_runtime_put_autosuspend(dev); } diff --git a/drivers/net/wireless/ti/wl18xx/debugfs.c b/drivers/net/wireless/ti/wl18xx/debugfs.c index 80fbf740fe6d..33b780cd153a 100644 --- a/drivers/net/wireless/ti/wl18xx/debugfs.c +++ b/drivers/net/wireless/ti/wl18xx/debugfs.c @@ -273,7 +273,7 @@ static ssize_t radar_detection_write(struct file *file, count = ret; pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); return count; @@ -313,7 +313,7 @@ static ssize_t dynamic_fw_traces_write(struct file *file, count = ret; pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); return count; @@ -375,7 +375,7 @@ static ssize_t radar_debug_mode_write(struct file *file, } pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); return count; diff --git a/drivers/net/wireless/ti/wlcore/cmd.c b/drivers/net/wireless/ti/wlcore/cmd.c index cd8ad0fe59cc..1a1444fc0ff0 100644 --- a/drivers/net/wireless/ti/wlcore/cmd.c +++ b/drivers/net/wireless/ti/wlcore/cmd.c @@ -214,7 +214,7 @@ int wlcore_cmd_wait_for_event_or_timeout(struct wl1271 *wl, out: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); free_vector: kfree(events_vector); return ret; diff --git a/drivers/net/wireless/ti/wlcore/debugfs.c b/drivers/net/wireless/ti/wlcore/debugfs.c index eb3d3f0e0b4d..4e7444066dd0 100644 --- a/drivers/net/wireless/ti/wlcore/debugfs.c +++ b/drivers/net/wireless/ti/wlcore/debugfs.c @@ -64,7 +64,7 @@ void wl1271_debugfs_update_stats(struct wl1271 *wl) } pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); @@ -114,7 +114,7 @@ static void chip_op_handler(struct wl1271 *wl, unsigned long value, chip_op(wl); pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); } #define WL12XX_CONF_DEBUGFS(param, conf_sub_struct, \ @@ -288,7 +288,7 @@ static ssize_t dynamic_ps_timeout_write(struct file *file, } pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); @@ -358,7 +358,7 @@ static ssize_t forced_ps_write(struct file *file, } pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); @@ -831,7 +831,7 @@ static ssize_t rx_streaming_interval_write(struct file *file, } pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); return count; @@ -887,7 +887,7 @@ static ssize_t rx_streaming_always_write(struct file *file, } pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); return count; @@ -935,7 +935,7 @@ static ssize_t beacon_filtering_write(struct file *file, } pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); return count; @@ -1016,7 +1016,7 @@ static ssize_t sleep_auth_write(struct file *file, out_sleep: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); return count; @@ -1091,7 +1091,7 @@ static ssize_t dev_mem_read(struct file *file, part_err: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); skip_read: mutex_unlock(&wl->mutex); @@ -1173,7 +1173,7 @@ static ssize_t dev_mem_write(struct file *file, const char __user *user_buf, part_err: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); skip_write: mutex_unlock(&wl->mutex); @@ -1248,7 +1248,7 @@ static ssize_t fw_logger_write(struct file *file, ret = wl12xx_cmd_config_fwlog(wl); pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); diff --git a/drivers/net/wireless/ti/wlcore/main.c b/drivers/net/wireless/ti/wlcore/main.c index 0c77b8524160..09f311dee27f 100644 --- a/drivers/net/wireless/ti/wlcore/main.c +++ b/drivers/net/wireless/ti/wlcore/main.c @@ -155,7 +155,7 @@ static void wl1271_rx_streaming_enable_work(struct work_struct *work) out_sleep: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); } @@ -182,7 +182,7 @@ static void wl1271_rx_streaming_disable_work(struct work_struct *work) out_sleep: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); } @@ -234,7 +234,7 @@ static void wlcore_rc_update_work(struct work_struct *work) out_sleep: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); } @@ -711,7 +711,7 @@ static int wlcore_irq_locked(struct wl1271 *wl) err_ret: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: return ret; @@ -1047,7 +1047,7 @@ static void wl1271_recovery_work(struct work_struct *work) wlcore_op_stop_locked(wl); pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); ieee80211_restart_hw(wl->hw); @@ -1943,7 +1943,7 @@ static int __maybe_unused wl1271_op_resume(struct ieee80211_hw *hw) out_sleep: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: wl->wow_enabled = false; @@ -2131,7 +2131,7 @@ static void wlcore_channel_switch_work(struct work_struct *work) wl12xx_cmd_stop_channel_switch(wl, wlvif); pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); } @@ -2201,7 +2201,7 @@ static void wlcore_pending_auth_complete_work(struct work_struct *work) wlcore_update_inconn_sta(wl, wlvif, NULL, false); pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); } @@ -2694,7 +2694,7 @@ static int wl1271_op_add_interface(struct ieee80211_hw *hw, wl->sta_count++; out: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out_unlock: mutex_unlock(&wl->mutex); @@ -2774,7 +2774,7 @@ static void __wl1271_op_remove_interface(struct wl1271 *wl, } pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); } deinit: wl12xx_tx_reset_wlvif(wl, wlvif); @@ -3200,7 +3200,7 @@ static int wl1271_op_config(struct ieee80211_hw *hw, u32 changed) out_sleep: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); @@ -3315,7 +3315,7 @@ static void wl1271_op_configure_filter(struct ieee80211_hw *hw, out_sleep: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); @@ -3531,7 +3531,7 @@ static int wlcore_op_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd, ret = wlcore_hw_set_key(wl, cmd, vif, sta, key_conf); pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out_wake_queues: if (might_change_spare) @@ -3695,7 +3695,7 @@ static void wl1271_op_set_default_key_idx(struct ieee80211_hw *hw, out_sleep: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out_unlock: mutex_unlock(&wl->mutex); @@ -3724,7 +3724,7 @@ void wlcore_regdomain_config(struct wl1271 *wl) } pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); } @@ -3772,7 +3772,7 @@ static int wl1271_op_hw_scan(struct ieee80211_hw *hw, ret = wlcore_scan(hw->priv, vif, ssid, len, req); out_sleep: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); @@ -3823,7 +3823,7 @@ static void wl1271_op_cancel_hw_scan(struct ieee80211_hw *hw, out_sleep: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); @@ -3860,7 +3860,7 @@ static int wl1271_op_sched_scan_start(struct ieee80211_hw *hw, out_sleep: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); return ret; @@ -3887,7 +3887,7 @@ static int wl1271_op_sched_scan_stop(struct ieee80211_hw *hw, wl->ops->sched_scan_stop(wl, wlvif); pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); @@ -3915,7 +3915,7 @@ static int wl1271_op_set_frag_threshold(struct ieee80211_hw *hw, u32 value) wl1271_warning("wl1271_op_set_frag_threshold failed: %d", ret); pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); @@ -3946,7 +3946,7 @@ static int wl1271_op_set_rts_threshold(struct ieee80211_hw *hw, u32 value) wl1271_warning("set rts threshold failed: %d", ret); } pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); @@ -4712,7 +4712,7 @@ static void wl1271_op_bss_info_changed(struct ieee80211_hw *hw, wl1271_bss_info_changed_sta(wl, vif, bss_conf, changed); pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); @@ -4777,7 +4777,7 @@ static void wlcore_op_change_chanctx(struct ieee80211_hw *hw, } pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); } @@ -4826,7 +4826,7 @@ static int wlcore_op_assign_vif_chanctx(struct ieee80211_hw *hw, } pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); @@ -4869,7 +4869,7 @@ static void wlcore_op_unassign_vif_chanctx(struct ieee80211_hw *hw, } pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); } @@ -4939,7 +4939,7 @@ wlcore_op_switch_vif_chanctx(struct ieee80211_hw *hw, } out_sleep: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); @@ -4993,7 +4993,7 @@ static int wl1271_op_conf_tx(struct ieee80211_hw *hw, out_sleep: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); @@ -5027,7 +5027,7 @@ static u64 wl1271_op_get_tsf(struct ieee80211_hw *hw, out_sleep: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); @@ -5340,7 +5340,7 @@ static int wl12xx_op_sta_state(struct ieee80211_hw *hw, ret = wl12xx_update_sta_state(wl, wlvif, sta, old_state, new_state); pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); if (new_state < old_state) @@ -5465,7 +5465,7 @@ static int wl1271_op_ampdu_action(struct ieee80211_hw *hw, } pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); @@ -5509,7 +5509,7 @@ static int wl12xx_set_bitrate_mask(struct ieee80211_hw *hw, ret = wl1271_acx_sta_rate_policies(wl, wlvif); pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); } out: mutex_unlock(&wl->mutex); @@ -5564,7 +5564,7 @@ static void wl12xx_op_channel_switch(struct ieee80211_hw *hw, out_sleep: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); @@ -5643,7 +5643,7 @@ static void wlcore_op_channel_switch_beacon(struct ieee80211_hw *hw, out_sleep: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); } @@ -5697,7 +5697,7 @@ static int wlcore_op_remain_on_channel(struct ieee80211_hw *hw, msecs_to_jiffies(duration)); out_sleep: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); return ret; @@ -5746,7 +5746,7 @@ static int wlcore_roc_completed(struct wl1271 *wl) ret = __wlcore_roc_completed(wl); pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); @@ -5836,7 +5836,7 @@ static void wlcore_op_sta_statistics(struct ieee80211_hw *hw, out_sleep: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); diff --git a/drivers/net/wireless/ti/wlcore/scan.c b/drivers/net/wireless/ti/wlcore/scan.c index b414305acc32..ee16dc1c7da3 100644 --- a/drivers/net/wireless/ti/wlcore/scan.c +++ b/drivers/net/wireless/ti/wlcore/scan.c @@ -70,7 +70,7 @@ void wl1271_scan_complete_work(struct work_struct *work) wlcore_cmd_regdomain_config_locked(wl); pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); ieee80211_scan_completed(wl->hw, &info); diff --git a/drivers/net/wireless/ti/wlcore/sysfs.c b/drivers/net/wireless/ti/wlcore/sysfs.c index c07acfcbbd9c..52fa40b5b8e7 100644 --- a/drivers/net/wireless/ti/wlcore/sysfs.c +++ b/drivers/net/wireless/ti/wlcore/sysfs.c @@ -59,7 +59,7 @@ static ssize_t bt_coex_state_store(struct device *dev, wl1271_acx_sg_enable(wl, wl->sg_enabled); pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); diff --git a/drivers/net/wireless/ti/wlcore/testmode.c b/drivers/net/wireless/ti/wlcore/testmode.c index 3f338b8096c7..9b2c5ae7aef3 100644 --- a/drivers/net/wireless/ti/wlcore/testmode.c +++ b/drivers/net/wireless/ti/wlcore/testmode.c @@ -128,7 +128,7 @@ static int wl1271_tm_cmd_test(struct wl1271 *wl, struct nlattr *tb[]) out_sleep: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); @@ -193,7 +193,7 @@ static int wl1271_tm_cmd_interrogate(struct wl1271 *wl, struct nlattr *tb[]) kfree(cmd); out_sleep: pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); diff --git a/drivers/net/wireless/ti/wlcore/tx.c b/drivers/net/wireless/ti/wlcore/tx.c index 464587d16ab2..8151818722d7 100644 --- a/drivers/net/wireless/ti/wlcore/tx.c +++ b/drivers/net/wireless/ti/wlcore/tx.c @@ -864,7 +864,7 @@ void wl1271_tx_work(struct work_struct *work) } pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); } diff --git a/drivers/net/wireless/ti/wlcore/vendor_cmd.c b/drivers/net/wireless/ti/wlcore/vendor_cmd.c index e4269e2b0098..f9bdbf2f387b 100644 --- a/drivers/net/wireless/ti/wlcore/vendor_cmd.c +++ b/drivers/net/wireless/ti/wlcore/vendor_cmd.c @@ -61,7 +61,7 @@ wlcore_vendor_cmd_smart_config_start(struct wiphy *wiphy, nla_get_u32(tb[WLCORE_VENDOR_ATTR_GROUP_ID])); pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); @@ -93,7 +93,7 @@ wlcore_vendor_cmd_smart_config_stop(struct wiphy *wiphy, ret = wlcore_smart_config_stop(wl); pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); @@ -141,7 +141,7 @@ wlcore_vendor_cmd_smart_config_set_group_key(struct wiphy *wiphy, nla_data(tb[WLCORE_VENDOR_ATTR_GROUP_KEY])); pm_runtime_mark_last_busy(wl->dev); - pm_runtime_put_autosuspend(wl->dev); + __pm_runtime_put_autosuspend(wl->dev); out: mutex_unlock(&wl->mutex); diff --git a/drivers/net/wwan/qcom_bam_dmux.c b/drivers/net/wwan/qcom_bam_dmux.c index 5dcb9a84a12e..59f6cacf2280 100644 --- a/drivers/net/wwan/qcom_bam_dmux.c +++ b/drivers/net/wwan/qcom_bam_dmux.c @@ -163,7 +163,7 @@ static void bam_dmux_tx_done(struct bam_dmux_skb_dma *skb_dma) unsigned long flags; pm_runtime_mark_last_busy(dmux->dev); - pm_runtime_put_autosuspend(dmux->dev); + __pm_runtime_put_autosuspend(dmux->dev); if (skb_dma->addr) bam_dmux_skb_dma_unmap(skb_dma, DMA_TO_DEVICE); @@ -398,7 +398,7 @@ static void bam_dmux_tx_wakeup_work(struct work_struct *work) out: pm_runtime_mark_last_busy(dmux->dev); - pm_runtime_put_autosuspend(dmux->dev); + __pm_runtime_put_autosuspend(dmux->dev); } static const struct net_device_ops bam_dmux_ops = { diff --git a/drivers/net/wwan/t7xx/t7xx_hif_cldma.c b/drivers/net/wwan/t7xx/t7xx_hif_cldma.c index 97163e1e5783..16f0708c8c54 100644 --- a/drivers/net/wwan/t7xx/t7xx_hif_cldma.c +++ b/drivers/net/wwan/t7xx/t7xx_hif_cldma.c @@ -251,7 +251,7 @@ static void t7xx_cldma_rx_done(struct work_struct *work) t7xx_cldma_hw_irq_en_txrx(&md_ctrl->hw_info, queue->index, MTK_RX); t7xx_cldma_hw_irq_en_eq(&md_ctrl->hw_info, queue->index, MTK_RX); pm_runtime_mark_last_busy(md_ctrl->dev); - pm_runtime_put_autosuspend(md_ctrl->dev); + __pm_runtime_put_autosuspend(md_ctrl->dev); } static int t7xx_cldma_gpd_tx_collect(struct cldma_queue *queue) @@ -363,7 +363,7 @@ static void t7xx_cldma_tx_done(struct work_struct *work) spin_unlock_irqrestore(&md_ctrl->cldma_lock, flags); pm_runtime_mark_last_busy(md_ctrl->dev); - pm_runtime_put_autosuspend(md_ctrl->dev); + __pm_runtime_put_autosuspend(md_ctrl->dev); } static void t7xx_cldma_ring_free(struct cldma_ctrl *md_ctrl, @@ -988,7 +988,7 @@ int t7xx_cldma_send_skb(struct cldma_ctrl *md_ctrl, int qno, struct sk_buff *skb allow_sleep: t7xx_pci_enable_sleep(md_ctrl->t7xx_dev); pm_runtime_mark_last_busy(md_ctrl->dev); - pm_runtime_put_autosuspend(md_ctrl->dev); + __pm_runtime_put_autosuspend(md_ctrl->dev); return ret; } diff --git a/drivers/net/wwan/t7xx/t7xx_hif_dpmaif_rx.c b/drivers/net/wwan/t7xx/t7xx_hif_dpmaif_rx.c index 210d84c67ef9..9329d7a04814 100644 --- a/drivers/net/wwan/t7xx/t7xx_hif_dpmaif_rx.c +++ b/drivers/net/wwan/t7xx/t7xx_hif_dpmaif_rx.c @@ -840,7 +840,7 @@ int t7xx_dpmaif_napi_rx_poll(struct napi_struct *napi, const int budget) if (!rxq->que_started) { atomic_set(&rxq->rx_processing, 0); - pm_runtime_put_autosuspend(rxq->dpmaif_ctrl->dev); + __pm_runtime_put_autosuspend(rxq->dpmaif_ctrl->dev); dev_err(rxq->dpmaif_ctrl->dev, "Work RXQ: %d has not been started\n", rxq->index); return work_done; } @@ -877,7 +877,7 @@ int t7xx_dpmaif_napi_rx_poll(struct napi_struct *napi, const int budget) t7xx_dpmaif_dlq_unmask_rx_done(&rxq->dpmaif_ctrl->hw_info, rxq->index); t7xx_pci_enable_sleep(rxq->dpmaif_ctrl->t7xx_dev); pm_runtime_mark_last_busy(rxq->dpmaif_ctrl->dev); - pm_runtime_put_autosuspend(rxq->dpmaif_ctrl->dev); + __pm_runtime_put_autosuspend(rxq->dpmaif_ctrl->dev); atomic_set(&rxq->rx_processing, 0); } else { t7xx_dpmaif_clr_ip_busy_sts(&rxq->dpmaif_ctrl->hw_info); @@ -1078,7 +1078,7 @@ static void t7xx_dpmaif_bat_release_work(struct work_struct *work) t7xx_pci_enable_sleep(dpmaif_ctrl->t7xx_dev); pm_runtime_mark_last_busy(dpmaif_ctrl->dev); - pm_runtime_put_autosuspend(dpmaif_ctrl->dev); + __pm_runtime_put_autosuspend(dpmaif_ctrl->dev); } int t7xx_dpmaif_bat_rel_wq_alloc(struct dpmaif_ctrl *dpmaif_ctrl) diff --git a/drivers/net/wwan/t7xx/t7xx_hif_dpmaif_tx.c b/drivers/net/wwan/t7xx/t7xx_hif_dpmaif_tx.c index 8dab025a088a..de8f4284ee28 100644 --- a/drivers/net/wwan/t7xx/t7xx_hif_dpmaif_tx.c +++ b/drivers/net/wwan/t7xx/t7xx_hif_dpmaif_tx.c @@ -186,7 +186,7 @@ static void t7xx_dpmaif_tx_done(struct work_struct *work) t7xx_pci_enable_sleep(dpmaif_ctrl->t7xx_dev); pm_runtime_mark_last_busy(dpmaif_ctrl->dev); - pm_runtime_put_autosuspend(dpmaif_ctrl->dev); + __pm_runtime_put_autosuspend(dpmaif_ctrl->dev); } static void t7xx_setup_msg_drb(struct dpmaif_ctrl *dpmaif_ctrl, unsigned int q_num, @@ -469,7 +469,7 @@ static int t7xx_dpmaif_tx_hw_push_thread(void *arg) t7xx_do_tx_hw_push(dpmaif_ctrl); t7xx_pci_enable_sleep(dpmaif_ctrl->t7xx_dev); pm_runtime_mark_last_busy(dpmaif_ctrl->dev); - pm_runtime_put_autosuspend(dpmaif_ctrl->dev); + __pm_runtime_put_autosuspend(dpmaif_ctrl->dev); } return 0; -- 2.39.5 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH 31/51] nfc: trf7970a: Switch to __pm_runtime_put_autosuspend() 2024-10-04 9:41 [PATCH 00/51] treewide: Switch to __pm_runtime_put_autosuspend() Sakari Ailus 2024-10-04 9:41 ` [PATCH 30/51] net: " Sakari Ailus @ 2024-10-04 9:41 ` Sakari Ailus 2024-10-04 14:05 ` Krzysztof Kozlowski 2024-10-04 14:38 ` [PATCH 00/51] treewide: " Ulf Hansson 2 siblings, 1 reply; 15+ messages in thread From: Sakari Ailus @ 2024-10-04 9:41 UTC (permalink / raw) To: Mark Greer, Krzysztof Kozlowski; +Cc: linux-wireless, netdev pm_runtime_put_autosuspend() will soon be changed to include a call to pm_runtime_mark_last_busy(). This patch switches the current users to __pm_runtime_put_autosuspend() which will continue to have the functionality of old pm_runtime_put_autosuspend(). Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> --- drivers/nfc/trf7970a.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/nfc/trf7970a.c b/drivers/nfc/trf7970a.c index 9e1a34e23af2..4549f1960a27 100644 --- a/drivers/nfc/trf7970a.c +++ b/drivers/nfc/trf7970a.c @@ -1093,7 +1093,7 @@ static void trf7970a_switch_rf_off(struct trf7970a *trf) trf->state = TRF7970A_ST_RF_OFF; pm_runtime_mark_last_busy(trf->dev); - pm_runtime_put_autosuspend(trf->dev); + __pm_runtime_put_autosuspend(trf->dev); } static int trf7970a_switch_rf_on(struct trf7970a *trf) -- 2.39.5 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH 31/51] nfc: trf7970a: Switch to __pm_runtime_put_autosuspend() 2024-10-04 9:41 ` [PATCH 31/51] nfc: trf7970a: " Sakari Ailus @ 2024-10-04 14:05 ` Krzysztof Kozlowski 0 siblings, 0 replies; 15+ messages in thread From: Krzysztof Kozlowski @ 2024-10-04 14:05 UTC (permalink / raw) To: Sakari Ailus, Mark Greer; +Cc: linux-wireless, netdev On 04/10/2024 11:41, Sakari Ailus wrote: > pm_runtime_put_autosuspend() will soon be changed to include a call to > pm_runtime_mark_last_busy(). This patch switches the current users to Please do not use "This commit/patch/change", but imperative mood. See longer explanation here: https://elixir.bootlin.com/linux/v5.17.1/source/Documentation/process/submitting-patches.rst#L95 > __pm_runtime_put_autosuspend() which will continue to have the > functionality of old pm_runtime_put_autosuspend(). > > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> > --- > drivers/nfc/trf7970a.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/nfc/trf7970a.c b/drivers/nfc/trf7970a.c > index 9e1a34e23af2..4549f1960a27 100644 > --- a/drivers/nfc/trf7970a.c > +++ b/drivers/nfc/trf7970a.c > @@ -1093,7 +1093,7 @@ static void trf7970a_switch_rf_off(struct trf7970a *trf) > trf->state = TRF7970A_ST_RF_OFF; > > pm_runtime_mark_last_busy(trf->dev); > - pm_runtime_put_autosuspend(trf->dev); > + __pm_runtime_put_autosuspend(trf->dev); But why? Nothing in commit msg explains why you cannot use the new API here. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 00/51] treewide: Switch to __pm_runtime_put_autosuspend() 2024-10-04 9:41 [PATCH 00/51] treewide: Switch to __pm_runtime_put_autosuspend() Sakari Ailus 2024-10-04 9:41 ` [PATCH 30/51] net: " Sakari Ailus 2024-10-04 9:41 ` [PATCH 31/51] nfc: trf7970a: " Sakari Ailus @ 2024-10-04 14:38 ` Ulf Hansson 2024-10-07 18:49 ` Laurent Pinchart 2 siblings, 1 reply; 15+ messages in thread From: Ulf Hansson @ 2024-10-04 14:38 UTC (permalink / raw) To: Sakari Ailus Cc: dri-devel, linux-kernel, linux-bluetooth, linux-clk, linux-crypto, dmaengine, linux-gpio, amd-gfx, nouveau, linux-stm32, linux-arm-kernel, linux-i2c, linux-i3c, linux-iio, linux-input, patches, iommu, imx, linux-mediatek, linux-media, linux-mmc, linux-mtd, netdev, linux-wireless, linux-pci, linux-phy, linux-pwm, linux-remoteproc, linux-sound, linux-spi, linux-staging, linux-usb, linux-serial, greybus-dev, asahi, laurent.pinchart, rafael, Andy Shevchenko On Fri, 4 Oct 2024 at 11:41, Sakari Ailus <sakari.ailus@linux.intel.com> wrote: > > Hello everyone, > > This set will switch the users of pm_runtime_put_autosuspend() to > __pm_runtime_put_autosuspend() while the former will soon be re-purposed > to include a call to pm_runtime_mark_last_busy(). The two are almost > always used together, apart from bugs which are likely common. Going > forward, most new users should be using pm_runtime_put_autosuspend(). > > Once this conversion is done and pm_runtime_put_autosuspend() re-purposed, > I'll post another set to merge the calls to __pm_runtime_put_autosuspend() > and pm_runtime_mark_last_busy(). That sounds like it could cause a lot of churns. Why not add a new helper function that does the pm_runtime_put_autosuspend() and the pm_runtime_mark_last_busy() things? Then we can start moving users over to this new interface, rather than having this intermediate step? Kind regards Uffe > > The diff in these patches have been generated using the following > Coccinelle script (besides a manual change in > drivers/iio/magnetometer/af8133j.c): > > ----------8<------------------- > @@ > expression E1; > > @@ > > - pm_runtime_put_autosuspend(E1) > + __pm_runtime_put_autosuspend(E1) > ----------8<------------------- > > These patches are on top of today's linux-next (i.e. next-20241004). > > Sakari Ailus (51): > accel/ivpu: Switch to __pm_runtime_put_autosuspend() > bluetooth: Switch to __pm_runtime_put_autosuspend() > bus: sunxi-rsb: Switch to __pm_runtime_put_autosuspend() > hwrng: Switch to __pm_runtime_put_autosuspend() > clk: Switch to __pm_runtime_put_autosuspend() > crypto: Switch to __pm_runtime_put_autosuspend() > dmaengine: Switch to __pm_runtime_put_autosuspend() > gpio: Switch to __pm_runtime_put_autosuspend() > drm/amd: Switch to __pm_runtime_put_autosuspend() > drm/nouveau: Switch to __pm_runtime_put_autosuspend() > drm/radeon: Switch to __pm_runtime_put_autosuspend() > drm/panfrost: Switch to __pm_runtime_put_autosuspend() > drivers: drm: Switch to __pm_runtime_put_autosuspend() > HSI: omap_ssi_port: Switch to __pm_runtime_put_autosuspend() > stm class: Switch to __pm_runtime_put_autosuspend() > i2c: Switch to __pm_runtime_put_autosuspend() > i3c: master: svc: Switch to __pm_runtime_put_autosuspend() > i3c: dw: Switch to __pm_runtime_put_autosuspend() > iio: Switch to __pm_runtime_put_autosuspend() > Input: omap4-keypad: Switch to __pm_runtime_put_autosuspend() > Input: cs40l50: Switch to __pm_runtime_put_autosuspend() > iommu/arm-smmu: Switch to __pm_runtime_put_autosuspend() > irqchip/imx-irqsteer: Switch to __pm_runtime_put_autosuspend() > mailbox: mtk-cmdq-mailbox: Switch to __pm_runtime_put_autosuspend() > media: Switch to __pm_runtime_put_autosuspend() > mfd: Switch to __pm_runtime_put_autosuspend() > mei: Switch to __pm_runtime_put_autosuspend() > mmc: Switch to __pm_runtime_put_autosuspend() > mtd: rawnand: gpmi: Switch to __pm_runtime_put_autosuspend() > net: Switch to __pm_runtime_put_autosuspend() > nfc: trf7970a: Switch to __pm_runtime_put_autosuspend() > PCI/portdrv: Switch to __pm_runtime_put_autosuspend() > phy: motorola: phy-mapphone-mdm6600: Switch to > __pm_runtime_put_autosuspend() > phy: ti: phy-twl4030-usb: Switch to __pm_runtime_put_autosuspend() > power: Switch to __pm_runtime_put_autosuspend() > pwm: img: Switch to __pm_runtime_put_autosuspend() > regulator: stm32-vrefbuf: Switch to __pm_runtime_put_autosuspend() > remoteproc: omap: Switch to __pm_runtime_put_autosuspend() > slimbus: Switch to __pm_runtime_put_autosuspend() > soundwire: Switch to __pm_runtime_put_autosuspend() > spi: Switch to __pm_runtime_put_autosuspend() > staging: Switch to __pm_runtime_put_autosuspend() > thunderbolt: Switch to __pm_runtime_put_autosuspend() > serial: Switch to __pm_runtime_put_autosuspend() > usb: Switch to __pm_runtime_put_autosuspend() > w1: omap-hdq: Switch to __pm_runtime_put_autosuspend() > staging: greybus: Switch to __pm_runtime_put_autosuspend() > ALSA: hda: Switch to __pm_runtime_put_autosuspend() > ASoC: Switch to __pm_runtime_put_autosuspend() > ALSA: intel_hdmi: Switch to __pm_runtime_put_autosuspend() > soc: apple: mailbox: Switch to __pm_runtime_put_autosuspend() > > drivers/accel/ivpu/ivpu_drv.c | 2 +- > drivers/accel/ivpu/ivpu_pm.c | 8 +- > drivers/bluetooth/btmtksdio.c | 2 +- > drivers/bluetooth/hci_bcm.c | 6 +- > drivers/bluetooth/hci_h5.c | 4 +- > drivers/bluetooth/hci_intel.c | 6 +- > drivers/bus/sunxi-rsb.c | 4 +- > drivers/char/hw_random/cctrng.c | 2 +- > drivers/char/hw_random/omap3-rom-rng.c | 2 +- > drivers/clk/imx/clk-imx8qxp-lpcg.c | 2 +- > drivers/clk/imx/clk-scu.c | 2 +- > drivers/clk/qcom/lpassaudiocc-sc7280.c | 4 +- > drivers/clk/qcom/lpasscorecc-sc7180.c | 4 +- > drivers/crypto/ccree/cc_pm.c | 2 +- > drivers/crypto/hisilicon/qm.c | 2 +- > drivers/crypto/omap-aes-gcm.c | 2 +- > drivers/crypto/omap-aes.c | 2 +- > drivers/crypto/omap-des.c | 2 +- > drivers/crypto/omap-sham.c | 2 +- > drivers/crypto/rockchip/rk3288_crypto_ahash.c | 2 +- > .../crypto/rockchip/rk3288_crypto_skcipher.c | 2 +- > drivers/crypto/stm32/stm32-crc32.c | 4 +- > drivers/crypto/stm32/stm32-cryp.c | 2 +- > drivers/crypto/stm32/stm32-hash.c | 2 +- > drivers/dma/at_xdmac.c | 24 +-- > drivers/dma/pl330.c | 14 +- > drivers/dma/qcom/bam_dma.c | 10 +- > drivers/dma/qcom/hidma.c | 18 +- > drivers/dma/qcom/hidma_dbg.c | 2 +- > drivers/dma/qcom/hidma_mgmt.c | 4 +- > drivers/dma/ste_dma40.c | 16 +- > drivers/dma/ti/cppi41.c | 10 +- > drivers/dma/xilinx/zynqmp_dma.c | 2 +- > drivers/gpio/gpio-arizona.c | 10 +- > drivers/gpio/gpio-mxc.c | 2 +- > drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 2 +- > .../gpu/drm/amd/amdgpu/amdgpu_connectors.c | 16 +- > drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 120 ++++++------ > drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 2 +- > drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 6 +- > drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 6 +- > drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 4 +- > drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 4 +- > drivers/gpu/drm/amd/amdgpu/amdgpu_rap.c | 4 +- > drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 2 +- > .../gpu/drm/amd/amdgpu/amdgpu_securedisplay.c | 4 +- > drivers/gpu/drm/amd/amdkfd/kfd_process.c | 4 +- > .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 +- > drivers/gpu/drm/amd/pm/amdgpu_pm.c | 178 +++++++++--------- > .../drm/bridge/analogix/analogix_dp_core.c | 2 +- > drivers/gpu/drm/bridge/analogix/anx7625.c | 4 +- > drivers/gpu/drm/bridge/parade-ps8640.c | 4 +- > drivers/gpu/drm/bridge/ti-sn65dsi86.c | 14 +- > drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 12 +- > drivers/gpu/drm/exynos/exynos_drm_fimc.c | 4 +- > drivers/gpu/drm/exynos/exynos_drm_g2d.c | 4 +- > drivers/gpu/drm/exynos/exynos_drm_gsc.c | 6 +- > drivers/gpu/drm/exynos/exynos_drm_rotator.c | 2 +- > drivers/gpu/drm/exynos/exynos_drm_scaler.c | 2 +- > drivers/gpu/drm/i915/intel_runtime_pm.c | 4 +- > drivers/gpu/drm/imx/dcss/dcss-crtc.c | 2 +- > drivers/gpu/drm/lima/lima_sched.c | 2 +- > drivers/gpu/drm/msm/adreno/adreno_device.c | 2 +- > drivers/gpu/drm/msm/adreno/adreno_gpu.c | 2 +- > drivers/gpu/drm/msm/msm_gpu.c | 2 +- > drivers/gpu/drm/msm/msm_iommu.c | 4 +- > drivers/gpu/drm/msm/msm_submitqueue.c | 2 +- > drivers/gpu/drm/nouveau/dispnv50/disp.c | 10 +- > drivers/gpu/drm/nouveau/nouveau_connector.c | 4 +- > drivers/gpu/drm/nouveau/nouveau_debugfs.c | 8 +- > drivers/gpu/drm/nouveau/nouveau_display.c | 4 +- > drivers/gpu/drm/nouveau/nouveau_drm.c | 10 +- > drivers/gpu/drm/nouveau/nouveau_gem.c | 10 +- > drivers/gpu/drm/panel/panel-edp.c | 8 +- > .../gpu/drm/panel/panel-samsung-atna33xc20.c | 6 +- > drivers/gpu/drm/panel/panel-simple.c | 6 +- > drivers/gpu/drm/panfrost/panfrost_job.c | 4 +- > drivers/gpu/drm/panfrost/panfrost_mmu.c | 4 +- > drivers/gpu/drm/panfrost/panfrost_perfcnt.c | 4 +- > drivers/gpu/drm/panthor/panthor_device.c | 2 +- > drivers/gpu/drm/panthor/panthor_sched.c | 6 +- > drivers/gpu/drm/radeon/radeon_acpi.c | 2 +- > drivers/gpu/drm/radeon/radeon_connectors.c | 20 +- > drivers/gpu/drm/radeon/radeon_display.c | 6 +- > drivers/gpu/drm/radeon/radeon_drv.c | 4 +- > drivers/gpu/drm/radeon/radeon_fbdev.c | 4 +- > drivers/gpu/drm/radeon/radeon_kms.c | 10 +- > drivers/gpu/drm/tegra/submit.c | 2 +- > drivers/gpu/drm/tidss/tidss_drv.c | 2 +- > drivers/gpu/drm/vc4/vc4_v3d.c | 2 +- > drivers/hsi/controllers/omap_ssi_port.c | 42 ++--- > drivers/hwtracing/stm/core.c | 8 +- > drivers/i2c/busses/i2c-amd-mp2-pci.c | 2 +- > drivers/i2c/busses/i2c-amd-mp2.h | 2 +- > drivers/i2c/busses/i2c-at91-master.c | 2 +- > drivers/i2c/busses/i2c-cadence.c | 2 +- > drivers/i2c/busses/i2c-davinci.c | 4 +- > drivers/i2c/busses/i2c-designware-master.c | 2 +- > drivers/i2c/busses/i2c-designware-pcidrv.c | 2 +- > drivers/i2c/busses/i2c-hix5hd2.c | 2 +- > drivers/i2c/busses/i2c-i801.c | 4 +- > drivers/i2c/busses/i2c-img-scb.c | 6 +- > drivers/i2c/busses/i2c-imx-lpi2c.c | 6 +- > drivers/i2c/busses/i2c-imx.c | 4 +- > drivers/i2c/busses/i2c-mv64xxx.c | 2 +- > drivers/i2c/busses/i2c-nvidia-gpu.c | 4 +- > drivers/i2c/busses/i2c-omap.c | 6 +- > drivers/i2c/busses/i2c-qcom-cci.c | 2 +- > drivers/i2c/busses/i2c-qcom-geni.c | 2 +- > drivers/i2c/busses/i2c-qup.c | 4 +- > drivers/i2c/busses/i2c-riic.c | 4 +- > drivers/i2c/busses/i2c-rzv2m.c | 2 +- > drivers/i2c/busses/i2c-sprd.c | 4 +- > drivers/i2c/busses/i2c-stm32f7.c | 10 +- > drivers/i2c/busses/i2c-xiic.c | 2 +- > drivers/i3c/master/dw-i3c-master.c | 16 +- > drivers/i3c/master/svc-i3c-master.c | 16 +- > drivers/iio/accel/bmc150-accel-core.c | 2 +- > drivers/iio/accel/bmi088-accel-core.c | 6 +- > drivers/iio/accel/fxls8962af-core.c | 2 +- > drivers/iio/accel/kxcjk-1013.c | 2 +- > drivers/iio/accel/kxsd9.c | 6 +- > drivers/iio/accel/mma8452.c | 2 +- > drivers/iio/accel/mma9551_core.c | 2 +- > drivers/iio/accel/msa311.c | 12 +- > drivers/iio/adc/ab8500-gpadc.c | 2 +- > drivers/iio/adc/at91-sama5d2_adc.c | 20 +- > drivers/iio/adc/rcar-gyroadc.c | 2 +- > drivers/iio/adc/stm32-adc-core.c | 2 +- > drivers/iio/adc/stm32-adc.c | 12 +- > drivers/iio/adc/sun4i-gpadc-iio.c | 4 +- > drivers/iio/adc/ti-ads1015.c | 2 +- > drivers/iio/adc/ti-ads1100.c | 2 +- > drivers/iio/adc/ti-ads1119.c | 4 +- > drivers/iio/chemical/atlas-sensor.c | 4 +- > .../common/hid-sensors/hid-sensor-trigger.c | 2 +- > drivers/iio/dac/stm32-dac.c | 6 +- > drivers/iio/gyro/bmg160_core.c | 2 +- > drivers/iio/gyro/fxas21002c_core.c | 2 +- > drivers/iio/gyro/mpu3050-core.c | 6 +- > drivers/iio/gyro/mpu3050-i2c.c | 2 +- > .../iio/imu/inv_icm42600/inv_icm42600_accel.c | 10 +- > .../imu/inv_icm42600/inv_icm42600_buffer.c | 2 +- > .../iio/imu/inv_icm42600/inv_icm42600_gyro.c | 10 +- > .../iio/imu/inv_icm42600/inv_icm42600_temp.c | 2 +- > drivers/iio/imu/inv_mpu6050/inv_mpu_core.c | 14 +- > drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c | 4 +- > drivers/iio/imu/kmx61.c | 2 +- > drivers/iio/light/apds9306.c | 6 +- > drivers/iio/light/apds9960.c | 4 +- > drivers/iio/light/bh1780.c | 2 +- > drivers/iio/light/gp2ap002.c | 4 +- > drivers/iio/light/isl29028.c | 2 +- > drivers/iio/light/ltrf216a.c | 2 +- > drivers/iio/light/pa12203001.c | 2 +- > drivers/iio/light/rpr0521.c | 2 +- > drivers/iio/light/tsl2583.c | 2 +- > drivers/iio/light/tsl2591.c | 4 +- > drivers/iio/light/us5182d.c | 2 +- > drivers/iio/light/vcnl4000.c | 2 +- > drivers/iio/light/vcnl4035.c | 2 +- > drivers/iio/magnetometer/af8133j.c | 4 +- > drivers/iio/magnetometer/ak8974.c | 4 +- > drivers/iio/magnetometer/ak8975.c | 2 +- > drivers/iio/magnetometer/bmc150_magn.c | 2 +- > drivers/iio/magnetometer/tmag5273.c | 4 +- > drivers/iio/magnetometer/yamaha-yas530.c | 4 +- > drivers/iio/pressure/bmp280-core.c | 10 +- > drivers/iio/pressure/icp10100.c | 2 +- > drivers/iio/pressure/mpl115.c | 4 +- > drivers/iio/pressure/zpa2326.c | 4 +- > .../iio/proximity/pulsedlight-lidar-lite-v2.c | 2 +- > drivers/iio/proximity/srf04.c | 2 +- > drivers/iio/temperature/mlx90614.c | 4 +- > drivers/iio/temperature/mlx90632.c | 4 +- > drivers/iio/temperature/mlx90635.c | 4 +- > drivers/input/keyboard/omap4-keypad.c | 8 +- > drivers/input/misc/cs40l50-vibra.c | 8 +- > drivers/iommu/arm/arm-smmu/arm-smmu.c | 2 +- > drivers/irqchip/irq-imx-irqsteer.c | 2 +- > drivers/mailbox/mtk-cmdq-mailbox.c | 10 +- > drivers/media/i2c/alvium-csi2.c | 2 +- > drivers/media/i2c/ccs/ccs-core.c | 10 +- > drivers/media/i2c/dw9719.c | 2 +- > drivers/media/i2c/gc0308.c | 6 +- > drivers/media/i2c/gc2145.c | 8 +- > drivers/media/i2c/imx283.c | 6 +- > drivers/media/i2c/imx290.c | 6 +- > drivers/media/i2c/imx296.c | 4 +- > drivers/media/i2c/imx415.c | 4 +- > drivers/media/i2c/mt9m114.c | 12 +- > drivers/media/i2c/ov2680.c | 2 +- > drivers/media/i2c/ov4689.c | 6 +- > drivers/media/i2c/ov5640.c | 8 +- > drivers/media/i2c/ov5645.c | 6 +- > drivers/media/i2c/ov5693.c | 2 +- > drivers/media/i2c/ov64a40.c | 8 +- > drivers/media/i2c/ov7251.c | 2 +- > drivers/media/i2c/ov8858.c | 4 +- > drivers/media/i2c/thp7312.c | 8 +- > drivers/media/i2c/video-i2c.c | 8 +- > .../media/platform/nvidia/tegra-vde/h264.c | 4 +- > drivers/media/platform/qcom/venus/vdec.c | 4 +- > drivers/media/platform/qcom/venus/venc.c | 4 +- > .../platform/raspberrypi/pisp_be/pisp_be.c | 4 +- > .../media/platform/st/sti/delta/delta-v4l2.c | 4 +- > drivers/media/platform/st/sti/hva/hva-hw.c | 8 +- > .../media/platform/verisilicon/hantro_drv.c | 2 +- > drivers/media/rc/gpio-ir-recv.c | 2 +- > drivers/mfd/arizona-irq.c | 2 +- > drivers/mfd/cs40l50-core.c | 2 +- > drivers/mfd/cs42l43.c | 2 +- > drivers/misc/mei/client.c | 14 +- > drivers/mmc/core/core.c | 4 +- > drivers/mmc/host/atmel-mci.c | 4 +- > drivers/mmc/host/dw_mmc-rockchip.c | 2 +- > drivers/mmc/host/dw_mmc.c | 2 +- > drivers/mmc/host/mmci.c | 2 +- > drivers/mmc/host/omap_hsmmc.c | 6 +- > drivers/mmc/host/sdhci-msm.c | 2 +- > drivers/mmc/host/sdhci-of-at91.c | 2 +- > drivers/mmc/host/sdhci-omap.c | 4 +- > drivers/mmc/host/sdhci-pci-core.c | 2 +- > drivers/mmc/host/sdhci-pxav3.c | 6 +- > drivers/mmc/host/sdhci-sprd.c | 2 +- > drivers/mmc/host/sdhci-xenon.c | 2 +- > drivers/mmc/host/sdhci_am654.c | 2 +- > drivers/mmc/host/tmio_mmc_core.c | 2 +- > drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 10 +- > drivers/net/ethernet/cadence/macb_main.c | 10 +- > drivers/net/ethernet/freescale/fec_main.c | 16 +- > drivers/net/ethernet/renesas/ravb_main.c | 8 +- > drivers/net/ethernet/ti/davinci_mdio.c | 14 +- > drivers/net/ipa/ipa_interrupt.c | 2 +- > drivers/net/ipa/ipa_main.c | 2 +- > drivers/net/ipa/ipa_modem.c | 8 +- > drivers/net/ipa/ipa_smp2p.c | 4 +- > drivers/net/ipa/ipa_uc.c | 4 +- > drivers/net/wireless/ath/wil6210/pm.c | 2 +- > drivers/net/wireless/ti/wl18xx/debugfs.c | 6 +- > drivers/net/wireless/ti/wlcore/cmd.c | 2 +- > drivers/net/wireless/ti/wlcore/debugfs.c | 22 +-- > drivers/net/wireless/ti/wlcore/main.c | 72 +++---- > drivers/net/wireless/ti/wlcore/scan.c | 2 +- > drivers/net/wireless/ti/wlcore/sysfs.c | 2 +- > drivers/net/wireless/ti/wlcore/testmode.c | 4 +- > drivers/net/wireless/ti/wlcore/tx.c | 2 +- > drivers/net/wireless/ti/wlcore/vendor_cmd.c | 6 +- > drivers/net/wwan/qcom_bam_dmux.c | 4 +- > drivers/net/wwan/t7xx/t7xx_hif_cldma.c | 6 +- > drivers/net/wwan/t7xx/t7xx_hif_dpmaif_rx.c | 6 +- > drivers/net/wwan/t7xx/t7xx_hif_dpmaif_tx.c | 4 +- > drivers/nfc/trf7970a.c | 2 +- > drivers/pci/pcie/portdrv.c | 2 +- > drivers/phy/motorola/phy-mapphone-mdm6600.c | 4 +- > drivers/phy/ti/phy-twl4030-usb.c | 8 +- > drivers/power/supply/bq24190_charger.c | 28 +-- > drivers/power/supply/twl4030_charger.c | 2 +- > drivers/pwm/pwm-img.c | 4 +- > drivers/regulator/stm32-vrefbuf.c | 12 +- > drivers/remoteproc/omap_remoteproc.c | 6 +- > drivers/slimbus/core.c | 2 +- > drivers/slimbus/messaging.c | 4 +- > drivers/soc/apple/mailbox.c | 2 +- > drivers/soundwire/bus.c | 2 +- > drivers/soundwire/cadence_master.c | 2 +- > drivers/soundwire/qcom.c | 6 +- > drivers/spi/atmel-quadspi.c | 10 +- > drivers/spi/spi-cadence-quadspi.c | 4 +- > drivers/spi/spi-cadence.c | 2 +- > drivers/spi/spi-dw-pci.c | 2 +- > drivers/spi/spi-fsl-espi.c | 4 +- > drivers/spi/spi-fsl-lpspi.c | 4 +- > drivers/spi/spi-imx.c | 6 +- > drivers/spi/spi-mtk-nor.c | 2 +- > drivers/spi/spi-omap2-mcspi.c | 6 +- > drivers/spi/spi-pxa2xx-pci.c | 2 +- > drivers/spi/spi-s3c64xx.c | 6 +- > drivers/spi/spi-sprd.c | 2 +- > drivers/spi/spi-stm32-qspi.c | 14 +- > drivers/spi/spi-stm32.c | 4 +- > drivers/spi/spi-ti-qspi.c | 4 +- > drivers/spi/spi-zynqmp-gqspi.c | 2 +- > drivers/spi/spi.c | 6 +- > drivers/staging/greybus/gbphy.h | 2 +- > drivers/staging/media/rkvdec/rkvdec.c | 2 +- > drivers/thunderbolt/debugfs.c | 22 +-- > drivers/thunderbolt/domain.c | 4 +- > drivers/thunderbolt/icm.c | 14 +- > drivers/thunderbolt/nhi.c | 2 +- > drivers/thunderbolt/retimer.c | 4 +- > drivers/thunderbolt/switch.c | 6 +- > drivers/thunderbolt/tb.c | 18 +- > drivers/thunderbolt/usb4_port.c | 4 +- > drivers/tty/serial/8250/8250_omap.c | 18 +- > drivers/tty/serial/8250/8250_port.c | 4 +- > drivers/tty/serial/fsl_lpuart.c | 2 +- > drivers/tty/serial/serial_core.c | 2 +- > drivers/tty/serial/uartlite.c | 4 +- > drivers/tty/serial/xilinx_uartps.c | 2 +- > drivers/usb/cdns3/cdns3-gadget.c | 2 +- > drivers/usb/cdns3/cdnsp-gadget.c | 2 +- > drivers/usb/chipidea/core.c | 2 +- > drivers/usb/chipidea/otg_fsm.c | 2 +- > drivers/usb/dwc3/core.c | 2 +- > drivers/usb/dwc3/dwc3-am62.c | 2 +- > drivers/usb/dwc3/dwc3-imx8mp.c | 2 +- > drivers/usb/gadget/udc/cdns2/cdns2-gadget.c | 2 +- > drivers/usb/host/xhci-mtk.c | 2 +- > drivers/usb/misc/apple-mfi-fastcharge.c | 2 +- > drivers/usb/mtu3/mtu3_plat.c | 2 +- > drivers/usb/musb/musb_core.c | 10 +- > drivers/usb/musb/musb_debugfs.c | 10 +- > drivers/usb/musb/musb_dsps.c | 2 +- > drivers/usb/musb/musb_gadget.c | 8 +- > drivers/usb/musb/omap2430.c | 2 +- > drivers/w1/masters/omap_hdq.c | 10 +- > include/linux/greybus/bundle.h | 2 +- > sound/hda/hdac_device.c | 2 +- > sound/pci/hda/cs35l41_hda.c | 8 +- > sound/pci/hda/cs35l56_hda.c | 2 +- > sound/pci/hda/hda_intel.c | 2 +- > sound/pci/hda/tas2781_hda_i2c.c | 6 +- > sound/soc/atmel/mchp-spdifrx.c | 12 +- > sound/soc/codecs/arizona-jack.c | 12 +- > sound/soc/codecs/arizona.c | 2 +- > sound/soc/codecs/cs35l41.c | 4 +- > sound/soc/codecs/cs35l45.c | 2 +- > sound/soc/codecs/cs35l56-sdw.c | 4 +- > sound/soc/codecs/cs35l56-shared.c | 2 +- > sound/soc/codecs/cs35l56.c | 2 +- > sound/soc/codecs/cs42l42-sdw.c | 2 +- > sound/soc/codecs/cs42l42.c | 4 +- > sound/soc/codecs/cs42l43-jack.c | 10 +- > sound/soc/codecs/cs42l43.c | 4 +- > sound/soc/codecs/hda.c | 6 +- > sound/soc/codecs/madera.c | 6 +- > sound/soc/codecs/max98363.c | 2 +- > sound/soc/codecs/max98373-sdw.c | 2 +- > sound/soc/codecs/rt1017-sdca-sdw.c | 2 +- > sound/soc/codecs/rt1308-sdw.c | 2 +- > sound/soc/codecs/rt1316-sdw.c | 2 +- > sound/soc/codecs/rt1318-sdw.c | 2 +- > sound/soc/codecs/rt1320-sdw.c | 2 +- > sound/soc/codecs/rt5682-sdw.c | 2 +- > sound/soc/codecs/rt700.c | 4 +- > sound/soc/codecs/rt711-sdca.c | 4 +- > sound/soc/codecs/rt711.c | 4 +- > sound/soc/codecs/rt712-sdca-dmic.c | 2 +- > sound/soc/codecs/rt712-sdca.c | 4 +- > sound/soc/codecs/rt715-sdca.c | 2 +- > sound/soc/codecs/rt715.c | 2 +- > sound/soc/codecs/rt722-sdca.c | 4 +- > sound/soc/codecs/wcd-mbhc-v2.c | 4 +- > sound/soc/codecs/wsa881x.c | 2 +- > sound/soc/codecs/wsa884x.c | 2 +- > sound/soc/intel/atom/sst/sst_pvt.c | 2 +- > sound/soc/intel/avs/core.c | 2 +- > sound/soc/intel/avs/debugfs.c | 4 +- > sound/soc/intel/avs/pcm.c | 2 +- > sound/soc/intel/catpt/pcm.c | 12 +- > sound/soc/intel/catpt/sysfs.c | 2 +- > sound/soc/soc-component.c | 2 +- > sound/soc/sof/control.c | 2 +- > sound/soc/sof/debug.c | 2 +- > sound/soc/sof/ipc3-dtrace.c | 2 +- > sound/soc/sof/ipc4-loader.c | 2 +- > sound/soc/sof/pcm.c | 2 +- > sound/soc/sof/sof-client-ipc-flood-test.c | 2 +- > .../soc/sof/sof-client-ipc-kernel-injector.c | 2 +- > sound/soc/sof/sof-client-ipc-msg-injector.c | 2 +- > sound/soc/sof/sof-client-probes.c | 6 +- > sound/x86/intel_hdmi_audio.c | 6 +- > 373 files changed, 1076 insertions(+), 1076 deletions(-) > > -- > 2.39.5 > > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 00/51] treewide: Switch to __pm_runtime_put_autosuspend() 2024-10-04 14:38 ` [PATCH 00/51] treewide: " Ulf Hansson @ 2024-10-07 18:49 ` Laurent Pinchart 2024-10-07 22:08 ` Ulf Hansson 2024-10-08 20:38 ` Uwe Kleine-König 0 siblings, 2 replies; 15+ messages in thread From: Laurent Pinchart @ 2024-10-07 18:49 UTC (permalink / raw) To: Ulf Hansson Cc: Sakari Ailus, dri-devel, linux-kernel, linux-bluetooth, linux-clk, linux-crypto, dmaengine, linux-gpio, amd-gfx, nouveau, linux-stm32, linux-arm-kernel, linux-i2c, linux-i3c, linux-iio, linux-input, patches, iommu, imx, linux-mediatek, linux-media, linux-mmc, linux-mtd, netdev, linux-wireless, linux-pci, linux-phy, linux-pwm, linux-remoteproc, linux-sound, linux-spi, linux-staging, linux-usb, linux-serial, greybus-dev, asahi, rafael, Andy Shevchenko Hi Ulf, On Fri, Oct 04, 2024 at 04:38:36PM +0200, Ulf Hansson wrote: > On Fri, 4 Oct 2024 at 11:41, Sakari Ailus <sakari.ailus@linux.intel.com> wrote: > > > > Hello everyone, > > > > This set will switch the users of pm_runtime_put_autosuspend() to > > __pm_runtime_put_autosuspend() while the former will soon be re-purposed > > to include a call to pm_runtime_mark_last_busy(). The two are almost > > always used together, apart from bugs which are likely common. Going > > forward, most new users should be using pm_runtime_put_autosuspend(). > > > > Once this conversion is done and pm_runtime_put_autosuspend() re-purposed, > > I'll post another set to merge the calls to __pm_runtime_put_autosuspend() > > and pm_runtime_mark_last_busy(). > > That sounds like it could cause a lot of churns. > > Why not add a new helper function that does the > pm_runtime_put_autosuspend() and the pm_runtime_mark_last_busy() > things? Then we can start moving users over to this new interface, > rather than having this intermediate step? I think the API would be nicer if we used the shortest and simplest function names for the most common use cases. Following pm_runtime_put_autosuspend() with pm_runtime_mark_last_busy() is that most common use case. That's why I like Sakari's approach of repurposing pm_runtime_put_autosuspend(), and introducing __pm_runtime_put_autosuspend() for the odd cases where pm_runtime_mark_last_busy() shouldn't be called. > > The diff in these patches have been generated using the following > > Coccinelle script (besides a manual change in > > drivers/iio/magnetometer/af8133j.c): > > > > ----------8<------------------- > > @@ > > expression E1; > > > > @@ > > > > - pm_runtime_put_autosuspend(E1) > > + __pm_runtime_put_autosuspend(E1) > > ----------8<------------------- > > > > These patches are on top of today's linux-next (i.e. next-20241004). > > > > Sakari Ailus (51): > > accel/ivpu: Switch to __pm_runtime_put_autosuspend() > > bluetooth: Switch to __pm_runtime_put_autosuspend() > > bus: sunxi-rsb: Switch to __pm_runtime_put_autosuspend() > > hwrng: Switch to __pm_runtime_put_autosuspend() > > clk: Switch to __pm_runtime_put_autosuspend() > > crypto: Switch to __pm_runtime_put_autosuspend() > > dmaengine: Switch to __pm_runtime_put_autosuspend() > > gpio: Switch to __pm_runtime_put_autosuspend() > > drm/amd: Switch to __pm_runtime_put_autosuspend() > > drm/nouveau: Switch to __pm_runtime_put_autosuspend() > > drm/radeon: Switch to __pm_runtime_put_autosuspend() > > drm/panfrost: Switch to __pm_runtime_put_autosuspend() > > drivers: drm: Switch to __pm_runtime_put_autosuspend() > > HSI: omap_ssi_port: Switch to __pm_runtime_put_autosuspend() > > stm class: Switch to __pm_runtime_put_autosuspend() > > i2c: Switch to __pm_runtime_put_autosuspend() > > i3c: master: svc: Switch to __pm_runtime_put_autosuspend() > > i3c: dw: Switch to __pm_runtime_put_autosuspend() > > iio: Switch to __pm_runtime_put_autosuspend() > > Input: omap4-keypad: Switch to __pm_runtime_put_autosuspend() > > Input: cs40l50: Switch to __pm_runtime_put_autosuspend() > > iommu/arm-smmu: Switch to __pm_runtime_put_autosuspend() > > irqchip/imx-irqsteer: Switch to __pm_runtime_put_autosuspend() > > mailbox: mtk-cmdq-mailbox: Switch to __pm_runtime_put_autosuspend() > > media: Switch to __pm_runtime_put_autosuspend() > > mfd: Switch to __pm_runtime_put_autosuspend() > > mei: Switch to __pm_runtime_put_autosuspend() > > mmc: Switch to __pm_runtime_put_autosuspend() > > mtd: rawnand: gpmi: Switch to __pm_runtime_put_autosuspend() > > net: Switch to __pm_runtime_put_autosuspend() > > nfc: trf7970a: Switch to __pm_runtime_put_autosuspend() > > PCI/portdrv: Switch to __pm_runtime_put_autosuspend() > > phy: motorola: phy-mapphone-mdm6600: Switch to > > __pm_runtime_put_autosuspend() > > phy: ti: phy-twl4030-usb: Switch to __pm_runtime_put_autosuspend() > > power: Switch to __pm_runtime_put_autosuspend() > > pwm: img: Switch to __pm_runtime_put_autosuspend() > > regulator: stm32-vrefbuf: Switch to __pm_runtime_put_autosuspend() > > remoteproc: omap: Switch to __pm_runtime_put_autosuspend() > > slimbus: Switch to __pm_runtime_put_autosuspend() > > soundwire: Switch to __pm_runtime_put_autosuspend() > > spi: Switch to __pm_runtime_put_autosuspend() > > staging: Switch to __pm_runtime_put_autosuspend() > > thunderbolt: Switch to __pm_runtime_put_autosuspend() > > serial: Switch to __pm_runtime_put_autosuspend() > > usb: Switch to __pm_runtime_put_autosuspend() > > w1: omap-hdq: Switch to __pm_runtime_put_autosuspend() > > staging: greybus: Switch to __pm_runtime_put_autosuspend() > > ALSA: hda: Switch to __pm_runtime_put_autosuspend() > > ASoC: Switch to __pm_runtime_put_autosuspend() > > ALSA: intel_hdmi: Switch to __pm_runtime_put_autosuspend() > > soc: apple: mailbox: Switch to __pm_runtime_put_autosuspend() > > > > drivers/accel/ivpu/ivpu_drv.c | 2 +- > > drivers/accel/ivpu/ivpu_pm.c | 8 +- > > drivers/bluetooth/btmtksdio.c | 2 +- > > drivers/bluetooth/hci_bcm.c | 6 +- > > drivers/bluetooth/hci_h5.c | 4 +- > > drivers/bluetooth/hci_intel.c | 6 +- > > drivers/bus/sunxi-rsb.c | 4 +- > > drivers/char/hw_random/cctrng.c | 2 +- > > drivers/char/hw_random/omap3-rom-rng.c | 2 +- > > drivers/clk/imx/clk-imx8qxp-lpcg.c | 2 +- > > drivers/clk/imx/clk-scu.c | 2 +- > > drivers/clk/qcom/lpassaudiocc-sc7280.c | 4 +- > > drivers/clk/qcom/lpasscorecc-sc7180.c | 4 +- > > drivers/crypto/ccree/cc_pm.c | 2 +- > > drivers/crypto/hisilicon/qm.c | 2 +- > > drivers/crypto/omap-aes-gcm.c | 2 +- > > drivers/crypto/omap-aes.c | 2 +- > > drivers/crypto/omap-des.c | 2 +- > > drivers/crypto/omap-sham.c | 2 +- > > drivers/crypto/rockchip/rk3288_crypto_ahash.c | 2 +- > > .../crypto/rockchip/rk3288_crypto_skcipher.c | 2 +- > > drivers/crypto/stm32/stm32-crc32.c | 4 +- > > drivers/crypto/stm32/stm32-cryp.c | 2 +- > > drivers/crypto/stm32/stm32-hash.c | 2 +- > > drivers/dma/at_xdmac.c | 24 +-- > > drivers/dma/pl330.c | 14 +- > > drivers/dma/qcom/bam_dma.c | 10 +- > > drivers/dma/qcom/hidma.c | 18 +- > > drivers/dma/qcom/hidma_dbg.c | 2 +- > > drivers/dma/qcom/hidma_mgmt.c | 4 +- > > drivers/dma/ste_dma40.c | 16 +- > > drivers/dma/ti/cppi41.c | 10 +- > > drivers/dma/xilinx/zynqmp_dma.c | 2 +- > > drivers/gpio/gpio-arizona.c | 10 +- > > drivers/gpio/gpio-mxc.c | 2 +- > > drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 2 +- > > .../gpu/drm/amd/amdgpu/amdgpu_connectors.c | 16 +- > > drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 120 ++++++------ > > drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 2 +- > > drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 6 +- > > drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 6 +- > > drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 4 +- > > drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 4 +- > > drivers/gpu/drm/amd/amdgpu/amdgpu_rap.c | 4 +- > > drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 2 +- > > .../gpu/drm/amd/amdgpu/amdgpu_securedisplay.c | 4 +- > > drivers/gpu/drm/amd/amdkfd/kfd_process.c | 4 +- > > .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 +- > > drivers/gpu/drm/amd/pm/amdgpu_pm.c | 178 +++++++++--------- > > .../drm/bridge/analogix/analogix_dp_core.c | 2 +- > > drivers/gpu/drm/bridge/analogix/anx7625.c | 4 +- > > drivers/gpu/drm/bridge/parade-ps8640.c | 4 +- > > drivers/gpu/drm/bridge/ti-sn65dsi86.c | 14 +- > > drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 12 +- > > drivers/gpu/drm/exynos/exynos_drm_fimc.c | 4 +- > > drivers/gpu/drm/exynos/exynos_drm_g2d.c | 4 +- > > drivers/gpu/drm/exynos/exynos_drm_gsc.c | 6 +- > > drivers/gpu/drm/exynos/exynos_drm_rotator.c | 2 +- > > drivers/gpu/drm/exynos/exynos_drm_scaler.c | 2 +- > > drivers/gpu/drm/i915/intel_runtime_pm.c | 4 +- > > drivers/gpu/drm/imx/dcss/dcss-crtc.c | 2 +- > > drivers/gpu/drm/lima/lima_sched.c | 2 +- > > drivers/gpu/drm/msm/adreno/adreno_device.c | 2 +- > > drivers/gpu/drm/msm/adreno/adreno_gpu.c | 2 +- > > drivers/gpu/drm/msm/msm_gpu.c | 2 +- > > drivers/gpu/drm/msm/msm_iommu.c | 4 +- > > drivers/gpu/drm/msm/msm_submitqueue.c | 2 +- > > drivers/gpu/drm/nouveau/dispnv50/disp.c | 10 +- > > drivers/gpu/drm/nouveau/nouveau_connector.c | 4 +- > > drivers/gpu/drm/nouveau/nouveau_debugfs.c | 8 +- > > drivers/gpu/drm/nouveau/nouveau_display.c | 4 +- > > drivers/gpu/drm/nouveau/nouveau_drm.c | 10 +- > > drivers/gpu/drm/nouveau/nouveau_gem.c | 10 +- > > drivers/gpu/drm/panel/panel-edp.c | 8 +- > > .../gpu/drm/panel/panel-samsung-atna33xc20.c | 6 +- > > drivers/gpu/drm/panel/panel-simple.c | 6 +- > > drivers/gpu/drm/panfrost/panfrost_job.c | 4 +- > > drivers/gpu/drm/panfrost/panfrost_mmu.c | 4 +- > > drivers/gpu/drm/panfrost/panfrost_perfcnt.c | 4 +- > > drivers/gpu/drm/panthor/panthor_device.c | 2 +- > > drivers/gpu/drm/panthor/panthor_sched.c | 6 +- > > drivers/gpu/drm/radeon/radeon_acpi.c | 2 +- > > drivers/gpu/drm/radeon/radeon_connectors.c | 20 +- > > drivers/gpu/drm/radeon/radeon_display.c | 6 +- > > drivers/gpu/drm/radeon/radeon_drv.c | 4 +- > > drivers/gpu/drm/radeon/radeon_fbdev.c | 4 +- > > drivers/gpu/drm/radeon/radeon_kms.c | 10 +- > > drivers/gpu/drm/tegra/submit.c | 2 +- > > drivers/gpu/drm/tidss/tidss_drv.c | 2 +- > > drivers/gpu/drm/vc4/vc4_v3d.c | 2 +- > > drivers/hsi/controllers/omap_ssi_port.c | 42 ++--- > > drivers/hwtracing/stm/core.c | 8 +- > > drivers/i2c/busses/i2c-amd-mp2-pci.c | 2 +- > > drivers/i2c/busses/i2c-amd-mp2.h | 2 +- > > drivers/i2c/busses/i2c-at91-master.c | 2 +- > > drivers/i2c/busses/i2c-cadence.c | 2 +- > > drivers/i2c/busses/i2c-davinci.c | 4 +- > > drivers/i2c/busses/i2c-designware-master.c | 2 +- > > drivers/i2c/busses/i2c-designware-pcidrv.c | 2 +- > > drivers/i2c/busses/i2c-hix5hd2.c | 2 +- > > drivers/i2c/busses/i2c-i801.c | 4 +- > > drivers/i2c/busses/i2c-img-scb.c | 6 +- > > drivers/i2c/busses/i2c-imx-lpi2c.c | 6 +- > > drivers/i2c/busses/i2c-imx.c | 4 +- > > drivers/i2c/busses/i2c-mv64xxx.c | 2 +- > > drivers/i2c/busses/i2c-nvidia-gpu.c | 4 +- > > drivers/i2c/busses/i2c-omap.c | 6 +- > > drivers/i2c/busses/i2c-qcom-cci.c | 2 +- > > drivers/i2c/busses/i2c-qcom-geni.c | 2 +- > > drivers/i2c/busses/i2c-qup.c | 4 +- > > drivers/i2c/busses/i2c-riic.c | 4 +- > > drivers/i2c/busses/i2c-rzv2m.c | 2 +- > > drivers/i2c/busses/i2c-sprd.c | 4 +- > > drivers/i2c/busses/i2c-stm32f7.c | 10 +- > > drivers/i2c/busses/i2c-xiic.c | 2 +- > > drivers/i3c/master/dw-i3c-master.c | 16 +- > > drivers/i3c/master/svc-i3c-master.c | 16 +- > > drivers/iio/accel/bmc150-accel-core.c | 2 +- > > drivers/iio/accel/bmi088-accel-core.c | 6 +- > > drivers/iio/accel/fxls8962af-core.c | 2 +- > > drivers/iio/accel/kxcjk-1013.c | 2 +- > > drivers/iio/accel/kxsd9.c | 6 +- > > drivers/iio/accel/mma8452.c | 2 +- > > drivers/iio/accel/mma9551_core.c | 2 +- > > drivers/iio/accel/msa311.c | 12 +- > > drivers/iio/adc/ab8500-gpadc.c | 2 +- > > drivers/iio/adc/at91-sama5d2_adc.c | 20 +- > > drivers/iio/adc/rcar-gyroadc.c | 2 +- > > drivers/iio/adc/stm32-adc-core.c | 2 +- > > drivers/iio/adc/stm32-adc.c | 12 +- > > drivers/iio/adc/sun4i-gpadc-iio.c | 4 +- > > drivers/iio/adc/ti-ads1015.c | 2 +- > > drivers/iio/adc/ti-ads1100.c | 2 +- > > drivers/iio/adc/ti-ads1119.c | 4 +- > > drivers/iio/chemical/atlas-sensor.c | 4 +- > > .../common/hid-sensors/hid-sensor-trigger.c | 2 +- > > drivers/iio/dac/stm32-dac.c | 6 +- > > drivers/iio/gyro/bmg160_core.c | 2 +- > > drivers/iio/gyro/fxas21002c_core.c | 2 +- > > drivers/iio/gyro/mpu3050-core.c | 6 +- > > drivers/iio/gyro/mpu3050-i2c.c | 2 +- > > .../iio/imu/inv_icm42600/inv_icm42600_accel.c | 10 +- > > .../imu/inv_icm42600/inv_icm42600_buffer.c | 2 +- > > .../iio/imu/inv_icm42600/inv_icm42600_gyro.c | 10 +- > > .../iio/imu/inv_icm42600/inv_icm42600_temp.c | 2 +- > > drivers/iio/imu/inv_mpu6050/inv_mpu_core.c | 14 +- > > drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c | 4 +- > > drivers/iio/imu/kmx61.c | 2 +- > > drivers/iio/light/apds9306.c | 6 +- > > drivers/iio/light/apds9960.c | 4 +- > > drivers/iio/light/bh1780.c | 2 +- > > drivers/iio/light/gp2ap002.c | 4 +- > > drivers/iio/light/isl29028.c | 2 +- > > drivers/iio/light/ltrf216a.c | 2 +- > > drivers/iio/light/pa12203001.c | 2 +- > > drivers/iio/light/rpr0521.c | 2 +- > > drivers/iio/light/tsl2583.c | 2 +- > > drivers/iio/light/tsl2591.c | 4 +- > > drivers/iio/light/us5182d.c | 2 +- > > drivers/iio/light/vcnl4000.c | 2 +- > > drivers/iio/light/vcnl4035.c | 2 +- > > drivers/iio/magnetometer/af8133j.c | 4 +- > > drivers/iio/magnetometer/ak8974.c | 4 +- > > drivers/iio/magnetometer/ak8975.c | 2 +- > > drivers/iio/magnetometer/bmc150_magn.c | 2 +- > > drivers/iio/magnetometer/tmag5273.c | 4 +- > > drivers/iio/magnetometer/yamaha-yas530.c | 4 +- > > drivers/iio/pressure/bmp280-core.c | 10 +- > > drivers/iio/pressure/icp10100.c | 2 +- > > drivers/iio/pressure/mpl115.c | 4 +- > > drivers/iio/pressure/zpa2326.c | 4 +- > > .../iio/proximity/pulsedlight-lidar-lite-v2.c | 2 +- > > drivers/iio/proximity/srf04.c | 2 +- > > drivers/iio/temperature/mlx90614.c | 4 +- > > drivers/iio/temperature/mlx90632.c | 4 +- > > drivers/iio/temperature/mlx90635.c | 4 +- > > drivers/input/keyboard/omap4-keypad.c | 8 +- > > drivers/input/misc/cs40l50-vibra.c | 8 +- > > drivers/iommu/arm/arm-smmu/arm-smmu.c | 2 +- > > drivers/irqchip/irq-imx-irqsteer.c | 2 +- > > drivers/mailbox/mtk-cmdq-mailbox.c | 10 +- > > drivers/media/i2c/alvium-csi2.c | 2 +- > > drivers/media/i2c/ccs/ccs-core.c | 10 +- > > drivers/media/i2c/dw9719.c | 2 +- > > drivers/media/i2c/gc0308.c | 6 +- > > drivers/media/i2c/gc2145.c | 8 +- > > drivers/media/i2c/imx283.c | 6 +- > > drivers/media/i2c/imx290.c | 6 +- > > drivers/media/i2c/imx296.c | 4 +- > > drivers/media/i2c/imx415.c | 4 +- > > drivers/media/i2c/mt9m114.c | 12 +- > > drivers/media/i2c/ov2680.c | 2 +- > > drivers/media/i2c/ov4689.c | 6 +- > > drivers/media/i2c/ov5640.c | 8 +- > > drivers/media/i2c/ov5645.c | 6 +- > > drivers/media/i2c/ov5693.c | 2 +- > > drivers/media/i2c/ov64a40.c | 8 +- > > drivers/media/i2c/ov7251.c | 2 +- > > drivers/media/i2c/ov8858.c | 4 +- > > drivers/media/i2c/thp7312.c | 8 +- > > drivers/media/i2c/video-i2c.c | 8 +- > > .../media/platform/nvidia/tegra-vde/h264.c | 4 +- > > drivers/media/platform/qcom/venus/vdec.c | 4 +- > > drivers/media/platform/qcom/venus/venc.c | 4 +- > > .../platform/raspberrypi/pisp_be/pisp_be.c | 4 +- > > .../media/platform/st/sti/delta/delta-v4l2.c | 4 +- > > drivers/media/platform/st/sti/hva/hva-hw.c | 8 +- > > .../media/platform/verisilicon/hantro_drv.c | 2 +- > > drivers/media/rc/gpio-ir-recv.c | 2 +- > > drivers/mfd/arizona-irq.c | 2 +- > > drivers/mfd/cs40l50-core.c | 2 +- > > drivers/mfd/cs42l43.c | 2 +- > > drivers/misc/mei/client.c | 14 +- > > drivers/mmc/core/core.c | 4 +- > > drivers/mmc/host/atmel-mci.c | 4 +- > > drivers/mmc/host/dw_mmc-rockchip.c | 2 +- > > drivers/mmc/host/dw_mmc.c | 2 +- > > drivers/mmc/host/mmci.c | 2 +- > > drivers/mmc/host/omap_hsmmc.c | 6 +- > > drivers/mmc/host/sdhci-msm.c | 2 +- > > drivers/mmc/host/sdhci-of-at91.c | 2 +- > > drivers/mmc/host/sdhci-omap.c | 4 +- > > drivers/mmc/host/sdhci-pci-core.c | 2 +- > > drivers/mmc/host/sdhci-pxav3.c | 6 +- > > drivers/mmc/host/sdhci-sprd.c | 2 +- > > drivers/mmc/host/sdhci-xenon.c | 2 +- > > drivers/mmc/host/sdhci_am654.c | 2 +- > > drivers/mmc/host/tmio_mmc_core.c | 2 +- > > drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 10 +- > > drivers/net/ethernet/cadence/macb_main.c | 10 +- > > drivers/net/ethernet/freescale/fec_main.c | 16 +- > > drivers/net/ethernet/renesas/ravb_main.c | 8 +- > > drivers/net/ethernet/ti/davinci_mdio.c | 14 +- > > drivers/net/ipa/ipa_interrupt.c | 2 +- > > drivers/net/ipa/ipa_main.c | 2 +- > > drivers/net/ipa/ipa_modem.c | 8 +- > > drivers/net/ipa/ipa_smp2p.c | 4 +- > > drivers/net/ipa/ipa_uc.c | 4 +- > > drivers/net/wireless/ath/wil6210/pm.c | 2 +- > > drivers/net/wireless/ti/wl18xx/debugfs.c | 6 +- > > drivers/net/wireless/ti/wlcore/cmd.c | 2 +- > > drivers/net/wireless/ti/wlcore/debugfs.c | 22 +-- > > drivers/net/wireless/ti/wlcore/main.c | 72 +++---- > > drivers/net/wireless/ti/wlcore/scan.c | 2 +- > > drivers/net/wireless/ti/wlcore/sysfs.c | 2 +- > > drivers/net/wireless/ti/wlcore/testmode.c | 4 +- > > drivers/net/wireless/ti/wlcore/tx.c | 2 +- > > drivers/net/wireless/ti/wlcore/vendor_cmd.c | 6 +- > > drivers/net/wwan/qcom_bam_dmux.c | 4 +- > > drivers/net/wwan/t7xx/t7xx_hif_cldma.c | 6 +- > > drivers/net/wwan/t7xx/t7xx_hif_dpmaif_rx.c | 6 +- > > drivers/net/wwan/t7xx/t7xx_hif_dpmaif_tx.c | 4 +- > > drivers/nfc/trf7970a.c | 2 +- > > drivers/pci/pcie/portdrv.c | 2 +- > > drivers/phy/motorola/phy-mapphone-mdm6600.c | 4 +- > > drivers/phy/ti/phy-twl4030-usb.c | 8 +- > > drivers/power/supply/bq24190_charger.c | 28 +-- > > drivers/power/supply/twl4030_charger.c | 2 +- > > drivers/pwm/pwm-img.c | 4 +- > > drivers/regulator/stm32-vrefbuf.c | 12 +- > > drivers/remoteproc/omap_remoteproc.c | 6 +- > > drivers/slimbus/core.c | 2 +- > > drivers/slimbus/messaging.c | 4 +- > > drivers/soc/apple/mailbox.c | 2 +- > > drivers/soundwire/bus.c | 2 +- > > drivers/soundwire/cadence_master.c | 2 +- > > drivers/soundwire/qcom.c | 6 +- > > drivers/spi/atmel-quadspi.c | 10 +- > > drivers/spi/spi-cadence-quadspi.c | 4 +- > > drivers/spi/spi-cadence.c | 2 +- > > drivers/spi/spi-dw-pci.c | 2 +- > > drivers/spi/spi-fsl-espi.c | 4 +- > > drivers/spi/spi-fsl-lpspi.c | 4 +- > > drivers/spi/spi-imx.c | 6 +- > > drivers/spi/spi-mtk-nor.c | 2 +- > > drivers/spi/spi-omap2-mcspi.c | 6 +- > > drivers/spi/spi-pxa2xx-pci.c | 2 +- > > drivers/spi/spi-s3c64xx.c | 6 +- > > drivers/spi/spi-sprd.c | 2 +- > > drivers/spi/spi-stm32-qspi.c | 14 +- > > drivers/spi/spi-stm32.c | 4 +- > > drivers/spi/spi-ti-qspi.c | 4 +- > > drivers/spi/spi-zynqmp-gqspi.c | 2 +- > > drivers/spi/spi.c | 6 +- > > drivers/staging/greybus/gbphy.h | 2 +- > > drivers/staging/media/rkvdec/rkvdec.c | 2 +- > > drivers/thunderbolt/debugfs.c | 22 +-- > > drivers/thunderbolt/domain.c | 4 +- > > drivers/thunderbolt/icm.c | 14 +- > > drivers/thunderbolt/nhi.c | 2 +- > > drivers/thunderbolt/retimer.c | 4 +- > > drivers/thunderbolt/switch.c | 6 +- > > drivers/thunderbolt/tb.c | 18 +- > > drivers/thunderbolt/usb4_port.c | 4 +- > > drivers/tty/serial/8250/8250_omap.c | 18 +- > > drivers/tty/serial/8250/8250_port.c | 4 +- > > drivers/tty/serial/fsl_lpuart.c | 2 +- > > drivers/tty/serial/serial_core.c | 2 +- > > drivers/tty/serial/uartlite.c | 4 +- > > drivers/tty/serial/xilinx_uartps.c | 2 +- > > drivers/usb/cdns3/cdns3-gadget.c | 2 +- > > drivers/usb/cdns3/cdnsp-gadget.c | 2 +- > > drivers/usb/chipidea/core.c | 2 +- > > drivers/usb/chipidea/otg_fsm.c | 2 +- > > drivers/usb/dwc3/core.c | 2 +- > > drivers/usb/dwc3/dwc3-am62.c | 2 +- > > drivers/usb/dwc3/dwc3-imx8mp.c | 2 +- > > drivers/usb/gadget/udc/cdns2/cdns2-gadget.c | 2 +- > > drivers/usb/host/xhci-mtk.c | 2 +- > > drivers/usb/misc/apple-mfi-fastcharge.c | 2 +- > > drivers/usb/mtu3/mtu3_plat.c | 2 +- > > drivers/usb/musb/musb_core.c | 10 +- > > drivers/usb/musb/musb_debugfs.c | 10 +- > > drivers/usb/musb/musb_dsps.c | 2 +- > > drivers/usb/musb/musb_gadget.c | 8 +- > > drivers/usb/musb/omap2430.c | 2 +- > > drivers/w1/masters/omap_hdq.c | 10 +- > > include/linux/greybus/bundle.h | 2 +- > > sound/hda/hdac_device.c | 2 +- > > sound/pci/hda/cs35l41_hda.c | 8 +- > > sound/pci/hda/cs35l56_hda.c | 2 +- > > sound/pci/hda/hda_intel.c | 2 +- > > sound/pci/hda/tas2781_hda_i2c.c | 6 +- > > sound/soc/atmel/mchp-spdifrx.c | 12 +- > > sound/soc/codecs/arizona-jack.c | 12 +- > > sound/soc/codecs/arizona.c | 2 +- > > sound/soc/codecs/cs35l41.c | 4 +- > > sound/soc/codecs/cs35l45.c | 2 +- > > sound/soc/codecs/cs35l56-sdw.c | 4 +- > > sound/soc/codecs/cs35l56-shared.c | 2 +- > > sound/soc/codecs/cs35l56.c | 2 +- > > sound/soc/codecs/cs42l42-sdw.c | 2 +- > > sound/soc/codecs/cs42l42.c | 4 +- > > sound/soc/codecs/cs42l43-jack.c | 10 +- > > sound/soc/codecs/cs42l43.c | 4 +- > > sound/soc/codecs/hda.c | 6 +- > > sound/soc/codecs/madera.c | 6 +- > > sound/soc/codecs/max98363.c | 2 +- > > sound/soc/codecs/max98373-sdw.c | 2 +- > > sound/soc/codecs/rt1017-sdca-sdw.c | 2 +- > > sound/soc/codecs/rt1308-sdw.c | 2 +- > > sound/soc/codecs/rt1316-sdw.c | 2 +- > > sound/soc/codecs/rt1318-sdw.c | 2 +- > > sound/soc/codecs/rt1320-sdw.c | 2 +- > > sound/soc/codecs/rt5682-sdw.c | 2 +- > > sound/soc/codecs/rt700.c | 4 +- > > sound/soc/codecs/rt711-sdca.c | 4 +- > > sound/soc/codecs/rt711.c | 4 +- > > sound/soc/codecs/rt712-sdca-dmic.c | 2 +- > > sound/soc/codecs/rt712-sdca.c | 4 +- > > sound/soc/codecs/rt715-sdca.c | 2 +- > > sound/soc/codecs/rt715.c | 2 +- > > sound/soc/codecs/rt722-sdca.c | 4 +- > > sound/soc/codecs/wcd-mbhc-v2.c | 4 +- > > sound/soc/codecs/wsa881x.c | 2 +- > > sound/soc/codecs/wsa884x.c | 2 +- > > sound/soc/intel/atom/sst/sst_pvt.c | 2 +- > > sound/soc/intel/avs/core.c | 2 +- > > sound/soc/intel/avs/debugfs.c | 4 +- > > sound/soc/intel/avs/pcm.c | 2 +- > > sound/soc/intel/catpt/pcm.c | 12 +- > > sound/soc/intel/catpt/sysfs.c | 2 +- > > sound/soc/soc-component.c | 2 +- > > sound/soc/sof/control.c | 2 +- > > sound/soc/sof/debug.c | 2 +- > > sound/soc/sof/ipc3-dtrace.c | 2 +- > > sound/soc/sof/ipc4-loader.c | 2 +- > > sound/soc/sof/pcm.c | 2 +- > > sound/soc/sof/sof-client-ipc-flood-test.c | 2 +- > > .../soc/sof/sof-client-ipc-kernel-injector.c | 2 +- > > sound/soc/sof/sof-client-ipc-msg-injector.c | 2 +- > > sound/soc/sof/sof-client-probes.c | 6 +- > > sound/x86/intel_hdmi_audio.c | 6 +- > > 373 files changed, 1076 insertions(+), 1076 deletions(-) -- Regards, Laurent Pinchart ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 00/51] treewide: Switch to __pm_runtime_put_autosuspend() 2024-10-07 18:49 ` Laurent Pinchart @ 2024-10-07 22:08 ` Ulf Hansson 2024-10-07 22:25 ` Laurent Pinchart 2024-10-08 20:38 ` Uwe Kleine-König 1 sibling, 1 reply; 15+ messages in thread From: Ulf Hansson @ 2024-10-07 22:08 UTC (permalink / raw) To: Laurent Pinchart Cc: Sakari Ailus, dri-devel, linux-kernel, linux-bluetooth, linux-clk, linux-crypto, dmaengine, linux-gpio, amd-gfx, nouveau, linux-stm32, linux-arm-kernel, linux-i2c, linux-i3c, linux-iio, linux-input, patches, iommu, imx, linux-mediatek, linux-media, linux-mmc, linux-mtd, netdev, linux-wireless, linux-pci, linux-phy, linux-pwm, linux-remoteproc, linux-sound, linux-spi, linux-staging, linux-usb, linux-serial, greybus-dev, asahi, rafael, Andy Shevchenko On Mon, 7 Oct 2024 at 20:49, Laurent Pinchart <laurent.pinchart@ideasonboard.com> wrote: > > Hi Ulf, > > On Fri, Oct 04, 2024 at 04:38:36PM +0200, Ulf Hansson wrote: > > On Fri, 4 Oct 2024 at 11:41, Sakari Ailus <sakari.ailus@linux.intel.com> wrote: > > > > > > Hello everyone, > > > > > > This set will switch the users of pm_runtime_put_autosuspend() to > > > __pm_runtime_put_autosuspend() while the former will soon be re-purposed > > > to include a call to pm_runtime_mark_last_busy(). The two are almost > > > always used together, apart from bugs which are likely common. Going > > > forward, most new users should be using pm_runtime_put_autosuspend(). > > > > > > Once this conversion is done and pm_runtime_put_autosuspend() re-purposed, > > > I'll post another set to merge the calls to __pm_runtime_put_autosuspend() > > > and pm_runtime_mark_last_busy(). > > > > That sounds like it could cause a lot of churns. > > > > Why not add a new helper function that does the > > pm_runtime_put_autosuspend() and the pm_runtime_mark_last_busy() > > things? Then we can start moving users over to this new interface, > > rather than having this intermediate step? > > I think the API would be nicer if we used the shortest and simplest > function names for the most common use cases. Following > pm_runtime_put_autosuspend() with pm_runtime_mark_last_busy() is that > most common use case. That's why I like Sakari's approach of repurposing > pm_runtime_put_autosuspend(), and introducing > __pm_runtime_put_autosuspend() for the odd cases where > pm_runtime_mark_last_busy() shouldn't be called. Okay, so the reason for this approach is because we couldn't find a short and descriptive name that could be used in favor of pm_runtime_put_autosuspend(). Let me throw some ideas at it and maybe you like it - or not. :-) I don't know what options you guys discussed, but to me the entire "autosuspend"-suffix isn't really that necessary in my opinion. There are more ways than calling pm_runtime_put_autosuspend() that triggers us to use the RPM_AUTO flag for rpm_suspend(). For example, just calling pm_runtime_put() has the similar effect. Moreover, it's similar for pm_runtime_mark_last_busy(), it's called during rpm_resume() too, for example. So why bother about having "mark_last_busy" in the new name too. That said, my suggestion is simply "pm_runtime_put_suspend". If you don't like it, I will certainly not object to your current approach, even if I think it leads to unnecessary churns. [...] Kind regards Uffe ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 00/51] treewide: Switch to __pm_runtime_put_autosuspend() 2024-10-07 22:08 ` Ulf Hansson @ 2024-10-07 22:25 ` Laurent Pinchart 2024-10-07 22:34 ` Ulf Hansson 0 siblings, 1 reply; 15+ messages in thread From: Laurent Pinchart @ 2024-10-07 22:25 UTC (permalink / raw) To: Ulf Hansson Cc: Sakari Ailus, dri-devel, linux-kernel, linux-bluetooth, linux-clk, linux-crypto, dmaengine, linux-gpio, amd-gfx, nouveau, linux-stm32, linux-arm-kernel, linux-i2c, linux-i3c, linux-iio, linux-input, patches, iommu, imx, linux-mediatek, linux-media, linux-mmc, linux-mtd, netdev, linux-wireless, linux-pci, linux-phy, linux-pwm, linux-remoteproc, linux-sound, linux-spi, linux-staging, linux-usb, linux-serial, greybus-dev, asahi, rafael, Andy Shevchenko Hi Ulf, On Tue, Oct 08, 2024 at 12:08:24AM +0200, Ulf Hansson wrote: > On Mon, 7 Oct 2024 at 20:49, Laurent Pinchart wrote: > > On Fri, Oct 04, 2024 at 04:38:36PM +0200, Ulf Hansson wrote: > > > On Fri, 4 Oct 2024 at 11:41, Sakari Ailus wrote: > > > > > > > > Hello everyone, > > > > > > > > This set will switch the users of pm_runtime_put_autosuspend() to > > > > __pm_runtime_put_autosuspend() while the former will soon be re-purposed > > > > to include a call to pm_runtime_mark_last_busy(). The two are almost > > > > always used together, apart from bugs which are likely common. Going > > > > forward, most new users should be using pm_runtime_put_autosuspend(). > > > > > > > > Once this conversion is done and pm_runtime_put_autosuspend() re-purposed, > > > > I'll post another set to merge the calls to __pm_runtime_put_autosuspend() > > > > and pm_runtime_mark_last_busy(). > > > > > > That sounds like it could cause a lot of churns. > > > > > > Why not add a new helper function that does the > > > pm_runtime_put_autosuspend() and the pm_runtime_mark_last_busy() > > > things? Then we can start moving users over to this new interface, > > > rather than having this intermediate step? > > > > I think the API would be nicer if we used the shortest and simplest > > function names for the most common use cases. Following > > pm_runtime_put_autosuspend() with pm_runtime_mark_last_busy() is that > > most common use case. That's why I like Sakari's approach of repurposing > > pm_runtime_put_autosuspend(), and introducing > > __pm_runtime_put_autosuspend() for the odd cases where > > pm_runtime_mark_last_busy() shouldn't be called. > > Okay, so the reason for this approach is because we couldn't find a > short and descriptive name that could be used in favor of > pm_runtime_put_autosuspend(). Let me throw some ideas at it and maybe > you like it - or not. :-) I like the idea at least :-) > I don't know what options you guys discussed, but to me the entire > "autosuspend"-suffix isn't really that necessary in my opinion. There > are more ways than calling pm_runtime_put_autosuspend() that triggers > us to use the RPM_AUTO flag for rpm_suspend(). For example, just > calling pm_runtime_put() has the similar effect. To be honest, I'm lost there. pm_runtime_put() calls __pm_runtime_idle(RPM_GET_PUT | RPM_ASYNC), while pm_runtime_put_autosuspend() calls __pm_runtime_suspend(RPM_GET_PUT | RPM_ASYNC | RPM_AUTO). > > Moreover, it's similar for pm_runtime_mark_last_busy(), it's called > during rpm_resume() too, for example. So why bother about having > "mark_last_busy" in the new name too. > > That said, my suggestion is simply "pm_runtime_put_suspend". Can we do even better, and make pm_runtime_put() to handle autosuspend automatically when autosuspend is enabled ? > If you don't like it, I will certainly not object to your current > approach, even if I think it leads to unnecessary churns. > > [...] > > Kind regards > Uffe -- Regards, Laurent Pinchart ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 00/51] treewide: Switch to __pm_runtime_put_autosuspend() 2024-10-07 22:25 ` Laurent Pinchart @ 2024-10-07 22:34 ` Ulf Hansson 2024-10-08 18:24 ` Rafael J. Wysocki 0 siblings, 1 reply; 15+ messages in thread From: Ulf Hansson @ 2024-10-07 22:34 UTC (permalink / raw) To: Laurent Pinchart Cc: Sakari Ailus, dri-devel, linux-kernel, linux-bluetooth, linux-clk, linux-crypto, dmaengine, linux-gpio, amd-gfx, nouveau, linux-stm32, linux-arm-kernel, linux-i2c, linux-i3c, linux-iio, linux-input, patches, iommu, imx, linux-mediatek, linux-media, linux-mmc, linux-mtd, netdev, linux-wireless, linux-pci, linux-phy, linux-pwm, linux-remoteproc, linux-sound, linux-spi, linux-staging, linux-usb, linux-serial, greybus-dev, asahi, rafael, Andy Shevchenko On Tue, 8 Oct 2024 at 00:25, Laurent Pinchart <laurent.pinchart@ideasonboard.com> wrote: > > Hi Ulf, > > On Tue, Oct 08, 2024 at 12:08:24AM +0200, Ulf Hansson wrote: > > On Mon, 7 Oct 2024 at 20:49, Laurent Pinchart wrote: > > > On Fri, Oct 04, 2024 at 04:38:36PM +0200, Ulf Hansson wrote: > > > > On Fri, 4 Oct 2024 at 11:41, Sakari Ailus wrote: > > > > > > > > > > Hello everyone, > > > > > > > > > > This set will switch the users of pm_runtime_put_autosuspend() to > > > > > __pm_runtime_put_autosuspend() while the former will soon be re-purposed > > > > > to include a call to pm_runtime_mark_last_busy(). The two are almost > > > > > always used together, apart from bugs which are likely common. Going > > > > > forward, most new users should be using pm_runtime_put_autosuspend(). > > > > > > > > > > Once this conversion is done and pm_runtime_put_autosuspend() re-purposed, > > > > > I'll post another set to merge the calls to __pm_runtime_put_autosuspend() > > > > > and pm_runtime_mark_last_busy(). > > > > > > > > That sounds like it could cause a lot of churns. > > > > > > > > Why not add a new helper function that does the > > > > pm_runtime_put_autosuspend() and the pm_runtime_mark_last_busy() > > > > things? Then we can start moving users over to this new interface, > > > > rather than having this intermediate step? > > > > > > I think the API would be nicer if we used the shortest and simplest > > > function names for the most common use cases. Following > > > pm_runtime_put_autosuspend() with pm_runtime_mark_last_busy() is that > > > most common use case. That's why I like Sakari's approach of repurposing > > > pm_runtime_put_autosuspend(), and introducing > > > __pm_runtime_put_autosuspend() for the odd cases where > > > pm_runtime_mark_last_busy() shouldn't be called. > > > > Okay, so the reason for this approach is because we couldn't find a > > short and descriptive name that could be used in favor of > > pm_runtime_put_autosuspend(). Let me throw some ideas at it and maybe > > you like it - or not. :-) > > I like the idea at least :-) > > > I don't know what options you guys discussed, but to me the entire > > "autosuspend"-suffix isn't really that necessary in my opinion. There > > are more ways than calling pm_runtime_put_autosuspend() that triggers > > us to use the RPM_AUTO flag for rpm_suspend(). For example, just > > calling pm_runtime_put() has the similar effect. > > To be honest, I'm lost there. pm_runtime_put() calls > __pm_runtime_idle(RPM_GET_PUT | RPM_ASYNC), while > pm_runtime_put_autosuspend() calls __pm_runtime_suspend(RPM_GET_PUT | > RPM_ASYNC | RPM_AUTO). __pm_runtime_idle() ends up calling rpm_idle(), which may call rpm_suspend() - if it succeeds to idle the device. In that case, it tags on the RPM_AUTO flag in the call to rpm_suspend(). Quite similar to what is happening when calling pm_runtime_put_autosuspend(). > > > > > Moreover, it's similar for pm_runtime_mark_last_busy(), it's called > > during rpm_resume() too, for example. So why bother about having > > "mark_last_busy" in the new name too. > > > > That said, my suggestion is simply "pm_runtime_put_suspend". > > Can we do even better, and make pm_runtime_put() to handle autosuspend > automatically when autosuspend is enabled ? As stated above, this is already the case. > > > If you don't like it, I will certainly not object to your current > > approach, even if I think it leads to unnecessary churns. > > > > [...] > > > > Kind regards > > Uffe > > -- > Regards, > > Laurent Pinchart Kind regards Uffe ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 00/51] treewide: Switch to __pm_runtime_put_autosuspend() 2024-10-07 22:34 ` Ulf Hansson @ 2024-10-08 18:24 ` Rafael J. Wysocki 2024-10-09 10:20 ` Rafael J. Wysocki ` (2 more replies) 0 siblings, 3 replies; 15+ messages in thread From: Rafael J. Wysocki @ 2024-10-08 18:24 UTC (permalink / raw) To: Ulf Hansson, Laurent Pinchart, Sakari Ailus Cc: dri-devel, linux-kernel, linux-bluetooth, linux-clk, linux-crypto, dmaengine, linux-gpio, amd-gfx, nouveau, linux-stm32, linux-arm-kernel, linux-i2c, linux-i3c, linux-iio, linux-input, patches, iommu, imx, linux-mediatek, linux-media, linux-mmc, linux-mtd, netdev, linux-wireless, linux-pci, linux-phy, linux-pwm, linux-remoteproc, linux-sound, linux-spi, linux-staging, linux-usb, linux-serial, greybus-dev, asahi, Andy Shevchenko On Tue, Oct 8, 2024 at 12:35 AM Ulf Hansson <ulf.hansson@linaro.org> wrote: > > On Tue, 8 Oct 2024 at 00:25, Laurent Pinchart > <laurent.pinchart@ideasonboard.com> wrote: > > > > Hi Ulf, > > > > On Tue, Oct 08, 2024 at 12:08:24AM +0200, Ulf Hansson wrote: > > > On Mon, 7 Oct 2024 at 20:49, Laurent Pinchart wrote: > > > > On Fri, Oct 04, 2024 at 04:38:36PM +0200, Ulf Hansson wrote: > > > > > On Fri, 4 Oct 2024 at 11:41, Sakari Ailus wrote: > > > > > > > > > > > > Hello everyone, > > > > > > > > > > > > This set will switch the users of pm_runtime_put_autosuspend() to > > > > > > __pm_runtime_put_autosuspend() while the former will soon be re-purposed > > > > > > to include a call to pm_runtime_mark_last_busy(). The two are almost > > > > > > always used together, apart from bugs which are likely common. Going > > > > > > forward, most new users should be using pm_runtime_put_autosuspend(). > > > > > > > > > > > > Once this conversion is done and pm_runtime_put_autosuspend() re-purposed, > > > > > > I'll post another set to merge the calls to __pm_runtime_put_autosuspend() > > > > > > and pm_runtime_mark_last_busy(). > > > > > > > > > > That sounds like it could cause a lot of churns. > > > > > > > > > > Why not add a new helper function that does the > > > > > pm_runtime_put_autosuspend() and the pm_runtime_mark_last_busy() > > > > > things? Then we can start moving users over to this new interface, > > > > > rather than having this intermediate step? > > > > > > > > I think the API would be nicer if we used the shortest and simplest > > > > function names for the most common use cases. Following > > > > pm_runtime_put_autosuspend() with pm_runtime_mark_last_busy() is that > > > > most common use case. That's why I like Sakari's approach of repurposing > > > > pm_runtime_put_autosuspend(), and introducing > > > > __pm_runtime_put_autosuspend() for the odd cases where > > > > pm_runtime_mark_last_busy() shouldn't be called. > > > > > > Okay, so the reason for this approach is because we couldn't find a > > > short and descriptive name that could be used in favor of > > > pm_runtime_put_autosuspend(). Let me throw some ideas at it and maybe > > > you like it - or not. :-) > > > > I like the idea at least :-) > > > > > I don't know what options you guys discussed, but to me the entire > > > "autosuspend"-suffix isn't really that necessary in my opinion. There > > > are more ways than calling pm_runtime_put_autosuspend() that triggers > > > us to use the RPM_AUTO flag for rpm_suspend(). For example, just > > > calling pm_runtime_put() has the similar effect. > > > > To be honest, I'm lost there. pm_runtime_put() calls > > __pm_runtime_idle(RPM_GET_PUT | RPM_ASYNC), while > > pm_runtime_put_autosuspend() calls __pm_runtime_suspend(RPM_GET_PUT | > > RPM_ASYNC | RPM_AUTO). > > __pm_runtime_idle() ends up calling rpm_idle(), which may call > rpm_suspend() - if it succeeds to idle the device. In that case, it > tags on the RPM_AUTO flag in the call to rpm_suspend(). Quite similar > to what is happening when calling pm_runtime_put_autosuspend(). Right. For almost everybody, except for a small bunch of drivers that actually have a .runtime_idle() callback, pm_runtime_put() is literally equivalent to pm_runtime_put_autosuspend(). So really the question is why anyone who doesn't provide a .runtime_idle() callback bothers with using this special pm_runtime_put_autosuspend() thing, which really means "do a runtime_put(), but skip my .runtime_idle() callback". > > > > > > > > Moreover, it's similar for pm_runtime_mark_last_busy(), it's called > > > during rpm_resume() too, for example. So why bother about having > > > "mark_last_busy" in the new name too. > > > > > > That said, my suggestion is simply "pm_runtime_put_suspend". > > > > Can we do even better, and make pm_runtime_put() to handle autosuspend > > automatically when autosuspend is enabled ? > > As stated above, this is already the case. What really is needed appears to be a combination of pm_runtime_mark_last_busy() with pm_runtime_put(). Granted, pm_runtime_put() could do the pm_runtime_mark_last_busy() thing automatically if autosuspend is enabled and the only consequence of it might be delaying a suspend of the device until its autosuspend timer expires, which should not be a problem in the vast majority of cases. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 00/51] treewide: Switch to __pm_runtime_put_autosuspend() 2024-10-08 18:24 ` Rafael J. Wysocki @ 2024-10-09 10:20 ` Rafael J. Wysocki 2024-10-09 10:27 ` Ulf Hansson 2024-10-09 12:48 ` Richard Fitzgerald 2 siblings, 0 replies; 15+ messages in thread From: Rafael J. Wysocki @ 2024-10-09 10:20 UTC (permalink / raw) To: Ulf Hansson, Laurent Pinchart, Sakari Ailus Cc: dri-devel, linux-kernel, linux-bluetooth, linux-clk, linux-crypto, dmaengine, linux-gpio, amd-gfx, nouveau, linux-stm32, linux-arm-kernel, linux-i2c, linux-i3c, linux-iio, linux-input, patches, iommu, imx, linux-mediatek, linux-media, linux-mmc, linux-mtd, netdev, linux-wireless, linux-pci, linux-phy, linux-pwm, linux-remoteproc, linux-sound, linux-spi, linux-staging, linux-usb, linux-serial, greybus-dev, asahi, Andy Shevchenko On Tue, Oct 8, 2024 at 8:24 PM Rafael J. Wysocki <rafael@kernel.org> wrote: > > On Tue, Oct 8, 2024 at 12:35 AM Ulf Hansson <ulf.hansson@linaro.org> wrote: > > > > On Tue, 8 Oct 2024 at 00:25, Laurent Pinchart > > <laurent.pinchart@ideasonboard.com> wrote: > > > > > > Hi Ulf, > > > > > > On Tue, Oct 08, 2024 at 12:08:24AM +0200, Ulf Hansson wrote: > > > > On Mon, 7 Oct 2024 at 20:49, Laurent Pinchart wrote: > > > > > On Fri, Oct 04, 2024 at 04:38:36PM +0200, Ulf Hansson wrote: > > > > > > On Fri, 4 Oct 2024 at 11:41, Sakari Ailus wrote: > > > > > > > > > > > > > > Hello everyone, > > > > > > > > > > > > > > This set will switch the users of pm_runtime_put_autosuspend() to > > > > > > > __pm_runtime_put_autosuspend() while the former will soon be re-purposed > > > > > > > to include a call to pm_runtime_mark_last_busy(). The two are almost > > > > > > > always used together, apart from bugs which are likely common. Going > > > > > > > forward, most new users should be using pm_runtime_put_autosuspend(). > > > > > > > > > > > > > > Once this conversion is done and pm_runtime_put_autosuspend() re-purposed, > > > > > > > I'll post another set to merge the calls to __pm_runtime_put_autosuspend() > > > > > > > and pm_runtime_mark_last_busy(). > > > > > > > > > > > > That sounds like it could cause a lot of churns. > > > > > > > > > > > > Why not add a new helper function that does the > > > > > > pm_runtime_put_autosuspend() and the pm_runtime_mark_last_busy() > > > > > > things? Then we can start moving users over to this new interface, > > > > > > rather than having this intermediate step? > > > > > > > > > > I think the API would be nicer if we used the shortest and simplest > > > > > function names for the most common use cases. Following > > > > > pm_runtime_put_autosuspend() with pm_runtime_mark_last_busy() is that > > > > > most common use case. That's why I like Sakari's approach of repurposing > > > > > pm_runtime_put_autosuspend(), and introducing > > > > > __pm_runtime_put_autosuspend() for the odd cases where > > > > > pm_runtime_mark_last_busy() shouldn't be called. > > > > > > > > Okay, so the reason for this approach is because we couldn't find a > > > > short and descriptive name that could be used in favor of > > > > pm_runtime_put_autosuspend(). Let me throw some ideas at it and maybe > > > > you like it - or not. :-) > > > > > > I like the idea at least :-) > > > > > > > I don't know what options you guys discussed, but to me the entire > > > > "autosuspend"-suffix isn't really that necessary in my opinion. There > > > > are more ways than calling pm_runtime_put_autosuspend() that triggers > > > > us to use the RPM_AUTO flag for rpm_suspend(). For example, just > > > > calling pm_runtime_put() has the similar effect. > > > > > > To be honest, I'm lost there. pm_runtime_put() calls > > > __pm_runtime_idle(RPM_GET_PUT | RPM_ASYNC), while > > > pm_runtime_put_autosuspend() calls __pm_runtime_suspend(RPM_GET_PUT | > > > RPM_ASYNC | RPM_AUTO). > > > > __pm_runtime_idle() ends up calling rpm_idle(), which may call > > rpm_suspend() - if it succeeds to idle the device. In that case, it > > tags on the RPM_AUTO flag in the call to rpm_suspend(). Quite similar > > to what is happening when calling pm_runtime_put_autosuspend(). > > Right. > > For almost everybody, except for a small bunch of drivers that > actually have a .runtime_idle() callback, pm_runtime_put() is > literally equivalent to pm_runtime_put_autosuspend(). > > So really the question is why anyone who doesn't provide a > .runtime_idle() callback bothers with using this special > pm_runtime_put_autosuspend() thing, which really means "do a > runtime_put(), but skip my .runtime_idle() callback". > > > > > > > > > > > > Moreover, it's similar for pm_runtime_mark_last_busy(), it's called > > > > during rpm_resume() too, for example. So why bother about having > > > > "mark_last_busy" in the new name too. > > > > > > > > That said, my suggestion is simply "pm_runtime_put_suspend". > > > > > > Can we do even better, and make pm_runtime_put() to handle autosuspend > > > automatically when autosuspend is enabled ? > > > > As stated above, this is already the case. > > What really is needed appears to be a combination of > pm_runtime_mark_last_busy() with pm_runtime_put(). > > Granted, pm_runtime_put() could do the pm_runtime_mark_last_busy() > thing automatically if autosuspend is enabled and the only consequence > of it might be delaying a suspend of the device until its autosuspend > timer expires, which should not be a problem in the vast majority of > cases. That said, it is likely better to avoid surprising the current users of pm_runtime_put() and define something like static inline void pm_runtime_touch_and_put(struct device *dev) { pm_runtime_mark_last_busy(dev); pm_runtime_put(dev); } ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 00/51] treewide: Switch to __pm_runtime_put_autosuspend() 2024-10-08 18:24 ` Rafael J. Wysocki 2024-10-09 10:20 ` Rafael J. Wysocki @ 2024-10-09 10:27 ` Ulf Hansson 2024-10-09 12:48 ` Richard Fitzgerald 2 siblings, 0 replies; 15+ messages in thread From: Ulf Hansson @ 2024-10-09 10:27 UTC (permalink / raw) To: Rafael J. Wysocki Cc: Laurent Pinchart, Sakari Ailus, dri-devel, linux-kernel, linux-bluetooth, linux-clk, linux-crypto, dmaengine, linux-gpio, amd-gfx, nouveau, linux-stm32, linux-arm-kernel, linux-i2c, linux-i3c, linux-iio, linux-input, patches, iommu, imx, linux-mediatek, linux-media, linux-mmc, linux-mtd, netdev, linux-wireless, linux-pci, linux-phy, linux-pwm, linux-remoteproc, linux-sound, linux-spi, linux-staging, linux-usb, linux-serial, greybus-dev, asahi, Andy Shevchenko On Tue, 8 Oct 2024 at 20:25, Rafael J. Wysocki <rafael@kernel.org> wrote: > > On Tue, Oct 8, 2024 at 12:35 AM Ulf Hansson <ulf.hansson@linaro.org> wrote: > > > > On Tue, 8 Oct 2024 at 00:25, Laurent Pinchart > > <laurent.pinchart@ideasonboard.com> wrote: > > > > > > Hi Ulf, > > > > > > On Tue, Oct 08, 2024 at 12:08:24AM +0200, Ulf Hansson wrote: > > > > On Mon, 7 Oct 2024 at 20:49, Laurent Pinchart wrote: > > > > > On Fri, Oct 04, 2024 at 04:38:36PM +0200, Ulf Hansson wrote: > > > > > > On Fri, 4 Oct 2024 at 11:41, Sakari Ailus wrote: > > > > > > > > > > > > > > Hello everyone, > > > > > > > > > > > > > > This set will switch the users of pm_runtime_put_autosuspend() to > > > > > > > __pm_runtime_put_autosuspend() while the former will soon be re-purposed > > > > > > > to include a call to pm_runtime_mark_last_busy(). The two are almost > > > > > > > always used together, apart from bugs which are likely common. Going > > > > > > > forward, most new users should be using pm_runtime_put_autosuspend(). > > > > > > > > > > > > > > Once this conversion is done and pm_runtime_put_autosuspend() re-purposed, > > > > > > > I'll post another set to merge the calls to __pm_runtime_put_autosuspend() > > > > > > > and pm_runtime_mark_last_busy(). > > > > > > > > > > > > That sounds like it could cause a lot of churns. > > > > > > > > > > > > Why not add a new helper function that does the > > > > > > pm_runtime_put_autosuspend() and the pm_runtime_mark_last_busy() > > > > > > things? Then we can start moving users over to this new interface, > > > > > > rather than having this intermediate step? > > > > > > > > > > I think the API would be nicer if we used the shortest and simplest > > > > > function names for the most common use cases. Following > > > > > pm_runtime_put_autosuspend() with pm_runtime_mark_last_busy() is that > > > > > most common use case. That's why I like Sakari's approach of repurposing > > > > > pm_runtime_put_autosuspend(), and introducing > > > > > __pm_runtime_put_autosuspend() for the odd cases where > > > > > pm_runtime_mark_last_busy() shouldn't be called. > > > > > > > > Okay, so the reason for this approach is because we couldn't find a > > > > short and descriptive name that could be used in favor of > > > > pm_runtime_put_autosuspend(). Let me throw some ideas at it and maybe > > > > you like it - or not. :-) > > > > > > I like the idea at least :-) > > > > > > > I don't know what options you guys discussed, but to me the entire > > > > "autosuspend"-suffix isn't really that necessary in my opinion. There > > > > are more ways than calling pm_runtime_put_autosuspend() that triggers > > > > us to use the RPM_AUTO flag for rpm_suspend(). For example, just > > > > calling pm_runtime_put() has the similar effect. > > > > > > To be honest, I'm lost there. pm_runtime_put() calls > > > __pm_runtime_idle(RPM_GET_PUT | RPM_ASYNC), while > > > pm_runtime_put_autosuspend() calls __pm_runtime_suspend(RPM_GET_PUT | > > > RPM_ASYNC | RPM_AUTO). > > > > __pm_runtime_idle() ends up calling rpm_idle(), which may call > > rpm_suspend() - if it succeeds to idle the device. In that case, it > > tags on the RPM_AUTO flag in the call to rpm_suspend(). Quite similar > > to what is happening when calling pm_runtime_put_autosuspend(). > > Right. > > For almost everybody, except for a small bunch of drivers that > actually have a .runtime_idle() callback, pm_runtime_put() is > literally equivalent to pm_runtime_put_autosuspend(). > > So really the question is why anyone who doesn't provide a > .runtime_idle() callback bothers with using this special > pm_runtime_put_autosuspend() thing, which really means "do a > runtime_put(), but skip my .runtime_idle() callback". My guess is that it's in most cases a legacy pattern that is being followed. Also note that rpm_idle() didn't "always" tag on the RPM_AUTO flag, even if it's quite a while ago (2013) since we added it. Unless there is some actual optimization involved, as it also allows us to skip calling rpm_idle() and go directly for rpm_suspend(). > > > > > > > > > > > > Moreover, it's similar for pm_runtime_mark_last_busy(), it's called > > > > during rpm_resume() too, for example. So why bother about having > > > > "mark_last_busy" in the new name too. > > > > > > > > That said, my suggestion is simply "pm_runtime_put_suspend". > > > > > > Can we do even better, and make pm_runtime_put() to handle autosuspend > > > automatically when autosuspend is enabled ? > > > > As stated above, this is already the case. > > What really is needed appears to be a combination of > pm_runtime_mark_last_busy() with pm_runtime_put(). This makes sense to me too, but I don't think we should limit it to this. Making pm_runtime_put_autosuspend (or if the name "pm_runtime_put_suspend" is better?) to do the similar thing, is probably a good idea too. At least in my opinion. > > Granted, pm_runtime_put() could do the pm_runtime_mark_last_busy() > thing automatically if autosuspend is enabled and the only consequence > of it might be delaying a suspend of the device until its autosuspend > timer expires, which should not be a problem in the vast majority of > cases. Right. I guess we should expect the *sync* variants to be used, if the timer really needs to be overridden. Kind regards Uffe ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 00/51] treewide: Switch to __pm_runtime_put_autosuspend() 2024-10-08 18:24 ` Rafael J. Wysocki 2024-10-09 10:20 ` Rafael J. Wysocki 2024-10-09 10:27 ` Ulf Hansson @ 2024-10-09 12:48 ` Richard Fitzgerald 2024-10-09 13:34 ` Rafael J. Wysocki 2 siblings, 1 reply; 15+ messages in thread From: Richard Fitzgerald @ 2024-10-09 12:48 UTC (permalink / raw) To: Rafael J. Wysocki, Ulf Hansson, Laurent Pinchart, Sakari Ailus Cc: dri-devel, linux-kernel, linux-bluetooth, linux-clk, linux-crypto, dmaengine, linux-gpio, amd-gfx, nouveau, linux-stm32, linux-arm-kernel, linux-i2c, linux-i3c, linux-iio, linux-input, patches, iommu, imx, linux-mediatek, linux-media, linux-mmc, linux-mtd, netdev, linux-wireless, linux-pci, linux-phy, linux-pwm, linux-remoteproc, linux-sound, linux-spi, linux-staging, linux-usb, linux-serial, greybus-dev, asahi, Andy Shevchenko On 08/10/2024 7:24 pm, Rafael J. Wysocki wrote: > On Tue, Oct 8, 2024 at 12:35 AM Ulf Hansson <ulf.hansson@linaro.org> wrote: >> >> On Tue, 8 Oct 2024 at 00:25, Laurent Pinchart >> <laurent.pinchart@ideasonboard.com> wrote: >>> >>> Hi Ulf, >>> >>> On Tue, Oct 08, 2024 at 12:08:24AM +0200, Ulf Hansson wrote: >>>> On Mon, 7 Oct 2024 at 20:49, Laurent Pinchart wrote: >>>>> On Fri, Oct 04, 2024 at 04:38:36PM +0200, Ulf Hansson wrote: >>>>>> On Fri, 4 Oct 2024 at 11:41, Sakari Ailus wrote: >>>>>>> >>>>>>> Hello everyone, >>>>>>> >>>>>>> This set will switch the users of pm_runtime_put_autosuspend() to >>>>>>> __pm_runtime_put_autosuspend() while the former will soon be re-purposed >>>>>>> to include a call to pm_runtime_mark_last_busy(). The two are almost >>>>>>> always used together, apart from bugs which are likely common. Going >>>>>>> forward, most new users should be using pm_runtime_put_autosuspend(). >>>>>>> >>>>>>> Once this conversion is done and pm_runtime_put_autosuspend() re-purposed, >>>>>>> I'll post another set to merge the calls to __pm_runtime_put_autosuspend() >>>>>>> and pm_runtime_mark_last_busy(). >>>>>> >>>>>> That sounds like it could cause a lot of churns. >>>>>> >>>>>> Why not add a new helper function that does the >>>>>> pm_runtime_put_autosuspend() and the pm_runtime_mark_last_busy() >>>>>> things? Then we can start moving users over to this new interface, >>>>>> rather than having this intermediate step? >>>>> >>>>> I think the API would be nicer if we used the shortest and simplest >>>>> function names for the most common use cases. Following >>>>> pm_runtime_put_autosuspend() with pm_runtime_mark_last_busy() is that >>>>> most common use case. That's why I like Sakari's approach of repurposing >>>>> pm_runtime_put_autosuspend(), and introducing >>>>> __pm_runtime_put_autosuspend() for the odd cases where >>>>> pm_runtime_mark_last_busy() shouldn't be called. >>>> >>>> Okay, so the reason for this approach is because we couldn't find a >>>> short and descriptive name that could be used in favor of >>>> pm_runtime_put_autosuspend(). Let me throw some ideas at it and maybe >>>> you like it - or not. :-) >>> >>> I like the idea at least :-) >>> >>>> I don't know what options you guys discussed, but to me the entire >>>> "autosuspend"-suffix isn't really that necessary in my opinion. There >>>> are more ways than calling pm_runtime_put_autosuspend() that triggers >>>> us to use the RPM_AUTO flag for rpm_suspend(). For example, just >>>> calling pm_runtime_put() has the similar effect. >>> >>> To be honest, I'm lost there. pm_runtime_put() calls >>> __pm_runtime_idle(RPM_GET_PUT | RPM_ASYNC), while >>> pm_runtime_put_autosuspend() calls __pm_runtime_suspend(RPM_GET_PUT | >>> RPM_ASYNC | RPM_AUTO). >> >> __pm_runtime_idle() ends up calling rpm_idle(), which may call >> rpm_suspend() - if it succeeds to idle the device. In that case, it >> tags on the RPM_AUTO flag in the call to rpm_suspend(). Quite similar >> to what is happening when calling pm_runtime_put_autosuspend(). > > Right. > > For almost everybody, except for a small bunch of drivers that > actually have a .runtime_idle() callback, pm_runtime_put() is > literally equivalent to pm_runtime_put_autosuspend(). > > So really the question is why anyone who doesn't provide a > .runtime_idle() callback bothers with using this special > pm_runtime_put_autosuspend() thing, Because they are following the documentation? It says: "Drivers should call pm_runtime_mark_last_busy() to update this field after carrying out I/O, typically just before calling pm_runtime_put_autosuspend()." and "In order to use autosuspend, subsystems or drivers must call pm_runtime_use_autosuspend() (...), and thereafter they should use the various `*_autosuspend()` helper functions instead of the non# autosuspend counterparts" So the documentation says I should be using pm_runtime_put_autosuspend() instead of pm_runtime_put(). Seems unfair to criticise people for following the documentation. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 00/51] treewide: Switch to __pm_runtime_put_autosuspend() 2024-10-09 12:48 ` Richard Fitzgerald @ 2024-10-09 13:34 ` Rafael J. Wysocki 0 siblings, 0 replies; 15+ messages in thread From: Rafael J. Wysocki @ 2024-10-09 13:34 UTC (permalink / raw) To: Richard Fitzgerald, Sakari Ailus Cc: Ulf Hansson, Laurent Pinchart, dri-devel, linux-kernel, linux-bluetooth, linux-clk, linux-crypto, dmaengine, linux-gpio, amd-gfx, nouveau, linux-stm32, linux-arm-kernel, linux-i2c, linux-i3c, linux-iio, linux-input, patches, iommu, imx, linux-mediatek, linux-media, linux-mmc, linux-mtd, netdev, linux-wireless, linux-pci, linux-phy, linux-pwm, linux-remoteproc, linux-sound, linux-spi, linux-staging, linux-usb, linux-serial, greybus-dev, asahi, Andy Shevchenko, Uwe Kleine-König On Wed, Oct 9, 2024 at 2:48 PM Richard Fitzgerald <rf@opensource.cirrus.com> wrote: > > On 08/10/2024 7:24 pm, Rafael J. Wysocki wrote: > > On Tue, Oct 8, 2024 at 12:35 AM Ulf Hansson <ulf.hansson@linaro.org> wrote: > >> > >> On Tue, 8 Oct 2024 at 00:25, Laurent Pinchart > >> <laurent.pinchart@ideasonboard.com> wrote: > >>> > >>> Hi Ulf, > >>> > >>> On Tue, Oct 08, 2024 at 12:08:24AM +0200, Ulf Hansson wrote: > >>>> On Mon, 7 Oct 2024 at 20:49, Laurent Pinchart wrote: > >>>>> On Fri, Oct 04, 2024 at 04:38:36PM +0200, Ulf Hansson wrote: > >>>>>> On Fri, 4 Oct 2024 at 11:41, Sakari Ailus wrote: > >>>>>>> > >>>>>>> Hello everyone, > >>>>>>> > >>>>>>> This set will switch the users of pm_runtime_put_autosuspend() to > >>>>>>> __pm_runtime_put_autosuspend() while the former will soon be re-purposed > >>>>>>> to include a call to pm_runtime_mark_last_busy(). The two are almost > >>>>>>> always used together, apart from bugs which are likely common. Going > >>>>>>> forward, most new users should be using pm_runtime_put_autosuspend(). > >>>>>>> > >>>>>>> Once this conversion is done and pm_runtime_put_autosuspend() re-purposed, > >>>>>>> I'll post another set to merge the calls to __pm_runtime_put_autosuspend() > >>>>>>> and pm_runtime_mark_last_busy(). > >>>>>> > >>>>>> That sounds like it could cause a lot of churns. > >>>>>> > >>>>>> Why not add a new helper function that does the > >>>>>> pm_runtime_put_autosuspend() and the pm_runtime_mark_last_busy() > >>>>>> things? Then we can start moving users over to this new interface, > >>>>>> rather than having this intermediate step? > >>>>> > >>>>> I think the API would be nicer if we used the shortest and simplest > >>>>> function names for the most common use cases. Following > >>>>> pm_runtime_put_autosuspend() with pm_runtime_mark_last_busy() is that > >>>>> most common use case. That's why I like Sakari's approach of repurposing > >>>>> pm_runtime_put_autosuspend(), and introducing > >>>>> __pm_runtime_put_autosuspend() for the odd cases where > >>>>> pm_runtime_mark_last_busy() shouldn't be called. > >>>> > >>>> Okay, so the reason for this approach is because we couldn't find a > >>>> short and descriptive name that could be used in favor of > >>>> pm_runtime_put_autosuspend(). Let me throw some ideas at it and maybe > >>>> you like it - or not. :-) > >>> > >>> I like the idea at least :-) > >>> > >>>> I don't know what options you guys discussed, but to me the entire > >>>> "autosuspend"-suffix isn't really that necessary in my opinion. There > >>>> are more ways than calling pm_runtime_put_autosuspend() that triggers > >>>> us to use the RPM_AUTO flag for rpm_suspend(). For example, just > >>>> calling pm_runtime_put() has the similar effect. > >>> > >>> To be honest, I'm lost there. pm_runtime_put() calls > >>> __pm_runtime_idle(RPM_GET_PUT | RPM_ASYNC), while > >>> pm_runtime_put_autosuspend() calls __pm_runtime_suspend(RPM_GET_PUT | > >>> RPM_ASYNC | RPM_AUTO). > >> > >> __pm_runtime_idle() ends up calling rpm_idle(), which may call > >> rpm_suspend() - if it succeeds to idle the device. In that case, it > >> tags on the RPM_AUTO flag in the call to rpm_suspend(). Quite similar > >> to what is happening when calling pm_runtime_put_autosuspend(). > > > > Right. > > > > For almost everybody, except for a small bunch of drivers that > > actually have a .runtime_idle() callback, pm_runtime_put() is > > literally equivalent to pm_runtime_put_autosuspend(). > > > > So really the question is why anyone who doesn't provide a > > .runtime_idle() callback bothers with using this special > > pm_runtime_put_autosuspend() thing, > > Because they are following the documentation? It says: > > "Drivers should call pm_runtime_mark_last_busy() to update this field > after carrying out I/O, typically just before calling > pm_runtime_put_autosuspend()." > > and > > "In order to use autosuspend, subsystems or drivers must call > pm_runtime_use_autosuspend() (...), and thereafter they should use the > various `*_autosuspend()` helper functions instead of the non# > autosuspend counterparts" > > So the documentation says I should be using pm_runtime_put_autosuspend() > instead of pm_runtime_put(). > > Seems unfair to criticise people for following the documentation. I'm not criticising anyone, just wondering why they do what they do. "Because it is documented this way" is a fair answer, but it doesn't invalidate the observation that the difference between pm_runtime_put_autosuspend() and pm_runtime_put() boils down to the cases when the .runtime_idle() callback is present (which are few and far between so to speak). Moreover, there are call sites using pm_runtime_*() functions even though they may not know whether or not autosuspend is enabled for the target devices, so the advice given in the documentation cannot be universally followed regardless. This thread is about the way to go, generally speaking, and what I'm saying is effectively that replacing pm_runtime_put_autosuspend() with pm_runtime_put() almost everywhere (if not just everywhere) would be fine with me. I also think that the current users of pm_runtime_put_autosuspend() that is not immediately preceded by pm_runtime_mark_last_busy() can be readily switched over to using pm_runtime_put() instead of it and then pm_runtime_put_autosuspend() can be made call pm_runtime_mark_last_busy(), so the latter can be removed from the code using the former. Note that this last step does not require tree-wide changes, because calling pm_runtime_mark_last_busy() twice in a row for the same device is not a problem. Of course, the documentation needs to be updated in accordance with the code changes, which didn't happen when previous changes were made to pm_runtime_put() and that likely is why it does not reflect the current code. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 00/51] treewide: Switch to __pm_runtime_put_autosuspend() 2024-10-07 18:49 ` Laurent Pinchart 2024-10-07 22:08 ` Ulf Hansson @ 2024-10-08 20:38 ` Uwe Kleine-König 1 sibling, 0 replies; 15+ messages in thread From: Uwe Kleine-König @ 2024-10-08 20:38 UTC (permalink / raw) To: Laurent Pinchart Cc: Ulf Hansson, Sakari Ailus, dri-devel, linux-kernel, linux-bluetooth, linux-clk, linux-crypto, dmaengine, linux-gpio, amd-gfx, nouveau, linux-stm32, linux-arm-kernel, linux-i2c, linux-i3c, linux-iio, linux-input, patches, iommu, imx, linux-mediatek, linux-media, linux-mmc, linux-mtd, netdev, linux-wireless, linux-pci, linux-phy, linux-pwm, linux-remoteproc, linux-sound, linux-spi, linux-staging, linux-usb, linux-serial, greybus-dev, asahi, rafael, Andy Shevchenko [-- Attachment #1: Type: text/plain, Size: 2371 bytes --] Hello, On Mon, Oct 07, 2024 at 09:49:24PM +0300, Laurent Pinchart wrote: > On Fri, Oct 04, 2024 at 04:38:36PM +0200, Ulf Hansson wrote: > > On Fri, 4 Oct 2024 at 11:41, Sakari Ailus <sakari.ailus@linux.intel.com> wrote: > > > > > > Hello everyone, > > > > > > This set will switch the users of pm_runtime_put_autosuspend() to > > > __pm_runtime_put_autosuspend() while the former will soon be re-purposed > > > to include a call to pm_runtime_mark_last_busy(). The two are almost > > > always used together, apart from bugs which are likely common. Going > > > forward, most new users should be using pm_runtime_put_autosuspend(). > > > > > > Once this conversion is done and pm_runtime_put_autosuspend() re-purposed, > > > I'll post another set to merge the calls to __pm_runtime_put_autosuspend() > > > and pm_runtime_mark_last_busy(). > > > > That sounds like it could cause a lot of churns. > > > > Why not add a new helper function that does the > > pm_runtime_put_autosuspend() and the pm_runtime_mark_last_busy() > > things? Then we can start moving users over to this new interface, > > rather than having this intermediate step? > > I think the API would be nicer if we used the shortest and simplest > function names for the most common use cases. Following > pm_runtime_put_autosuspend() with pm_runtime_mark_last_busy() is that > most common use case. That's why I like Sakari's approach of repurposing > pm_runtime_put_autosuspend(), and introducing > __pm_runtime_put_autosuspend() for the odd cases where > pm_runtime_mark_last_busy() shouldn't be called. That's ok for me. However this patch series isn't the optimal path to there because most drivers (i.e. those that already today do pm_runtime_mark_last_busy() in combination with pm_runtime_put_autosuspend()) have to be patched twice. The saner route is: Only convert the drivers with a sole pm_runtime_put_autosuspend() (i.e. without pm_runtime_mark_last_busy()) to __pm_runtime_put_autosuspend(). Then add the mark_last_busy() bits to pm_runtime_put_autosuspend() and then drop the explicit calls to pm_runtime_mark_last_busy() before pm_runtime_put_autosuspend(). (Note this doesn't take into account Rafael's position that pm_runtime_put() might be the saner option. My argument applies for that conversion analogously.) Best regards Uwe [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2024-10-09 13:34 UTC | newest] Thread overview: 15+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-10-04 9:41 [PATCH 00/51] treewide: Switch to __pm_runtime_put_autosuspend() Sakari Ailus 2024-10-04 9:41 ` [PATCH 30/51] net: " Sakari Ailus 2024-10-04 9:41 ` [PATCH 31/51] nfc: trf7970a: " Sakari Ailus 2024-10-04 14:05 ` Krzysztof Kozlowski 2024-10-04 14:38 ` [PATCH 00/51] treewide: " Ulf Hansson 2024-10-07 18:49 ` Laurent Pinchart 2024-10-07 22:08 ` Ulf Hansson 2024-10-07 22:25 ` Laurent Pinchart 2024-10-07 22:34 ` Ulf Hansson 2024-10-08 18:24 ` Rafael J. Wysocki 2024-10-09 10:20 ` Rafael J. Wysocki 2024-10-09 10:27 ` Ulf Hansson 2024-10-09 12:48 ` Richard Fitzgerald 2024-10-09 13:34 ` Rafael J. Wysocki 2024-10-08 20:38 ` Uwe Kleine-König
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).