Board.KolibriOS.org

Official KolibriOS board
It is currently Tue Dec 10, 2019 3:41 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 167 posts ]  Go to page Previous 14 5 6 7 812 Next
Author Message
 Post subject: Re: APIC
PostPosted: Wed Jun 15, 2011 1:47 pm 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1358
Mario wrote:
А случай когда вставляется новая плата в слот системной шины - я понимаю что сейчас не самый актуальный пример, но оперативность теряется.
Если у тебя уже работает мышка и клавиатура - всегда можно подправить .ini-файл и в tinypad.

Это все равно лучше чем
Serge wrote:
В худшем случае создаём файл ручками. Заодно используем этот файл как диспетчер устройств для бедных, чтобы не сканировать каждый раз шину при поиске устройств.


Top
   
 Post subject: Re: APIC
PostPosted: Wed Jun 15, 2011 2:25 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Mario
CleverMouse

Это могут быть ошибки биос. Сам столкнулся с такой когда занимался звуком. Контроллер AC97 на ICH0. БИОС выполнила настройку роутера но не записала номер линии в 0x3C. В результате там был дефолтный 0.
В теории БИОС должна назначать прерывания всем устройствам, но не факт, что она всегда это делает. Тем более никто не застрахован от ошибок.
Прерывания PCI расшариваются, но
-ядро не поддерживает цепочки обработчиков на одной линии. Кто последний вызвал AttachIntHandler, того и тапки.
- такая цепочка увеличивает латентность обработчика. По этой причине Линукс высчитывает пенальти для расшаренных линий и при необходимости перераспеделяет линии. Современные платформы позволяют это делать, хотя не самым интуитивно понятным образом.
В идеале каждое устройство должно иметь персональную линию irq.


Top
   
 Post subject: Re: APIC
PostPosted: Wed Jun 15, 2011 3:50 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1621
art_zh, Колибри можно загрузить с FAT32-тома, не используя загрузчики других систем.
Mario, существует проблема - насколько я понимаю, не очень распространённая, - с тем, что BIOS может не сконфигурировать устройство. Насколько я представляю себе APIC, он не имеет к этой проблеме никакого отношения - с его помощью можно превратить входные сигналы контроллера в различные прерывания, но чтобы узнать, какой входной сигнал соответствует какому устройству/функции, нужны другие средства, типа Routing Table или ACPI.

_________________
Сделаем мир лучше!


Last edited by CleverMouse on Wed Jun 15, 2011 3:54 pm, edited 1 time in total.

Top
   
 Post subject: Re: APIC
PostPosted: Wed Jun 15, 2011 3:52 pm 
Offline
Just Flooding
User avatar

Joined: Wed May 18, 2005 10:27 am
Posts: 430
art_zh wrote:
У меня более реалистичное предложение: использовать live-версию Линукса как базовый инсталлятор Колибри.
это начало пипецА аскетически-ассемблерного проекта.
Тогда могу еще более просто и более народно предложить. У всех есть винда, она стандарт, она крута, на нее куча прог написана, за два дна пишется инсталлятор-конфигуратор КолибриОС из под винды. Винда "крута", она все знает, все умеет, давайте ей доверимся и пропишем и настроим Колибри с ее помощью.
Это будет работать у всех!
Инсталляция (типа каталог создать и налить его + загрузчик в boot.ini прописать), это еще терпимо, а вот ресурсы (IRQ, DMA...) настраивать для КолибриОС из любых сторонних ОСей - кризис проекта и начало его п.....
art_zh wrote:
Помимо всяких прочих штучек, таких как
- конфигурирование загрузчика,
- установка системы на выбранный раздел диска,
- установка подходящих драйверов,
- условная компиляция ядра в соответствии с платформой,
- и многое другое,
мы сможем
- использовать мощный линуксовский энумератор, и
- не париться с собственной конфигурацией устройств, а просто записать нужную информацию из /sys/bus/pci/devices в файл kolibri.ini.

А не выродится это в аналог виндового реестра, по сути.

Я сторонник работы с устройствами автоматически, динамически, интеллектуально.
И понятное дело это основной вопрос таланта дровосеков и архитектруры и дровного апи.
Пока в драйвере не будет тест-инита, например, то будет постоянная боязнь и прерываний и глюков и конфигураций и железа... причем судя по постам любого, даже мыши!
Жуть.
РебятЫ!!!
Есть дефлотустройства заюзанные донельзя: мишь, клавка, COMы, LPTшники, саундкарты, сетевухи(может не все) - имеют либо команды и квитирующий ответ, либо (или помимо того) команды принудительно инициализирующие личные IRQ этой дровишки. За ними давно жестко все прописано! Это же РС архитектура! Кто на них что может развесить? Корявый биос? Нахер его выбор, нам виднее!
Да немного повозится надо, запретить все кроме тестируемой линии, поднастроить кое что с регистрами и послать команду (тест-блок данных), выждать и проверить есть ли его IRQ + ответ(или адакватная реакция).
art_zh wrote:
А потом при старте Колибри каждый раз тупо грузить конфиг-регистры прямо из этого файла.
при слове тупо, а хватаюсь за пистолет :shock:
:D ничего личного, просто у меня тут начальник, который типа главный в конторе по созданию интеллекта для устройств, т.е. над кодерами "хазяин"...
Его ГЛАВНОЕ козырное предложение всегда одинаково: "... а че тут думать, а давайте тут и тут вот втупую захерячим и все! Че париться?"


Top
   
 Post subject: Re: APIC
PostPosted: Wed Jun 15, 2011 4:00 pm 
Offline
Just Flooding
User avatar

Joined: Wed May 18, 2005 10:27 am
Posts: 430
CleverMouse wrote:
но чтобы узнать, какой входной сигнал соответствует какому устройству/функции, нужны другие средства, типа Routing Table или ACPI.
а можно ВСЕ зепретить и выключить и перебирать в цикле n по одному IRQn, предварительно "спровоцировав" дровину надавить на линию и тогда механизм работает без всяких новомодных ACPI! И если проба пера успешна, занчит с болшьшой долей верояности дровина на этой линии педалить умеет. Да линий может быть несколько, но это и хорошо, мы все их протестируем и линии и дрова их. Получаем массивчик. Остается его развесить, хотя бы то что можно, что более лояльно...


Top
   
 Post subject: Re: APIC
PostPosted: Wed Jun 15, 2011 4:31 pm 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 796
Здравая идея! Опять-таки это обеспечит отсутствие "ненужных" закидонов со стороны BIOS/SMM


Top
   
 Post subject: Re: APIC
PostPosted: Wed Jun 15, 2011 5:01 pm 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1358
Не, ну если речь идет о целомудренности аскетически-ассеблерного проекта, тогда конечно я лучше помолчу.

Мне-то что - я на своей отдельно взятой платформе сам себе хозяин, чего надо разведу без всяких линуксов.
Тем более, что весь POST для AMD Fusion теперь полностью открыт.


Top
   
 Post subject: Re: APIC
PostPosted: Wed Jun 15, 2011 5:08 pm 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 796
Блин, как будто что-то не то сказал, - мы-то ACPI в coreboot используем.


Top
   
 Post subject: Re: APIC
PostPosted: Fri Jul 22, 2011 10:45 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Предложение такое:
Есть работающий бранч c APIC. Есть работающий нумератор устройств на базе ACPICA+pci код из Линукс. Я планирую заменить оригинальную ACPICA на порт из Линукс, он меньше. Нумератор будет генерировать файл /rd/1/drivers/devices.dat примерно такого формата

dd (bus shl 8 )+(dev shl 3)+fn
dd (DeviceID shl 16) + VendorID
dd irq_line
dd ещё что-нибудь
dd -1 ; терминатор

При инициализации ядро грузит файл и по нему патчит PCI_CFG:INT_LN для всех прописанных устройств. Если файл отсутствует запускает нумератор и возвращается к предыдущему пункту. Возможен возврат к инициализации менеджера памяти и кучи ядра, в этом случае следов ACPICA в памяти не останется.
В финале лаунчер запустит pcidev с ключом BOOT.
pcidev сканирует шину и сравнивает результат с devices.dat. Если обнаружено новое устройство, стирает devices.dat и предлагает перезагрузить компьютер (дополнительно проверяет по своей базе наличие драйвера и, в случае успеха, предлагает выполнить необходимые действия по установке драйвера)
???
PROFIT

Упакованная acpi.dll занимает 90кб если убрать из дистриба atikms останется ещё 100 Кб.


Top
   
 Post subject: Re: APIC
PostPosted: Sat Jul 23, 2011 1:56 pm 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1358
Serge

Двухэтажный энумератор и +90Кб системного кода (пусть и в DLL) -- и это только для того, чтобы раскидать прерывания в APIC ?!

А не разумнее ли решать проблему "снизу" -- добавить в ядро прямой код (типа bus/southbridge/apic.inc) ?
Да, этот код будет специфичным для каждой платформы, но это будет всего сотня-другая строчек.
Для многих чипсетов сейчас регистровые модели открыты, а для остальных пока можно работать по дефолту, через PIC.


Top
   
 Post subject: Re: APIC
PostPosted: Sat Jul 23, 2011 2:20 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
art_zh

Приведи пример как мне перекинуть свою сетевуху BUS2:D1:F0 pic IRQ 10 на APIC. С благодарностью приму работающий код для своего интела.

Если хочется сэкономить место, достаточно набить файл ручками. И мудрит с чипсетами не надо.


Top
   
 Post subject: Re: APIC
PostPosted: Sat Jul 23, 2011 5:42 pm 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 796
А что, если сделать утилиту для генерации списка устройств, для каждой платформы?
Запустил - сгенерил, больше не нужна? И предоставлять возможность использования ядром этого списка, без использования енумератора?


Top
   
 Post subject: Re: APIC
PostPosted: Sat Jul 23, 2011 6:35 pm 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1358
Serge,
убийственный аргумент!
Особенно если учесть, что я никогда не работал с интеловскими чипсетами. И не собираюсь.

Для AMD-шных мостов такая фишка уже тестируется.

Я не лезу в чужую работу и никого не заставляю что-то делать против их воли.
Но почему я не могу высказать свое недоумение (равно как и восторг) по конкретному вопросу, который касается всех?


Top
   
 Post subject: Re: APIC
PostPosted: Sat Jul 23, 2011 6:42 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
XVilka
Так я так и хочу и именно это и предлагаю. И утилита уже есть, на основе ACPICA, универсальная для всех платформ. Осталось только сделать вывод списка и загрузку его ядром с последующим патчем pci_cfg.

Я совсем не против специализированного кода, но где этот код и кто его делает ? И будет он работать на каком-нибудь VIA или NForce ? Пока есть только долгие разговоры и никакого движения. Никаих других реальных альтернатив. Вчера посмотрел исходники Minix, @#$%^ и там acpi!!! Когда успели ? Год назад ещё ничего не было.

Для себя лично я могу забить номера прямо в ядро и положить на всё большой болт. Но хочется что бы система развивалась и была дружелюбней к пользователю.


Top
   
 Post subject: Re: APIC
PostPosted: Sat Jul 23, 2011 6:55 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
art_zh
Это замечательно, что тестируется. Но кто будет помогать остальным ? Ты не собираешься, я тоже. Я и понятия не имею каким образом вычислить линию на IOAPIC для моего примера. Патчу Ghost-a два с половиной года. За это время продвижения по теме ноль. Только немного общих размышлений. Я предлагаю работающее универсальное решение для всех, чтобы дистрибутив мог стартовать на любом компе. Если есть такая же универсальная альтернатива ACPI я буду только рад. Но её не видно.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 167 posts ]  Go to page Previous 14 5 6 7 812 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users 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:  
Powered by phpBB® Forum Software © phpBB Limited