diff mbox series

[net,1/1] atlantic: Fix driver resume flow.

Message ID 20210827115225.6964-1-skalluru@marvell.com (mailing list archive)
State Accepted
Commit 57f780f1c43362b86fd23d20bd940e2468237716
Delegated to: Netdev Maintainers
Headers show
Series [net,1/1] atlantic: Fix driver resume flow. | expand

Checks

Context Check Description
netdev/cover_letter success Link
netdev/fixes_present success Link
netdev/patch_count success Link
netdev/tree_selection success Clearly marked for net
netdev/subject_prefix success Link
netdev/cc_maintainers fail 1 blamed authors not CCed: ndanilov@marvell.com; 2 maintainers not CCed: ndanilov@marvell.com kuba@kernel.org
netdev/source_inline success Was 0 now: 0
netdev/verify_signedoff success Link
netdev/module_param success Was 0 now: 0
netdev/build_32bit success Errors and warnings before: 0 this patch: 0
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/verify_fixes success Link
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 9 lines checked
netdev/build_allmodconfig_warn success Errors and warnings before: 0 this patch: 0
netdev/header_inline success Link

Commit Message

Sudarsana Reddy Kalluru Aug. 27, 2021, 11:52 a.m. UTC
Driver crashes when restoring from the Hibernate. In the resume flow,
driver need to clean up the older nic/vec objects and re-initialize them.

Fixes: 8aaa112a57c1d ("net: atlantic: refactoring pm logic")
Signed-off-by: Sudarsana Reddy Kalluru <skalluru@marvell.com>
Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
---
 drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Jakub Kicinski Aug. 28, 2021, 12:23 a.m. UTC | #1
On Fri, 27 Aug 2021 04:52:25 -0700 Sudarsana Reddy Kalluru wrote:
> Driver crashes when restoring from the Hibernate. In the resume flow,
> driver need to clean up the older nic/vec objects and re-initialize them.
> 
> Fixes: 8aaa112a57c1d ("net: atlantic: refactoring pm logic")
> Signed-off-by: Sudarsana Reddy Kalluru <skalluru@marvell.com>
> Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
> ---
>  drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c b/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c
> index 59253846e885..f26d03735619 100644
> --- a/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c
> +++ b/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c
> @@ -417,6 +417,9 @@ static int atl_resume_common(struct device *dev, bool deep)
>  	pci_restore_state(pdev);
>  
>  	if (deep) {
> +		/* Reinitialize Nic/Vecs objects */
> +		aq_nic_deinit(nic, !nic->aq_hw->aq_nic_cfg->wol);

Why does the deinit() happen on resume, not suspend?

>  		ret = aq_nic_init(nic);
>  		if (ret)
>  			goto err_exit;
patchwork-bot+netdevbpf@kernel.org Aug. 29, 2021, 9:50 a.m. UTC | #2
Hello:

This patch was applied to netdev/net.git (refs/heads/master):

On Fri, 27 Aug 2021 04:52:25 -0700 you wrote:
> Driver crashes when restoring from the Hibernate. In the resume flow,
> driver need to clean up the older nic/vec objects and re-initialize them.
> 
> Fixes: 8aaa112a57c1d ("net: atlantic: refactoring pm logic")
> Signed-off-by: Sudarsana Reddy Kalluru <skalluru@marvell.com>
> Signed-off-by: Igor Russkikh <irusskikh@marvell.com>
> 
> [...]

Here is the summary with links:
  - [net,1/1] atlantic: Fix driver resume flow.
    https://git.kernel.org/netdev/net/c/57f780f1c433

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
diff mbox series

Patch

diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c b/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c
index 59253846e885..f26d03735619 100644
--- a/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_pci_func.c
@@ -417,6 +417,9 @@  static int atl_resume_common(struct device *dev, bool deep)
 	pci_restore_state(pdev);
 
 	if (deep) {
+		/* Reinitialize Nic/Vecs objects */
+		aq_nic_deinit(nic, !nic->aq_hw->aq_nic_cfg->wol);
+
 		ret = aq_nic_init(nic);
 		if (ret)
 			goto err_exit;