From: Marc Kleine-Budde <mkl@pengutronix.de>
To: Stefan Agner <stefan@agner.ch>
Cc: shawn.guo@freescale.com, kernel@pengutronix.de,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org,
"linux-can@vger.kernel.org" <linux-can@vger.kernel.org>
Subject: Re: [PATCH v3 4/4] can: flexcan: add vf610 support for FlexCAN
Date: Mon, 28 Jul 2014 18:31:17 +0200 [thread overview]
Message-ID: <53D67AD5.2000500@pengutronix.de> (raw)
In-Reply-To: <e88108c655e2c16dc9cf6c4194547e73@agner.ch>
[-- Attachment #1: Type: text/plain, Size: 3228 bytes --]
On 07/28/2014 06:20 PM, Stefan Agner wrote:
[...]
> However, I got once this Kernel panic after I reconfigured to normal
> mode. But I could not reproduce this.
>
> [ 461.954394] flexcan_irq, esr=00059d82
> [ 461.958093] flexcan_irq, ctrl=17092051
> [ 461.961873] ------------[ cut here ]------------
> [ 461.966536] WARNING: CPU: 0 PID: 0 at kernel/locking/mutex.c:826
> mutex_trylock+0x1b0/0x208()
> [ 461.974982] DEBUG_LOCKS_WARN_ON(in_interrupt())
Please use this updated version of your patch:
Marc
---
From b6b8ae7cdb04f1a3b9d3a6dd83f8146bfaf48553 Mon Sep 17 00:00:00 2001
From: Stefan Agner <stefan@agner.ch>
Date: Tue, 15 Jul 2014 14:56:20 +0200
Subject: [PATCH] can: flexcan: flexcan_get_berr_counter(): switch on clocks
before accessing ecr register
The funcion flexcan_get_berr_counter() may be called from userspace even if the
interface is down, this the clocks are disabled. This patch switches on the
clocks before accessing the ecr register.
Reported-by: Ashutosh Singh <ashuleapyear@gmail.com>
Signed-off-by: Stefan Agner <stefan@agner.ch>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
drivers/net/can/flexcan.c | 30 +++++++++++++++++++++++++++---
1 file changed, 27 insertions(+), 3 deletions(-)
diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
index f425ec2..6bfe24a 100644
--- a/drivers/net/can/flexcan.c
+++ b/drivers/net/can/flexcan.c
@@ -378,8 +378,9 @@ static int flexcan_chip_softreset(struct flexcan_priv *priv)
return 0;
}
-static int flexcan_get_berr_counter(const struct net_device *dev,
- struct can_berr_counter *bec)
+
+static int __flexcan_get_berr_counter(const struct net_device *dev,
+ struct can_berr_counter *bec)
{
const struct flexcan_priv *priv = netdev_priv(dev);
struct flexcan_regs __iomem *regs = priv->base;
@@ -391,6 +392,29 @@ static int flexcan_get_berr_counter(const struct net_device *dev,
return 0;
}
+static int flexcan_get_berr_counter(const struct net_device *dev,
+ struct can_berr_counter *bec)
+{
+ const struct flexcan_priv *priv = netdev_priv(dev);
+ int err;
+
+ err = clk_prepare_enable(priv->clk_ipg);
+ if (err)
+ return err;
+
+ err = clk_prepare_enable(priv->clk_per);
+ if (err)
+ goto out_disable_ipg;
+
+ err = __flexcan_get_berr_counter(dev, bec);
+
+ clk_disable_unprepare(priv->clk_per);
+ out_disable_ipg:
+ clk_disable_unprepare(priv->clk_ipg);
+
+ return err;
+}
+
static int flexcan_start_xmit(struct sk_buff *skb, struct net_device *dev)
{
const struct flexcan_priv *priv = netdev_priv(dev);
@@ -503,7 +527,7 @@ static void do_state(struct net_device *dev,
struct flexcan_priv *priv = netdev_priv(dev);
struct can_berr_counter bec;
- flexcan_get_berr_counter(dev, &bec);
+ __flexcan_get_berr_counter(dev, &bec);
switch (priv->can.state) {
case CAN_STATE_ERROR_ACTIVE:
--
2.0.1
--
Pengutronix e.K. | Marc Kleine-Budde |
Industrial Linux Solutions | Phone: +49-231-2826-924 |
Vertretung West/Dortmund | Fax: +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 242 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: mkl@pengutronix.de (Marc Kleine-Budde)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 4/4] can: flexcan: add vf610 support for FlexCAN
Date: Mon, 28 Jul 2014 18:31:17 +0200 [thread overview]
Message-ID: <53D67AD5.2000500@pengutronix.de> (raw)
In-Reply-To: <e88108c655e2c16dc9cf6c4194547e73@agner.ch>
On 07/28/2014 06:20 PM, Stefan Agner wrote:
[...]
> However, I got once this Kernel panic after I reconfigured to normal
> mode. But I could not reproduce this.
>
> [ 461.954394] flexcan_irq, esr=00059d82
> [ 461.958093] flexcan_irq, ctrl=17092051
> [ 461.961873] ------------[ cut here ]------------
> [ 461.966536] WARNING: CPU: 0 PID: 0 at kernel/locking/mutex.c:826
> mutex_trylock+0x1b0/0x208()
> [ 461.974982] DEBUG_LOCKS_WARN_ON(in_interrupt())
Please use this updated version of your patch:
Marc
---
>From b6b8ae7cdb04f1a3b9d3a6dd83f8146bfaf48553 Mon Sep 17 00:00:00 2001
From: Stefan Agner <stefan@agner.ch>
Date: Tue, 15 Jul 2014 14:56:20 +0200
Subject: [PATCH] can: flexcan: flexcan_get_berr_counter(): switch on clocks
before accessing ecr register
The funcion flexcan_get_berr_counter() may be called from userspace even if the
interface is down, this the clocks are disabled. This patch switches on the
clocks before accessing the ecr register.
Reported-by: Ashutosh Singh <ashuleapyear@gmail.com>
Signed-off-by: Stefan Agner <stefan@agner.ch>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
---
drivers/net/can/flexcan.c | 30 +++++++++++++++++++++++++++---
1 file changed, 27 insertions(+), 3 deletions(-)
diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
index f425ec2..6bfe24a 100644
--- a/drivers/net/can/flexcan.c
+++ b/drivers/net/can/flexcan.c
@@ -378,8 +378,9 @@ static int flexcan_chip_softreset(struct flexcan_priv *priv)
return 0;
}
-static int flexcan_get_berr_counter(const struct net_device *dev,
- struct can_berr_counter *bec)
+
+static int __flexcan_get_berr_counter(const struct net_device *dev,
+ struct can_berr_counter *bec)
{
const struct flexcan_priv *priv = netdev_priv(dev);
struct flexcan_regs __iomem *regs = priv->base;
@@ -391,6 +392,29 @@ static int flexcan_get_berr_counter(const struct net_device *dev,
return 0;
}
+static int flexcan_get_berr_counter(const struct net_device *dev,
+ struct can_berr_counter *bec)
+{
+ const struct flexcan_priv *priv = netdev_priv(dev);
+ int err;
+
+ err = clk_prepare_enable(priv->clk_ipg);
+ if (err)
+ return err;
+
+ err = clk_prepare_enable(priv->clk_per);
+ if (err)
+ goto out_disable_ipg;
+
+ err = __flexcan_get_berr_counter(dev, bec);
+
+ clk_disable_unprepare(priv->clk_per);
+ out_disable_ipg:
+ clk_disable_unprepare(priv->clk_ipg);
+
+ return err;
+}
+
static int flexcan_start_xmit(struct sk_buff *skb, struct net_device *dev)
{
const struct flexcan_priv *priv = netdev_priv(dev);
@@ -503,7 +527,7 @@ static void do_state(struct net_device *dev,
struct flexcan_priv *priv = netdev_priv(dev);
struct can_berr_counter bec;
- flexcan_get_berr_counter(dev, &bec);
+ __flexcan_get_berr_counter(dev, &bec);
switch (priv->can.state) {
case CAN_STATE_ERROR_ACTIVE:
--
2.0.1
--
Pengutronix e.K. | Marc Kleine-Budde |
Industrial Linux Solutions | Phone: +49-231-2826-924 |
Vertretung West/Dortmund | Fax: +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 242 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140728/a980ea01/attachment.sig>
next prev parent reply other threads:[~2014-07-28 16:31 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-15 12:56 [PATCH v3 0/4] ARM: vf610: add FlexCAN support Stefan Agner
2014-07-15 12:56 ` Stefan Agner
2014-07-15 12:56 ` [PATCH v3 1/4] ARM: dts: vf610: add FlexCAN node Stefan Agner
2014-07-15 12:56 ` Stefan Agner
2014-07-15 12:56 ` [PATCH v3 2/4] ARM: imx: clk-vf610: fix FlexCAN clock gating Stefan Agner
2014-07-15 12:56 ` Stefan Agner
2014-07-15 12:56 ` [PATCH v3 3/4] can: flexcan: switch on clocks before accessing ecr register Stefan Agner
2014-07-15 12:56 ` Stefan Agner
2014-07-15 13:54 ` Lothar Waßmann
2014-07-15 13:54 ` Lothar Waßmann
2014-07-15 13:57 ` Marc Kleine-Budde
2014-07-15 13:57 ` Marc Kleine-Budde
2014-07-15 12:56 ` [PATCH v3 4/4] can: flexcan: add vf610 support for FlexCAN Stefan Agner
2014-07-15 12:56 ` Stefan Agner
2014-07-15 14:24 ` Marc Kleine-Budde
2014-07-15 14:24 ` Marc Kleine-Budde
2014-07-16 6:43 ` Stefan Agner
2014-07-16 6:43 ` Stefan Agner
2014-07-25 10:50 ` Stefan Agner
2014-07-25 10:50 ` Stefan Agner
2014-07-25 13:33 ` Marc Kleine-Budde
2014-07-25 13:33 ` Marc Kleine-Budde
2014-07-28 16:20 ` Stefan Agner
2014-07-28 16:20 ` Stefan Agner
2014-07-28 16:20 ` Stefan Agner
2014-07-28 16:28 ` Marc Kleine-Budde
2014-07-28 16:28 ` Marc Kleine-Budde
2014-07-28 16:28 ` Marc Kleine-Budde
2014-07-29 7:29 ` Stefan Agner
2014-07-29 7:29 ` Stefan Agner
2014-07-30 11:47 ` Marc Kleine-Budde
2014-07-30 11:47 ` Marc Kleine-Budde
2014-08-04 13:43 ` Stefan Agner
2014-08-04 13:43 ` Stefan Agner
2014-08-04 14:27 ` Marc Kleine-Budde
2014-08-04 14:27 ` Marc Kleine-Budde
2014-08-04 16:01 ` Stefan Agner
2014-08-04 16:01 ` Stefan Agner
2014-08-05 9:52 ` Marc Kleine-Budde
2014-08-05 9:52 ` Marc Kleine-Budde
2014-08-05 12:38 ` Stefan Agner
2014-08-05 12:38 ` Stefan Agner
2014-08-14 10:38 ` Marc Kleine-Budde
2014-08-14 10:38 ` Marc Kleine-Budde
2014-07-28 16:31 ` Marc Kleine-Budde [this message]
2014-07-28 16:31 ` Marc Kleine-Budde
2014-07-15 13:54 ` [PATCH v3 0/4] ARM: vf610: add FlexCAN support Marc Kleine-Budde
2014-07-15 13:54 ` Marc Kleine-Budde
2014-08-14 10:04 ` Marc Kleine-Budde
2014-08-14 10:04 ` Marc Kleine-Budde
2014-07-16 6:11 ` Shawn Guo
2014-07-16 6:11 ` Shawn Guo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=53D67AD5.2000500@pengutronix.de \
--to=mkl@pengutronix.de \
--cc=kernel@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-can@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=shawn.guo@freescale.com \
--cc=stefan@agner.ch \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.