Х.з. В доках на ACPI вроде написано, что смотриться поле вектора возврата в таблице FACS, и если оно не 0, то тогда... А где это происходит в биосе??? И какая часть кода биоса должна выполниться, чтобы это посмотреть?
[цитата]В режим SMM процессор может войти только по сигналу на входе SMI# (System Management Interrupt). Сигнал SMI# для процессора является немаскируемым прерыванием с наивысшим приоритетом. При входе в режим SMM автоматически запрещаются аппаратные прерывания. Сразу при входе в SMM процессор сохраняет состояние почти всех своих регистров в специальной памяти SMRAM, которая представляет собой выделенную область физической памяти. В том же фрагменте располагается и обработчик SMI (SMI Handler). Размер памяти SMRAM может меняться от 32 КБ (минимальные потребности SMM) до 4ГБ.
Если режим SMM используется для отключения питания процессора с возможностью быстрого "пробуждения", память SMRAM должна быть энергонезависимой. Если SMRAM не является энергонезависимой, то системная логика должна обеспечить возможность ее инициализации процессором из обычного режима работы до появления сигнала SMI#.
[/цитата]
В спеках на acpi пишут, что при переходе в S3 нужно сохранить настройки контроллера памяти в энергонезависимой памяти, чтобы потом (при подаче питания) пернастроить контроллер памяти. Но впринципе на простой материнке эти настройки всегда одинаковы, поэтому возможно, что просто инитится железо, а потом передается управление SMI хендлеру.
Судя по D-Led`ам на MSI`ной матери при включении происходит "ранняя инициализация чипсета" потом сразу "тесты пройдены - загрузка системы", при этом показуется инит видяшки и появляется рабочий стол.
Интересно, это все делает бутблок или это происходит уже в original.tmp???
А как это приблизительно должно выглядеть в виде исходников???
У меня такая проблема. При просыпании из S3 теряются и находятся новые устройства из тех, о существовании которых acpi ОС узнает через метод _sta. Я предполагаю, что на каком-то этапе загрузки в "память" (к которой вроде доступаются через 0x03F0 и 0x03F1 порты - типа адрес-данные, как, например к cmos) заносятся какие-то ошибочные данные. При дезасемблировании бутблока нашел куски, которые вообщем-то эквиваентны нижеприведенному AML коду. Они вызываются практически сразу после старта. Исправление джампа на них (сделал за этот блок) ничего не дало. Забивать их нопами еще не пробовал, но и непохоже, чтобы этот кусок вызывался из другого места... Как еще что можно проверить/сделать?
Может через CMOS ?
ПС [13-06-2006] Идеальный скриншот BIOS'а ? Запросто ! // K.V.
Х.з. В доках на ACPI вроде написано, что смотриться поле вектора возврата в таблице FACS, и если оно не 0, то тогда... А где это происходит в биосе??? И какая часть кода биоса должна выполниться, чтобы это посмотреть?
[цитата]В режим SMM процессор может войти только по сигналу на входе SMI# (System Management Interrupt). Сигнал SMI# для процессора является немаскируемым прерыванием с наивысшим приоритетом. При входе в режим SMM автоматически запрещаются аппаратные прерывания. Сразу при входе в SMM процессор сохраняет состояние почти всех своих регистров в специальной памяти SMRAM, которая представляет собой выделенную область физической памяти. В том же фрагменте располагается и обработчик SMI (SMI Handler). Размер памяти SMRAM может меняться от 32 КБ (минимальные потребности SMM) до 4ГБ.
Если режим SMM используется для отключения питания процессора с возможностью быстрого "пробуждения", память SMRAM должна быть энергонезависимой. Если SMRAM не является энергонезависимой, то системная логика должна обеспечить возможность ее инициализации процессором из обычного режима работы до появления сигнала SMI#.
[/цитата]
Следовательно рыть нужно в сторону SMI handler'а
В спеках на acpi пишут, что при переходе в S3 нужно сохранить настройки контроллера памяти в энергонезависимой памяти, чтобы потом (при подаче питания) пернастроить контроллер памяти. Но впринципе на простой материнке эти настройки всегда одинаковы, поэтому возможно, что просто инитится железо, а потом передается управление SMI хендлеру.
Судя по D-Led`ам на MSI`ной матери при включении происходит "ранняя инициализация чипсета" потом сразу "тесты пройдены - загрузка системы", при этом показуется инит видяшки и появляется рабочий стол.
Интересно, это все делает бутблок или это происходит уже в original.tmp???
судя по исходникам вроде как бутблок...
> Интересно, это все делает бутблок или это происходит уже в original.tmp???
Это делает бутблок.
А как это приблизительно должно выглядеть в виде исходников???
У меня такая проблема. При просыпании из S3 теряются и находятся новые устройства из тех, о существовании которых acpi ОС узнает через метод _sta. Я предполагаю, что на каком-то этапе загрузки в "память" (к которой вроде доступаются через 0x03F0 и 0x03F1 порты - типа адрес-данные, как, например к cmos) заносятся какие-то ошибочные данные. При дезасемблировании бутблока нашел куски, которые вообщем-то эквиваентны нижеприведенному AML коду. Они вызываются практически сразу после старта. Исправление джампа на них (сделал за этот блок) ничего не дало. Забивать их нопами еще не пробовал, но и непохоже, чтобы этот кусок вызывался из другого места... Как еще что можно проверить/сделать?
up
Отправить комментарий