* [PATCH net RESEND 0/3] net: Use IRQF_NO_AUTOEN flag in request_irq()
@ 2024-09-11 9:44 Jinjie Ruan
2024-09-11 9:44 ` [PATCH net RESEND 1/3] net: apple: bmac: " Jinjie Ruan
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Jinjie Ruan @ 2024-09-11 9:44 UTC (permalink / raw)
To: davem, edumazet, kuba, pabeni, claudiu.manoil, vladimir.oltean,
louis.peens, damien.lemoal, set_pte_at, mpe, horms, yinjun.zhang,
ryno.swart, johannes.berg, fei.qin, netdev, linux-kernel,
oss-drivers
Cc: ruanjinjie
As commit cbe16f35bee6 ("genirq: Add IRQF_NO_AUTOEN for request_irq/nmi()")
said, reqeust_irq() and then disable_irq() is unsafe.
IRQF_NO_AUTOEN flag can be used by drivers to request_irq(). It prevents
the automatic enabling of the requested interrupt in the same safe way.
With that the usage can be simplified and corrected.
Only compile-tested.
v1 -> RESNED
- Add reviewed-by.
- Put wireless into another patch set.
- Update to net prefix subject.
Jinjie Ruan (3):
net: apple: bmac: Use IRQF_NO_AUTOEN flag in request_irq()
net: enetc: Use IRQF_NO_AUTOEN flag in request_irq()
nfp: Use IRQF_NO_AUTOEN flag in request_irq()
drivers/net/ethernet/apple/bmac.c | 3 +--
drivers/net/ethernet/freescale/enetc/enetc.c | 3 +--
drivers/net/ethernet/netronome/nfp/nfp_net_common.c | 5 ++---
3 files changed, 4 insertions(+), 7 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH net RESEND 1/3] net: apple: bmac: Use IRQF_NO_AUTOEN flag in request_irq()
2024-09-11 9:44 [PATCH net RESEND 0/3] net: Use IRQF_NO_AUTOEN flag in request_irq() Jinjie Ruan
@ 2024-09-11 9:44 ` Jinjie Ruan
2024-09-11 9:44 ` [PATCH net RESEND 2/3] net: enetc: " Jinjie Ruan
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Jinjie Ruan @ 2024-09-11 9:44 UTC (permalink / raw)
To: davem, edumazet, kuba, pabeni, claudiu.manoil, vladimir.oltean,
louis.peens, damien.lemoal, set_pte_at, mpe, horms, yinjun.zhang,
ryno.swart, johannes.berg, fei.qin, netdev, linux-kernel,
oss-drivers
Cc: ruanjinjie
disable_irq() after request_irq() still has a time gap in which
interrupts can come. request_irq() with IRQF_NO_AUTOEN flag will
disable IRQ auto-enable when request IRQ.
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
v1 -> RESEND
- Put wireless into another patch set.
---
drivers/net/ethernet/apple/bmac.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/apple/bmac.c b/drivers/net/ethernet/apple/bmac.c
index 292b1f9cd9e7..785f4b4ff758 100644
--- a/drivers/net/ethernet/apple/bmac.c
+++ b/drivers/net/ethernet/apple/bmac.c
@@ -1317,7 +1317,7 @@ static int bmac_probe(struct macio_dev *mdev, const struct of_device_id *match)
timer_setup(&bp->tx_timeout, bmac_tx_timeout, 0);
- ret = request_irq(dev->irq, bmac_misc_intr, 0, "BMAC-misc", dev);
+ ret = request_irq(dev->irq, bmac_misc_intr, IRQF_NO_AUTOEN, "BMAC-misc", dev);
if (ret) {
printk(KERN_ERR "BMAC: can't get irq %d\n", dev->irq);
goto err_out_iounmap_rx;
@@ -1336,7 +1336,6 @@ static int bmac_probe(struct macio_dev *mdev, const struct of_device_id *match)
/* Mask chip interrupts and disable chip, will be
* re-enabled on open()
*/
- disable_irq(dev->irq);
pmac_call_feature(PMAC_FTR_BMAC_ENABLE, macio_get_of_node(bp->mdev), 0, 0);
if (register_netdev(dev) != 0) {
--
2.34.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH net RESEND 2/3] net: enetc: Use IRQF_NO_AUTOEN flag in request_irq()
2024-09-11 9:44 [PATCH net RESEND 0/3] net: Use IRQF_NO_AUTOEN flag in request_irq() Jinjie Ruan
2024-09-11 9:44 ` [PATCH net RESEND 1/3] net: apple: bmac: " Jinjie Ruan
@ 2024-09-11 9:44 ` Jinjie Ruan
2024-09-11 9:44 ` [PATCH net RESEND 3/3] nfp: " Jinjie Ruan
2024-09-13 3:50 ` [PATCH net RESEND 0/3] net: " patchwork-bot+netdevbpf
3 siblings, 0 replies; 5+ messages in thread
From: Jinjie Ruan @ 2024-09-11 9:44 UTC (permalink / raw)
To: davem, edumazet, kuba, pabeni, claudiu.manoil, vladimir.oltean,
louis.peens, damien.lemoal, set_pte_at, mpe, horms, yinjun.zhang,
ryno.swart, johannes.berg, fei.qin, netdev, linux-kernel,
oss-drivers
Cc: ruanjinjie
disable_irq() after request_irq() still has a time gap in which
interrupts can come. request_irq() with IRQF_NO_AUTOEN flag will
disable IRQ auto-enable when request IRQ.
Fixes: bbb96dc7fa1a ("enetc: Factor out the traffic start/stop procedures")
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
v1 -> RESEND
- Put wireless into another patch set.
---
drivers/net/ethernet/freescale/enetc/enetc.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c b/drivers/net/ethernet/freescale/enetc/enetc.c
index 5c45f42232d3..f04f42ea60c0 100644
--- a/drivers/net/ethernet/freescale/enetc/enetc.c
+++ b/drivers/net/ethernet/freescale/enetc/enetc.c
@@ -2305,12 +2305,11 @@ static int enetc_setup_irqs(struct enetc_ndev_priv *priv)
snprintf(v->name, sizeof(v->name), "%s-rxtx%d",
priv->ndev->name, i);
- err = request_irq(irq, enetc_msix, 0, v->name, v);
+ err = request_irq(irq, enetc_msix, IRQF_NO_AUTOEN, v->name, v);
if (err) {
dev_err(priv->dev, "request_irq() failed!\n");
goto irq_err;
}
- disable_irq(irq);
v->tbier_base = hw->reg + ENETC_BDR(TX, 0, ENETC_TBIER);
v->rbier = hw->reg + ENETC_BDR(RX, i, ENETC_RBIER);
--
2.34.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH net RESEND 3/3] nfp: Use IRQF_NO_AUTOEN flag in request_irq()
2024-09-11 9:44 [PATCH net RESEND 0/3] net: Use IRQF_NO_AUTOEN flag in request_irq() Jinjie Ruan
2024-09-11 9:44 ` [PATCH net RESEND 1/3] net: apple: bmac: " Jinjie Ruan
2024-09-11 9:44 ` [PATCH net RESEND 2/3] net: enetc: " Jinjie Ruan
@ 2024-09-11 9:44 ` Jinjie Ruan
2024-09-13 3:50 ` [PATCH net RESEND 0/3] net: " patchwork-bot+netdevbpf
3 siblings, 0 replies; 5+ messages in thread
From: Jinjie Ruan @ 2024-09-11 9:44 UTC (permalink / raw)
To: davem, edumazet, kuba, pabeni, claudiu.manoil, vladimir.oltean,
louis.peens, damien.lemoal, set_pte_at, mpe, horms, yinjun.zhang,
ryno.swart, johannes.berg, fei.qin, netdev, linux-kernel,
oss-drivers
Cc: ruanjinjie
disable_irq() after request_irq() still has a time gap in which
interrupts can come. request_irq() with IRQF_NO_AUTOEN flag will
disable IRQ auto-enable when request IRQ.
Reviewed-by: Louis Peens <louis.peens@corigine.com>
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
v1 -> RESEND
- Put wireless into another patch set.
- Add reviewed-by.
---
drivers/net/ethernet/netronome/nfp/nfp_net_common.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
index 182ba0a8b095..6e0929af0f72 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
+++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
@@ -821,14 +821,13 @@ nfp_net_prepare_vector(struct nfp_net *nn, struct nfp_net_r_vector *r_vec,
snprintf(r_vec->name, sizeof(r_vec->name),
"%s-rxtx-%d", nfp_net_name(nn), idx);
- err = request_irq(r_vec->irq_vector, r_vec->handler, 0, r_vec->name,
- r_vec);
+ err = request_irq(r_vec->irq_vector, r_vec->handler, IRQF_NO_AUTOEN,
+ r_vec->name, r_vec);
if (err) {
nfp_net_napi_del(&nn->dp, r_vec);
nn_err(nn, "Error requesting IRQ %d\n", r_vec->irq_vector);
return err;
}
- disable_irq(r_vec->irq_vector);
irq_set_affinity_hint(r_vec->irq_vector, &r_vec->affinity_mask);
--
2.34.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH net RESEND 0/3] net: Use IRQF_NO_AUTOEN flag in request_irq()
2024-09-11 9:44 [PATCH net RESEND 0/3] net: Use IRQF_NO_AUTOEN flag in request_irq() Jinjie Ruan
` (2 preceding siblings ...)
2024-09-11 9:44 ` [PATCH net RESEND 3/3] nfp: " Jinjie Ruan
@ 2024-09-13 3:50 ` patchwork-bot+netdevbpf
3 siblings, 0 replies; 5+ messages in thread
From: patchwork-bot+netdevbpf @ 2024-09-13 3:50 UTC (permalink / raw)
To: Jinjie Ruan
Cc: davem, edumazet, kuba, pabeni, claudiu.manoil, vladimir.oltean,
louis.peens, damien.lemoal, set_pte_at, mpe, horms, yinjun.zhang,
ryno.swart, johannes.berg, fei.qin, netdev, linux-kernel,
oss-drivers
Hello:
This series was applied to netdev/net-next.git (main)
by Jakub Kicinski <kuba@kernel.org>:
On Wed, 11 Sep 2024 17:44:42 +0800 you wrote:
> As commit cbe16f35bee6 ("genirq: Add IRQF_NO_AUTOEN for request_irq/nmi()")
> said, reqeust_irq() and then disable_irq() is unsafe.
>
> IRQF_NO_AUTOEN flag can be used by drivers to request_irq(). It prevents
> the automatic enabling of the requested interrupt in the same safe way.
> With that the usage can be simplified and corrected.
>
> [...]
Here is the summary with links:
- [net,RESEND,1/3] net: apple: bmac: Use IRQF_NO_AUTOEN flag in request_irq()
https://git.kernel.org/netdev/net-next/c/e08ec0597bad
- [net,RESEND,2/3] net: enetc: Use IRQF_NO_AUTOEN flag in request_irq()
https://git.kernel.org/netdev/net-next/c/799a92259977
- [net,RESEND,3/3] nfp: Use IRQF_NO_AUTOEN flag in request_irq()
https://git.kernel.org/netdev/net-next/c/daaba19d357f
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-09-13 3:50 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-11 9:44 [PATCH net RESEND 0/3] net: Use IRQF_NO_AUTOEN flag in request_irq() Jinjie Ruan
2024-09-11 9:44 ` [PATCH net RESEND 1/3] net: apple: bmac: " Jinjie Ruan
2024-09-11 9:44 ` [PATCH net RESEND 2/3] net: enetc: " Jinjie Ruan
2024-09-11 9:44 ` [PATCH net RESEND 3/3] nfp: " Jinjie Ruan
2024-09-13 3:50 ` [PATCH net RESEND 0/3] net: " patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox