![PCI Gen 1 设备无法在内核版本 4.10.9 以上的较新主板上工作](https://linux22.com/image/213441/PCI%20Gen%201%20%E8%AE%BE%E5%A4%87%E6%97%A0%E6%B3%95%E5%9C%A8%E5%86%85%E6%A0%B8%E7%89%88%E6%9C%AC%204.10.9%20%E4%BB%A5%E4%B8%8A%E7%9A%84%E8%BE%83%E6%96%B0%E4%B8%BB%E6%9D%BF%E4%B8%8A%E5%B7%A5%E4%BD%9C.png)
不幸的是,当我使用高于 4.10.9 的内核版本时,我的 LSI MegaRAID SAS 8708EM2 Raid 控制器不再在我的新服务器上被识别。因此,在版本 4.10.9 上,它显示了我的磁盘,但更新到 4.11 后,它没有检测到卡,lspci
也没有显示任何带有lsblk
.在我的旧主板上,该卡在最新的内核上运行良好。所以一开始我认为它的一些 Bios 设置可以解决这个问题,但不幸的是我没有找到任何东西,并且必须有一个软件修复,因为旧内核工作正常。我非常确定该问题与 PCI 第 1 代和较新主板的兼容性有关,而不是特别与该卡有关,因为该卡在旧内核上的最新驱动程序下仍然可以正常工作。
这是新系统的一些系统信息inxi -Fxz
:
System: Kernel: 4.14.295 x86_64 bits: 64 compiler: gcc v: 10.2.1 Console: tty 0 Distro: Debian GNU/Linux 11 (bullseye)
Machine: Type: Desktop Mobo: Micro-Star model: X470 GAMING PLUS MAX (MS-7B79) v: 3.0 serial: <filter>
UEFI: American Megatrends LLC. v: H.D2 date: 09/26/2021
CPU: Info: 6-Core model: AMD Ryzen 5 5600X bits: 64 type: MT MCP arch: Zen 3 rev: 0 L2 cache: 3 MiB
flags: avx avx2 lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm bogomips: 88797
Speed: 3600 MHz min/max: 2200/3700 MHz boost: enabled Core speeds (MHz): 1: 3600 2: 2878 3: 2869 4: 3593 5: 3594
6: 2879 7: 2880 8: 3594 9: 3598 10: 2874 11: 3593 12: 2873
Graphics: Device-1: NVIDIA GK208B [GeForce GT 730] vendor: ZOTAC driver: nouveau v: kernel bus ID: 27:00.0
Display: server: No display server data found. Headless machine? tty: 270x69
Message: Advanced graphics data unavailable in console for root.
Audio: Device-1: NVIDIA GK208 HDMI/DP Audio vendor: ZOTAC driver: snd_hda_intel v: kernel bus ID: 27:00.1
Device-2: Advanced Micro Devices [AMD] Starship/Matisse HD Audio vendor: Micro-Star MSI driver: snd_hda_intel
v: kernel bus ID: 2a:00.4
Sound Server: ALSA v: k4.14.295
Network: Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet vendor: Micro-Star MSI driver: r8169 v: 2.3LK-NAPI
port: d000 bus ID: 22:00.0
IF: enp34s0 state: up speed: 1000 Mbps duplex: full mac: <filter>
Device-2: Intel 82572EI Gigabit Ethernet driver: e1000e v: 3.2.6-k port: c000 bus ID: 25:00.0
IF: enp37s0 state: down mac: <filter>
Drives: Local Storage: total: 232.89 GiB used: 39.07 GiB (16.8%)
ID-1: /dev/sda vendor: Crucial model: CT250MX500SSD4 size: 232.89 GiB temp: 33 C
Partition: ID-1: / size: 226.74 GiB used: 39.07 GiB (17.2%) fs: ext4 dev: /dev/sda2
ID-2: /boot/efi size: 511 MiB used: 3.4 MiB (0.7%) fs: vfat dev: /dev/sda1
Swap: ID-1: swap-1 type: partition size: 977 MiB used: 0 KiB (0.0%) dev: /dev/sda3
Sensors: Message: No sensors data was found. Is sensors configured?
Info: Processes: 174 Uptime: 10m Memory: 31.4 GiB used: 624.8 MiB (1.9%) Init: systemd runlevel: 5 Compilers: gcc: 10.2.1
Packages: 519 Shell: Bash v: 5.1.4 inxi: 3.3.01
dmesg
在我的旧主板上使用较新的内核(工作):
https://www.pastery.net/uftfdg/
dmesg
在我的新主板上,使用与旧主板相同的 Linux 映像(不工作):
https://www.pastery.net/dwumbf/
我注意到的第一件事是引导线的差异。这可能是正确的方法吗?
dmesg
在内核 4.9.330 上(工作):
[ 1.099063] pci 0000:00:03.2: scanning [bus 28-28] behind bridge, pass 0
[ 1.099099] pci_bus 0000:28: scanning bus
[ 1.099112] pci 0000:28:00.0: [1000:0060] type 00 class 0x010400
[ 1.099136] pci 0000:28:00.0: reg 0x10: [mem 0xfc940000-0xfc97ffff 64bit]
[ 1.099147] pci 0000:28:00.0: reg 0x18: [io 0xe000-0xe0ff]
[ 1.099164] pci 0000:28:00.0: reg 0x1c: [mem 0xfc900000-0xfc93ffff 64bit]
[ 1.099185] pci 0000:28:00.0: reg 0x30: [mem 0xfc980000-0xfc99ffff pref]
[ 1.099251] pci 0000:28:00.0: supports D1
[ 1.111045] pci_bus 0000:28: fixups for bus
[ 1.111045] pci 0000:00:03.2: PCI bridge to [bus 28]
[ 1.111049] pci 0000:00:03.2: bridge window [io 0xe000-0xefff]
[ 1.111051] pci 0000:00:03.2: bridge window [mem 0xfc900000-0xfc9fffff]
[ 1.111055] pci_bus 0000:28: bus scan returning with max=28
[ 1.111058] pci 0000:00:07.1: scanning [bus 29-29] behind bridge, pass 0
lspci -v
在内核 4.9.330 上:
28:00.0 RAID bus controller: Broadcom / LSI MegaRAID SAS 1078 (rev 04)
Subsystem: Broadcom / LSI MegaRAID SAS 1078
Flags: bus master, fast devsel, latency 0, IRQ 234, IOMMU group 16
Memory at fc940000 (64-bit, non-prefetchable) [size=256K]
I/O ports at e000 [size=256]
Memory at fc900000 (64-bit, non-prefetchable) [size=256K]
Expansion ROM at fc980000 [disabled] [size=128K]
Capabilities: [b0] Express Endpoint, MSI 00
Capabilities: [c4] MSI: Enable- Count=1/4 Maskable- 64bit+
Capabilities: [d4] MSI-X: Enable+ Count=4 Masked-
Capabilities: [e0] Power Management version 2
Capabilities: [ec] Vital Product Data
Capabilities: [100] Power Budgeting <?>
Kernel driver in use: megaraid_sas
Kernel modules: megaraid_sas
dmesg
在内核 4.14.295 上(不工作):
[ 0.312039] pci 0000:00:03.2: scanning [bus 28-28] behind bridge, pass 0
[ 0.512001] pci_bus 0000:28: scanning bus
[ 0.712001] pci_bus 0000:28: fixups for bus
[ 0.712001] pci 0000:00:03.2: PCI bridge to [bus 28]
[ 0.712005] pci 0000:00:03.2: bridge window [io 0xe000-0xefff]
[ 0.712007] pci 0000:00:03.2: bridge window [mem 0xfc900000-0xfc9fffff]
[ 0.712011] pci_bus 0000:28: bus scan returning with max=28
[ 0.712013] pci 0000:00:07.1: scanning [bus 29-29] behind bridge, pass 0
注释 (lspci -s 28:00.0
和lspci -n -s 28:0.0
) 在内核 4.14.295 上不返回任何内容。
不幸的是,我是内核编译领域的新手(我使用了本教程https://askubuntu.com/a/513243)并且不确切知道我应该进行哪些修改才能更好地调试。我认为可以通过单独应用内核补丁并修补内核直到不再识别该卡来限制问题,不幸的是,这种方法很快就被证明是愚蠢的。
我还在更改日志中查找了更改https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.10.9和https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.11.1,但不幸的是我也没有在那里找到任何东西。
我非常感谢每一个可以帮助调试或解决问题的想法。