* [PATCH 0/2] can: m_can_platform: Bug fix of kernel panic for [not found] <CGME20191119102134epcas5p4d3c1b18203e2001c189b9fa7a0e3aab5@epcas5p4.samsung.com> @ 2019-11-19 10:20 ` Pankaj Sharma [not found] ` <CGME20191119102155epcas5p34ca3dfaba9eef8de24d1bc9d64ef5335@epcas5p3.samsung.com> ` (2 more replies) 0 siblings, 3 replies; 8+ messages in thread From: Pankaj Sharma @ 2019-11-19 10:20 UTC (permalink / raw) To: linux-can, netdev, linux-kernel Cc: wg, mkl, davem, dmurphy, rcsekar, pankaj.dubey, Pankaj Sharma The current code is failing while clock prepare enable because of not getting proper clock from platform device. [ 0.852089] Call trace: [ 0.854516] 0xffff0000fa22a668 [ 0.857638] clk_prepare+0x20/0x34 [ 0.861019] m_can_runtime_resume+0x2c/0xe4 [ 0.865180] pm_generic_runtime_resume+0x28/0x38 [ 0.869770] __rpm_callback+0x16c/0x1bc [ 0.873583] rpm_callback+0x24/0x78 [ 0.877050] rpm_resume+0x428/0x560 [ 0.880517] __pm_runtime_resume+0x7c/0xa8 [ 0.884593] m_can_clk_start.isra.9.part.10+0x1c/0xa8 [ 0.889618] m_can_class_register+0x138/0x370 [ 0.893950] m_can_plat_probe+0x120/0x170 [ 0.897939] platform_drv_probe+0x4c/0xa0 [ 0.901924] really_probe+0xd8/0x31c [ 0.905477] driver_probe_device+0x58/0xe8 [ 0.909551] device_driver_attach+0x68/0x70 [ 0.913711] __driver_attach+0x9c/0xf8 [ 0.917437] bus_for_each_dev+0x50/0xa0 [ 0.921251] driver_attach+0x20/0x28 [ 0.924804] bus_add_driver+0x148/0x1fc [ 0.928617] driver_register+0x6c/0x124 [ 0.932431] __platform_driver_register+0x48/0x50 [ 0.937113] m_can_plat_driver_init+0x18/0x20 [ 0.941446] do_one_initcall+0x4c/0x19c [ 0.945259] kernel_init_freeable+0x1d0/0x280 [ 0.949591] kernel_init+0x10/0x100 [ 0.953057] ret_from_fork+0x10/0x18 [ 0.956614] Code: 00000000 00000000 00000000 00000000 (fa22a668) [ 0.962681] ---[ end trace 881f71bd609de763 ]--- [ 0.967301] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b A device driver for CAN controller hardware registers itself with the Linux network layer as a network device. So, the driver data for m_can should ideally be of type net_device. Further even when passing the proper net device in probe function the code was hanging because of the function m_can_runtime_resume() getting recursively called from m_can_class_resume(). Pankaj Sharma (2): can: m_can_platform: set net_device structure as driver data can: m_can_platform: remove unnecessary m_can_class_resume() call drivers/net/can/m_can/m_can_platform.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) -- 2.7.4 ^ permalink raw reply [flat|nested] 8+ messages in thread
[parent not found: <CGME20191119102155epcas5p34ca3dfaba9eef8de24d1bc9d64ef5335@epcas5p3.samsung.com>]
* [PATCH 1/2] can: m_can_platform: set net_device structure as driver data [not found] ` <CGME20191119102155epcas5p34ca3dfaba9eef8de24d1bc9d64ef5335@epcas5p3.samsung.com> @ 2019-11-19 10:20 ` Pankaj Sharma 2019-11-19 14:43 ` Dan Murphy 0 siblings, 1 reply; 8+ messages in thread From: Pankaj Sharma @ 2019-11-19 10:20 UTC (permalink / raw) To: linux-can, netdev, linux-kernel Cc: wg, mkl, davem, dmurphy, rcsekar, pankaj.dubey, Pankaj Sharma, Sriram Dash A device driver for CAN controller hardware registers itself with the Linux network layer as a network device. So, the driver data for m_can should ideally be of type net_device. Fixes: f524f829b75a ("can: m_can: Create a m_can platform framework") Signed-off-by: Pankaj Sharma <pankj.sharma@samsung.com> Signed-off-by: Sriram Dash <sriram.dash@samsung.com> --- drivers/net/can/m_can/m_can_platform.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/can/m_can/m_can_platform.c b/drivers/net/can/m_can/m_can_platform.c index 6ac4c35..2eaa354 100644 --- a/drivers/net/can/m_can/m_can_platform.c +++ b/drivers/net/can/m_can/m_can_platform.c @@ -107,7 +107,7 @@ static int m_can_plat_probe(struct platform_device *pdev) mcan_class->is_peripheral = false; - platform_set_drvdata(pdev, mcan_class->dev); + platform_set_drvdata(pdev, mcan_class->net); m_can_init_ram(mcan_class); -- 2.7.4 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] can: m_can_platform: set net_device structure as driver data 2019-11-19 10:20 ` [PATCH 1/2] can: m_can_platform: set net_device structure as driver data Pankaj Sharma @ 2019-11-19 14:43 ` Dan Murphy 0 siblings, 0 replies; 8+ messages in thread From: Dan Murphy @ 2019-11-19 14:43 UTC (permalink / raw) To: Pankaj Sharma, linux-can, netdev, linux-kernel Cc: wg, mkl, davem, rcsekar, pankaj.dubey, Sriram Dash Pankaj On 11/19/19 4:20 AM, Pankaj Sharma wrote: > A device driver for CAN controller hardware registers itself with the > Linux network layer as a network device. So, the driver data for m_can > should ideally be of type net_device. > > Fixes: f524f829b75a ("can: m_can: Create a m_can platform framework") > > Signed-off-by: Pankaj Sharma <pankj.sharma@samsung.com> > Signed-off-by: Sriram Dash <sriram.dash@samsung.com> > --- > drivers/net/can/m_can/m_can_platform.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/can/m_can/m_can_platform.c b/drivers/net/can/m_can/m_can_platform.c > index 6ac4c35..2eaa354 100644 > --- a/drivers/net/can/m_can/m_can_platform.c > +++ b/drivers/net/can/m_can/m_can_platform.c > @@ -107,7 +107,7 @@ static int m_can_plat_probe(struct platform_device *pdev) > > mcan_class->is_peripheral = false; > > - platform_set_drvdata(pdev, mcan_class->dev); > + platform_set_drvdata(pdev, mcan_class->net); > > m_can_init_ram(mcan_class); > Thanks for the fix. Acked-by: Dan Murphy <dmurphy@ti.com> ^ permalink raw reply [flat|nested] 8+ messages in thread
[parent not found: <CGME20191119102201epcas5p4e215c25d5d07269a7afb1f86fac0be65@epcas5p4.samsung.com>]
* [PATCH 2/2] can: m_can_platform: remove unnecessary m_can_class_resume() call [not found] ` <CGME20191119102201epcas5p4e215c25d5d07269a7afb1f86fac0be65@epcas5p4.samsung.com> @ 2019-11-19 10:20 ` Pankaj Sharma 2019-11-19 14:45 ` Dan Murphy 0 siblings, 1 reply; 8+ messages in thread From: Pankaj Sharma @ 2019-11-19 10:20 UTC (permalink / raw) To: linux-can, netdev, linux-kernel Cc: wg, mkl, davem, dmurphy, rcsekar, pankaj.dubey, Pankaj Sharma, Sriram Dash The function m_can_runtime_resume() is getting recursively called from m_can_class_resume(). This results in a lock up. We need not call m_can_class_resume() during m_can_runtime_resume(). Fixes: f524f829b75a ("can: m_can: Create a m_can platform framework") Signed-off-by: Pankaj Sharma <pankj.sharma@samsung.com> Signed-off-by: Sriram Dash <sriram.dash@samsung.com> --- drivers/net/can/m_can/m_can_platform.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/net/can/m_can/m_can_platform.c b/drivers/net/can/m_can/m_can_platform.c index 2eaa354..38ea5e6 100644 --- a/drivers/net/can/m_can/m_can_platform.c +++ b/drivers/net/can/m_can/m_can_platform.c @@ -166,8 +166,6 @@ static int __maybe_unused m_can_runtime_resume(struct device *dev) if (err) clk_disable_unprepare(mcan_class->hclk); - m_can_class_resume(dev); - return err; } -- 2.7.4 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/2] can: m_can_platform: remove unnecessary m_can_class_resume() call 2019-11-19 10:20 ` [PATCH 2/2] can: m_can_platform: remove unnecessary m_can_class_resume() call Pankaj Sharma @ 2019-11-19 14:45 ` Dan Murphy 0 siblings, 0 replies; 8+ messages in thread From: Dan Murphy @ 2019-11-19 14:45 UTC (permalink / raw) To: Pankaj Sharma, linux-can, netdev, linux-kernel Cc: wg, mkl, davem, rcsekar, pankaj.dubey, Sriram Dash Pankaj On 11/19/19 4:20 AM, Pankaj Sharma wrote: > The function m_can_runtime_resume() is getting recursively called from > m_can_class_resume(). This results in a lock up. > > We need not call m_can_class_resume() during m_can_runtime_resume(). > > Fixes: f524f829b75a ("can: m_can: Create a m_can platform framework") > > Signed-off-by: Pankaj Sharma <pankj.sharma@samsung.com> > Signed-off-by: Sriram Dash <sriram.dash@samsung.com> > --- > drivers/net/can/m_can/m_can_platform.c | 2 -- > 1 file changed, 2 deletions(-) > > diff --git a/drivers/net/can/m_can/m_can_platform.c b/drivers/net/can/m_can/m_can_platform.c > index 2eaa354..38ea5e6 100644 > --- a/drivers/net/can/m_can/m_can_platform.c > +++ b/drivers/net/can/m_can/m_can_platform.c > @@ -166,8 +166,6 @@ static int __maybe_unused m_can_runtime_resume(struct device *dev) > if (err) > clk_disable_unprepare(mcan_class->hclk); > > - m_can_class_resume(dev); > - > return err; > } > Acked-by: Dan Murphy <dmurphy@ti.com> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/2] can: m_can_platform: Bug fix of kernel panic for 2019-11-19 10:20 ` [PATCH 0/2] can: m_can_platform: Bug fix of kernel panic for Pankaj Sharma [not found] ` <CGME20191119102155epcas5p34ca3dfaba9eef8de24d1bc9d64ef5335@epcas5p3.samsung.com> [not found] ` <CGME20191119102201epcas5p4e215c25d5d07269a7afb1f86fac0be65@epcas5p4.samsung.com> @ 2019-12-05 20:57 ` Dan Murphy 2019-12-06 6:53 ` pankj.sharma 2019-12-06 7:39 ` Marc Kleine-Budde 2 siblings, 2 replies; 8+ messages in thread From: Dan Murphy @ 2019-12-05 20:57 UTC (permalink / raw) To: Pankaj Sharma, linux-can, netdev, linux-kernel Cc: wg, mkl, davem, rcsekar, pankaj.dubey Pankaj On 11/19/19 4:20 AM, Pankaj Sharma wrote: > The current code is failing while clock prepare enable because of not > getting proper clock from platform device. > A device driver for CAN controller hardware registers itself with the > Linux network layer as a network device. So, the driver data for m_can > should ideally be of type net_device. > > Further even when passing the proper net device in probe function the > code was hanging because of the function m_can_runtime_resume() getting > recursively called from m_can_class_resume(). > > Pankaj Sharma (2): > can: m_can_platform: set net_device structure as driver data > can: m_can_platform: remove unnecessary m_can_class_resume() call Did you CC: linux-stable for these? We are probably going to have customers picking up 5.4 LTS and would need these bug fixes. Or at the very least see if the stable automation will pick these up. Dan ^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: [PATCH 0/2] can: m_can_platform: Bug fix of kernel panic for 2019-12-05 20:57 ` [PATCH 0/2] can: m_can_platform: Bug fix of kernel panic for Dan Murphy @ 2019-12-06 6:53 ` pankj.sharma 2019-12-06 7:39 ` Marc Kleine-Budde 1 sibling, 0 replies; 8+ messages in thread From: pankj.sharma @ 2019-12-06 6:53 UTC (permalink / raw) To: 'Dan Murphy' Cc: wg, mkl, davem, rcsekar, pankaj.dubey, linux-can, netdev, linux-kernel > From: Dan Murphy <dmurphy@ti.com> > Subject: Re: [PATCH 0/2] can: m_can_platform: Bug fix of kernel panic for > > Pankaj > > On 11/19/19 4:20 AM, Pankaj Sharma wrote: > > The current code is failing while clock prepare enable because of not > > getting proper clock from platform device. > > A device driver for CAN controller hardware registers itself with the > > Linux network layer as a network device. So, the driver data for m_can > > should ideally be of type net_device. > > > > Further even when passing the proper net device in probe function the > > code was hanging because of the function m_can_runtime_resume() > > getting recursively called from m_can_class_resume(). > > > > Pankaj Sharma (2): > > can: m_can_platform: set net_device structure as driver data > > can: m_can_platform: remove unnecessary m_can_class_resume() call > > Did you CC: linux-stable for these? We are probably going to have customers > picking up 5.4 LTS and would need these bug fixes. Hello Dan, I haven’t copied to linux-stable, but the patches are already in linux-stable branch. You can check in following link. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/log/?h=linux-5.4.y Pankaj > > Or at the very least see if the stable automation will pick these up. > > Dan > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/2] can: m_can_platform: Bug fix of kernel panic for 2019-12-05 20:57 ` [PATCH 0/2] can: m_can_platform: Bug fix of kernel panic for Dan Murphy 2019-12-06 6:53 ` pankj.sharma @ 2019-12-06 7:39 ` Marc Kleine-Budde 1 sibling, 0 replies; 8+ messages in thread From: Marc Kleine-Budde @ 2019-12-06 7:39 UTC (permalink / raw) To: Dan Murphy, Pankaj Sharma, linux-can, netdev, linux-kernel Cc: wg, davem, rcsekar, pankaj.dubey [-- Attachment #1.1: Type: text/plain, Size: 1273 bytes --] On 12/5/19 9:57 PM, Dan Murphy wrote: > Pankaj > > On 11/19/19 4:20 AM, Pankaj Sharma wrote: >> The current code is failing while clock prepare enable because of not >> getting proper clock from platform device. >> A device driver for CAN controller hardware registers itself with the >> Linux network layer as a network device. So, the driver data for m_can >> should ideally be of type net_device. >> >> Further even when passing the proper net device in probe function the >> code was hanging because of the function m_can_runtime_resume() getting >> recursively called from m_can_class_resume(). >> >> Pankaj Sharma (2): >> can: m_can_platform: set net_device structure as driver data >> can: m_can_platform: remove unnecessary m_can_class_resume() call > > Did you CC: linux-stable for these? We are probably going to have > customers picking up 5.4 LTS and would need these bug fixes. Both patches made it into the v5.4 release. So no need for stable. 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] 8+ messages in thread
end of thread, other threads:[~2019-12-06 7:39 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <CGME20191119102134epcas5p4d3c1b18203e2001c189b9fa7a0e3aab5@epcas5p4.samsung.com>
2019-11-19 10:20 ` [PATCH 0/2] can: m_can_platform: Bug fix of kernel panic for Pankaj Sharma
[not found] ` <CGME20191119102155epcas5p34ca3dfaba9eef8de24d1bc9d64ef5335@epcas5p3.samsung.com>
2019-11-19 10:20 ` [PATCH 1/2] can: m_can_platform: set net_device structure as driver data Pankaj Sharma
2019-11-19 14:43 ` Dan Murphy
[not found] ` <CGME20191119102201epcas5p4e215c25d5d07269a7afb1f86fac0be65@epcas5p4.samsung.com>
2019-11-19 10:20 ` [PATCH 2/2] can: m_can_platform: remove unnecessary m_can_class_resume() call Pankaj Sharma
2019-11-19 14:45 ` Dan Murphy
2019-12-05 20:57 ` [PATCH 0/2] can: m_can_platform: Bug fix of kernel panic for Dan Murphy
2019-12-06 6:53 ` pankj.sharma
2019-12-06 7:39 ` 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
all inboxes | Powered by JetHome®