Увидели свет корректирующие выпуски ядра Linux 3.2.5 и 3.0.20, в которых отмечено только одно изменение - интегрирован давно ожидаемый многими пользователями ноутбуков патч, подготовленный ещё в ноябре Мэтью Гарретом (Matthew Garrett) из компании Red Hat. Патч решает проблемы с повышенным потреблением энергии на ноутбуках, поддерживающих технологию ASPM (Active State Power Management) для карт PCI Express. Проблема проявляется начиная с ядра 2.6.38, в котором была реализована новая система инициализации ASPM, и проявляется в повышении энергопотребления на 10-30%.

Изначально патч планировали включить в ветку ядра 3.3 (в ветку 3.2 патч не вошел, так как в момент его выпуска окно по приёму изменений уже было закрыто), но в конце концов посчитали, что ждать ещё несколько месяцев нет смысла. Несмотря на то, что патч признан достаточно зрелым для помещения в стабильную ветку и уже давно используется в ядрах из состава Fedora, рекомендуется проявить осторожность, так как не исключено возникновение регрессий для некоторого специфичного оборудования. Предложенный патч имитирует поведение Windows Vista при инициализации системы управления питанием, т.е. не очищает статус ASPM для всех устройств в процессе загрузки, оставляя параметры, выставленные BIOS. К сожалению, разработчикам приходится двигаться на ощупь, так как в публичном доступе полностью отсутствует какая-либо документация, описывающая, как именно должны взаимодействовать компоненты ОС с ASPM.

Причиной повышения потребления энергии при использовании ядра 2.6.38 и выше является некорректное информирование ОС о поддержке ASPM со стороны BIOS (например, проблема проявляется почти на всех новых моделях ноутбуков ThinkPad). До принятия патча активация ASPM в ядре производилась только при явном сообщении BIOS о наличии поддержки ASPM для карт PCI Express. На практике оказалось, что подобный метод неэффективен, так как BIOS многих систем умалчивает о наличии ASPM, в то время как поддержка данного режима присутствует. Если BIOS не сообщил о поддержке ASPM, ядро Linux обнуляло ASPM-регистры, что приводило к тому, что технология энергосбережения ASPM не использовалась в процессе работы системы, т.е. был постоянно активен режим максимальной производительности. В ситуации, когда BIOS указывал на наличие ASPM, инициализация проходила корректно и проблем не наблюдалось.

Следует отметить, что включения в ядро Linux ожидает ещё один набор патчей Мэтью Гаррета, связанный с оптимизацией работы при корректном уведомлении о наличии ASPM со стороны BIOS. В этом случае также не обошлось без подводных камней. Если системе изначально известно о ASPM, то применяются более агрессивные настройки, чем по умолчанию выставлены прошивкой. Но для отдельных проблемных PCI-E устройств подобные настройки применять оказалось нельзя, поэтому был сформирован чёрный список для индивидуального отключения ASPM. Список устройств, для которых необходимо отключение ASPM был найден через анализ настроек драйверов для платформы Windows, в которой используется подобный обходной путь для более оптимального использования ASPM в системе. В частности, в чёрный список вошли все RAID-контроллеры HP Smart Array (CCISS и HSPA), контроллеры Atheros l1c, l2c, l2cb и l2cb2, l1e, Ethernet-адаптеры J-Micron серии 250 и 260.

Источник: http://www.opennet.ru/opennews/art.shtml?num=33013