On Wed, Sep 24, 2014 at 10:46:17PM +0200, Rafael J. Wysocki wrote:
On Wednesday, September 24, 2014 03:15:58 PM Felipe Balbi wrote:
On Wed, Sep 24, 2014 at 10:28:07PM +0200, Rafael J. Wysocki wrote:
On Wednesday, September 24, 2014 09:44:50 PM Vinod Koul wrote:
This patch series adds a simple macro pm_runtime_last_busy_and_autosuspend() which invokes pm_runtime_mark_last_busy() and pm_runtime_put_autosuspend() sequentially. Then we do a tree wide update of current patterns which are present. As evident from log below this pattern is frequent in the kernel.
This series can be found at git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/slave-dma.git topic/pm_runtime_last_busy_and_autosuspend
Fengguang's kbuild has tested it so it shouldn't break things for anyone. Barring one patch (explictyly mentioned in its changelog) rest are simple replacements.
If all are okay, this should be merged thru PM tree as it depends on macro addition.
Subhransu S. Prusty (1): PM: Add helper pm_runtime_last_busy_and_autosuspend()
Vinod Koul (26): dmaengine: ste_dma: use pm_runtime_last_busy_and_autosuspend helper extcon: arizona: use pm_runtime_last_busy_and_autosuspend helper drm/i915: use pm_runtime_last_busy_and_autosuspend helper drm/nouveau: use pm_runtime_last_busy_and_autosuspend helper drm/radeon: use pm_runtime_last_busy_and_autosuspend helper vga_switcheroo: use pm_runtime_last_busy_and_autosuspend helper i2c: designware: use pm_runtime_last_busy_and_autosuspend helper i2c: omap: use pm_runtime_last_busy_and_autosuspend helper i2c: qup: use pm_runtime_last_busy_and_autosuspend helper mfd: ab8500-gpadc: use pm_runtime_last_busy_and_autosuspend helper mfd: arizona: use pm_runtime_last_busy_and_autosuspend helper mei: use pm_runtime_last_busy_and_autosuspend helper mmc: use pm_runtime_last_busy_and_autosuspend helper mmc: mmci: use pm_runtime_last_busy_and_autosuspend helper mmc: omap_hsmmc: use pm_runtime_last_busy_and_autosuspend helper mmc: sdhci-pxav3: use pm_runtime_last_busy_and_autosuspend helper mmc: sdhci: use pm_runtime_last_busy_and_autosuspend helper NFC: trf7970a: use pm_runtime_last_busy_and_autosuspend helper pm2301-charger: use pm_runtime_last_busy_and_autosuspend helper spi: omap2-mcspi: use pm_runtime_last_busy_and_autosuspend helper spi: orion: use pm_runtime_last_busy_and_autosuspend helper spi: ti-qspi: use pm_runtime_last_busy_and_autosuspend helper spi: core: use pm_runtime_last_busy_and_autosuspend helper tty: serial: omap: use pm_runtime_last_busy_and_autosuspend helper usb: musb: omap2430: use pm_runtime_last_busy_and_autosuspend helper video: fbdev: use pm_runtime_last_busy_and_autosuspend helper
Documentation/power/runtime_pm.txt | 4 ++ drivers/dma/ste_dma40.c | 30 ++++--------- drivers/extcon/extcon-arizona.c | 6 +-- drivers/gpu/drm/i915/intel_pm.c | 3 +- drivers/gpu/drm/nouveau/nouveau_connector.c | 3 +- drivers/gpu/drm/nouveau/nouveau_drm.c | 9 +--- drivers/gpu/drm/radeon/radeon_connectors.c | 15 ++---- drivers/gpu/drm/radeon/radeon_drv.c | 5 +- drivers/gpu/drm/radeon/radeon_kms.c | 6 +-- drivers/gpu/vga/vga_switcheroo.c | 7 +-- drivers/i2c/busses/i2c-designware-core.c | 3 +- drivers/i2c/busses/i2c-omap.c | 6 +-- drivers/i2c/busses/i2c-qup.c | 3 +- drivers/mfd/ab8500-gpadc.c | 6 +-- drivers/mfd/arizona-irq.c | 3 +- drivers/misc/mei/client.c | 12 ++---- drivers/mmc/core/core.c | 3 +- drivers/mmc/host/mmci.c | 12 ++---- drivers/mmc/host/omap_hsmmc.c | 19 ++------- drivers/mmc/host/sdhci-pxav3.c | 6 +-- drivers/mmc/host/sdhci.c | 3 +- drivers/nfc/trf7970a.c | 3 +- drivers/power/pm2301_charger.c | 3 +- drivers/spi/spi-omap2-mcspi.c | 9 +--- drivers/spi/spi-orion.c | 3 +- drivers/spi/spi-ti-qspi.c | 5 +- drivers/spi/spi.c | 6 +-- drivers/tty/serial/omap-serial.c | 60 +++++++++------------------ drivers/usb/musb/omap2430.c | 6 +-- drivers/video/fbdev/auo_k190x.c | 9 +--- include/linux/pm_runtime.h | 6 +++ 31 files changed, 97 insertions(+), 177 deletions(-)
OK, I guess this is as good as it gets.
What tree would you like it go through?
Do we really need this new helper ? I mean, the very moment when we decide to implement ->runtime_idle() we will need to get rid of this change. I wonder if it's really valid...
I'm not sure I'm following? This seems to simply implement what drivers have been doing already as one function. Why would it be invalid to reduce code duplication?
For two reasons:
1) the helper has no inteligence whatsoever. It just calls the same functions.
2) the duplication will vanish whenever someone implements ->runtime_idle() and have that call pm_runtime_autosuspend() (like PCI and USB buses are doing today). This will just be yet another line that needs to change.
Frankly though, no strong feelings, I just think it's a commit that doesn't bring that any benefits other than looking like one line was removed.