Бионический сервер LTS
У меня есть процессор Ryzen и материнская плата AsRock, оба выполняет ECC без проблем.
Проблема, которую я имею, находится в syslog
Ясно Not enabling Memory Error Detection and Correction since EDAC_DRIVER is not set
:
root@localhost:/home/one# dmesg | grep edac
[ 4.858773] EDAC MC0: Giving out device to module amd64_edac controller F17h: DEV 0000:00:18.3 (INTERRUPT)
[ 4.858781] EDAC PCI0: Giving out device to module amd64_edac controller EDAC PCI controller: DEV 0000:00:18.0 (POLLED)
root@localhost:/home/one# cat /var/log/syslog | grep -i edac
Oct 15 20:50:34 localhost systemd-modules-load[502]: Module 'edac_core' is builtin
Oct 15 20:50:34 localhost systemd[1]: Starting LSB: Initialize EDAC...
Oct 15 20:50:34 localhost edac[832]: * Not enabling Memory Error Detection and Correction since EDAC_DRIVER is not set
Oct 15 20:50:34 localhost edac[832]: ...done.
Oct 15 20:50:34 localhost edac[832]: * Loading DIMM labels for Memory Error Detection and Correction edac
Oct 15 20:50:34 localhost kernel: [ 0.156551] EDAC MC: Ver: 3.0.0
Oct 15 20:50:34 localhost kernel: [ 4.858684] EDAC amd64: Node 0: DRAM ECC enabled.
Oct 15 20:50:34 localhost kernel: [ 4.858685] EDAC amd64: F17h detected (node 0).
Oct 15 20:50:34 localhost kernel: [ 4.858719] EDAC MC: UMC0 chip selects:
Oct 15 20:50:34 localhost kernel: [ 4.858720] EDAC amd64: MC: 0: 0MB 1: 0MB
Oct 15 20:50:34 localhost kernel: [ 4.858720] EDAC amd64: MC: 2: 0MB 3: 0MB
Oct 15 20:50:34 localhost kernel: [ 4.858721] EDAC amd64: MC: 4: 0MB 5: 0MB
Oct 15 20:50:34 localhost kernel: [ 4.858721] EDAC amd64: MC: 6: 0MB 7: 0MB
Oct 15 20:50:34 localhost kernel: [ 4.858723] EDAC MC: UMC1 chip selects:
Oct 15 20:50:34 localhost kernel: [ 4.858723] EDAC amd64: MC: 0: 0MB 1: 0MB
Oct 15 20:50:34 localhost kernel: [ 4.858724] EDAC amd64: MC: 2: 16383MB 3: 16383MB
Oct 15 20:50:34 localhost kernel: [ 4.858725] EDAC amd64: MC: 4: 0MB 5: 0MB
Oct 15 20:50:34 localhost kernel: [ 4.858725] EDAC amd64: MC: 6: 0MB 7: 0MB
Oct 15 20:50:34 localhost kernel: [ 4.858725] EDAC amd64: using x8 syndromes.
Oct 15 20:50:34 localhost kernel: [ 4.858726] EDAC amd64: MCT channel count: 1
Oct 15 20:50:34 localhost kernel: [ 4.858773] EDAC MC0: Giving out device to module amd64_edac controller F17h: DEV 0000:00:18.3 (INTERRUPT)
Oct 15 20:50:34 localhost kernel: [ 4.858781] EDAC PCI0: Giving out device to module amd64_edac controller EDAC PCI controller: DEV 0000:00:18.0 (POLLED)
Oct 15 20:50:34 localhost kernel: [ 4.858781] AMD64 EDAC driver v3.5.0
Oct 15 20:50:34 localhost edac[832]: ...done.
Oct 15 20:50:34 localhost systemd[1]: Started LSB: Initialize EDAC.
В/etc/modules я поместил edac_core
. Я также вижу, что ECC включен в ядре:
root@localhost:/home/one# cat /usr/src/linux-headers-4.15.0-29-generic/.config | grep -i edac
CONFIG_EDAC_ATOMIC_SCRUB=y
CONFIG_EDAC_SUPPORT=y
CONFIG_EDAC=y
# CONFIG_EDAC_LEGACY_SYSFS is not set
# CONFIG_EDAC_DEBUG is not set
CONFIG_EDAC_DECODE_MCE=m
CONFIG_EDAC_GHES=y
CONFIG_EDAC_AMD64=m
# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set
CONFIG_EDAC_E752X=m
CONFIG_EDAC_I82975X=m
CONFIG_EDAC_I3000=m
CONFIG_EDAC_I3200=m
CONFIG_EDAC_IE31200=m
CONFIG_EDAC_X38=m
CONFIG_EDAC_I5400=m
CONFIG_EDAC_I7CORE=m
CONFIG_EDAC_I5000=m
CONFIG_EDAC_I5100=m
CONFIG_EDAC_I7300=m
CONFIG_EDAC_SBRIDGE=m
CONFIG_EDAC_SKX=m
CONFIG_EDAC_PND2=m
root@localhost:/home/one# cat /usr/src/linux-headers-4.15.0-29-generic/.config | grep -i ecc
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
CONFIG_SECCOMP_FILTER=y
CONFIG_SECCOMP=y
CONFIG_MTD_NAND_ECC=m
# CONFIG_MTD_NAND_ECC_SMC is not set
CONFIG_MTD_NAND_ECC_BCH=y
CONFIG_AMD_XGBE_HAVE_ECC=y
CONFIG_MTD_SPINAND_ONDIEECC=y
Что вызывает Not enabling Memory Error Detection and Correction since EDAC_DRIVER is not set
и как я фиксирую это?
ОБНОВЛЕНИЕ: вывод от edac-utils
root@localhost:/home/one# edac-util -v
mc0: 0 Uncorrected Errors with no DIMM info
mc0: 0 Corrected Errors with no DIMM info
edac-util: No errors to report.
Сообщение
* Not enabling Memory Error Detection and Correction since EDAC_DRIVER is not setнапрасно страшное сообщение от edac init сценарий (часть edac-utils пакета). То, что это говорит Вам, - то, что это вручную не загружает определенный edac модуль ядра, потому что переменный $EDAC_DRIVER не установлен в/etc/default/edac. Вы видите это от соответствующих битов init сценария:
if [ -n "$EDAC_DRIVER" ]; then log_daemon_msg "Enabling ${DESC}" "$SERVICE" modprobe $EDAC_DRIVER STATUS=$? case $STATUS in 0) log_end_msg 0 ;; 5) log_failure_msg "No EDAC support for this hardware"; log_end_msg 1 ;; *) log_failure_msg "failure with exit code $STATUS"; log_end_msg 1 ;; esac else log_daemon_msg "Not enabling ${DESC} since EDAC_DRIVER is not set" log_end_msg 0 fi log_daemon_msg "Loading DIMM labels for ${DESC}" "$SERVICE" $edac_ctl --register-labels --quiet
Учитывая, что ядро автоматически определяет, какой edac драйвер применяться и команда $edac_ctl (сразу после if-then-else блока, который проверяет, установлен ли $EDAC_DRIVER) успешно регистрирует маркировки DIMM, это смотрит на меня как все, функционирует правильно здесь (но, полное раскрытие, я ничего не знаю конкретно о EDAC).