Board.KolibriOS.org
http://board.kolibrios.org/

APIC
http://board.kolibrios.org/viewtopic.php?f=1&t=1195
Страница 8 из 12

Автор:  Serge [ Вт июл 26, 2011 11:24 pm ]
Заголовок сообщения:  Re: APIC

Да. Здесь можно не кодить. А вот вменяемая система именования всех устройств очень нужна.

Автор:  maximYCH [ Сб авг 20, 2011 10:21 am ]
Заголовок сообщения:  Re: APIC

Я немного не понял, APIC овский код сейчас стабилен? Тот, что из kolibri-acpi я имею ввиду.

Автор:  Serge [ Сб авг 20, 2011 10:24 am ]
Заголовок сообщения:  Re: APIC

Вполне. Ждёт частичной заливки на транк.

Автор:  Serge [ Чт авг 25, 2011 11:53 am ]
Заголовок сообщения:  Re: APIC

Кто-нибудь знает, нужен этот pic_delay, или его можно смело удалить ? Я думаю что на всех Pentium+ чипсетах он не нужен
Код:
pic_delay:
        jmp     pdl1
pdl1:   ret

rerouteirqs:
        cli
        mov     al,0x11         ;  icw4, edge triggered
        out     0x20,al
        call    pic_delay
        out     0xA0,al
        call    pic_delay

Автор:  art_zh [ Чт авг 25, 2011 12:39 pm ]
Заголовок сообщения:  Re: APIC

По-моему, это не более чем дань древней традиции -- давать микросекундную задержку между двумя последовательными обращениями к портам одного контроллера. В старых 286/386 BIOSах иначе с портами и не работали. Если порты собраны на отдельных микросхемах (8251, 8250 и т.п.) - только так можно было гаратнировать надежное переключение их входных CMOS-ключей.
Сейчас эти задержки реально не нужны, все контроллеры сидят на внутренних мостовых шинах и надежно переключаются без шаманских софтовых плясок.
К тому же на современных CPU реальная задержка этого кода все равно будет 5-10 тактов, не больше.

Автор:  Serge [ Чт авг 25, 2011 1:05 pm ]
Заголовок сообщения:  Re: APIC

Почищу я это безобразие в следующем коммите.
Плохо что IA32 ISA нет аналога nanosleep(). Везде приходится извращаться, гонять пустые циклы или писать в отсутствующий порт.

Автор:  SII [ Чт авг 25, 2011 10:13 pm ]
Заголовок сообщения:  Re: APIC

Ну а PIC так вообще является частью чипсета давным-давно, это не какой-то внешний контроллер непонятного производителя, который может быть и тормозным... По идее, если при работе с ним нужны были бы задержки, это оговаривалось бы в документации на чипсет, но я такого не припомню.

Автор:  Ghost [ Пн сен 05, 2011 9:29 am ]
Заголовок сообщения:  Re: APIC

Hello guys! ) ну и CleverMouse

Давненько меня тут не было. Как то все закрутилось, зарабатывание денег, жилье, покупка машины... Потихоньку буду перечитывать кучу новых сообщений в форуме, вникать в курс дела и освежать что осталось в памяти.

Serge как всегда говорит правильные вещи. ACPI системе нужен как воздух. И нужен он не только для IRQ, в нем много вещей можно делать. Прочитайте мельком ASL, декомпилируйте AML из своего ACPI кода и вы увидите что часть драйверов есть в самой системе, и они уже запилены под конкретную логику. И кстати информация про APIC, SMB, SIO(wtf?), HPET там есть. Ну и плюшки вроде спец кнопок от Power до специфичных на буках там тоже есть.

>>А что решил делать с именованием?
Если мне память не изменяет то в ASL есть именования типовых устройств, можно пользоваться им.

А, ну и какие у меня мысли об этом.
На первом этапе вкорячить ACPICA/linux ACPI, и отладить получившуюся архитектуру. Вторым этапом переводить интерпретатор на ассемблер, для этого нужен человек хорошо разбирающийся в ASL/AML. Необходимость второго этапа будет видна после реализации первого.

Автор:  Serge [ Пн сен 05, 2011 9:59 am ]
Заголовок сообщения:  Re: APIC

Ghost
Привет ! Рад, что ты вернулся. Твой патч замечательно работает. Буду постепенно переносить его в транк. Не спеша, без революций.

Автор:  Serge [ Пт сен 23, 2011 6:02 pm ]
Заголовок сообщения:  Re: APIC

В ревизии #2231 залил поддержку APIC в основное ядро. Чтобы включить APIC надо:
1)Скомпилировать и записать в образ ядро #2231+ или скачать свежую ночную сборку.
2)Скачать и записать в /rd/1/drivers нумератор устройств.
4)Освободить в образе несколько килобайт для лога ACPI. (У меня 12 Кб)
5)Загрузить систему и запустить /rd/1/drivers/acpi
6)Убедиться, что папке /rd/1/drivers присутсвует файл devices.dat
7)Сделать рестарт ядра
9)Проверить работу ядра и драйверов
10)Удалить нумератор устройств и сохранить образ. Теперь APIC будет включаться при каждой загрузке ядра.

Детали реализации.

Ядро в процессе инициализации, ещё до переключения в режим страничной адресации, читает таблицы ACPI и определяет базовые адреса IOAPIC и Local APIC. На втором этапе функция APIC_init проверяет базовые адреса и загружает файл devices.dat. Если файл загружен успешно, ядро настраивает IOAPIC и Local APIC, переключает обработку прерываний в режим APIC и патчит номера линий IRQ в конфигурационном пространстве PCI значениями из devices.dat.

Автор:  SoUrcerer [ Пт сен 23, 2011 8:18 pm ]
Заголовок сообщения:  Re: APIC

Великое событие. Поздравляю, Serge!
Протестирую завтра утром, сегодня уже сил нет.

Оффтопик: Замечательный сегодня день. Я вот что думаю: следующей версии Колибри может сразу номер 0.9.0.0 дадим? А там и 0.10.0.0, глядишь...

Автор:  Serge [ Пт сен 23, 2011 8:55 pm ]
Заголовок сообщения:  Re: APIC

Основная заслуга принадлежит Ghost-y. Весь код для APIC написал он.

Автор:  Mario [ Пт сен 23, 2011 9:20 pm ]
Заголовок сообщения:  Re: APIC

SoUrcerer писал(а):
следующей версии Колибри может сразу номер 0.9.0.0 дадим? А там и 0.10.0.0, глядишь...[/offtopic]

Версии Колибри нумеруется в десятичной системе для каждого разряда. По крайней мере так задумывалось изначально. Следовательно за версией 0.9.9.9 идет 1.0.0.0, а никак не 0.10.0.0

Автор:  Mario [ Пт сен 23, 2011 9:23 pm ]
Заголовок сообщения:  Re: APIC

Serge
У меня два вопроса:
1) Требуется полномасштабное тестирование?
2) На данном этапе есть какое-либо практическое применение или это все-же один из промежуточных этапов внедрения?

Автор:  Serge [ Пт сен 23, 2011 10:02 pm ]
Заголовок сообщения:  Re: APIC

Mario
1)Тестирование всегда нужно. Интересно сравнить логи нумератора (drivers/acpi.log) на разных компьютерах.
2)Что понимается под практическим применением ? Это контроллер прерываний. Без него операционная система не работает. Если сравнивать PROFIT с работой через 8259A то не знаю.
Может уменьшится время доставки прерывания от устройства к процессору.
art_zh сможет использовать MSI в своих разработках.
Наконец это маленький шажок к SMP.

Страница 8 из 12 Часовой пояс: UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/