Ошибка 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
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/