Linux e1000e(英特尔网络驱动程序)恢复和 pcie=off 问题

Linux e1000e(英特尔网络驱动程序)恢复和 pcie=off 问题

这个问题是这个

我的以太网芯片组和 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 模式(即使强制使用也似乎不起作用)。

相关内容