LINUX.ORG.RU

4.1 + кривой acpi - com-порты

 , pnp,


0

2

Обнаружил, что исчез com-порт, а вместе с ним и apc-шный ups. Год назад в 3.14 эту хрень ( acpi pnp ) уже чинили. Сейчас тоже самое :(

Погуглив «serial 00:06: disabled» понял, что я не один такой.

Чудаки в asus прописали в acpi com-порт с нулевой длиной области портов и ядро считает, что там никого нет :(

Ацкий хак решил проблему.

diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c
index f1c966e..5138247 100644
--- a/drivers/acpi/resource.c
+++ b/drivers/acpi/resource.c
@@ -140,6 +140,9 @@ static void acpi_dev_ioresource_flags(struct resource *res, u64 len,
 static void acpi_dev_get_ioresource(struct resource *res, u64 start, u64 len,
                                    u8 io_decode)
 {
+       // FIXME: buggy ACPI bios
+       if((start == 0x3f8 || start == 0x2f8) && !len)
+               len = 8;
        res->start = start;
        res->end = start + len - 1;
        acpi_dev_ioresource_flags(res, len, io_decode);

Может есть более элегантный вариант решения?

Мать asus P8Z77WS. Биос-а новее 2013-го года не нашел :( Ссылке на асусевом сайте ведут на 404.

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

я с этим г.... acpi до сих пор не сталкивался. Вот и хотелось узнать направление поиска.

Копаться в коде ядра не так противно, как в этой безумной проприетарной хреновине по имени acpi. Гореть в аду ее разработчикам и горе-биосописателям!

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

Ну так это. Где-то в sysfs есть псевдофайлы с байт-кодом AML. Вытаскиваешь их и скармливаешь iasl -d (там указываешь DSDT как непосредственно декомпилируемую таблицу и все остальные под отдельным флагом... «для разрешения ссылок», что ли). Ну и всё. Хачишь DSDT, собираешь обратно. Ядро как-то умеет подгружать сторонний DSDT (из initcpio).

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

А почему в линуксовом обработчике acpi не навтыкают хаков для совместимости с микрософтовским? Линус же ратует за то, чтобы у пользователя «просто работало».

anonymous
()
Ответ на: комментарий от intelfx

а проблема оказывается не в этом. После iasl -d все хорошо. Область портов описана правильно.

А вот работа парсера ресурсов acpi pnp отличается от предыдущих версий. Если будет время попробую найти последнюю версию в которой оно работало.

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

А почему в линуксовом обработчике acpi не навтыкают хаков для совместимости с микрософтовским?

А там и так натыкано хаков, чтоб работало.

i-rinat ★★★★★
()
Ответ на: комментарий от vel

попробую найти последнюю версию в которой оно работало.

Если вдруг ты ещё не знаешь про git bisect, самое время попробовать.

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

Сначала хорошо бы понять в какой ветке оно сломано.

на 3.18.21 оно точно работало.

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