задержка вызова обработчика IRQ

Тема в разделе "WASM.OS.DEVEL", создана пользователем pyrodex, 22 авг 2008.

  1. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    возьмем, к примеру, 965-ый интеловский чипсет
    в конфигурационном пространстве PCI MCH есть регистр SMRAM, 4-ый бит является lock-битом
    установленный же D_OPEN бит дает возможность получать доступ к SMRAM вне контекста SMI#, т. е, например, для записи кода обработчика
    после записи BIOS устанавливает D_LCK, D_OPEN при этом сбрасывается и доступ к SMRAM становится невозможном
     
  2. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    Про lock бит писал же выше, странно что вы второй круг по нему даете...
    Но по ходу получается, что у меня в I915(ICH6) и I815(ICH2) его биосы забыли "установить"? Т.к. после вывода из тени лупил в голову обр-ка только rsm и эффект есть. Или не используют лочку в биосах, для возможности оси скажем поменять свой обработчик... Может есть "возрастная" граница поколений? А винда выключается по кнопке и предварительно сворачивается, значит ли это что она имеет свой?
     
  3. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    Для передачи сигналов ACPI используется так называемый SCI. Это как обычное перерывание
     
  4. pyrodex

    pyrodex Павлик

    Публикаций:
    0
    Регистрация:
    21 авг 2008
    Сообщения:
    25
    здрасти
    давно не был тута. думал тема заглохла. вот решил праверить...
    со SMI я так проблему не решил, но выяснил некоторые моменты:
    Опыты проводились на одноплатном компе типа формата PC104.
    Запретом в биосе всех левых устройств типа Аудио, ЮСБ кейбордов мышей и прочего барахла получилось избавиться от коротких задержек, НО остались не равномерные задержки выскакивающие с периодом от нескольких секунд до минут.
    у меня IRQ5 вызывается c частотой 120Гц (от внешнего источника). 120Гц это не килогерцы! пропуски были!
     
  5. pyrodex

    pyrodex Павлик

    Публикаций:
    0
    Регистрация:
    21 авг 2008
    Сообщения:
    25
    да, забыл сказать, что запись в порт или чтение тоже вызывает SMI похоже. кашмар какойта.
     
  6. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    А вот некоторые платы именно этого форм-фактора очень любят SMI о чем глаголет их чипсетные даташиты, напр. CS553x (Geode). Может это архитектруные бзыки или решения, не знаю...
    А ты учитываешь то, что IRQ5 приоритет имеет аж после......... Или у тебя таки все вышестоящие IRQ зарублены? Может тут то все просто, типа не учел , что...
     
  7. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    pyrodex в принципе тема исчерпана, я так думаю. Интересует она мало кого, и требует много чего, да и собственно плавно или рывком переходит в совершенно другую по исследованию smi зверя :)
    В финал выкладываю последние скрины последней модификации моей измерялки v.8.1 на I915P + ICH6, мать гигабайт, период IRQ0 1мс, замеры за 15сек, для двух состояний smi-ON и smi-OFFhttp://dump.ru/file_catalog/1035199/
    Не подумайте, что это я его руками такой красивый вырисовывал ;)
    Обязательно обратите внимание на масштаб оси по вертикали у обоих и хотябы приблизительно оцените "урон" нанесенный равномерности якобы периодической последовательности IRQ0.
    И еще. Мое мнение что оба прерывания, т.е. их таймера (счетчики) "питаются" от одного кварцевого резонатора ввиду такой симметричности вверх-вниз с одной стороны и равномерности появления smi по оси времени...
     
  8. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    VaStaNi
    А как насчет USB клавиотуры и мыши? Ониже используют SMI. Хочется частично отключить SMI все кроми клавы и мыши и чтобы работал порт 60h 64h и непросто работал но и держал USB зверей. И прерывание от них должны работать.
     
  9. pyrodex

    pyrodex Павлик

    Публикаций:
    0
    Регистрация:
    21 авг 2008
    Сообщения:
    25
    VaStaNi
    да наверно
    со своим глюком разобрался.
     
  10. pyrodex

    pyrodex Павлик

    Публикаций:
    0
    Регистрация:
    21 авг 2008
    Сообщения:
    25
    Pavia
    частично можно отключить через MSR регистры проца.
     
  11. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    Pavia мнение выше приводил, что ради них (имеется ввиду своя ось, проект, прил.ЖРВ...) "портить временную диаграмму" не имеет смысла, особенно если они не нужны, мало нужны, могут быть заменены и т.д. НО с большим ПЕРЕВЕСОМ в пользу РЕШАЕМОЙ ОПЕРАЦИОННОЙ ЗАДАЧИ! Ну например манипулятор (робот) стыковщик должен обеспечить синхронное управление (скважно-регулируемыми импульсами 6 ти шаговых двигателей) с ошибкой по фронтам не более 1мс! Во че на ум взбрело! :) Плюс никто с него не сбрасывает обработку... э-э-э-э скажем, потокового видео (с меньшим приоритетом) с веб камеры... пусть даже по USB!
    Но всему своя цена. USB драйвер пишется отдельно и под девайс + под стык с ЯДРОМ этого "прибора", с его API.
    Опять же винда. Винда разве юзает USB мышь и клаву через "биосовский горбыль"? По моему нет. Свой инструментарий и ним имеет. А биосовское уродство это для доса пожалуй и для того, чтобы в биос настройках порыться через usb и т.п. Надо же, чтобы после включения, хоть что то из человеко-машинного интерфейса работало, раз юзверь полностью на USB сидит. :)
     
  12. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    помогите пожалуйста кто-нибудь мне победить это чудо техники http://wasm.ru/forum/viewtopic.php?pid=285615#p285615
    Есть у кого-нибудь программа smioff?
    Вот, кстати, ссылка интересная http://support.mdl.ru/PC_COMPL/doc/IndespPC.Bok/Chapt24/Chapt24.12.7.Html. Там написано что то про связь PCI и SMI. Только я ничего непонял, да и контроллер у меня другой скорее всего.

    "а в том же линуксе SMI обработчики для GX1 реализованы на уровне ОС и
    им начихать на биос"
     
  13. vshemm

    vshemm New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    10
    smioff для разного железа будет разным.
    Для GX1+5530 можно гглянуть тут (ключая см обработчик): http://www.pengutronix.de/software/geode/OSELAS.BSP-JB-GeoTerm-3.tgz
    Использовать архитектуру х86 для подобных задач - чревато, поэтому во всех серьезных девайсах ее и не используют :)
    Выводить определение RTOS из рекламных проспектов тоже чревато, т.к. гарантированное максимальное время задержки на реальном железе - бесконечность, что может стать неприятным сюрпризом.
     
  14. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    Это точно??? Если это так, то уважуха! А где с этим ознакомиться? Это спецлинух редакция или о чем то стандартном речь идет?
    так x86 тут ни причем, это архитектуру и схемотехнику РС машин, матерей пожалуй хают. А x86 любой будет пахать как часики, только бы ему диаграмму работы никто не гадил.
     
  15. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    так напиши сам и попробуй. Только что ходил к товарищу он CS5530.pdf показал ткнул, там есть MSR SMI регистр(ы) которые все и рулят, как я понял... или у тебя именно GX1? Все равно нужны мануалы и конкретные курить и пробовать, пробовать....
     
  16. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    VaStaNi
    Где вы нашли MSR регистры в CS5530? Смотрел в CS5530.pdf и 5530a_db_v11.pdf ненашел. Скажите страницу пж-та.
    Свой мне написать будет непросто ввиду того что информации просто море и непонятно что с чем связано. Разбираться в биосах это тоже еще тот изврат.
    У меня GX1 cs5530 и Geode LX cs5536.
    В линуксе я искал но пока что ненашел.

    Кстати:
    Интересно что это за кеширование такое. Если я правильно понял (пора мне наконец-то выучить английский) то ему вообще пофигу где будет обработчик.

    Пойду прочитаю размер и базу по умолчанию после биоса.
     
  17. vshemm

    vshemm New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    10
    Давал же ссылку на обработчик и все такое: http://www.pengutronix.de/software/geode/OSELAS.BSP-JB-GeoTerm-3.tgz.
    Хотя, выключения сми там нет, т.к. биос его не включает (см. http://www.coreboot.org/).
    Там же есть и для других мостов (и амд, и интеловских).
     
  18. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    Оказывается он мне показывал по 5535 модели, говорит GeodeLink архитектура она типа и в африке.... ну раз у тебя GX1 пришлось порыться...
    Вот что я нашел. GX1.PDF гласит в Table 3-11. Configuration Registers
    что тебе юзать CCR1...CCR3 регистры надо. Во всяком случае их изучать и как там повязано это шаманство с битами, кого первого, кого затем и почему...
    Вот кстати качнул по ссылке, что тебе дали нашел в файле geode_smi_handler.patch
    следующее:
    Код (Text):
    1. +/*
    2. + * The GX1 has a separate address space at GX_BASE + 0x400000. The datasheet
    3. + * tells it is "SMM System Code". But if you test this memory space, you will
    4. + * find a mirror of the vidoe memory space in it.
    5. + * Until - yes, until - you set bit 2 in MC_MEM_CNTRL1. Then the physical
    6. + * memory at 0xA0000...0xBFFFF will occure 32 times in the GX_BASE + 0x400000
    7. + * area.
    8. + */
    9. +#define CX86_SMHR 0xB0
    10. +#define CX86_SMAR 0xCD
    11. +
    12. +static int __devinit geode_enable_smi(struct pci_dev *pci)
    13. +{
    14. +   void *smm;
    15. +
    16. +   geode_gx1_enable_smm_area();
    17. +   smm = geode_gx1_get_smm_area();
    18. +
    19. +   geode_gx1_prepare_smm(0xA0000, 32 * 1024);
    20. +#if 0
    21. +   u8 ccr3;
    22. +
    23. +   ccr3 = getCx86(CX86_CCR3);
    24. +   setCx86(CX86_CCR3, ccr3 | 0x10); /* enable MAPEN  */
    25. +
    26. +   printk("Current SMHR: 0x%02X%02X%02X%02X\n",
    27. +          getCx86(CX86_SMHR+3),    /* A31...24 ??? */
    28. +          getCx86(CX86_SMHR+2),    /* A23...16 ??? */
    29. +          getCx86(CX86_SMHR+1),    /* A15...8 ??? */
    30. +          getCx86(CX86_SMHR)); /* A7...0 ??? */
    31. +
    32. +   setCx86(CX86_SMAR, 0x40);
    33. +   setCx86(CX86_SMAR + 1, 0x00);
    34. +   setCx86(CX86_SMAR + 2, 0x04);   /* 32kiB @ 0x40000000 */
    35. +
    36. +   printk("New SMHR: 0x%02X%02X%02X%02X\n",
    37. +          getCx86(CX86_SMHR+3),    /* A31...24 ??? */
    38. +          getCx86(CX86_SMHR+2),    /* A23...16 ??? */
    39. +          getCx86(CX86_SMHR+1),    /* A15...8 ??? */
    40. +          getCx86(CX86_SMHR)); /* A7...0 ??? */
    41. +
    42. +   printk("New SMAR: 0x%02X%02X%02X\n",
    43. +          getCx86(CX86_SMAR),  /* A31...24 ??? */
    44. +          getCx86(CX86_SMAR + 1),  /* A23...16 ??? */
    45. +          getCx86(CX86_SMAR + 2)); /* A15...12 ??? */
    46. +
    47. +   setCx86(CX86_CCR3, ccr3);
    48. +#endif
    49. +   return 0;
    считаю, что это в самую "масть" тебе листинги + PDF + пробы должны дать результат.
    Еще. Еще скажу, что вторым методом можно считать подход НЕ со стороны именно проца, а со стороны ликвидации причины возникновения. Ведь пин SMI проца GX получает сигнал с CS5530, т.е. если повырубать причины генерации с CS5530 то и на обработчик проц не пойдет. Но там рубить/разбираться немало...
    А вот в 5536 точно есть GLD_MSR_SMI ищи прямо эту строку, ну а там курить и курить, конечно.
    А что за железка у тебя FastWell? Это по работе или как? Ну интересно, т.к. считаю это редкость встретить коллег и собственно специфику...
     
  19. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    vshemm
    Как вырубить SMM на GX1 мне написали Fastwell приложив программу с исходником для qnx.

    VaStaNi
    Это я уже давно осознал :)

    Уточни пожалуйста где именно ты нашел этот файл, я уже все обыскал что только можно (включая linux-2.6.27.10, OSELAS.BSP-JB-GeoTerm-3, OSELAS.BSP-JB-GeoTerm-2, OSELAS.BSP-JB-GeoServ-2, trunk_coreboot-v2-r3824). Искал и по имени файла который ты указал, по функциям и даже в гугле.

    GLD_MSR_SMI в 5536 видел, есть, много слов про него, буду разбираться (с помощью него можно вроде даже решать вопрос с конкретными источниками). Я из Питера. Железок их полно. Надо со всем этим добром разбираться :)

    Вот тут еще есть какие то интересные вещи http://tracker.coreboot.org/trac/openfirmware/browser/dev/geode, но что там мне понять сложно.
     
  20. VaStaNi

    VaStaNi Member

    Публикаций:
    0
    Регистрация:
    1 июн 2004
    Сообщения:
    203
    Адрес:
    Ukraine
    Извини, немного не то имя указал, это был:
    OSELAS.BSP-JB-GeoTerm-3\patches\linux-2.6.22\generic\smi-handler.patch
    А выпуск GX1 разве не остановлен? Смысл делать на них что то? Отаток на складах что ли?
    разобраться то можно со многим, тока по ходу похоже даже на хлеб не заработаешь :dntknw: или 1 раз "разобрался" и пауза год... Хотя железки интересные. Наверно у тебя контора хорошая...