public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] octeontx2-af: Fix PF driver crash with kexec kernel booting
@ 2026-01-29  9:19 Anshumali Gaur
  2026-01-29 23:02 ` Jacob Keller
  0 siblings, 1 reply; 2+ messages in thread
From: Anshumali Gaur @ 2026-01-29  9:19 UTC (permalink / raw)
  To: netdev, linux-kernel
  Cc: Anshumali Gaur, Sunil Goutham, Linu Cherian, Geetha sowjanya,
	Jerin Jacob, hariprasad, Subbaraya Sundeep, Andrew Lunn,
	David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni

When both AF and PF drivers are built as modules, the PF driver in the
kexec kernel may probe before the AF driver is ready. This leads to
a crash due to uninitialized hardware state.

This patch ensures the PF driver properly detects and waits for AF
driver readiness before proceeding with initialization.

Fixes: 54494aa5d1e6 ("octeontx2-af: Add Marvell OcteonTX2 RVU AF driver")
Signed-off-by: Anshumali Gaur <agaur@marvell.com>
---
 drivers/net/ethernet/marvell/octeontx2/af/rvu.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/drivers/net/ethernet/marvell/octeontx2/af/rvu.c b/drivers/net/ethernet/marvell/octeontx2/af/rvu.c
index 747fbdf2a908..8530df8b3fda 100644
--- a/drivers/net/ethernet/marvell/octeontx2/af/rvu.c
+++ b/drivers/net/ethernet/marvell/octeontx2/af/rvu.c
@@ -3632,11 +3632,22 @@ static void rvu_remove(struct pci_dev *pdev)
 	devm_kfree(&pdev->dev, rvu);
 }
 
+static void rvu_shutdown(struct pci_dev *pdev)
+{
+	struct rvu *rvu = pci_get_drvdata(pdev);
+
+	if (!rvu)
+		return;
+
+	rvu_clear_rvum_blk_revid(rvu);
+}
+
 static struct pci_driver rvu_driver = {
 	.name = DRV_NAME,
 	.id_table = rvu_id_table,
 	.probe = rvu_probe,
 	.remove = rvu_remove,
+	.shutdown = rvu_shutdown,
 };
 
 static int __init rvu_init_module(void)
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] octeontx2-af: Fix PF driver crash with kexec kernel booting
  2026-01-29  9:19 [PATCH] octeontx2-af: Fix PF driver crash with kexec kernel booting Anshumali Gaur
@ 2026-01-29 23:02 ` Jacob Keller
  0 siblings, 0 replies; 2+ messages in thread
From: Jacob Keller @ 2026-01-29 23:02 UTC (permalink / raw)
  To: Anshumali Gaur, netdev, linux-kernel
  Cc: Sunil Goutham, Linu Cherian, Geetha sowjanya, Jerin Jacob,
	hariprasad, Subbaraya Sundeep, Andrew Lunn, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni



On 1/29/2026 1:19 AM, Anshumali Gaur wrote:
> When both AF and PF drivers are built as modules, the PF driver in the
> kexec kernel may probe before the AF driver is ready. This leads to
> a crash due to uninitialized hardware state.
> 
> This patch ensures the PF driver properly detects and waits for AF
> driver readiness before proceeding with initialization.
> 

To me, the patch description is not sufficient to describe the what and 
why of this change.

Could you please provide a better explanation of how the addition of the 
provided shutdown handler fixes initialization?

> Fixes: 54494aa5d1e6 ("octeontx2-af: Add Marvell OcteonTX2 RVU AF driver")
> Signed-off-by: Anshumali Gaur <agaur@marvell.com>
> ---
>   drivers/net/ethernet/marvell/octeontx2/af/rvu.c | 11 +++++++++++
>   1 file changed, 11 insertions(+)
> 
> diff --git a/drivers/net/ethernet/marvell/octeontx2/af/rvu.c b/drivers/net/ethernet/marvell/octeontx2/af/rvu.c
> index 747fbdf2a908..8530df8b3fda 100644
> --- a/drivers/net/ethernet/marvell/octeontx2/af/rvu.c
> +++ b/drivers/net/ethernet/marvell/octeontx2/af/rvu.c
> @@ -3632,11 +3632,22 @@ static void rvu_remove(struct pci_dev *pdev)
>   	devm_kfree(&pdev->dev, rvu);
>   }
>   
> +static void rvu_shutdown(struct pci_dev *pdev)
> +{
> +	struct rvu *rvu = pci_get_drvdata(pdev);
> +
> +	if (!rvu)
> +		return;
> +
> +	rvu_clear_rvum_blk_revid(rvu);

Here, I guess you are clearing some data about the device status. Does 
that mean that when you initialize later you will wait for the AF driver 
to finish probing and configure this? It would be nice to explain how 
this change fixes initialization.

> +}
> +
>   static struct pci_driver rvu_driver = {
>   	.name = DRV_NAME,
>   	.id_table = rvu_id_table,
>   	.probe = rvu_probe,
>   	.remove = rvu_remove,
> +	.shutdown = rvu_shutdown,

This is the shutdown handler:
> 
>  * @shutdown:   Hook into reboot_notifier_list (kernel/sys.c).
>  *              Intended to stop any idling DMA operations.
>  *              Useful for enabling wake-on-lan (NIC) or changing
>  *              the power state of a device before reboot.
>  *              e.g. drivers/net/e100.c.

How does this have anything to do with initialization?

>   };
>   
>   static int __init rvu_init_module(void)


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-01-29 23:02 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-29  9:19 [PATCH] octeontx2-af: Fix PF driver crash with kexec kernel booting Anshumali Gaur
2026-01-29 23:02 ` Jacob Keller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox