From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 09392C3DA78 for ; Fri, 13 Jan 2023 21:49:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229673AbjAMVto (ORCPT ); Fri, 13 Jan 2023 16:49:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42850 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229526AbjAMVto (ORCPT ); Fri, 13 Jan 2023 16:49:44 -0500 Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7D05955AE for ; Fri, 13 Jan 2023 13:49:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1673646583; x=1705182583; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=Ld03bwsmnv1jRFXbl5Jxc7/2sTRXdKxq3mTZRJJNurM=; b=mlRQFMFEjqw56KruPR6Vv+LdX8ksavWcsztFQbndK38x3dCCY4J1be4J xKKA62ycpqrm2A1uKFfHAT6/fkorC7gvnLmvWqG7LYVlCbdswgBw3+uPq WVL8cRW4eyKJmCY5TR8ik8JA2eJ1NVuETNjsOkJQs3qXHEI83nVYpqwcA fbj2obFL0qBHBlW0I3TmiNZzF/HF7zCKXOWaL9xQMMnhS0r3K629K5kl3 8zfBfB9y8q/03RUQTNxOAgZnHz6oRNIHzIlZSPdLzDJYtOIkvXzYK/CJM wXIkxcdUEcjTjTvnIaxlPB7ZRVfXYnRgTFdG+W6J5Ham621lv3FlOof/d A==; X-IronPort-AV: E=McAfee;i="6500,9779,10589"; a="307663220" X-IronPort-AV: E=Sophos;i="5.97,214,1669104000"; d="scan'208";a="307663220" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Jan 2023 13:49:43 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10589"; a="800727720" X-IronPort-AV: E=Sophos;i="5.97,214,1669104000"; d="scan'208";a="800727720" Received: from anguy11-upstream.jf.intel.com ([10.166.9.133]) by fmsmga001.fm.intel.com with ESMTP; 13 Jan 2023 13:49:42 -0800 From: Tony Nguyen To: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com Cc: Slawomir Laba , netdev@vger.kernel.org, anthony.l.nguyen@intel.com, jan.sokolowski@intel.com, Mateusz Palczewski , Marek Szlosek Subject: [PATCH net 1/1] iavf: Fix shutdown pci callback to match the remove one Date: Fri, 13 Jan 2023 13:50:12 -0800 Message-Id: <20230113215012.971028-1-anthony.l.nguyen@intel.com> X-Mailer: git-send-email 2.38.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Slawomir Laba Make the flow for pci shutdown be the same to the pci remove. iavf_shutdown was implementing an incomplete version of iavf_remove. It misses several calls to the kernel like iavf_free_misc_irq, iavf_reset_interrupt_capability, iounmap that might break the system on reboot or hibernation. Implement the call of iavf_remove directly in iavf_shutdown to close this gap. Fixes: 5eae00c57f5e ("i40evf: main driver core") Signed-off-by: Slawomir Laba Signed-off-by: Mateusz Palczewski Tested-by: Marek Szlosek Signed-off-by: Tony Nguyen --- drivers/net/ethernet/intel/iavf/iavf_main.c | 40 +++++++-------------- 1 file changed, 12 insertions(+), 28 deletions(-) diff --git a/drivers/net/ethernet/intel/iavf/iavf_main.c b/drivers/net/ethernet/intel/iavf/iavf_main.c index adc02adef83a..34c9bd62546b 100644 --- a/drivers/net/ethernet/intel/iavf/iavf_main.c +++ b/drivers/net/ethernet/intel/iavf/iavf_main.c @@ -4812,34 +4812,6 @@ int iavf_process_config(struct iavf_adapter *adapter) return 0; } -/** - * iavf_shutdown - Shutdown the device in preparation for a reboot - * @pdev: pci device structure - **/ -static void iavf_shutdown(struct pci_dev *pdev) -{ - struct iavf_adapter *adapter = iavf_pdev_to_adapter(pdev); - struct net_device *netdev = adapter->netdev; - - netif_device_detach(netdev); - - if (netif_running(netdev)) - iavf_close(netdev); - - if (iavf_lock_timeout(&adapter->crit_lock, 5000)) - dev_warn(&adapter->pdev->dev, "%s: failed to acquire crit_lock\n", __func__); - /* Prevent the watchdog from running. */ - iavf_change_state(adapter, __IAVF_REMOVE); - adapter->aq_required = 0; - mutex_unlock(&adapter->crit_lock); - -#ifdef CONFIG_PM - pci_save_state(pdev); - -#endif - pci_disable_device(pdev); -} - /** * iavf_probe - Device Initialization Routine * @pdev: PCI device information struct @@ -5177,6 +5149,18 @@ static void iavf_remove(struct pci_dev *pdev) pci_disable_device(pdev); } +/** + * iavf_shutdown - Shutdown the device in preparation for a reboot + * @pdev: pci device structure + **/ +static void iavf_shutdown(struct pci_dev *pdev) +{ + iavf_remove(pdev); + + if (system_state == SYSTEM_POWER_OFF) + pci_set_power_state(pdev, PCI_D3hot); +} + static SIMPLE_DEV_PM_OPS(iavf_pm_ops, iavf_suspend, iavf_resume); static struct pci_driver iavf_driver = { -- 2.38.1