Board.KolibriOS.org

Official KolibriOS board
It is currently Mon Aug 19, 2019 4:43 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 167 posts ]  Go to page Previous 16 7 8 9 1012 Next
Author Message
 Post subject: Re: APIC
PostPosted: Tue Jul 26, 2011 11:24 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Да. Здесь можно не кодить. А вот вменяемая система именования всех устройств очень нужна.


Top
   
 Post subject: Re: APIC
PostPosted: Sat Aug 20, 2011 10:21 am 
Offline

Joined: Sun Nov 04, 2007 2:46 am
Posts: 390
Я немного не понял, APIC овский код сейчас стабилен? Тот, что из kolibri-acpi я имею ввиду.


Top
   
 Post subject: Re: APIC
PostPosted: Sat Aug 20, 2011 10:24 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Вполне. Ждёт частичной заливки на транк.


Top
   
 Post subject: Re: APIC
PostPosted: Thu Aug 25, 2011 11:53 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Кто-нибудь знает, нужен этот pic_delay, или его можно смело удалить ? Я думаю что на всех Pentium+ чипсетах он не нужен
Code:
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


Top
   
 Post subject: Re: APIC
PostPosted: Thu Aug 25, 2011 12:39 pm 
Offline
Kernel Developer
User avatar

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


Top
   
 Post subject: Re: APIC
PostPosted: Thu Aug 25, 2011 1:05 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Почищу я это безобразие в следующем коммите.
Плохо что IA32 ISA нет аналога nanosleep(). Везде приходится извращаться, гонять пустые циклы или писать в отсутствующий порт.


Top
   
 Post subject: Re: APIC
PostPosted: Thu Aug 25, 2011 10:13 pm 
Offline

Joined: Wed Dec 26, 2007 5:09 am
Posts: 214
Ну а PIC так вообще является частью чипсета давным-давно, это не какой-то внешний контроллер непонятного производителя, который может быть и тормозным... По идее, если при работе с ним нужны были бы задержки, это оговаривалось бы в документации на чипсет, но я такого не припомню.


Top
   
 Post subject: Re: APIC
PostPosted: Mon Sep 05, 2011 9:29 am 
Offline
Kernel Developer
User avatar

Joined: Mon Mar 20, 2006 10:44 am
Posts: 557
Hello guys! ) ну и CleverMouse

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

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

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

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


Top
   
 Post subject: Re: APIC
PostPosted: Mon Sep 05, 2011 9:59 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Ghost
Привет ! Рад, что ты вернулся. Твой патч замечательно работает. Буду постепенно переносить его в транк. Не спеша, без революций.


Top
   
 Post subject: Re: APIC
PostPosted: Fri Sep 23, 2011 6:02 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
В ревизии #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.


Last edited by Serge on Fri Sep 23, 2011 8:30 pm, edited 2 times in total.

Top
   
 Post subject: Re: APIC
PostPosted: Fri Sep 23, 2011 8:18 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Великое событие. Поздравляю, Serge!
Протестирую завтра утром, сегодня уже сил нет.

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


Top
   
 Post subject: Re: APIC
PostPosted: Fri Sep 23, 2011 8:55 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Основная заслуга принадлежит Ghost-y. Весь код для APIC написал он.


Top
   
 Post subject: Re: APIC
PostPosted: Fri Sep 23, 2011 9:20 pm 
SoUrcerer wrote:
следующей версии Колибри может сразу номер 0.9.0.0 дадим? А там и 0.10.0.0, глядишь...[/offtopic]

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


Top
   
 Post subject: Re: APIC
PostPosted: Fri Sep 23, 2011 9:23 pm 
Serge
У меня два вопроса:
1) Требуется полномасштабное тестирование?
2) На данном этапе есть какое-либо практическое применение или это все-же один из промежуточных этапов внедрения?


Top
   
 Post subject: Re: APIC
PostPosted: Fri Sep 23, 2011 10:02 pm 
Offline
Kernel Developer

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 167 posts ]  Go to page Previous 16 7 8 9 1012 Next

All times are UTC+03:00


Who is online

Users browsing this forum: Google [Bot] and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited