ACPI HPET

Тема в разделе "WASM.OS.DEVEL", создана пользователем rei3er, 31 май 2007.

  1. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    ищу таблицу ACPI для HPET
    Код (Text):
    1. ; find ACPI
    2.     mov eax, 0xDFFF8
    3. @@:
    4.     add eax, 8
    5.     test eax, 0x100000
    6.     jnz without_hpet
    7.     cmp dword [eax], 0x20445352 ; RSDP signature (low 32 bits)
    8.     jnz @B
    9.     cmp dword [eax + 4], 0x20525450 ; RSDP signature (high 32 bits)
    10.     jnz @B
    11.     mov eax, dword [eax + 16] ; RSDT address
    12.     mov ebx, dword [eax + 4]
    13.     sub ebx, 36
    14.     shr ebx, 2
    15.     add eax, 36
    16. @@:
    17.     mov edx, dword [eax]
    18.     cmp dword [edx], 0x54455048 ; HPET signature
    19.     jz  hpet
    20.     add eax, 4
    21.     dec ebx
    22.     jnz @B
    23. without_hpet:
    24.     hlt
    25. hpet:
    26. ...
    до without_hpet или hpet выполнение не доходит: перезагрузка
    RSDP находится успешно
    где я не прав? вроде все смещения беру из спецификации ACPI...
     
  2. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    никто не знает?
     
  3. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
  4. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    asmfan
    она у меня есть
    но дело не в этом: для начала нужно ACPI HPET таблицу найти... но не получается
     
  5. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    Сорри, ничем помочь не могу, не компетентен. гуглите, батенька.
     
  6. xKVtor

    xKVtor New Member

    Публикаций:
    0
    Регистрация:
    24 май 2006
    Сообщения:
    28
    Адрес:
    2:5033
    rei3er

    Сам ровно год назад интересовался этим устройством. Но скилла не хватило написать прогу по его настройке - не нашел путного драйвера под винду для прямой работы с памятью. :dntknw:

    Может ее там и нет, этой таблицы. :) А что за мамка-то ?
    К сожалению, эта таблица встречается пока далеко не на всех материнках.
    Есть она, например, на:

    ASRock ALiveHF4G-DVI-M-ASR
    ASRock i945 ConroeXfire
    ASUS P5B
    ASUS M2N-E
    ASUS P5PL2-E

    Кстати, если описание HPET все же присутствует в ACPI (в DSDT), то этот таймер отображается в "Диспетчере устройств" в ветке "Системные устройства".

    [​IMG]
    http://images.people.overclockers.ru/124514.png
    http://images.people.overclockers.ru/124515.png
    http://images.people.overclockers.ru/124516.png

    Собранные мною примеры описания HPET в ACPI-таблицах для нескольких материнских плат. (570Кб)

    Винда (XP) с этим HPE-таймером не знакома, поэтому драйвер приходится ставить из интеловского INF-апдейта. Этот интеловский драйвер так же можно использовать и для н-видиевских и прочих чипсетов, благо HPET-стандартное устройство. По большому счету драйвер этот и не нужен вовсе :) , т.к. ни винда, ни какие-либо проги этот высокоточный таймер с кучей возможностей к огромному сожалению не используют. :dntknw:

    Так что может проще без ACPI-таблицы пока обойтись, а работать напрямую с чипсетом ? :)
    Ведь никто не запрещает задействовать этот таймер для своих целей, даже если он не описан в ACPI-таблицах. Благо в интеловской документации все расписано. Да и на VIAшные чипсеты документация с описанием HPET в интернете встречается.
     
  7. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    должна быть
    EPOX 4PDA3
    чипсет Intel 865PE
    хорошо, как тогда найти его (HPET) BAR без ACPI? (есть спецификации MCH и ICH5 чипсета, но там вроде как ничего похожего на HPET и работу с ним напрямую нет)
    в спецификации HPET вроде написано, что единственный способ получения его BAR - ACPI HPET таблица
    и еще
    по поводу кода, хотелось бы все-таки разобраться, почему он не работает
    тут дело даже не в HPET таблице как таковой
    идет сканирование RSDT (просмотр таблицы адресов заголовков других таблиц), но в итоге - вылет и перезагрузка
    смотрел в VirtualBox (он использует ACPI хостовой машины, т. е моей) - вообще сплошные непонятки с длинами таблиц, хотя опять таки, все смещения беру из официальной документации по ACPI
     
  8. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    xKVtor
    хотя нет, нашел в регистрах ICH5 его BAR
    но все же хотелось бы через ACPI для обобщенности
     
  9. xKVtor

    xKVtor New Member

    Публикаций:
    0
    Регистрация:
    24 май 2006
    Сообщения:
    28
    Адрес:
    2:5033
    rei3er
    Еще ни на одном епоксе я не видел HPET. Тем более на таком старом. :)
    Так что искать его там бесполезно.
    Точнее, чипсет его, естественно, содержит, но поддержки со стороны биоса нет, как водится, никакой. :dntknw:

    Если HPET нет в диспетчере устройств, то и искать его в ACPI-таблицах нет абсолютно никакого смысла! (это аксиома).

    Теоретически на некоторых мамках на базе AMI-шного биоса (в основном на ASUSах) HPET может появиться, если включить в сетапе биоса поддержку таблиц ACPI 2.0/ACPI 3.0. Но я в этом направлении не эксперементировал.

    В даташитах на интеловские чипсеты все описано, начиная с ICH5.
    В доках на VIA так же есть инфа по HPET, но там ее значительно меньше.
    Ссылки на интересные чипсетные даташиты я давал в ветке "опять SMM".

    Год назад я спокойно находил BAR и пытался работать с HPET на мамке с ICH5 безо всяких ACPI-таблиц - при помощи связки HWDIRECT + WPCREDIT (т.к. программер из меня хреновый, то пришлось действовать вручную). :)

    Я выше уже писал, что сканировать все же нужно DSDT.

    1) ИМХО выгоднее все же искать при помощи чипсета, т.к. еще раз повторяю, что на большенстве материнок поддержки HPET в биосе нет! Надеяться только на ACPI придется только в случае очень редкого чипсета, на который нет документации (nForce/ATi/ULi/...).

    Самое интересное при работе напрямую с чипсетом это то, что можно не только ИСКАТЬ, но и самому ЗАДАВАТЬ расположение этого самого BAR !!! А это гораздо важнее и интереснее. Хотя если базовый адрес еще не задан, то других вариантов, кроме как задавать BAR самому, больше и нет. ;))

    2) Содержимое таблиц ACPI можно преспокойненько получить из реестра Windows NT/XP/... без какого бы то ни было риска и лишнего геммора. ;)

    По этому поводу настоятельно советую ознакомиться с моим наборчиком ACPI_from_REGISTRY_to_ASL.

    Приведенные в предыдущем посте примеры ACPI-таблиц были сделаны как раз при его помощи.
    Заодно прямо сейчас советую проверить, есть ли HPET в ACPI на тестируемой машине, просто поискав упоминание о нем в полученном DSDT.aml (по "сигнатуре") или DSDT.asl (искать можно так же по PNP идентификатору, *103 кажется).


    PS: Если не секрет, зачем HPET вдруг понадобился ? Я то при его помощи хотел старфорсовцам жизнь подпортить, но до конца дело, как обычно, не довел. :)
     
  10. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    а он есть :)
    у меня Linux, это раз
    CONFIG_HPET_TIMER установлен, это 2
    так что даже отсюда видно, что HPET есть и работает
    в последнем посте я также написал, что нашел возможность определения его BAR-а напрямую
    вот там то я и обнаружил - лишь одно упоминание за почти 600 страниц :)
    вы меня не поняли
    чтобы найти заголовок DSDT нужно просканировать XSDT или RSDT, в чем и проблема
    в RSDP нет прямой ссылки на DSDT
    это понятно, но слишком уж к чипсету привязано, хотелось бы обобщенности
    да еще, раз уж начал с ACPI, так надо довести дело до конца: не люблю бросать начатое, те более если так и не понял в чем причина
    не поверишь, просто любопытно с этим зверем ознакомиться
    а там глядишь, какая идея возникнет :)
     
  11. xKVtor

    xKVtor New Member

    Публикаций:
    0
    Регистрация:
    24 май 2006
    Сообщения:
    28
    Адрес:
    2:5033
    rei3er
    Вообще-то, я имел ввиду соответствующее упоминание и настройку в биосе и таблицу в в ACPI.
    Ежу понятно, что HPET есть практически в ЛЮБОМ современном чипсете, вышедшем после ICH5. :)

    Отсюда не видно, есть ли упоминание о HPET в ACPI. ;))
    А про то, что физически он всегда есть на более менее новых чипсетах, я уже выше сказал.
    Понятное дело, что раз он есть, то и работать должен.

    А вот обобщенности как раз в ближайшее время нет и не предвидится.
    Пора уже с этим смириться.

    Напоминает историю про погою за двумя зайцми (HPET+ACPI). :)

    Да и где гарантия, что хваленый линукс берет настройки HPET именнонно из ACPI ??

    Сколько уже ответов, а я так и не понял, есть ли соответствующая настройка в биосе (очень сомневаюсь) и соответствующее устройство в винде ? (или винда принципиально не устанавливается ?)
    Если нет, то зачем зря ACPI мучить-то ? ;)
     
  12. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    xKVtor
    непонятно, что мы друг другу доказываем :)
    я хочу найти HPET в ACPI таблицах или убедиться, что его описания там нет (и работать дальше напрямую с ICH)
    пока получаю нерабочую программу и хочу понять, где ошибка
     
  13. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    гарантии нет, хотя можно посмотреть :) (на досуге посмотрю)
     
  14. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    rei3er
    Так из участка кода ничего не могу сказать. Перезагрузка- верный признок ошибки которую процессор не в состоянии обработать. Дальше можно предположить что отсутствует обработчик прерываний. А ошибка скорее всего в четении не существующего адреса.
    Мои попытки работать с ACPI дальше поиска RSTD не пошли, просто не до этого было. Спасибо xKVtor - за его статью которая пролила часть света на эту вещь. Вечером попробуем твой HPET отыскать( правда его у меня нет).
     
  15. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    все сегменты плоские (4ГБ) и на уровне исключений CPU ошибок, имхо, быть не должно
    другое дело на уровне MCH...
     
  16. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    лучше бы из под винды попробовал поискать, под отладчиком.

    Базу брать по-хорошему надо исключительно от ACPI, "чипсетные" способы ее выставления/определения различаются даже среди интелов -- на ICH5 оно в pci conf, на старших -- уже в Root Complex'е. Где будет на будущих чипсетах -- хз. На VIA и нфорсах ессно вообще всё кардинально по-другому.

    В новых биосах уже кстати встречается опция HPET Enable в сетапе.

    add:
    есть классная утилитка ACPIScope, которой можно посмотреть ACPI-таблицы, с наглядной навигацией по физ.адресам.

    а баг скорее всего в определении кол-ва entries в RSDT -- не откуда надо берется длина таблицы и размер заголовка в 72 байта некошерен
     
  17. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    вот и я о том же
    нет, длина как раз откуда надо
    а вот на 72 уменьшать не надо, ты прав - заголовок таблицы 36 байт
    сейчас попробую
     
  18. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    rei3er
    Ты берешь длину RDTP, в замен RSDT. И то это поле есть начиная с ACPI 2.0.
     
  19. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    все, баг нашел
    действительно, дело было в смещениях
    правильный вариант см. в первом посте
    всем спасибо за участие, особенно xKVtor
     
  20. xKVtor

    xKVtor New Member

    Публикаций:
    0
    Регистрация:
    24 май 2006
    Сообщения:
    28
    Адрес:
    2:5033
    К этому списку можно так же добавить следующие материнки:

    Asus M2N-MX
    Asus M2N8-VMX
    Asus M2NPV-MX
    Asus P5GZ-MX
    Asus P5GC-MX (rev. 2.01G)
    BioStar NF61S-micro754

    EliteGroup ECS-P965T-A rev.1.0B
    MSI P965Neo MS-7235 ver1.1

    На последних двух (MSI&ECS) есть опция, которая мне раньше не встречалась:

    [​IMG][​IMG]

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

    ЗЫ: Постараюсь пополнять этот список по мере обнаружения новых материнок.

    PPS: Интересные ссылки по теме HPET (и просто по таймерам):

    http://www.intel.com/hardwaredesign/hpetspec_1.pdf
    http://www.intel.com/hardwaredesign/hpetspec.htm
    http://www.microsoft.com/whdc/system/CEC/mm-timer.mspx?pf=true
    http://softwarecommunity.intel.com/isn/community/en-us/forums/thread/30225022.aspx
    http://www.gelato.unsw.edu.au/lxr/source/Documentation/hpet.txt
    http://www.insidepro.com/kk/030/030r.shtml