LINUX.ORG.RU

И снова ACPIпроблемы.

 , , ,


0

1

Поставил на днях генту на ноут (HP G62-b26er) с гибиридной графикой. Всё было вроде бы нормально, до первого переключения с интеграшки на дискретку - не включается подсветка у атишной карты и вобще она греется аки печ и машина вырубается через мнут 5.
Копание в /sys/class/backlight ни к чему не привело - для интеловской всё регулируется, а дискретка вообще ни на что не реагирует.
Решил заглянуть в dmesg и узрел там старые добрые варнинги и жалобы на ASPM с Firmware Bug. Псоле пары часов гуглежа и копания в DSDT наконец получил 0/0/0/66 от iasl, и воткнул новый DSDT в ядро. Правда в итоге это особо ничему не помогло, в логе появилась строчка PCIe ASPM is forcibly enabled, который тем не менее не работает.
Подозреваю что дискретка не работает тоже из-за ACPI.
В итоге имею:
ACPI
ASPM
OSC
Оригинальный dsdt.dat
Пофикшенный мной dsdt.dsl

Cast init_6.


Ответ на: комментарий от daytar

Попробуй протестировать систему, загрузившись с pcie_aspm.policy=performance , или пересобрав ядро с:

CONFIG_PCIEASPM=y
# CONFIG_PCIEASPM_DEBUG is not set
# CONFIG_PCIEASPM_DEFAULT is not set
# CONFIG_PCIEASPM_POWERSAVE is not set
CONFIG_PCIEASPM_PERFORMANCE=y
(что одно и тоже, я просто не уверен насколько первое поддерживается).

Лень гуглить твою спеку, а какая видеокарта-то и драйвер используется?

science ★★☆
()
Ответ на: комментарий от science

Попробуй протестировать систему, загрузившись с pcie_aspm.policy=performance

Добавил (у меня в опциях уже было pcie_aspm=forse и acpi_backlight=vendor) - рекации ноль, всё так же жалуется на неподдерживаемый ASPM и \_SB_.PCI0:_OSC invalid UUID

или пересобрав ядро

Тоже самое что и с pcie_aspm.policy=performance.

Лень гуглить твою спеку, а какая видеокарта-то и драйвер используется?

Интеловская - 810/815, сам толком не знаю, знаю что это Gen1, драйвер i915, ядерный, вкомпилен.
Радеон - HD 5470m, дрова ядерные radeon, модуль плюс фирмварь в ядре (видно в конфиге).

daytar
() автор топика

daytar во первых тот самый Firmware Bug это вообще ни о чем. И если честно то я вообще хз нафиг разработчики ядра добавили вывод об Firmware Bug.

А ASPM, опять же если я все понял правильно, в linux сделан для идеального компьютера в вакууме созданного с соблюдением всех стандартов.

Вот это подскажет тебе где именно смотреть на логику и искать причины:

> grep 'ASPM' -r -n /usr/src/linux/drivers/acpi/*c
/usr/src/linux/drivers/acpi/pci_root.c:482:				"notification failed, disabling PCIe ASPM\n");
/usr/src/linux/drivers/acpi/pci_root.c:510:			if (acpi_gbl_FADT.boot_flags & ACPI_FADT_NO_ASPM) {
/usr/src/linux/drivers/acpi/pci_root.c:512:				 * We have ASPM control, but the FADT indicates
/usr/src/linux/drivers/acpi/pci_root.c:523:				"disabling ASPM\n");

Это выхлоп для 3.10.5 по ссылке выше для 3.2.7 но логика там все та же. Т.е. если нет _OSC в dsdt самого bios-а то disabling ASPM и насрать на то, что реально все поддерживается просто вендор клал на обновление биосов и на изначальное соблюдение каких бы то ни было стандартов.

А чтобы ASPM в linux работало в Scope (\_SB.PCI0) необходим Method (_OSC, 4, NotSerialized) об этом и всех остальных моих приключениях написано по ссылке.

init_6 ★★★★★
()
Ответ на: комментарий от daytar

Хм, похоже получилось частично(?) пофиксить ASPM.

daytar добрый совет сначала прочитай это и {файл/ы} которые тебе выдаст grep 'ASPM' -r -n /usr/src/linux/drivers/acpi/*c затем вернись на первый вариант пофикшенного тобой dsdt.dsl и пляши от него.

init_6 ★★★★★
()
Ответ на: комментарий от init_6

init_6 прочитал, grep 'ASPM' -r -n /usr/src/linux/drivers/acpi/*c выдаёт тоже что и у тебя выше.

А чтобы ASPM в linux работало в Scope (\_SB.PCI0) необходим Method (_OSC, 4, NotSerialized)

В моём DSDT уже был OSC в Scope (_SB.PCI0), правда выглядит он иначе, изменил как в твоём примере - результат такой же как и с http://pastebin.com/rTRHeUTg.

Так же посмотрел статью про SSDT (ссылка в твоём посте), решил проверить свой, а у меня их оказывается 2, разных. В первом только варнинги, а во втором уже и ошибки нашлись. Стоит копаться с ними или ещё какие-то таблицы проверять?

daytar
() автор топика
Ответ на: комментарий от daytar

В моём DSDT уже был OSC в Scope (_SB.PCI0), правда выглядит он иначе

Значит у тебя все еще лучше чем у меня и по идее все должно было работать и без всех этих танцев с бубном. Значит смотри по /usr/src/linux/drivers/acpi/pci_root.c когда ASPM включается и когда отключается.

init_6 ★★★★★
()
Ответ на: комментарий от init_6

init_6
Из /usr/src/linux/drivers/acpi/pci_root.с мало что понял Т_Т.
Зато нашёл пример включения ASPM с дефолтным _OSC как у меня, это как раз мой пост про частичный фикс. Из лога http://pastebin.com/ZLb0ScAE видно как оно, вроде бы, включилось ACPI _OSC control (0x1d) granted, но затем ругается Unable to request _OSC control (_OSC support mask: 0x08) и ACPI _OSC support notification failed, disabling PCIe ASPM. Хотя товарищ пишет что ругань на нотфикейшн - это нормально, но у него не жалуктся на mask: 0x08.

И что скажешь про варнинги (на фирмварь баги можно забить?), кривые SSDT или по не рабочему дискретному видео?

daytar
() автор топика
Ответ на: комментарий от daytar

Собрал на днях 3.11 rc5 - чудесным образом стала работать дискретка, правда подсветка не регулируется и светит на максимуме да и прозрачность панели в кедах поломалась (белая панель). Заодно потыкал dpm - всё классно, правда появился ещё один ACPI варнинг, но drm'овцы уже запилили патчик.

В общем жду стабилизации 3.11 и drm-патчей на автоотключение и фикс варнинга.

daytar
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.