diff mbox

[v1] dmaengine: dw: balance PM runtime calls

Message ID 1418722801-10630-1-git-send-email-andriy.shevchenko@linux.intel.com (mailing list archive)
State Rejected
Headers show

Commit Message

Andy Shevchenko Dec. 16, 2014, 9:40 a.m. UTC
In case of the PCI driver we will get a warning:
 dw_dmac_pci 0000:00:18.0: Unbalanced pm_runtime_enable!
 dw_dmac_pci 0000:00:18.0: DesignWare DMA Controller, 8 channels

This happens due to pm_runtime_enable() call from the driver when PM runtime is
enabled by core.

This patch moves that call to the platform driver where it might make sense.

Fixes: bb32baf76e56 (dmaengine: dw: enable runtime PM)
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
Vinod, this is a material for v3.19-rc1. Could you, please, review and apply?

 drivers/dma/dw/core.c     | 2 --
 drivers/dma/dw/platform.c | 5 +++++
 2 files changed, 5 insertions(+), 2 deletions(-)

Comments

Vinod Koul Dec. 22, 2014, 3:06 p.m. UTC | #1
On Tue, Dec 16, 2014 at 11:40:01AM +0200, Andy Shevchenko wrote:
> In case of the PCI driver we will get a warning:
>  dw_dmac_pci 0000:00:18.0: Unbalanced pm_runtime_enable!
>  dw_dmac_pci 0000:00:18.0: DesignWare DMA Controller, 8 channels
> 
> This happens due to pm_runtime_enable() call from the driver when PM runtime is
> enabled by core.
> 
> This patch moves that call to the platform driver where it might make sense.
Hmmm, sorry but it is not clear to me how moving it from core to platform
helps solve the problem. Also this make more sense in core as it can be
common acorss various devices
Andy Shevchenko Dec. 30, 2014, 2:34 p.m. UTC | #2
T24gTW9uLCAyMDE0LTEyLTIyIGF0IDIwOjM2ICswNTMwLCBWaW5vZCBLb3VsIHdyb3RlOg0KPiBP
biBUdWUsIERlYyAxNiwgMjAxNCBhdCAxMTo0MDowMUFNICswMjAwLCBBbmR5IFNoZXZjaGVua28g
d3JvdGU6DQo+ID4gSW4gY2FzZSBvZiB0aGUgUENJIGRyaXZlciB3ZSB3aWxsIGdldCBhIHdhcm5p
bmc6DQo+ID4gIGR3X2RtYWNfcGNpIDAwMDA6MDA6MTguMDogVW5iYWxhbmNlZCBwbV9ydW50aW1l
X2VuYWJsZSENCj4gPiAgZHdfZG1hY19wY2kgMDAwMDowMDoxOC4wOiBEZXNpZ25XYXJlIERNQSBD
b250cm9sbGVyLCA4IGNoYW5uZWxzDQo+ID4gDQo+ID4gVGhpcyBoYXBwZW5zIGR1ZSB0byBwbV9y
dW50aW1lX2VuYWJsZSgpIGNhbGwgZnJvbSB0aGUgZHJpdmVyIHdoZW4gUE0gcnVudGltZSBpcw0K
PiA+IGVuYWJsZWQgYnkgY29yZS4NCj4gPiANCj4gPiBUaGlzIHBhdGNoIG1vdmVzIHRoYXQgY2Fs
bCB0byB0aGUgcGxhdGZvcm0gZHJpdmVyIHdoZXJlIGl0IG1pZ2h0IG1ha2Ugc2Vuc2UuDQo+IEht
bW0sIHNvcnJ5IGJ1dCBpdCBpcyBub3QgY2xlYXIgdG8gbWUgaG93IG1vdmluZyBpdCBmcm9tIGNv
cmUgdG8gcGxhdGZvcm0NCj4gaGVscHMgc29sdmUgdGhlIHByb2JsZW0uDQoNCkluIGNhc2Ugb2Yg
UENJIGRyaXZlciB3ZSBhbHJlYWR5IGhhdmUgcnVudGltZSBQTSBlbmFibGVkLCBtZWFud2hpbGUg
aXQncw0Kbm90IHRydWUgZm9yIGFuIEFDUEkgY2FzZSAoc2luY2UgdGhlcmUgaXMgbm8gX1BTMCAv
IF9QUzMgbWV0aG9kcyBmb3IgdGhlDQpETUEgZGV2aWNlKS4NCg0KPiAgQWxzbyB0aGlzIG1ha2Ug
bW9yZSBzZW5zZSBpbiBjb3JlIGFzIGl0IGNhbiBiZQ0KPiBjb21tb24gYWNvcnNzIHZhcmlvdXMg
ZGV2aWNlcw0KDQpXZSBjYW4gZW5hYmxlIGl0IGlmIGl0IHdhcyBkaXNhYmxlZC4NCg0KPiANCj4g
LS0gDQo+IH5WaW5vZA0KPiANCj4gPiANCj4gPiBGaXhlczogYmIzMmJhZjc2ZTU2IChkbWFlbmdp
bmU6IGR3OiBlbmFibGUgcnVudGltZSBQTSkNCj4gPiBTaWduZWQtb2ZmLWJ5OiBBbmR5IFNoZXZj
aGVua28gPGFuZHJpeS5zaGV2Y2hlbmtvQGxpbnV4LmludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiBW
aW5vZCwgdGhpcyBpcyBhIG1hdGVyaWFsIGZvciB2My4xOS1yYzEuIENvdWxkIHlvdSwgcGxlYXNl
LCByZXZpZXcgYW5kIGFwcGx5Pw0KPiA+IA0KPiA+ICBkcml2ZXJzL2RtYS9kdy9jb3JlLmMgICAg
IHwgMiAtLQ0KPiA+ICBkcml2ZXJzL2RtYS9kdy9wbGF0Zm9ybS5jIHwgNSArKysrKw0KPiA+ICAy
IGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkNCj4gPiANCj4g
PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvZHcvY29yZS5jIGIvZHJpdmVycy9kbWEvZHcvY29y
ZS5jDQo+ID4gaW5kZXggYmJhZTIwMi4uZGNmMTlmMCAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJz
L2RtYS9kdy9jb3JlLmMNCj4gPiArKysgYi9kcml2ZXJzL2RtYS9kdy9jb3JlLmMNCj4gPiBAQCAt
MTU2OSw3ICsxNTY5LDYgQEAgaW50IGR3X2RtYV9wcm9iZShzdHJ1Y3QgZHdfZG1hX2NoaXAgKmNo
aXAsIHN0cnVjdCBkd19kbWFfcGxhdGZvcm1fZGF0YSAqcGRhdGEpDQo+ID4gIAlkdy0+dHlwZSA9
IGNoaXAtPnR5cGU7DQo+ID4gIAljaGlwLT5kdyA9IGR3Ow0KPiA+ICANCj4gPiAtCXBtX3J1bnRp
bWVfZW5hYmxlKGNoaXAtPmRldik7DQo+ID4gIAlwbV9ydW50aW1lX2dldF9zeW5jKGNoaXAtPmRl
dik7DQo+ID4gIA0KPiA+ICAJZHdfcGFyYW1zID0gZG1hX3JlYWRfYnlhZGRyKGNoaXAtPnJlZ3Ms
IERXX1BBUkFNUyk7DQo+ID4gQEAgLTE3NjgsNyArMTc2Nyw2IEBAIGludCBkd19kbWFfcmVtb3Zl
KHN0cnVjdCBkd19kbWFfY2hpcCAqY2hpcCkNCj4gPiAgCX0NCj4gPiAgDQo+ID4gIAlwbV9ydW50
aW1lX3B1dF9zeW5jX3N1c3BlbmQoY2hpcC0+ZGV2KTsNCj4gPiAtCXBtX3J1bnRpbWVfZGlzYWJs
ZShjaGlwLT5kZXYpOw0KPiA+ICAJcmV0dXJuIDA7DQo+ID4gIH0NCj4gPiAgRVhQT1JUX1NZTUJP
TF9HUEwoZHdfZG1hX3JlbW92ZSk7DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL2R3L3Bs
YXRmb3JtLmMgYi9kcml2ZXJzL2RtYS9kdy9wbGF0Zm9ybS5jDQo+ID4gaW5kZXggNDIwMzZkZC4u
N2VkYzk5ZiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2RtYS9kdy9wbGF0Zm9ybS5jDQo+ID4g
KysrIGIvZHJpdmVycy9kbWEvZHcvcGxhdGZvcm0uYw0KPiA+IEBAIC0xNSw2ICsxNSw3IEBADQo+
ID4gICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gPiAgI2luY2x1ZGUgPGxpbnV4L2Rldmlj
ZS5oPg0KPiA+ICAjaW5jbHVkZSA8bGludXgvY2xrLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9w
bV9ydW50aW1lLmg+DQo+ID4gICNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCj4g
PiAgI2luY2x1ZGUgPGxpbnV4L2RtYWVuZ2luZS5oPg0KPiA+ICAjaW5jbHVkZSA8bGludXgvZG1h
LW1hcHBpbmcuaD4NCj4gPiBAQCAtMTg3LDYgKzE4OCw4IEBAIHN0YXRpYyBpbnQgZHdfcHJvYmUo
c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gPiAgCWlmIChlcnIpDQo+ID4gIAkJcmV0
dXJuIGVycjsNCj4gPiAgDQo+ID4gKwlwbV9ydW50aW1lX2VuYWJsZSgmcGRldi0+ZGV2KTsNCj4g
PiArDQo+ID4gIAllcnIgPSBkd19kbWFfcHJvYmUoY2hpcCwgcGRhdGEpOw0KPiA+ICAJaWYgKGVy
cikNCj4gPiAgCQlnb3RvIGVycl9kd19kbWFfcHJvYmU7DQo+ID4gQEAgLTIwNyw2ICsyMTAsNyBA
QCBzdGF0aWMgaW50IGR3X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ID4g
IAlyZXR1cm4gMDsNCj4gPiAgDQo+ID4gIGVycl9kd19kbWFfcHJvYmU6DQo+ID4gKwlwbV9ydW50
aW1lX2Rpc2FibGUoJnBkZXYtPmRldik7DQo+ID4gIAljbGtfZGlzYWJsZV91bnByZXBhcmUoY2hp
cC0+Y2xrKTsNCj4gPiAgCXJldHVybiBlcnI7DQo+ID4gIH0NCj4gPiBAQCAtMjE5LDYgKzIyMyw3
IEBAIHN0YXRpYyBpbnQgZHdfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+
ID4gIAkJb2ZfZG1hX2NvbnRyb2xsZXJfZnJlZShwZGV2LT5kZXYub2Zfbm9kZSk7DQo+ID4gIA0K
PiA+ICAJZHdfZG1hX3JlbW92ZShjaGlwKTsNCj4gPiArCXBtX3J1bnRpbWVfZGlzYWJsZSgmcGRl
di0+ZGV2KTsNCj4gPiAgCWNsa19kaXNhYmxlX3VucHJlcGFyZShjaGlwLT5jbGspOw0KPiA+ICAN
Cj4gPiAgCXJldHVybiAwOw0KPiA+IC0tIA0KPiA+IDIuMS4zDQo+ID4gDQo+IA0KDQoNCi0tIA0K
QW5keSBTaGV2Y2hlbmtvIDxhbmRyaXkuc2hldmNoZW5rb0BpbnRlbC5jb20+DQpJbnRlbCBGaW5s
YW5kIE95DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KSW50ZWwgRmlubGFuZCBPeQpSZWdpc3RlcmVkIEFkZHJlc3M6
IFBMIDI4MSwgMDAxODEgSGVsc2lua2kgCkJ1c2luZXNzIElkZW50aXR5IENvZGU6IDAzNTc2MDYg
LSA0IApEb21pY2lsZWQgaW4gSGVsc2lua2kgCgpUaGlzIGUtbWFpbCBhbmQgYW55IGF0dGFjaG1l
bnRzIG1heSBjb250YWluIGNvbmZpZGVudGlhbCBtYXRlcmlhbCBmb3IKdGhlIHNvbGUgdXNlIG9m
IHRoZSBpbnRlbmRlZCByZWNpcGllbnQocykuIEFueSByZXZpZXcgb3IgZGlzdHJpYnV0aW9uCmJ5
IG90aGVycyBpcyBzdHJpY3RseSBwcm9oaWJpdGVkLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5k
ZWQKcmVjaXBpZW50LCBwbGVhc2UgY29udGFjdCB0aGUgc2VuZGVyIGFuZCBkZWxldGUgYWxsIGNv
cGllcy4K

--
To unsubscribe from this list: send the line "unsubscribe dmaengine" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Vinod Koul Jan. 13, 2015, 3:57 p.m. UTC | #3
On Tue, Dec 30, 2014 at 08:04:51PM +0530, Shevchenko, Andriy wrote:
> On Mon, 2014-12-22 at 20:36 +0530, Vinod Koul wrote:
> > On Tue, Dec 16, 2014 at 11:40:01AM +0200, Andy Shevchenko wrote:
> > > In case of the PCI driver we will get a warning:
> > >  dw_dmac_pci 0000:00:18.0: Unbalanced pm_runtime_enable!
> > >  dw_dmac_pci 0000:00:18.0: DesignWare DMA Controller, 8 channels
> > > 
> > > This happens due to pm_runtime_enable() call from the driver when PM runtime is
> > > enabled by core.
> > > 
> > > This patch moves that call to the platform driver where it might make sense.
> > Hmmm, sorry but it is not clear to me how moving it from core to platform
> > helps solve the problem.
> 
> In case of PCI driver we already have runtime PM enabled, meanwhile it's
> not true for an ACPI case (since there is no _PS0 / _PS3 methods for the
> DMA device).
> 
> >  Also this make more sense in core as it can be
> > common acorss various devices
> 
> We can enable it if it was disabled.
okay, I see the point. But this patch fails to apply on rc1, can you please
rebase and resend
diff mbox

Patch

diff --git a/drivers/dma/dw/core.c b/drivers/dma/dw/core.c
index bbae202..dcf19f0 100644
--- a/drivers/dma/dw/core.c
+++ b/drivers/dma/dw/core.c
@@ -1569,7 +1569,6 @@  int dw_dma_probe(struct dw_dma_chip *chip, struct dw_dma_platform_data *pdata)
 	dw->type = chip->type;
 	chip->dw = dw;
 
-	pm_runtime_enable(chip->dev);
 	pm_runtime_get_sync(chip->dev);
 
 	dw_params = dma_read_byaddr(chip->regs, DW_PARAMS);
@@ -1768,7 +1767,6 @@  int dw_dma_remove(struct dw_dma_chip *chip)
 	}
 
 	pm_runtime_put_sync_suspend(chip->dev);
-	pm_runtime_disable(chip->dev);
 	return 0;
 }
 EXPORT_SYMBOL_GPL(dw_dma_remove);
diff --git a/drivers/dma/dw/platform.c b/drivers/dma/dw/platform.c
index 42036dd..7edc99f 100644
--- a/drivers/dma/dw/platform.c
+++ b/drivers/dma/dw/platform.c
@@ -15,6 +15,7 @@ 
 #include <linux/module.h>
 #include <linux/device.h>
 #include <linux/clk.h>
+#include <linux/pm_runtime.h>
 #include <linux/platform_device.h>
 #include <linux/dmaengine.h>
 #include <linux/dma-mapping.h>
@@ -187,6 +188,8 @@  static int dw_probe(struct platform_device *pdev)
 	if (err)
 		return err;
 
+	pm_runtime_enable(&pdev->dev);
+
 	err = dw_dma_probe(chip, pdata);
 	if (err)
 		goto err_dw_dma_probe;
@@ -207,6 +210,7 @@  static int dw_probe(struct platform_device *pdev)
 	return 0;
 
 err_dw_dma_probe:
+	pm_runtime_disable(&pdev->dev);
 	clk_disable_unprepare(chip->clk);
 	return err;
 }
@@ -219,6 +223,7 @@  static int dw_remove(struct platform_device *pdev)
 		of_dma_controller_free(pdev->dev.of_node);
 
 	dw_dma_remove(chip);
+	pm_runtime_disable(&pdev->dev);
 	clk_disable_unprepare(chip->clk);
 
 	return 0;