Вы здесь

Ошибка DSDT

Подскажите пожалуйста, где и что подправить.

Команда: iasl -tc dsdt.dsl

dsdt.dsl 3275: Method (_DSM, 4, Serialized)
Warning 1087 - ^ Not all control paths return a value (_DSM)
Warning 1080 - ^ Reserved method must return a value (_DSM)
Вот строки, где нужно исправить ошибку:

Method (_DSM, 4, Serialized)
{
Name (T_0, Zero)
If (LEqual (Arg0, Buffer (0x10)
{
/* 0000 */ 0x75, 0x0B, 0xA5, 0xD4, 0xC7, 0x65, 0xF7, 0x46,
/* 0008 */ 0xBF, 0xB7, 0x41, 0x51, 0x4C, 0xEA, 0x02, 0x44
}))
{
While (One)
{
Store (ToInteger (Arg2), T_0)
If (LEqual (T_0, 0x00))
{
Return (Buffer (0x04)
{
0x33, 0x00, 0x50, 0x00
})
}
Else
{
If (LEqual (T_0, 0x01))
{
If (\_SB.PA3D)
{
Return (Buffer (0x04)
{
0x00, 0x04, 0x00, 0x00
})
}

Return (Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00
})
}
Else
{
If (LEqual (T_0, 0x04))
{
ShiftRight (ToInteger (Arg3), 0x1C, Local0)
If (And (Local0, 0x04)) {}
Else
{
Return (Buffer (0x04)
{
0x00, 0x00, 0x00, 0x00
})
}

And (Local0, 0x03, Local1)
If (\_SB.PCI0.SBRG.EC0.SW3D)
{
Store (0x00, \_SB.PCI0.SBRG.EC0.SW3D)
If (Local1)
{
\_SB.ATKD.IANE (0x5A)
Return (Buffer (0x04)
{
0x00, 0x00, 0x00, 0x40
})
}
Else
{
\_SB.ATKD.IANE (0x59)
Return (Buffer (0x04)
{
0x00, 0x00, 0x00, 0x60
})
}
}

If (Local1)
{
Return (Buffer (0x04)
{
0x00, 0x00, 0x00, 0x60
})
}

Return (Buffer (0x04)
{
0x00, 0x00, 0x00, 0x40
})
}
Else
{
If (LEqual (T_0, 0x05))
{
And (ToInteger (Arg3), 0x0FFF, Local1)
And (ToInteger (Arg3), 0x00FFF000, Local2)
ShiftRight (Local2, 0x0C, Local2)
If (LEqual (CHA1, 0x01))
{
Store (0x01, CHA3)
Store (Local1, \_SB.AVLD)
Store (Local2, \_SB.ACTD)
}

Store (0x00, CHA1)
Store (0x00, CHA2)
Return (0x00)
}
Else
{
If (LEqual (T_0, 0x14))
{
Return (Package (0x09)
{
0x0110,
0x0400,
Zero,
Zero,
One,
One,
0xE3,
Zero,
0x03E8
})
}
Else
{
If (LEqual (T_0, 0x16))
{
If (LEqual (ToInteger (Arg3), 0x01))
{
Return (TLKY)
}

Return (TLKY)
}
Else
{
}
}
}
}
}
}

Break
}
}
}
}
}

Все остальные ошибки исправил, а здесь не могу понять что и куда прописать.
Нагуглил, что надо вставить "Return (Zero)", но куда точно так и не понял.
Заранее всем спасибо!

Для начала - что это такое и для чего это нужно.

Не грусти, товарищ! Всё хорошо, beautiful good!

1. Таблица DSDT (Differentiated System Description Table) является самой сложной. Она содержит описание методов выполнения типовых системных опера­ций (например, считывание температуры процессора или изменение номера линии запроса на прерывание, используемой заданным устройством), информа­цию об устройствах, шинах, всех системных объектах и методах взаимодействия с ними. Декларации системных устройств (объекты System Plug and Play Nodes), также продублированы в этой таблице, при этом номенклатура описанных устройств существенно расширена. Таблица DSDT, в отличие от FADT, не форма­тирована, то есть доступ к заданной записи осуществляется не по фиксированно­му адресу, а последовательным сканированием и детектированием требуемой записи. Исходный код таблицы DSDT пишется программистом на языке ASL (ACPI Source Language), который преобразуется компилятором в код AML (ACPI Machine Language). Интерпретатор языка AML, входящий в состав операционной системы, обеспечивающий обработку DSDT, обычно называется виртуальной машиной ACPI. DSDT выступает посредником между драйверами и оборудованием, и это своего рода “подкладка” под BIOS. В коде этих таблиц находится описание всех устройств компьютера и алгоритмы управления их питанием, в том числе, конечно же, и вентилятора. При этом могут вылезти ошибки и предупреждения, причем в тех строках, которые вы и не трогали. Все говорят, что происходит это потому что почти все производители биосов пользуются компилятором от Microsoft, а он просто игнорирует многие ошибки, интеловский гораздо строже.
У меня на моем лэптопе ASUS например без компилирования ядра с моим DSDT,не работали горячие клавиши. Да и одна из причин стабильности работы железа напрямую
зависит какой DSDT написали программисты для BIOS(кривой или нормальный).

2.Перекомпилировать ядро с моим DSDT. В принципе я перекомпилировал ядро с родным DSDT, но эти два предупреждения не удалось побороть. Если кто знает, подскажите где
подправить.
3. Вот выхлоп на команду dmesg | grep -i acpi, после компиляции ядра с DSDT:
http://bpaste.net/show/106990/