![Linux e1000e(英特尔网络驱动程序)恢复和 pcie=off 问题](https://linux22.com/image/543247/Linux%20e1000e%EF%BC%88%E8%8B%B1%E7%89%B9%E5%B0%94%E7%BD%91%E7%BB%9C%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%EF%BC%89%E6%81%A2%E5%A4%8D%E5%92%8C%20pcie%3Doff%20%E9%97%AE%E9%A2%98%20.png)
这个问题是这个。
我的以太网芯片组和 e1000e 驱动程序遇到了大量问题:
02:00.0 Ethernet controller: Intel Corporation 82573L Gigabit Ethernet Controller
显然,没有它根本行不通pcie=off
,即使有这个选项,在我从挂起状态恢复后它也无法工作。有人对此有什么建议吗?这是上游错误吗?以下是我尝试从 dmesg 恢复并使用我的以太网卡时发生的情况。
如果你想查看多种诊断工具的结果,请务必查看我之前的问题,其中有一个关于我的配置的大量信息。
[20837.993481] e1000e 0000:02:00.0: eth0: Detected Hardware Unit Hang:
[20837.993485] TDH <55>
[20837.993488] TDT <7b>
[20837.993490] next_to_use <7b>
[20837.993492] next_to_clean <54>
[20837.993494] buffer_info[next_to_clean]:
[20837.993496] time_stamp <4e4097>
[20837.993498] next_to_watch <55>
[20837.993501] jiffies <4e58a2>
[20837.993503] next_to_watch.status <0>
[20837.993505] MAC Status <80080703>
[20837.993507] PHY Status <796d>
[20837.993510] PHY 1000BASE-T Status <4000>
[20837.993512] PHY Extended Status <3000>
[20837.993514] PCI Status <10>
[20838.001038] ------------[ cut here ]------------
[20838.001055] WARNING: at /build/buildd/linux-2.6.35/net/sched/sch_generic.c:258 dev_watchdog+0x1fd/0x210()
[20838.001061] Hardware name: 170469U
[20838.001065] NETDEV WATCHDOG: eth0 (e1000e): transmit queue 0 timed out
[20838.001070] Modules linked in: usbhid hid aes_i586 aes_generic binfmt_misc parport_pc ppdev arc4 i915 thinkpad_acpi snd_hda_codec_analog snd_hda_intel snd_hda_codec snd_hwdep snd_pcm snd_seq_midi pcmcia snd_rawmidi ath5k snd_seq_midi_event mac80211 drm_kms_helper snd_seq ath snd_timer snd_seq_device sierra drm tpm_tis cfg80211 usbserial sbp2 tpm snd yenta_socket pcmcia_rsrc nvram i2c_algo_bit tpm_bios ieee1394 psmouse pcmcia_core intel_agp video serio_raw agpgart soundcore snd_page_alloc output lp parport e1000e firewire_ohci sdhci_pci firewire_core sdhci led_class crc_itu_t
[20838.001178] Pid: 0, comm: swapper Not tainted 2.6.35-28-generic #49-Ubuntu
[20838.001183] Call Trace:
[20838.001195] [<c014aff2>] warn_slowpath_common+0x72/0xa0
[20838.001204] [<c050fbdd>] ? dev_watchdog+0x1fd/0x210
[20838.001211] [<c050fbdd>] ? dev_watchdog+0x1fd/0x210
[20838.001220] [<c014b0c3>] warn_slowpath_fmt+0x33/0x40
[20838.001228] [<c050fbdd>] dev_watchdog+0x1fd/0x210
[20838.001237] [<c016c591>] ? sched_clock_cpu+0x131/0x190
[20838.001247] [<c01696db>] ? hrtimer_forward+0x16b/0x1b0
[20838.001255] [<c050f9e0>] ? dev_watchdog+0x0/0x210
[20838.001262] [<c01581ef>] call_timer_fn+0x2f/0xf0
[20838.001270] [<c012249b>] ? lapic_next_event+0x1b/0x20
[20838.001279] [<c017486b>] ? clockevents_program_event+0x8b/0x140
[20838.001287] [<c0159464>] run_timer_softirq+0x104/0x210
[20838.001296] [<c0175c72>] ? tick_dev_program_event+0x42/0x150
[20838.001304] [<c050f9e0>] ? dev_watchdog+0x0/0x210
[20838.001312] [<c015164c>] __do_softirq+0x9c/0x1b0
[20838.001319] [<c016c69e>] ? sched_clock_tick+0x5e/0x90
[20838.001328] [<c01517a5>] do_softirq+0x45/0x50
[20838.001335] [<c0151915>] irq_exit+0x65/0x70
[20838.001343] [<c05d146b>] smp_apic_timer_interrupt+0x5b/0x8a
[20838.001352] [<c05cb275>] apic_timer_interrupt+0x31/0x38
[20838.001361] [<c016007b>] ? sys_setregid+0xeb/0xf0
[20838.001371] [<c03bfd60>] ? acpi_idle_enter_bm+0x259/0x295
[20838.001381] [<c04d396a>] cpuidle_idle_call+0x6a/0x100
[20838.001389] [<c0101fcc>] cpu_idle+0x8c/0xd0
[20838.001398] [<c05c5b16>] start_secondary+0x10c/0x112
[20838.001404] ---[ end trace 93e790a0cd7b9ac8 ]---
[20838.001423] e1000e 0000:02:00.0: eth0: Reset adapter
[20838.175627] e1000e: eth0 NIC Link is Up 10 Mbps Full Duplex, Flow Control: RX/TX
[20838.175637] e1000e 0000:02:00.0: eth0: 10/100 speed: disabling TSO
答案1
看起来和这可能。它确实似乎是一个上游错误。检查与 e1000 驱动程序相关的更改日志,看看是否有可以移植的补丁,或者至少让 ubuntu 内核团队找到它。尝试关闭 eth0,在挂起之前 modprobe -r 驱动程序,看看这是否是一种潜在的解决方法。它可能有助于上游驱动程序维护者集中精力解决错误。
答案2
我在使用 e1000 和 SLES10 SP4 时也遇到过问题,直到 2011 年 8 月底,内核补丁才修复了这个问题。在此之前的解决方法是:从英特尔下载最新的驱动程序,编译并安装。
我的具体问题是,当 MSI 不可用(在 XEN 内核内)时,e1000 不会回退到标准 PCIe 模式(即使强制使用也似乎不起作用)。