Глюки ACPI в самосборном ядре

Аватар пользователя DRVTiny

Сообственно, "глюк" один, но очень неприятный: компьютер не выключается после shutdown -h now (приходится жать на Power и ждать 4 секунды). Дело в том, что я собрал ядро 2.6.14 с поддержкой REISER4, этим ядром сейчас и пользуюсь. Всё оборудование работает, всё отлично, но вот с ACPI что-то явно не так. Я сравнил файлы .config от дистрибутивного ядра 10-го ASP и от моего самосборного ядра. Оказалось, что в дистрибутивном ядре полно опций, которые попросту отсутствуют в моём (т.е. у меня не было возможности сконфигурировать их по причине отсутствия таковых в "древе" опций make xconfig и в меню make menuconfig).

Вот, пожалуйста, сравните результат вывода cat .config | grep -i acpi | sed -r "s%^\s*#\s*(CONFIG_[a-z_0-9]+) is not set\s*$%-\t\1%I; s%^\s*(CONFIG_[a-z_0-9]+)\s*=\s*y\s*$%+\t\1%I; s%^\s*(CONFIG_[a-z_0-9]+)\s*=\s*m\s*$%+\t\1\t(MODULE)%I; s%^\s*CONFIG_[a-z_0-9]+\s*=.+$%+\t&%I" | grep -v "^\s*#" | sort -b для моего ядра:

Цитата:
+ CONFIG_ACPI
- CONFIG_ACPI_AC
- CONFIG_ACPI_ASUS
- CONFIG_ACPI_BATTERY
+ CONFIG_ACPI_BLACKLIST_YEAR=0
+ CONFIG_ACPI_BUTTON
- CONFIG_ACPI_CONTAINER
- CONFIG_ACPI_DEBUG
+ CONFIG_ACPI_EC
+ CONFIG_ACPI_FAN
+ CONFIG_ACPI_HOTKEY (MODULE)
- CONFIG_ACPI_IBM
+ CONFIG_ACPI_POWER
+ CONFIG_ACPI_PROCESSOR
+ CONFIG_ACPI_SLEEP
+ CONFIG_ACPI_SLEEP_PROC_FS
- CONFIG_ACPI_SLEEP_PROC_SLEEP
+ CONFIG_ACPI_SYSTEM
+ CONFIG_ACPI_THERMAL
- CONFIG_ACPI_TOSHIBA
+ CONFIG_ACPI_VIDEO
+ CONFIG_PNPACPI
+ CONFIG_SERIAL_8250_ACPI

и для дистрибутивного ядра:

Цитата:
+ CONFIG_ACPI
+ CONFIG_ACPI_AC (MODULE)
+ CONFIG_ACPI_ASUS (MODULE)
+ CONFIG_ACPI_BATTERY (MODULE)
+ CONFIG_ACPI_BLACKLIST_YEAR=2001
+ CONFIG_ACPI_BOOT
+ CONFIG_ACPI_BUS
+ CONFIG_ACPI_BUTTON (MODULE)
- CONFIG_ACPI_DEBUG
+ CONFIG_ACPI_EC
+ CONFIG_ACPI_FAN
+ CONFIG_ACPI_INTERPRETER
+ CONFIG_ACPI_PCI
+ CONFIG_ACPI_POWER
+ CONFIG_ACPI_PROCESSOR
+ CONFIG_ACPI_SLEEP
+ CONFIG_ACPI_SLEEP_PROC_FS
+ CONFIG_ACPI_SYSTEM
+ CONFIG_ACPI_THERMAL
+ CONFIG_ACPI_TOSHIBA (MODULE)
- CONFIG_HOTPLUG_PCI_ACPI
- CONFIG_SERIAL_8250_ACPI
+ CONFIG_X86_ACPI_CPUFREQ (MODULE)
- CONFIG_X86_ACPI_CPUFREQ_PROC_INTF
+ CONFIG_X86_POWERNOW_K7_ACPI
+ CONFIG_X86_POWERNOW_K8_ACPI
+ CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI

Отсюда вопрос: почему в моём ядре опций, связанных с настройкой ACPI явно меньше, чем в ядре дистрибутивном?

Не могу понять, почему у меня при сконфигурированном ACPI компьютер не выключается?

Аватар пользователя WebCode

Re: Глюки ACPI в самосборном ядре

Вот из моего конфига (ядро 2.6.15.1):

Цитата:
# cat .config | grep ACPI
CONFIG_ACPI=y
CONFIG_ACPI_SLEEP=y
CONFIG_ACPI_SLEEP_PROC_FS=y
CONFIG_ACPI_SLEEP_PROC_SLEEP=y
CONFIG_ACPI_AC=m
CONFIG_ACPI_BATTERY=m
CONFIG_ACPI_BUTTON=m
CONFIG_ACPI_VIDEO=m
# CONFIG_ACPI_HOTKEY is not set
CONFIG_ACPI_FAN=y
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_THERMAL=y
CONFIG_ACPI_ASUS=m
CONFIG_ACPI_IBM=m
CONFIG_ACPI_TOSHIBA=m
CONFIG_ACPI_BLACKLIST_YEAR=2001
# CONFIG_ACPI_DEBUG is not set
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_SYSTEM=y
# CONFIG_ACPI_CONTAINER is not set
CONFIG_X86_ACPI_CPUFREQ=m
CONFIG_X86_POWERNOW_K7_ACPI=y
CONFIG_X86_POWERNOW_K8_ACPI=y
CONFIG_X86_SPEEDSTEP_CENTRINO_ACPI=y
# CONFIG_X86_ACPI_CPUFREQ_PROC_INTF is not set
CONFIG_HOTPLUG_PCI_ACPI=m
CONFIG_HOTPLUG_PCI_ACPI_IBM=m
CONFIG_PNPACPI=y
# CONFIG_SERIAL_8250_ACPI is not set

Все нормально выключается...

Аватар пользователя DRVTiny

Re: Глюки ACPI в самосборном ядре

Но ядро-то у тебя явно с дистрибутивным .config'ом. А у меня ядро с чистого листа собрано (т.е. я сам все опции задавал) и большей части твоих опций у меня просто нет!

Аватар пользователя sergeil

Re: Глюки ACPI в самосборном ядре

DRVTiny

Цитата:
cat .config | grep -i acpi | sed -r "s%^\s*#\s*(CONFIG_[a-z_0-9]+) is not set\s*$%-\t\1%I; s%^\s*(CONFIG_[a-z_0-9]+)\s*=\s*y\s*$%+\t\1%I; s%^\s*(CONFIG_[a-z_0-9]+)\s*=\s*m\s*$%+\t\1\t(MODULE)%I; s%^\s*CONFIG_[a-z_0-9]+\s*=.+$%+\t&%I" | grep -v "^\s*#" | sort -b

Ядро самосборное, версии 2.6.15.2 (ftp.kernel.org). Все выключается...

+       CONFIG_ACPI
-       CONFIG_ACPI_AC
+       CONFIG_ACPI_ASUS        (MODULE)
-       CONFIG_ACPI_BATTERY
+       CONFIG_ACPI_BLACKLIST_YEAR=0
+       CONFIG_ACPI_BUTTON      (MODULE)
+       CONFIG_ACPI_CONTAINER   (MODULE)
-       CONFIG_ACPI_DEBUG
+       CONFIG_ACPI_EC
+       CONFIG_ACPI_FAN (MODULE)
-       CONFIG_ACPI_HOTKEY
-       CONFIG_ACPI_IBM
+       CONFIG_ACPI_POWER
+       CONFIG_ACPI_PROCESSOR   (MODULE)
-       CONFIG_ACPI_SLEEP
+       CONFIG_ACPI_SYSTEM
+       CONFIG_ACPI_THERMAL     (MODULE)
-       CONFIG_ACPI_TOSHIBA
+       CONFIG_ACPI_VIDEO       (MODULE)
+       CONFIG_PNPACPI
-       CONFIG_SERIAL_8250_ACPI
Аватар пользователя DRVTiny

Re: Глюки ACPI в самосборном ядре

Ещё раз пересобрал ядро, теперь у меня опции ACPI выглядят так:

+       CONFIG_ACPI
+       CONFIG_ACPI_AC
+       CONFIG_ACPI_ASUS        (MODULE)
-       CONFIG_ACPI_BATTERY
+       CONFIG_ACPI_BLACKLIST_YEAR=0
+       CONFIG_ACPI_BUTTON      (MODULE)
+       CONFIG_ACPI_CONTAINER   (MODULE)
-       CONFIG_ACPI_DEBUG
+       CONFIG_ACPI_EC
+       CONFIG_ACPI_FAN (MODULE)
-       CONFIG_ACPI_HOTKEY
-       CONFIG_ACPI_IBM
+       CONFIG_ACPI_POWER
+       CONFIG_ACPI_PROCESSOR   (MODULE)
+       CONFIG_ACPI_SLEEP
+       CONFIG_ACPI_SLEEP_PROC_FS
-       CONFIG_ACPI_SLEEP_PROC_SLEEP
+       CONFIG_ACPI_SYSTEM
+       CONFIG_ACPI_THERMAL     (MODULE)
-       CONFIG_ACPI_TOSHIBA
+       CONFIG_ACPI_VIDEO       (MODULE)
+       CONFIG_PNPACPI
+       CONFIG_SERIAL_8250_ACPI

Но не работает это! :bad:
Получаю acpi_power_off called под занавес процесса выключения, но... сказать "и тишина" в данном случае никак нельзя, поскольку вентилятор-то на процессоре крутится очень даже резво и обороты не снижает! Головки жёсткого диска паркуются, но питание не вырубается... В общем, странно всё это очень, может, проблема в каком-то параметре конфигурирования ядра, который не содержит "acpi" в своём идентификаторе?

Аватар пользователя sergeil

Re: Глюки ACPI в самосборном ядре

DRVTiny

Цитата:
Но не работает это! :bad:
Получаю acpi_power_off called под занавес процесса выключения, но... сказать "и тишина" в данном случае никак нельзя, поскольку вентилятор-то на процессоре крутится очень даже резво и обороты не снижает! Головки жёсткого диска паркуются, но питание не вырубается... В общем, странно всё это очень, может, проблема в каком-то параметре конфигурирования ядра, который не содержит "acpi" в своём идентификаторе?

Попробуйте спрятать свой .config и выполнить глубокую очистку дерева...
make mrproper

Потом вернуть на место .config (в процессе очистки он удаляется) и выполнить
make oldconfig

Потом собрать ядро как обычно... у меня были странные глюки из-за ошметок, появившихся в процессе длительных эксперементов с конфигурированием ядра. После глубокой очистки дерева глюки ушли и ядро стало предсказуемым...

Аватар пользователя DRVTiny

Re: Глюки ACPI в самосборном ядре

Цитата:
Попробуйте спрятать свой .config и выполнить глубокую очистку дерева...
make mrproper

Так я make clean (оставляет .config, но "ошмётки" удаляет) регулярно выполнял, так что с этим вроде бы проблем быть не должно...

Аватар пользователя sergeil

Re: Глюки ACPI в самосборном ядре

DRVTiny

Цитата:
Так я make clean (оставляет .config, но "ошмётки" удаляет) регулярно выполнял, так что с этим вроде бы проблем быть не должно...

Если и после `make mrproper` глюки останутся, я поверю, что это стабильный глюк.
К сожалению, есть жизненный опыт по теме, стоивший мне массу потерянного времени и нервов.

Аватар пользователя DRVTiny

Re: Глюки ACPI в самосборном ядре

Гм... оказалось, что не в ядре дело Грустный - блок питания издыхает. А ведь я его всего 5 месяцев назад купил! Последнее ядро работает именно так, как нужно и на уровне ATX действительно пытается вырубить питание, о чём свидетельствует то, что теперь 4-х секунд выжидать не надо: достаточно одного короткого нажатия на power, - но вот блок питания на сигналы от материнской платы не реагирует и продолжает подавать напряжение до нажатия этой кнопки. При чём дистрибутивное ядро, которое раньше исправно выключало компьютер, ведёт себя точно также. Вчера "ради интересу" поставил SuSE 10 OSS с идеальной, на мой взгляд, поддержкой всех технологий ACPI - так результат был тот же самый!
"Первым звоночком" было то, что у меня недавно прямо во время работы компьютер сам по себе вырубился без видимых причин: по всем признакам перепадов напряжения в сети не было (ни одна из окружавших меня лампочек даже и не моргнула). После этого начались такие вот глюки... (не определённом этапе проблемы были действительно в ядре, но после того, как я воспользоавлся рекомендацией sergeil'я, вернее, его .config'ом, они были решены) В общем, блок питания однозначно нужно новый покупать, а то он мне ещё и жёсткие диски когда-нибудь угробит вместе с процессором и материнской платой в придачу...

RSS-материал