From: ezequiel.garcia@free-electrons.com (Ezequiel Garcia)
To: linux-arm-kernel@lists.infradead.org
Subject: [BUG][mvebu] mvneta: cannot request irq 25 on openblocks-ax3
Date: Tue, 19 Mar 2013 10:39:30 -0300 [thread overview]
Message-ID: <20130319133928.GE3137@localhost> (raw)
In-Reply-To: <51486445.8040506@hitachi.com>
Hi Masami,
On Tue, Mar 19, 2013 at 10:12:37PM +0900, Masami Hiramatsu wrote:
>
> Here I've hit a bug on the recent kernel. As far as I know, this bug
> exists on 3.9-rc1 too.
>
> When I tried the latest mvebu for-next tree
> (git://git.infradead.org/users/jcooper/linux.git mvebu/for-next),
> I got below warning at bootup time and mvneta didn't work (link was never up).
> I ensured that "ifconfig ethX up" always caused that.
>
> Does anyone succeed to boot openblocks-ax3 recently or hit same
> trouble?
This is a known bug. Gregory Clement already has a fix and he
will submit it soon. In case you need this fixed ASAP, I'm attaching
you a patch with a fix.
Please note the attached patch is not ready for mainline inclusion,
as I said Gregory will submit a cleaner version soon.
--
Ezequiel Garc?a, Free Electrons
Embedded Linux, Kernel and Android Engineering
http://free-electrons.com
-------------- next part --------------
>From 03080b4e459b103b97b658789658f118053de522 Mon Sep 17 00:00:00 2001
From: Gregory CLEMENT <gregory.clement@free-electrons.com>
Date: Sat, 9 Feb 2013 22:07:54 +0100
Subject: [PATCH] net: mvneta: convert to percpu interrupt
Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
---
drivers/net/ethernet/marvell/mvneta.c | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
index b6025c3..7f63dd4 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -1800,7 +1800,7 @@ static void mvneta_set_rx_mode(struct net_device *dev)
/* Interrupt handling - the callback for request_irq() */
static irqreturn_t mvneta_isr(int irq, void *dev_id)
{
- struct mvneta_port *pp = (struct mvneta_port *)dev_id;
+ struct mvneta_port *pp = *(struct mvneta_port **)dev_id;
/* Mask all interrupts */
mvreg_write(pp, MVNETA_INTR_NEW_MASK, 0);
@@ -2368,6 +2368,7 @@ static void mvneta_mdio_remove(struct mvneta_port *pp)
phy_disconnect(pp->phy_dev);
pp->phy_dev = NULL;
}
+static struct mvneta_port __percpu **percpu_pp;
static int mvneta_open(struct net_device *dev)
{
@@ -2386,9 +2387,14 @@ static int mvneta_open(struct net_device *dev)
if (ret)
goto err_cleanup_rxqs;
+ percpu_pp = alloc_percpu(struct mvneta_port *);
+ *__this_cpu_ptr(percpu_pp) = pp;
+
/* Connect to port interrupt line */
- ret = request_irq(pp->dev->irq, mvneta_isr, 0,
- MVNETA_DRIVER_NAME, pp);
+ ret = request_percpu_irq(pp->dev->irq, mvneta_isr,
+ MVNETA_DRIVER_NAME, percpu_pp);
+ enable_percpu_irq(pp->dev->irq, 0);
+
if (ret) {
netdev_err(pp->dev, "cannot request irq %d\n", pp->dev->irq);
goto err_cleanup_txqs;
--
1.7.8.6
WARNING: multiple messages have this Message-ID (diff)
From: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
To: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: linux-arm-kernel@lists.infradead.org,
thomas.petazzoni@free-electrons.com,
Jason Cooper <jason@lakedaemon.net>,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
"yrl.pp-manager.tt@hitachi.com" <yrl.pp-manager.tt@hitachi.com>,
Gregory Clement <gregory.clement@free-electrons.com>
Subject: Re: [BUG][mvebu] mvneta: cannot request irq 25 on openblocks-ax3
Date: Tue, 19 Mar 2013 10:39:30 -0300 [thread overview]
Message-ID: <20130319133928.GE3137@localhost> (raw)
In-Reply-To: <51486445.8040506@hitachi.com>
[-- Attachment #1: Type: text/plain, Size: 901 bytes --]
Hi Masami,
On Tue, Mar 19, 2013 at 10:12:37PM +0900, Masami Hiramatsu wrote:
>
> Here I've hit a bug on the recent kernel. As far as I know, this bug
> exists on 3.9-rc1 too.
>
> When I tried the latest mvebu for-next tree
> (git://git.infradead.org/users/jcooper/linux.git mvebu/for-next),
> I got below warning at bootup time and mvneta didn't work (link was never up).
> I ensured that "ifconfig ethX up" always caused that.
>
> Does anyone succeed to boot openblocks-ax3 recently or hit same
> trouble?
This is a known bug. Gregory Clement already has a fix and he
will submit it soon. In case you need this fixed ASAP, I'm attaching
you a patch with a fix.
Please note the attached patch is not ready for mainline inclusion,
as I said Gregory will submit a cleaner version soon.
--
Ezequiel García, Free Electrons
Embedded Linux, Kernel and Android Engineering
http://free-electrons.com
[-- Attachment #2: 0001-net-mvneta-convert-to-percpu-interrupt.patch --]
[-- Type: text/plain, Size: 1799 bytes --]
>From 03080b4e459b103b97b658789658f118053de522 Mon Sep 17 00:00:00 2001
From: Gregory CLEMENT <gregory.clement@free-electrons.com>
Date: Sat, 9 Feb 2013 22:07:54 +0100
Subject: [PATCH] net: mvneta: convert to percpu interrupt
Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
---
drivers/net/ethernet/marvell/mvneta.c | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/marvell/mvneta.c b/drivers/net/ethernet/marvell/mvneta.c
index b6025c3..7f63dd4 100644
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -1800,7 +1800,7 @@ static void mvneta_set_rx_mode(struct net_device *dev)
/* Interrupt handling - the callback for request_irq() */
static irqreturn_t mvneta_isr(int irq, void *dev_id)
{
- struct mvneta_port *pp = (struct mvneta_port *)dev_id;
+ struct mvneta_port *pp = *(struct mvneta_port **)dev_id;
/* Mask all interrupts */
mvreg_write(pp, MVNETA_INTR_NEW_MASK, 0);
@@ -2368,6 +2368,7 @@ static void mvneta_mdio_remove(struct mvneta_port *pp)
phy_disconnect(pp->phy_dev);
pp->phy_dev = NULL;
}
+static struct mvneta_port __percpu **percpu_pp;
static int mvneta_open(struct net_device *dev)
{
@@ -2386,9 +2387,14 @@ static int mvneta_open(struct net_device *dev)
if (ret)
goto err_cleanup_rxqs;
+ percpu_pp = alloc_percpu(struct mvneta_port *);
+ *__this_cpu_ptr(percpu_pp) = pp;
+
/* Connect to port interrupt line */
- ret = request_irq(pp->dev->irq, mvneta_isr, 0,
- MVNETA_DRIVER_NAME, pp);
+ ret = request_percpu_irq(pp->dev->irq, mvneta_isr,
+ MVNETA_DRIVER_NAME, percpu_pp);
+ enable_percpu_irq(pp->dev->irq, 0);
+
if (ret) {
netdev_err(pp->dev, "cannot request irq %d\n", pp->dev->irq);
goto err_cleanup_txqs;
--
1.7.8.6
next prev parent reply other threads:[~2013-03-19 13:39 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-19 13:12 [BUG][mvebu] mvneta: cannot request irq 25 on openblocks-ax3 Masami Hiramatsu
2013-03-19 13:12 ` Masami Hiramatsu
2013-03-19 13:33 ` Jason Cooper
2013-03-19 13:33 ` Jason Cooper
2013-03-19 14:19 ` Masami Hiramatsu
2013-03-19 14:19 ` Masami Hiramatsu
2013-03-19 14:33 ` Jason Cooper
2013-03-19 14:33 ` Jason Cooper
2013-03-19 13:39 ` Ezequiel Garcia [this message]
2013-03-19 13:39 ` Ezequiel Garcia
2013-03-19 14:19 ` Masami Hiramatsu
2013-03-19 14:19 ` Masami Hiramatsu
2013-03-19 16:43 ` Gregory CLEMENT
2013-03-19 16:43 ` Gregory CLEMENT
2013-03-19 19:48 ` Florian Fainelli
2013-03-19 19:48 ` Florian Fainelli
2013-03-20 15:09 ` Gregory CLEMENT
2013-03-20 15:09 ` Gregory CLEMENT
2013-03-21 1:56 ` Masami Hiramatsu
2013-03-21 1:56 ` Masami Hiramatsu
[not found] <CABx3TkU7e9ZUDYhegUBD+XbG03+Q+dxF8jzeUe4Cao9Hg_TpBw@mail.gmail.com>
2013-03-20 2:11 ` Ryan Press
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=20130319133928.GE3137@localhost \
--to=ezequiel.garcia@free-electrons.com \
--cc=linux-arm-kernel@lists.infradead.org \
/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.