Summary: | memtest86 crashes at startup, if run on system with Intel Pentium M (Centrino) CPU | ||
---|---|---|---|
Product: | Sisyphus | Reporter: | Andrey Liakhovets <a.o.liakh> |
Component: | memtest86 | Assignee: | Nobody's working on this, feel free to take it <nobody> |
Status: | CLOSED FIXED | QA Contact: | |
Severity: | major | ||
Priority: | P4 | ||
Version: | unstable | ||
Hardware: | all | ||
OS: | Linux | ||
Attachments: |
Description
Andrey Liakhovets
2003-06-09 20:31:04 MSD
Патч, будучи приложенным, приводит к циклическому выводу \"1000\"/\"0200\" в разных пропорциях на P4 и C3. На P4 -- проверяли? PS: для большей оперативности use mail/jabber: <a href="mailto:mike@altlinux.org" target="_new">mike@altlinux.org</a> Патч, будучи приложенным, приводит к циклическому выводу \"1000\"/\"0200\" в разных пропорциях на P4 и C3. На P4 -- проверяли? PS: для большей оперативности use mail/jabber: <a href="mailto:mike@altlinux.org" target="_new">mike@altlinux.org</a> Да, проверял, сейчас перепроверил ещё раз -- работает. Результаты CPUID на этом процессоре: Input EAX: Output EAX Output EBX Output ECX Output EDX 00000000: 00000002 756E6547 6C65746E 49656E69 u n e G l e t n I e n i 00000001: 00000F27 00010809 00000400 BFEBF9FF 00000002: 665B5101 00000000 00000000 007B7040 80000000: 80000004 00000000 00000000 00000000 80000001: 00000000 00000000 00000000 00000000 80000002: 20202020 20202020 20202020 6E492020 n I 80000003: 286C6574 50202952 69746E65 52286D75 ( l e t P ) R i t n e R ( m u 80000004: 20342029 20555043 30342E32 007A4847 4 ) U P C 0 4 . 2 z H G (до этого проверял на процессоре P4, отличающемся только частотой и, соответственно, у него отличался только результат CPUID при inp.EAX=80000004: out.ECX = 30382E32). Андрей Ляховец Да, проверял, сейчас перепроверил ещё раз -- работает. Результаты CPUID на этом процессоре: Input EAX: Output EAX Output EBX Output ECX Output EDX 00000000: 00000002 756E6547 6C65746E 49656E69 u n e G l e t n I e n i 00000001: 00000F27 00010809 00000400 BFEBF9FF 00000002: 665B5101 00000000 00000000 007B7040 80000000: 80000004 00000000 00000000 00000000 80000001: 00000000 00000000 00000000 00000000 80000002: 20202020 20202020 20202020 6E492020 n I 80000003: 286C6574 50202952 69746E65 52286D75 ( l e t P ) R i t n e R ( m u 80000004: 20342029 20555043 30342E32 007A4847 4 ) U P C 0 4 . 2 z H G (до этого проверял на процессоре P4, отличающемся только частотой и, соответственно, у него отличался только результат CPUID при inp.EAX=80000004: out.ECX = 30382E32). Андрей Ляховец Гм. Можете прислать мне свою сборку и информацию о ее создании? Гм. Можете прислать мне свою сборку и информацию о ее создании? Послал лично. Есть предположение, что такой вывод может быть при ошибке чтения дискеты, если запускать memtest86 из начальных секторов дискеты (файл bootsect.S, цикл на метке load_setup:). Попробовать запуск через GRUB, LILO, loadlin или другую дискету ? Андрей Ляховец Послал лично. Есть предположение, что такой вывод может быть при ошибке чтения дискеты, если запускать memtest86 из начальных секторов дискеты (файл bootsect.S, цикл на метке load_setup:). Попробовать запуск через GRUB, LILO, loadlin или другую дискету ? Андрей Ляховец --MARK-- --MARK-- Собрал сегодня по другим причинам alt4 (оставив Ваш патч) -- на двух проверенных системах (Athlon и P4) проблем не возникло. Проверю остальные имеющиеся и буду выкладывать; может, пока посмотрите ftp://ftp.altlinux.org/pub/people/mike/RPMS/memtest86-3.0-alt4.i586.rpm ftp://ftp.altlinux.org/pub/people/mike/SRPMS/memtest86-3.0-alt4.src.rpm Извините за долгий ящик -- не найдя решения проблемы тогда (дискету менял, кажется) -- отложил вопрос. Created attachment 289 [details]
CPU's info of computers tested with memtest86-3.0-alt4
These CPU's have been also tested with my_viac3.diff patch.
Created attachment 290 [details]
Detects (and works on) VIA C3, as well as works on Centrino
Проверил на Pentium M (Centrino) 1500, P4 (with HT) 3.06, P4 2.80, Mobile P4 2.60, PIII 850, PIII 700, Celeron 667, PII 400, Pentium 120 -- всё OK (см. tested_cpus.tar.gz, первые строки - из memtest86, затем результаты CPUID с комментариями). Работает также на VIA C3 1GHz, но, естественно, без определения модели процессора и кэшей и без использования Time Stamp Counter'а (т.е., без времени). Сделал патч, с которым определяет и доступный мне VIA C3 (my_viac3.diff.gz, включает и Centrino), проверил на тех же аппаратах и на VIA (см. VIAC3_1 в tested_cpus.tar.gz). Заодно поправил "skip reserved registers" в "get cache info" (могли быть пропуски в отладочной печати) и немного изменил расчёт скорости кэшей, -- во всяком случае, определение скорости L1 data cache стало гораздо стабильнее, да и у L2 теперь более реалистичные значения. Но это уже можно рассматривать как feature request. Андрей Ляховец * Mon Oct 06 2003 Michael Shigorin <mike altlinux ru> 3.0-alt5 - updated patch by AL (now handles VIA C3 too); changed its company prefix from "alt" to "rover" as it should reflect the origin more properly - added README.rover (see also #2648 history) and cpus/ to docs - minor spec cleanup, TODO update Adding last patch/readme versions that were present in memtest86-3.0-alt8; not using them with 3.2 (patch doesn't apply and I cannot verify the result reliably even if would successfully merge it -- which is highly doubtful). Also notifying upstream and memtest.org. Created attachment 1398 [details]
intel centrino, via c3 and amd athlon support for memtest86 3.0
Created attachment 1399 [details]
CPUs tested with the latest patch (3.0-alt[6-8])
Created attachment 1400 [details]
README for the patch (in Russian)
Посмотрел исходники версии 3.2 в тех местах, которые я патчил. Ну, стало лучше. И очень может быть, что работает на всех существующих CPU (сейчас времени нет проверять). Но главная мина так и осталась не обезвреженной: как только появится новый процессор с неизвестным кэшем (т.е. как только в функции cpu_type в init.c переменные l1_cache и l2_cache останутся =0 к тому моменту, когда мы доберёмся до Determine memory speed), так сразу будет вызвана memspeed с параметром len=0 и программа рухнет. Так и не начав тестировать память всего лишь из-за никому не нужной попытки определить (весьма приблизительно) скорость этой памяти. Ещё раз "предлагаю добавить проверку на 0 переменных len и iter в функцию memspeed (файл init.c)": --- init.c.orig 2004-11-09 22:57:44 +0300 +++ init.c 2006-02-25 18:13:59 +0300 @@ -931,6 +931,10 @@ ulong wlen; int i; + if (len == 0 || iter == 0) { + return 0; + } + dst = src + len; wlen = len / 4; /* Length is bytes */ По поводу всего остального просто неохота (и нет времени) возиться. С патчами к версии 3.0 было гораздо проще: не хватало кэш-дескрипторов, не было Brand ID и т.д. Было ясно, что надо бы это добавить (раз уж занимаемся определением CPU и cache). А теперь... Может, у авторов этого кода более правильная документация и/или больше возможностей тестирования, -- разбираться довольно долго. Так что пусть определяют как-нибудь, лишь бы не падало при этом. Нам же тестировать надо, а не определять нечто известное и совершенно не нужное для тестирования. Алексей, спасибо -- принято в 3.2-alt2 и отправлено разработчикам. |