При включении не грузит интерфейсы с 82579LM (e1000e)

Автор b.e.nazarenko, 12 ноября 2024, 10:34:53

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

b.e.nazarenko

День добрый. Поставил debian bookworm stable на матплату с 82579LM на борту. Подтянулся драйвер e1000e (по всем докам именно он и должен работать). Но при загрузке системы после poweroff, сеть не подтягивается. dmesg | grep e1000e выдаёт следующее:
[   17.537688] e1000e: Copyright(c) 1999 - 2019 Intel Corporation.
[   17.537914] e1000e 0000:00:19.0: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode
[   18.573498] e1000e: probe of 0000:00:19.0 failed with error -3
Пробовал отключать и включать через modprob, не помогает, та же ошибка. rmmod + modprobe тоже не работает.

Если после этого сделать soft reboot через poweroff --reboot, то всё заработает. Причём poweroff и запуск через кнопку не помогает.

В интернете пишут про патчи e1000e-dkms, но для ядра 6.1.0-26-amd64 (которое я использую) e1000e-dkms не собирается.
$ sudo dpkg -i e1000e-dkms_3.8.7_all.deb
Выбор ранее не выбранного пакета e1000e-dkms.
(Чтение базы данных ... на данный момент установлено 60399 файлов и каталогов.)
Подготовка к распаковке e1000e-dkms_3.8.7_all.deb ...
Распаковывается e1000e-dkms (3.8.7) ...
Настраивается пакет e1000e-dkms (3.8.7) ...
Loading new e1000e-3.8.7 DKMS files...
Deprecated feature: REMAKE_INITRD (/usr/src/e1000e-3.8.7/dkms.conf)
Building for 6.1.0-26-amd64
Building for architecture amd64
Building initial module for 6.1.0-26-amd64
Deprecated feature: REMAKE_INITRD (/var/lib/dkms/e1000e/3.8.7/source/dkms.conf)
Error! Bad return status for module build on kernel: 6.1.0-26-amd64 (amd64)
Consult /var/lib/dkms/e1000e/3.8.7/build/make.log for more information.
dpkg: ошибка при обработке пакета e1000e-dkms (--install):
 подпроцесс из пакета e1000e-dkms установлен сценарий post-installation возвратил код ошибки 10
При обработке следующих пакетов произошли ошибки:
 e1000e-dkms
Сборка из исходников даёт ошибку. Ниже выкладываю полный лог сборки через make.
Открыть содержимое (спойлер)
$ make
make[1]: вход в каталог «/usr/src/linux-headers-6.1.0-26-common»
make[2]: вход в каталог «/usr/src/linux-headers-6.1.0-26-amd64»
  CC [M]  /home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.o
In file included from /usr/src/linux-headers-6.1.0-26-common/include/linux/string.h:293,
                 from /usr/src/linux-headers-6.1.0-26-common/include/linux/bitmap.h:11,
                 from /usr/src/linux-headers-6.1.0-26-common/include/linux/cpumask.h:12,
                 from /usr/src/linux-headers-6.1.0-26-common/arch/x86/include/asm/cpumask.h:5,
                 from /usr/src/linux-headers-6.1.0-26-common/arch/x86/include/asm/msr.h:11,
                 from /usr/src/linux-headers-6.1.0-26-common/arch/x86/include/asm/processor.h:22,
                 from /usr/src/linux-headers-6.1.0-26-common/arch/x86/include/asm/timex.h:5,
                 from /usr/src/linux-headers-6.1.0-26-common/include/linux/timex.h:67,
                 from /usr/src/linux-headers-6.1.0-26-common/include/linux/time32.h:13,
                 from /usr/src/linux-headers-6.1.0-26-common/include/linux/time.h:60,
                 from /usr/src/linux-headers-6.1.0-26-common/include/linux/stat.h:19,
                 from /usr/src/linux-headers-6.1.0-26-common/include/linux/module.h:13,
                 from /home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c:6:
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c: In function 'e1000_set_mac':
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c:5381:22: warning: passing argument 1 of '__builtin_memcpy' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
 5381 |         memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
      |                ~~~~~~^~~~~~~~~~
/usr/src/linux-headers-6.1.0-26-common/include/linux/fortify-string.h:469:27: note: in definition of macro '__fortify_memcpy_chk'
  469 |         __underlying_##op(p, q, __fortify_size);                        \
      |                           ^
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c:5381:9: note: in expansion of macro 'memcpy'
 5381 |         memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
      |         ^~~~~~
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c:5381:22: note: expected 'void *' but argument is of type 'const unsigned char *'
 5381 |         memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
      |                ~~~~~~^~~~~~~~~~
/usr/src/linux-headers-6.1.0-26-common/include/linux/fortify-string.h:469:27: note: in definition of macro '__fortify_memcpy_chk'
  469 |         __underlying_##op(p, q, __fortify_size);                        \
      |                           ^
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c:5381:9: note: in expansion of macro 'memcpy'
 5381 |         memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
      |         ^~~~~~
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c: In function 'e1000_probe':
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c:8485:9: error: too many arguments to function 'netif_napi_add'
 8485 |         netif_napi_add(netdev, &adapter->napi, e1000e_poll, 64);
      |         ^~~~~~~~~~~~~~
In file included from /home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c:13:
/usr/src/linux-headers-6.1.0-26-common/include/linux/netdevice.h:2575:1: note: declared here
 2575 | netif_napi_add(struct net_device *dev, struct napi_struct *napi,
      | ^~~~~~~~~~~~~~
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c:8639:22: warning: passing argument 1 of '__builtin_memcpy' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
 8639 |         memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len);
      |                ~~~~~~^~~~~~~~~~
/usr/src/linux-headers-6.1.0-26-common/include/linux/fortify-string.h:469:27: note: in definition of macro '__fortify_memcpy_chk'
  469 |         __underlying_##op(p, q, __fortify_size);                        \
      |                           ^
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c:8639:9: note: in expansion of macro 'memcpy'
 8639 |         memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len);
      |         ^~~~~~
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c:8639:22: note: expected 'void *' but argument is of type 'const unsigned char *'
 8639 |         memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len);
      |                ~~~~~~^~~~~~~~~~
/usr/src/linux-headers-6.1.0-26-common/include/linux/fortify-string.h:469:27: note: in definition of macro '__fortify_memcpy_chk'
  469 |         __underlying_##op(p, q, __fortify_size);                        \
      |                           ^
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c:8639:9: note: in expansion of macro 'memcpy'
 8639 |         memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len);
      |         ^~~~~~
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c: In function 'e1000e_set_interrupt_capability':
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c:2315:35: warning: this statement may fall through [-Wimplicit-fallthrough=]
 2315 |                 adapter->int_mode = E1000E_INT_MODE_MSI;
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c:2317:9: note: here
 2317 |         case E1000E_INT_MODE_MSI:
      |         ^~~~
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c: In function 'e1000e_reset':
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c:4543:20: warning: this statement may fall through [-Wimplicit-fallthrough=]
 4543 |                 if (adapter->netdev->mtu > ETH_DATA_LEN) {
      |                    ^
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c:4551:9: note: here
 4551 |         default:
      |         ^~~~~~~
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c: In function 'e1000_setup_rctl':
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c:3566:32: warning: this statement may fall through [-Wimplicit-fallthrough=]
 3566 |                         psrctl |= PAGE_SIZE << E1000_PSRCTL_BSIZE3_SHIFT;
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c:3568:17: note: here
 3568 |                 case 2:
      |                 ^~~~
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c:3569:32: warning: this statement may fall through [-Wimplicit-fallthrough=]
 3569 |                         psrctl |= PAGE_SIZE << E1000_PSRCTL_BSIZE2_SHIFT;
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c:3571:17: note: here
 3571 |                 case 1:
      |                 ^~~~
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c: In function '__e1000e_disable_aspm':
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c:7576:31: warning: this statement may fall through [-Wimplicit-fallthrough=]
 7576 |                 aspm_dis_mask |= PCI_EXP_LNKCTL_ASPM_L0S;
/home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.c:7578:9: note: here
 7578 |         case PCIE_LINK_STATE_L1:
      |         ^~~~
make[3]: *** [/usr/src/linux-headers-6.1.0-26-common/scripts/Makefile.build:255: /home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src/netdev.o] Ошибка 1
make[2]: *** [/usr/src/linux-headers-6.1.0-26-common/Makefile:2034: /home/mrserver/e1000e/e1000e-dkms-debian-3.8.7/e1000e-dkms/usr/src/e1000e-3.8.7/src] Ошибка 2
make[2]: выход из каталога «/usr/src/linux-headers-6.1.0-26-amd64»
make[1]: *** [Makefile:250: __sub-make] Ошибка 2
make[1]: выход из каталога «/usr/src/linux-headers-6.1.0-26-common»
make: *** [Makefile:73: default] Ошибка 2
[свернуть]
Одна из ошибок указывает на перебор в количестве аргументов netif_napi_add. Но мне как-то боязно лезть в код модуля, который по идее вшит уже в ядро. Поиск в интернете выдаёт несколько тем с подобными проблемами, но там либо остановились на половине пути, либо решили через e1000e-dkms.
Я явно что-то упускаю. Надеюсь на вашу помощь, спасибо.

koshak83

#1
Я так понял вы это имеете ввиду?
https://github.com/koljah-de/e1000e-dkms-debian
Конституция СССР 1977 г. Всесоюзный референдум о сохранении СССР: Да- 76.4%, Нет- 21.7%, НД- 1.9%

ogost

Судя по apt-file search e1000e в bookworm есть следующие ядра с драйвером e1000e:
linux-image-6.1.0-25-amd64
linux-image-6.1.0-25-amd64-dbg
linux-image-6.1.0-25-amd64-unsigned
linux-image-6.1.0-25-rt-amd64
linux-image-6.1.0-25-rt-amd64-dbg
linux-image-6.1.0-25-rt-amd64-unsigned
linux-image-6.1.0-27-amd64
linux-image-6.1.0-27-amd64-dbg
linux-image-6.1.0-27-amd64-unsigned
linux-image-6.1.0-27-rt-amd64
linux-image-6.1.0-27-rt-amd64-dbg
linux-image-6.1.0-27-rt-amd64-unsigned
linux-image-6.10.11+bpo-amd64
linux-image-6.10.11+bpo-amd64-dbg
linux-image-6.10.11+bpo-amd64-unsigned
linux-image-6.10.11+bpo-rt-amd64
linux-image-6.10.11+bpo-rt-amd64-dbg
linux-image-6.10.11+bpo-rt-amd64-unsigned
linux-image-6.10.6+bpo-amd64
linux-image-6.10.6+bpo-amd64-dbg
linux-image-6.10.6+bpo-amd64-unsigned
linux-image-6.10.6+bpo-rt-amd64
linux-image-6.10.6+bpo-rt-amd64-dbg
linux-image-6.10.6+bpo-rt-amd64-unsigned
linux-image-6.9.10+bpo-amd64
linux-image-6.9.10+bpo-amd64-dbg
linux-image-6.9.10+bpo-amd64-unsigned
linux-image-6.9.10+bpo-rt-amd64
linux-image-6.9.10+bpo-rt-amd64-dbg
linux-image-6.9.10+bpo-rt-amd64-unsigned
linux-image-6.9.7+bpo-amd64
linux-image-6.9.7+bpo-amd64-dbg
linux-image-6.9.7+bpo-amd64-unsigned
linux-image-6.9.7+bpo-rt-amd64
linux-image-6.9.7+bpo-rt-amd64-dbg
linux-image-6.9.7+bpo-rt-amd64-unsigned
Из них не пробовали поставить?

b.e.nazarenko

#3
Цитата: ogost от 12 ноября 2024, 11:11:11Судя по apt-file search e1000e в bookworm есть следующие ядра с драйвером e1000e:
linux-image-6.1.0-25-amd64
linux-image-6.1.0-25-amd64-dbg
linux-image-6.1.0-25-amd64-unsigned
linux-image-6.1.0-25-rt-amd64
linux-image-6.1.0-25-rt-amd64-dbg
linux-image-6.1.0-25-rt-amd64-unsigned
linux-image-6.1.0-27-amd64
linux-image-6.1.0-27-amd64-dbg
linux-image-6.1.0-27-amd64-unsigned
linux-image-6.1.0-27-rt-amd64
linux-image-6.1.0-27-rt-amd64-dbg
linux-image-6.1.0-27-rt-amd64-unsigned
linux-image-6.10.11+bpo-amd64
linux-image-6.10.11+bpo-amd64-dbg
linux-image-6.10.11+bpo-amd64-unsigned
linux-image-6.10.11+bpo-rt-amd64
linux-image-6.10.11+bpo-rt-amd64-dbg
linux-image-6.10.11+bpo-rt-amd64-unsigned
linux-image-6.10.6+bpo-amd64
linux-image-6.10.6+bpo-amd64-dbg
linux-image-6.10.6+bpo-amd64-unsigned
linux-image-6.10.6+bpo-rt-amd64
linux-image-6.10.6+bpo-rt-amd64-dbg
linux-image-6.10.6+bpo-rt-amd64-unsigned
linux-image-6.9.10+bpo-amd64
linux-image-6.9.10+bpo-amd64-dbg
linux-image-6.9.10+bpo-amd64-unsigned
linux-image-6.9.10+bpo-rt-amd64
linux-image-6.9.10+bpo-rt-amd64-dbg
linux-image-6.9.10+bpo-rt-amd64-unsigned
linux-image-6.9.7+bpo-amd64
linux-image-6.9.7+bpo-amd64-dbg
linux-image-6.9.7+bpo-amd64-unsigned
linux-image-6.9.7+bpo-rt-amd64
linux-image-6.9.7+bpo-rt-amd64-dbg
linux-image-6.9.7+bpo-rt-amd64-unsigned
Из них не пробовали поставить?
Мысль интересная, сейчас попробую.

Цитата: koshak83 от 12 ноября 2024, 11:09:44Я так понял вы это имеете ввиду?
https://github.com/koljah-de/e1000e-dkms-debian
Да да, именно его. Мысль в целом тоже хорошая, но как я понял, работоспособность этих модификаций напрямую зависит от версии ядра. Если даже собрать на другом ядре с его заголовками, в основной системе работать всё равно не будет.

Вообще появилась мысль посмотреть изменения e1000e-dkms с основной веткой исходников от Intel. После чего вытащить исходники из linux kernel, пропатчить, собрать, и запихнуть в ядро. Но это самый крайний случай. Я проще крон настрою на софт ребут после запуска, если другого решения не найду.

12 ноября 2024, 11:50:34
Цитата: ogost от 12 ноября 2024, 11:11:11Судя по apt-file search e1000e в bookworm есть следующие ядра с драйвером e1000e:
linux-image-6.1.0-25-amd64
linux-image-6.1.0-25-amd64-dbg
linux-image-6.1.0-25-amd64-unsigned
linux-image-6.1.0-25-rt-amd64
linux-image-6.1.0-25-rt-amd64-dbg
linux-image-6.1.0-25-rt-amd64-unsigned
linux-image-6.1.0-27-amd64
linux-image-6.1.0-27-amd64-dbg
linux-image-6.1.0-27-amd64-unsigned
linux-image-6.1.0-27-rt-amd64
linux-image-6.1.0-27-rt-amd64-dbg
linux-image-6.1.0-27-rt-amd64-unsigned
linux-image-6.10.11+bpo-amd64
linux-image-6.10.11+bpo-amd64-dbg
linux-image-6.10.11+bpo-amd64-unsigned
linux-image-6.10.11+bpo-rt-amd64
linux-image-6.10.11+bpo-rt-amd64-dbg
linux-image-6.10.11+bpo-rt-amd64-unsigned
linux-image-6.10.6+bpo-amd64
linux-image-6.10.6+bpo-amd64-dbg
linux-image-6.10.6+bpo-amd64-unsigned
linux-image-6.10.6+bpo-rt-amd64
linux-image-6.10.6+bpo-rt-amd64-dbg
linux-image-6.10.6+bpo-rt-amd64-unsigned
linux-image-6.9.10+bpo-amd64
linux-image-6.9.10+bpo-amd64-dbg
linux-image-6.9.10+bpo-amd64-unsigned
linux-image-6.9.10+bpo-rt-amd64
linux-image-6.9.10+bpo-rt-amd64-dbg
linux-image-6.9.10+bpo-rt-amd64-unsigned
linux-image-6.9.7+bpo-amd64
linux-image-6.9.7+bpo-amd64-dbg
linux-image-6.9.7+bpo-amd64-unsigned
linux-image-6.9.7+bpo-rt-amd64
linux-image-6.9.7+bpo-rt-amd64-dbg
linux-image-6.9.7+bpo-rt-amd64-unsigned
Из них не пробовали поставить?
UPD: Поставил 6.10.11, теперь сообщение о вылете драйвера e1000e с ошибкой 3 показывает при загрузке. :)

12 ноября 2024, 12:12:47
UPD2: Починил кажется, через перезапуск PCI устройства сетевой карты. Брал отсюда. Скрипт поставлю в крон после запуска и будет всё хорошо. Всем спасибо за помощь!