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