From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Tushar Dave <tushar.n.dave@oracle.com>,
Fengguang Wu <fengguang.wu@intel.com>,
Jeff Kirsher <jeffrey.t.kirsher@intel.com>,
Sasha Levin <alexander.levin@microsoft.com>
Subject: [PATCH 4.9 39/56] e1000: fix disabling already-disabled warning
Date: Fri, 2 Mar 2018 09:51:25 +0100 [thread overview]
Message-ID: <20180302084451.554988761@linuxfoundation.org> (raw)
In-Reply-To: <20180302084449.568562222@linuxfoundation.org>
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tushar Dave <tushar.n.dave@oracle.com>
[ Upstream commit 0b76aae741abb9d16d2c0e67f8b1e766576f897d ]
This patch adds check so that driver does not disable already
disabled device.
[ 44.637743] advantechwdt: Unexpected close, not stopping watchdog!
[ 44.997548] input: ImExPS/2 Generic Explorer Mouse as /devices/platform/i8042/serio1/input/input6
[ 45.013419] e1000 0000:00:03.0: disabling already-disabled device
[ 45.013447] ------------[ cut here ]------------
[ 45.014868] WARNING: CPU: 1 PID: 71 at drivers/pci/pci.c:1641 pci_disable_device+0xa1/0x105:
pci_disable_device at drivers/pci/pci.c:1640
[ 45.016171] CPU: 1 PID: 71 Comm: rcu_perf_shutdo Not tainted 4.14.0-01330-g3c07399 #1
[ 45.017197] task: ffff88011bee9e40 task.stack: ffffc90000860000
[ 45.017987] RIP: 0010:pci_disable_device+0xa1/0x105:
pci_disable_device at drivers/pci/pci.c:1640
[ 45.018603] RSP: 0000:ffffc90000863e30 EFLAGS: 00010286
[ 45.019282] RAX: 0000000000000035 RBX: ffff88013a230008 RCX: 0000000000000000
[ 45.020182] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000203
[ 45.021084] RBP: ffff88013a3f31e8 R08: 0000000000000001 R09: 0000000000000000
[ 45.021986] R10: ffffffff827ec29c R11: 0000000000000002 R12: 0000000000000001
[ 45.022946] R13: ffff88013a230008 R14: ffff880117802b20 R15: ffffc90000863e8f
[ 45.023842] FS: 0000000000000000(0000) GS:ffff88013fd00000(0000) knlGS:0000000000000000
[ 45.024863] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 45.025583] CR2: ffffc900006d4000 CR3: 000000000220f000 CR4: 00000000000006a0
[ 45.026478] Call Trace:
[ 45.026811] __e1000_shutdown+0x1d4/0x1e2:
__e1000_shutdown at drivers/net/ethernet/intel/e1000/e1000_main.c:5162
[ 45.027344] ? rcu_perf_cleanup+0x2a1/0x2a1:
rcu_perf_shutdown at kernel/rcu/rcuperf.c:627
[ 45.027883] e1000_shutdown+0x14/0x3a:
e1000_shutdown at drivers/net/ethernet/intel/e1000/e1000_main.c:5235
[ 45.028351] device_shutdown+0x110/0x1aa:
device_shutdown at drivers/base/core.c:2807
[ 45.028858] kernel_power_off+0x31/0x64:
kernel_power_off at kernel/reboot.c:260
[ 45.029343] rcu_perf_shutdown+0x9b/0xa7:
rcu_perf_shutdown at kernel/rcu/rcuperf.c:637
[ 45.029852] ? __wake_up_common_lock+0xa2/0xa2:
autoremove_wake_function at kernel/sched/wait.c:376
[ 45.030414] kthread+0x126/0x12e:
kthread at kernel/kthread.c:233
[ 45.030834] ? __kthread_bind_mask+0x8e/0x8e:
kthread at kernel/kthread.c:190
[ 45.031399] ? ret_from_fork+0x1f/0x30:
ret_from_fork at arch/x86/entry/entry_64.S:443
[ 45.031883] ? kernel_init+0xa/0xf5:
kernel_init at init/main.c:997
[ 45.032325] ret_from_fork+0x1f/0x30:
ret_from_fork at arch/x86/entry/entry_64.S:443
[ 45.032777] Code: 00 48 85 ed 75 07 48 8b ab a8 00 00 00 48 8d bb 98 00 00 00 e8 aa d1 11 00 48 89 ea 48 89 c6 48 c7 c7 d8 e4 0b 82 e8 55 7d da ff <0f> ff b9 01 00 00 00 31 d2 be 01 00 00 00 48 c7 c7 f0 b1 61 82
[ 45.035222] ---[ end trace c257137b1b1976ef ]---
[ 45.037838] ACPI: Preparing to enter system sleep state S5
Signed-off-by: Tushar Dave <tushar.n.dave@oracle.com>
Tested-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/net/ethernet/intel/e1000/e1000.h | 3 +-
drivers/net/ethernet/intel/e1000/e1000_main.c | 27 +++++++++++++++++++++-----
2 files changed, 24 insertions(+), 6 deletions(-)
--- a/drivers/net/ethernet/intel/e1000/e1000.h
+++ b/drivers/net/ethernet/intel/e1000/e1000.h
@@ -331,7 +331,8 @@ struct e1000_adapter {
enum e1000_state_t {
__E1000_TESTING,
__E1000_RESETTING,
- __E1000_DOWN
+ __E1000_DOWN,
+ __E1000_DISABLED
};
#undef pr_fmt
--- a/drivers/net/ethernet/intel/e1000/e1000_main.c
+++ b/drivers/net/ethernet/intel/e1000/e1000_main.c
@@ -940,7 +940,7 @@ static int e1000_init_hw_struct(struct e
static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
{
struct net_device *netdev;
- struct e1000_adapter *adapter;
+ struct e1000_adapter *adapter = NULL;
struct e1000_hw *hw;
static int cards_found;
@@ -950,6 +950,7 @@ static int e1000_probe(struct pci_dev *p
u16 tmp = 0;
u16 eeprom_apme_mask = E1000_EEPROM_APME;
int bars, need_ioport;
+ bool disable_dev = false;
/* do not allocate ioport bars when not needed */
need_ioport = e1000_is_need_ioport(pdev);
@@ -1250,11 +1251,13 @@ err_mdio_ioremap:
iounmap(hw->ce4100_gbe_mdio_base_virt);
iounmap(hw->hw_addr);
err_ioremap:
+ disable_dev = !test_and_set_bit(__E1000_DISABLED, &adapter->flags);
free_netdev(netdev);
err_alloc_etherdev:
pci_release_selected_regions(pdev, bars);
err_pci_reg:
- pci_disable_device(pdev);
+ if (!adapter || disable_dev)
+ pci_disable_device(pdev);
return err;
}
@@ -1272,6 +1275,7 @@ static void e1000_remove(struct pci_dev
struct net_device *netdev = pci_get_drvdata(pdev);
struct e1000_adapter *adapter = netdev_priv(netdev);
struct e1000_hw *hw = &adapter->hw;
+ bool disable_dev;
e1000_down_and_stop(adapter);
e1000_release_manageability(adapter);
@@ -1290,9 +1294,11 @@ static void e1000_remove(struct pci_dev
iounmap(hw->flash_address);
pci_release_selected_regions(pdev, adapter->bars);
+ disable_dev = !test_and_set_bit(__E1000_DISABLED, &adapter->flags);
free_netdev(netdev);
- pci_disable_device(pdev);
+ if (disable_dev)
+ pci_disable_device(pdev);
}
/**
@@ -5166,7 +5172,8 @@ static int __e1000_shutdown(struct pci_d
if (netif_running(netdev))
e1000_free_irq(adapter);
- pci_disable_device(pdev);
+ if (!test_and_set_bit(__E1000_DISABLED, &adapter->flags))
+ pci_disable_device(pdev);
return 0;
}
@@ -5210,6 +5217,10 @@ static int e1000_resume(struct pci_dev *
pr_err("Cannot enable PCI device from suspend\n");
return err;
}
+
+ /* flush memory to make sure state is correct */
+ smp_mb__before_atomic();
+ clear_bit(__E1000_DISABLED, &adapter->flags);
pci_set_master(pdev);
pci_enable_wake(pdev, PCI_D3hot, 0);
@@ -5284,7 +5295,9 @@ static pci_ers_result_t e1000_io_error_d
if (netif_running(netdev))
e1000_down(adapter);
- pci_disable_device(pdev);
+
+ if (!test_and_set_bit(__E1000_DISABLED, &adapter->flags))
+ pci_disable_device(pdev);
/* Request a slot slot reset. */
return PCI_ERS_RESULT_NEED_RESET;
@@ -5312,6 +5325,10 @@ static pci_ers_result_t e1000_io_slot_re
pr_err("Cannot re-enable PCI device after reset.\n");
return PCI_ERS_RESULT_DISCONNECT;
}
+
+ /* flush memory to make sure state is correct */
+ smp_mb__before_atomic();
+ clear_bit(__E1000_DISABLED, &adapter->flags);
pci_set_master(pdev);
pci_enable_wake(pdev, PCI_D3hot, 0);
next prev parent reply other threads:[~2018-03-02 8:51 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-02 8:50 [PATCH 4.9 00/56] 4.9.86-stable review Greg Kroah-Hartman
2018-03-02 8:50 ` [PATCH 4.9 01/56] hrtimer: Ensure POSIX compliance (relative CLOCK_REALTIME hrtimers) Greg Kroah-Hartman
2018-03-02 8:50 ` [PATCH 4.9 02/56] i2c: designware: must wait for enable Greg Kroah-Hartman
2018-03-02 8:50 ` [PATCH 4.9 03/56] f2fs: fix a bug caused by NULL extent tree Greg Kroah-Hartman
2018-03-02 8:50 ` [PATCH 4.9 04/56] dmaengine: fsl-edma: disable clks on all error paths Greg Kroah-Hartman
2018-03-02 8:50 ` [PATCH 4.9 05/56] nvme: check hw sectors before setting chunk sectors Greg Kroah-Hartman
2018-03-02 8:50 ` [PATCH 4.9 06/56] net: usb: qmi_wwan: add Telit ME910 PID 0x1101 support Greg Kroah-Hartman
2018-03-02 8:50 ` [PATCH 4.9 07/56] mtd: nand: gpmi: Fix failure when a erased page has a bitflip at BBM Greg Kroah-Hartman
2018-03-02 8:50 ` [PATCH 4.9 08/56] mtd: nand: brcmnand: Zero bitflip is not an error Greg Kroah-Hartman
2018-03-02 8:50 ` [PATCH 4.9 09/56] ipv6: icmp6: Allow icmp messages to be looped back Greg Kroah-Hartman
2018-03-02 8:50 ` [PATCH 4.9 10/56] ARM: 8731/1: Fix csum_partial_copy_from_user() stack mismatch Greg Kroah-Hartman
2018-03-02 8:50 ` [PATCH 4.9 11/56] x86/asm: Allow again using asm.h when building for the bpf clang target Greg Kroah-Hartman
2018-03-02 8:50 ` [PATCH 4.9 12/56] sget(): handle failures of register_shrinker() Greg Kroah-Hartman
2018-03-02 8:50 ` [PATCH 4.9 13/56] net: phy: xgene: disable clk on error paths Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 14/56] drm/nouveau/pci: do a msi rearm on init Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 15/56] mac80211_hwsim: Fix a possible sleep-in-atomic bug in hwsim_get_radio_nl Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 16/56] spi: atmel: fixed spin_lock usage inside atmel_spi_remove Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 17/56] ASoC: nau8825: fix issue that pop noise when start capture Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 18/56] net: mediatek: setup proper state for disabled GMAC on the default Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 19/56] net: arc_emac: fix arc_emac_rx() error paths Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 20/56] ip6_tunnel: get the min mtu properly in ip6_tnl_xmit Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 21/56] net: stmmac: Fix TX timestamp calculation Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 22/56] scsi: storvsc: Fix scsi_cmd error assignments in storvsc_handle_error Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 23/56] ARM: dts: ls1021a: fix incorrect clock references Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 24/56] lib/mpi: Fix umul_ppmm() for MIPS64r6 Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 25/56] tipc: error path leak fixes in tipc_enable_bearer() Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 26/56] tipc: fix tipc_mon_delete() oops in tipc_enable_bearer() error path Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 27/56] tg3: Add workaround to restrict 5762 MRRS to 2048 Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 28/56] tg3: Enable PHY reset in MTU change path for 5720 Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 29/56] bnx2x: Improve reliability in case of nested PCI errors Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 30/56] led: core: Fix brightness setting when setting delay_off=0 Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 31/56] IB/mlx5: Fix mlx5_ib_alloc_mr error flow Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 32/56] genirq: Guard handle_bad_irq log messages Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 33/56] s390/dasd: fix wrongly assigned configuration data Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 34/56] IB/mlx4: Fix mlx4_ib_alloc_mr error flow Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 35/56] IB/ipoib: Fix race condition in neigh creation Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 36/56] xfs: quota: fix missed destroy of qi_tree_lock Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 37/56] xfs: quota: check result of register_shrinker() Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 38/56] macvlan: Fix one possible double free Greg Kroah-Hartman
2018-03-02 8:51 ` Greg Kroah-Hartman [this message]
2018-03-02 8:51 ` [PATCH 4.9 40/56] NET: usb: qmi_wwan: add support for YUGA CLM920-NC5 PID 0x9625 Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 41/56] drm/ttm: check the return value of kzalloc Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 42/56] uapi libc compat: add fallback for unsupported libcs Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 43/56] i40e/i40evf: Account for frags split over multiple descriptors in check linearize Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 44/56] nl80211: Check for the required netlink attribute presence Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 45/56] mac80211: mesh: drop frames appearing to be from us Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 46/56] can: flex_can: Correct the checking for frame length in flexcan_start_xmit() Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 47/56] bnxt_en: Fix the Invalid VF id check in bnxt_vf_ndo_prep routine Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 48/56] xen-netfront: enable device after manual module load Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 49/56] mdio-sun4i: Fix a memory leak Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 50/56] SolutionEngine771x: fix Ether platform data Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 51/56] xen/gntdev: Fix off-by-one error when unmapping with holes Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 52/56] xen/gntdev: Fix partial gntdev_mmap() cleanup Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 53/56] sctp: make use of pre-calculated len Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 54/56] net: gianfar_ptp: move set_fipers() to spinlock protecting area Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 55/56] KVM: arm/arm64: Fix check for hugepage size when allocating at Stage 2 Greg Kroah-Hartman
2018-03-02 8:51 ` [PATCH 4.9 56/56] MIPS: Implement __multi3 for GCC7 MIPS64r6 builds Greg Kroah-Hartman
2018-03-02 17:15 ` [PATCH 4.9 00/56] 4.9.86-stable review Guenter Roeck
2018-03-02 17:52 ` Naresh Kamboju
2018-03-02 21:29 ` Shuah Khan
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=20180302084451.554988761@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=alexander.levin@microsoft.com \
--cc=fengguang.wu@intel.com \
--cc=jeffrey.t.kirsher@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=tushar.n.dave@oracle.com \
/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.