Что такое hlt_bug?

Когда я установил Ubuntu 9.10 с живого CD, я не вспоминаю наблюдение рабочего стола со значками.

Это больше было похоже на приложение установки, принял компьютер и задал мне вопросы о том, что я хотел сделать. Ни в каком смысле сделал кажется, что живая сессия все еще работала.

Но я не ожидал бы видеть любые смонтированные разделы. Разделы не должны быть смонтированы, прежде чем редактор раздела может сделать это работа. Таким же образом это fsck требует, чтобы раздел был размонтирован.

Я думаю, что установщик видит (и/или создайте), разделы, даже если Вы не можете.

Конечно, у меня не было разделов Windows для волнения о. Это могло бы быть важным различием.

2
задан 30 May 2011 в 12:27
2 ответа

Я не уверен в точных деталях, поскольку это - проблема от давно, возможно еще, когда 386 основанных машин были распространены.

Инструкцию по HLT можно только назвать в "кольце 0", когда ЦП не находится в "реальном" режиме, таким образом, это должно только названный ядром в современной ОС. Это дает процессору команду приостанавливаться, пока следующее прерывание не получено. Современные центральные процессоры заскочат в состояние низкой мощности в этой точке, хотя это не совсем столь же просто как это для центральных процессоров с несколькими ядрами, очевидно.

Если я правильно помню, ошибка была то, что приблизительно 386 центральных процессоров не проснутся в ответ на некоторые прерывания при определенных обстоятельствах. Проверка, чтобы видеть, существует ли эта ошибка, сделана путем установки таймера, что затронутые центральные процессоры, как известно, отвечают на и тот, который они не делают - если первый раз, когда ЦП просыпается, в ответ на тот первый, более длительный период, таймер, который Вы знаете, ошибка существует, потому что это должно было уже проснуться заранее и обслуживает другой, более короткий период, прерывание таймера. Поскольку инструкцию по HLT обычно никогда не называют вне ядра, которое Вы не должны волновать по поводу этого - я предполагаю, что единственное влияние "ошибки hlt, найденной" флаг, должно остановить код управления питанием, назвав HLT для бездействия процессоров, которые имеют ошибку, так не мог бы проснуться.

Единственная ссылка я нашел к этой ошибке онлайн (кроме копий вывода начальной загрузки ядра, ошибок.* исходные файлы и этот вопрос (ничего себе, вопросы на этих сайтах поражают базу данных Google быстро!)) после того, как быстрый поиск является обсуждением относительно того, должна ли проверка на него быть сохранена в ядре в эти дни, когда он вряд ли будет влиять на любые аппаратные конфигурации, которые люди используют сегодня или собираются использовать в будущем.

Править: это ПРАКТИЧЕСКОЕ РУКОВОДСТВО перечисляет проблему HLT в некоторых микросхемах 486DX-100 (ищите страницу no-hlt для ссылки). Это может быть проблемой, которую я помню (а не это являющийся проблемой приблизительно с 386 микросхемами), или это может быть совпадение и было две wake-from-low-power-state ошибки относительно той инструкции.

7
ответ дан 3 December 2019 в 08:35

Я столкнулся с одним!

Моим первым компьютером был советский ЭВМ «Искра» (в основном IBM PC / XT с собственной шиной «железного занавеса», но полностью совместимый с программным обеспечением). В некоторых редких случаях он зависал, иногда на экране появлялся мусор. При более тщательном исследовании я обнаружил:

  1. В системе был процессор Siemens SAB 8086, работающий на частоте 8 МГц.

  2. Виновником была инструкция HLT (0xF4), которая убивала систему независимо от того, были ли прерывания отключены или разрешены.

Простая последовательность, такая как 0xFA, 0xF4, 0xC3 (cli, hlt, ret), НЕ замораживала систему изящно, как можно было бы ожидать, а скорее создавала мусор на экране, а затем зависала.

Аналогичная последовательность 0xFB, 0xF4, 0xC3 (sti, hlt, ret) не просто выполнялась незаметно и не возвращалась в оболочку, опять же - мусор на экране и либо зависание, или (редко) - вернуть оболочку.

Только 0xF4, 0xC3 (обычно прерывания все равно разрешены) - тот же мусор, гудки и зависания.

Я так и не понял, куда передается управление, я мог бы написать загрузчик начальной загрузки, который заполняет память хуками (0xCC), тогда обработчик INT 03h сказал бы мне, откуда он взялся. Но тогда я об этом не думал. А может, это была не просто передача контроля, а что-то где-то развращение, кто знает? Я никогда не слышал о глючной инструкции HLT на процессорах Siemens, но это может быть так. Я не хочу обобщать, возможно, это был ТОЛЬКО ОДИН случай или, возможно, партия с ошибками.

Ну, чтобы закончить рассказ - тогда я нашел еще одну машину той же модели, но тот, внутри которого был советский камень (КМ1810ВМ86М - добросовестно украденный (заимствованный), а затем воспроизведенный CPU Intel 8086). Я попробовал поиграть с инструкцией HLT там, и ОНА РАБОТАЛА так, как должна, и как сказано в Справочнике программиста Intel 8086 ...

Какая ирония ... и какая история! :)

6
ответ дан 3 December 2019 в 08:35

Теги

Похожие вопросы