linux-can.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/1] NET: mcan: Move runtime PM enable/disable to m_can_platform
@ 2020-10-23 11:57 Patrik Flykt
  2020-10-23 11:58 ` [PATCH v2 1/1] " Patrik Flykt
  0 siblings, 1 reply; 4+ messages in thread
From: Patrik Flykt @ 2020-10-23 11:57 UTC (permalink / raw)
  To: linux-can; +Cc: wg, mkl, dmurphy, sriram.dash, jarkko.nikula


        Hi,

This is a preparatory patch for modifying PM enabling due to PCI based
M_CAN devices. As the functionality is right now, adding a PCI based
M_CAN driver causes the core PCI functionality to call
pm_runtime_enable() from pci_pm_init() when the PCI device is added.
When the device is added, it is registered with m_can_class_register(),
which ends up calling pm_runtime_enable() once more and causes the
kernel to log an angry 'Unbalanced pm_runtime_enable!' message, as
dev->power.disable_depth has gone down to zero.

To resolve this situation, I have added a patch that moves runtime PM
enabling from m_can.c to the m_can_platform.c driver, which currently
is the only driver that ends up enabling runtime PM.

Thanks,

        Patrik


Patrik Flykt (1):
  NET: mcan: Move runtime PM enable/disable to m_can_platform

 drivers/net/can/m_can/m_can.c          | 9 ++-------
 drivers/net/can/m_can/m_can_platform.c | 7 ++++++-
 2 files changed, 8 insertions(+), 8 deletions(-)

-- 
2.28.0


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH v2 1/1] NET: mcan: Move runtime PM enable/disable to m_can_platform
  2020-10-23 11:57 [PATCH v2 0/1] NET: mcan: Move runtime PM enable/disable to m_can_platform Patrik Flykt
@ 2020-10-23 11:58 ` Patrik Flykt
  2020-11-17 11:36   ` Patrik Flykt
  0 siblings, 1 reply; 4+ messages in thread
From: Patrik Flykt @ 2020-10-23 11:58 UTC (permalink / raw)
  To: linux-can; +Cc: wg, mkl, dmurphy, sriram.dash, jarkko.nikula

This is a preparatory patch for upcoming PCI based M_CAN devices.
The current PM implementation would cause PCI based drivers to
enable PM twice, once when the PCI device is added and a second
time in m_can_class_register(). This will cause 'Unbalanced
pm_runtime_enable!' to be logged, and is a situation that should
be avoided.

Therefore, in anticipation of PCI devices, move PM enabling out
from M_CAN class registration to its only user, the
m_can_platform driver.

Signed-off-by: Patrik Flykt <patrik.flykt@linux.intel.com>
---
v2: Rebased on mkl/linux-can.git 9146843b11b6

 drivers/net/can/m_can/m_can.c          | 9 ++-------
 drivers/net/can/m_can/m_can_platform.c | 7 ++++++-
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c
index e1d8d1c8ab7d..f81a0761ddad 100644
--- a/drivers/net/can/m_can/m_can.c
+++ b/drivers/net/can/m_can/m_can.c
@@ -1803,10 +1803,9 @@ int m_can_class_register(struct m_can_classdev *m_can_dev)
 	int ret;
 
 	if (m_can_dev->pm_clock_support) {
-		pm_runtime_enable(m_can_dev->dev);
 		ret = m_can_clk_start(m_can_dev);
 		if (ret)
-			goto pm_runtime_fail;
+			goto clk_fail;
 	}
 
 	ret = m_can_dev_setup(m_can_dev);
@@ -1832,12 +1831,8 @@ int m_can_class_register(struct m_can_classdev *m_can_dev)
 	 */
 clk_disable:
 	m_can_clk_stop(m_can_dev);
-pm_runtime_fail:
-	if (ret) {
-		if (m_can_dev->pm_clock_support)
-			pm_runtime_disable(m_can_dev->dev);
-	}
 
+clk_fail:
 	return ret;
 }
 EXPORT_SYMBOL_GPL(m_can_class_register);
diff --git a/drivers/net/can/m_can/m_can_platform.c b/drivers/net/can/m_can/m_can_platform.c
index b5b7b77909d3..87264e0f4e94 100644
--- a/drivers/net/can/m_can/m_can_platform.c
+++ b/drivers/net/can/m_can/m_can_platform.c
@@ -134,7 +134,12 @@ static int m_can_plat_probe(struct platform_device *pdev)
 
 	m_can_init_ram(mcan_class);
 
-	return m_can_class_register(mcan_class);
+	pm_runtime_enable(mcan_class->dev);
+	ret = m_can_class_register(mcan_class);
+	if (ret)
+		pm_runtime_disable(mcan_class->dev);
+
+	return ret;
 
 probe_fail:
 	m_can_class_free_dev(mcan_class->net);
-- 
2.28.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v2 1/1] NET: mcan: Move runtime PM enable/disable to m_can_platform
  2020-10-23 11:58 ` [PATCH v2 1/1] " Patrik Flykt
@ 2020-11-17 11:36   ` Patrik Flykt
  2020-11-18 15:47     ` Marc Kleine-Budde
  0 siblings, 1 reply; 4+ messages in thread
From: Patrik Flykt @ 2020-11-17 11:36 UTC (permalink / raw)
  To: linux-can; +Cc: wg, mkl, dmurphy, sriram.dash, jarkko.nikula

On Fri, 2020-10-23 at 14:58 +0300, Patrik Flykt wrote:
> This is a preparatory patch for upcoming PCI based M_CAN devices.
> The current PM implementation would cause PCI based drivers to
> enable PM twice, once when the PCI device is added and a second
> time in m_can_class_register(). This will cause 'Unbalanced
> pm_runtime_enable!' to be logged, and is a situation that should
> be avoided.
> 
> Therefore, in anticipation of PCI devices, move PM enabling out
> from M_CAN class registration to its only user, the
> m_can_platform driver.
> 
> Signed-off-by: Patrik Flykt <patrik.flykt@linux.intel.com>
> ---
> v2: Rebased on mkl/linux-can.git 9146843b11b6

Ping ping?

	Patrik



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2 1/1] NET: mcan: Move runtime PM enable/disable to m_can_platform
  2020-11-17 11:36   ` Patrik Flykt
@ 2020-11-18 15:47     ` Marc Kleine-Budde
  0 siblings, 0 replies; 4+ messages in thread
From: Marc Kleine-Budde @ 2020-11-18 15:47 UTC (permalink / raw)
  To: Patrik Flykt, linux-can; +Cc: wg, dmurphy, sriram.dash, jarkko.nikula


[-- Attachment #1.1: Type: text/plain, Size: 1076 bytes --]

On 11/17/20 12:36 PM, Patrik Flykt wrote:
> On Fri, 2020-10-23 at 14:58 +0300, Patrik Flykt wrote:
>> This is a preparatory patch for upcoming PCI based M_CAN devices.
>> The current PM implementation would cause PCI based drivers to
>> enable PM twice, once when the PCI device is added and a second
>> time in m_can_class_register(). This will cause 'Unbalanced
>> pm_runtime_enable!' to be logged, and is a situation that should
>> be avoided.
>>
>> Therefore, in anticipation of PCI devices, move PM enabling out
>> from M_CAN class registration to its only user, the
>> m_can_platform driver.
>>
>> Signed-off-by: Patrik Flykt <patrik.flykt@linux.intel.com>
>> ---
>> v2: Rebased on mkl/linux-can.git 9146843b11b6
> 
> Ping ping?

Applied to linux-can/testing.

Thanks,
Marc

-- 
Pengutronix e.K.                 | Marc Kleine-Budde           |
Embedded Linux                   | https://www.pengutronix.de  |
Vertretung West/Dortmund         | Phone: +49-231-2826-924     |
Amtsgericht Hildesheim, HRA 2686 | Fax:   +49-5121-206917-5555 |


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-11-18 15:47 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-23 11:57 [PATCH v2 0/1] NET: mcan: Move runtime PM enable/disable to m_can_platform Patrik Flykt
2020-10-23 11:58 ` [PATCH v2 1/1] " Patrik Flykt
2020-11-17 11:36   ` Patrik Flykt
2020-11-18 15:47     ` Marc Kleine-Budde

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).