Board.KolibriOS.org

Official KolibriOS board
It is currently Sun Jul 21, 2019 10:38 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 167 posts ]  Go to page Previous 15 6 7 8 912 Next
Author Message
 Post subject: Re: APIC
PostPosted: Sun Jul 24, 2011 1:14 am 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1331
Serge
нет универсальной альтернативы - только частные решения для конкретных случаев.
В твоем (и любом другом) конкретном случае выбор ясен:

1) надо либо раскуривать мануалы твоего чипсета и кодить напрямую,
2) либо портировать мегакод из Линукса.

Причем во втором случае одним только внешним энумератором дело не ограничится: рерутинг IRQ все равно придется каждый раз при старте производить через один известный своей универсальностью проход. И не уверен что ACPI сможет решить все проблемы присно и во веки веков:
Quote:
В финале лаунчер запустит pcidev с ключом BOOT.
pcidev сканирует шину и сравнивает результат с devices.dat.
А как pcidev сможет разглядеть "невидимые" устройства и функции, как перекинет нужные линии куда надо, если PM-регистры и коммутаторы вдруг окажутся "заморожены" по дефолту, а как их включить ACPI не знает?
Минимальный драйвер чипсета все равно будет нужен, хотя бы для инициализации (про хотплаг и SMI пока вообще забудем). Но тогда возвращаемся к той же самой альтернативе (см. выше), но теперь уже и вариант 2) не будет "универсальным решением для всех". И я уже говорил что мы тогда получим -- еще один линукс, только с ассемблерным ядром.
Quote:
Я предлагаю работающее универсальное решение для всех, чтобы дистрибутив мог стартовать на любом компе.

Забавно, я тоже хочу чтобы дистрибутив мог стартовать на любом компе - на базе Linuх Live или хотя бы и на нынешнем "универсальном" PC-ядре Колибри; и чтобы мог самостоятельно настраивать параметры компиляции неуниверсального ядра для конкретной платформы.
А если платформа не поддерживается - чтобы говорил что сорри, драйверов для вашего чипсета пока не имеется. Пользуйтесь пока старым ядром и спонсируйте дальнейшую разработку проекта (вариант: инвестируйте в себя, обзаведитесь правильным железом :wink: ).

Насчет твоей сетевухи - я совершенно не представляю себе как устроены интеловские мосты, но на АМД-шных чипсетах GЕС МАС (bdf 0:14h:6) по дефолту скрыт (невидимая функция, однако!), интегрированный сетевой чип формально приписан к какой-нибудь 4-й шине, но прерывание с него обрабатывается не как внешнее PCI-IRQ, а как внутреннее прерывание южного моста. Например, на Гудзоне под нее выделена отдельная IOAPIC-линия #15h, и всем этим делом управляют 5 специальных PM-регистров.
Может и в интелах есть подобные заморочки?


Top
   
 Post subject: Re: APIC
PostPosted: Sun Jul 24, 2011 8:21 am 
Offline
Kernel Developer

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

PCIDEV должен только определить наличие нового устройства. Если у нас появилось устройство с пином==1 и irq < 16, значит оно новое. Конечно шину может сканировать и само ядро, но так сэкономится время на загрузке.

Заморочки с интегрированными девайсами на интелах конечно есть, но у меня внешняя сетевуха. Я смотрел много разного кода в разный системах и напрямую с чипсетом работал только Minix3. И то, там программировался роутер для PIC. А вот прямого программирования линков для PCI я нигде не видел. Всё только через ACPI.

LiveCD Linux может подложить свинью. Он умеет раскидывать расшареные прерывания для снижения задержек. Опять же через ACPI. Делает это тихо и незаметно, никому не сообщая. Нашему ядру простым патчем pci_cfg:0x3C в этом случае не обойтись.


Top
   
 Post subject: Re: APIC
PostPosted: Sun Jul 24, 2011 12:07 pm 
Offline
Public Relations
User avatar

Joined: Mon Jun 07, 2010 12:01 pm
Posts: 1879
Serge: хочу только напомнить, что не на всех компьютерах есть APIC и/или ACPI. Но таких зависаний, как ты описал, воспроизвести не удалось пока.


Top
   
 Post subject: Re: APIC
PostPosted: Sun Jul 24, 2011 12:51 pm 
Offline
Kernel Developer

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

Нет APIC - нет проблем. И ACPI тогда тоже не нужно. Будут работать как сейчас. USB пока не удалось потестить. Хочу сделать расшареные обработчики прерываний. Если проблема вылезет снова, значит это действительно очень хитрый баг в коде. Не знаю даже что хуже в этой ситуации, кривое железо или кривой код.


Top
   
 Post subject: Re: APIC
PostPosted: Mon Jul 25, 2011 2:30 am 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1331
Serge wrote:
Я смотрел много разного кода в разный системах и напрямую с чипсетом работал только Minix3. И то, там программировался роутер для PIC. А вот прямого программирования линков для PCI я нигде не видел. Всё только через ACPI.

Этот Великий и Ужасный собирает информацию и разводит все эти линки через регистры контроллеров PCI, SMB, и PM. Так почему бы не читать/менять эти регистры напрямую, может даже меньше заморочек окажется?

Если ради смеха выкинуть из ядра АПМ-код (он все равно глючит на половине биосов) и перевести выключение/перезагрузку на прямую запись в PM-регистры южного моста, то потребуется всего 6 строчек (10 байт) прямого кода вместо килобайта АПМ-извращений! Аналогичная ситуация будет и с ACPI, только здесь можно ожидать эффект не в 100, а минимум в 1000 раз по размеру кода, и в миллион - по быстоте.

И ради чего его вообще тащить в систему, этого монстра - только чтобы раскидать прерывания ?
Раскидаем - и на этом успокоимся...
А дальше?

Я не представляю как можно реализовать полноценный хоть какой-нибудь косолапый обработчик ошибок и хотя бы минимально-приемлемый тренинг линий PCIe и SATA (и еще хотплаг) без прямой работы с мостами. А есть еще GPIO, и они тоже кому-то могут быть нужны. И еще бывают совсем нестандартные, сыроватые устройства, материнки с кривыми биосами, которые только и ждут когда Колибри наконец научится дружить с железом и даст им новую жизнь.

Ядерные модули нужны, для каждого популярного чипсета (вариант: только для своего ). Не суть важно, будут ли это DLL или монолитные inc-блоки (я за второй вариант), и не обязательно впихивать туда сразу всю функциональность мостов - пока достаточно простейших элементов управления PM, APIC, SMB, SIO, HPET, и маппинга MMIO-cfg. Этого вполне хватит чтобы развязать (почти) все сегодняшние мертвые узлы, и подготовить задел для будущего развития.

Serge wrote:
LiveCD Linux может подложить свинью.
Ладно, фиг с ним, с линуксом. Инсталлятор с настройкой ядра на подходящую платформу вполне можно построить и на базе ISO-Колибри.


Top
   
 Post subject: Re: APIC
PostPosted: Mon Jul 25, 2011 7:25 am 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
art_zh
Этот Великий и Ужасный хранит информацию записанную разработчиками. Если на плате распаяно ещё что-то кроме стандартного южного моста, её без таблиц ACPI и не сконфигурируешь. А таких плат сейчас большинство.
И не забываем про ноуты, которых теперь больше половины продаётся. Там "оригинальные" дизайны особо часто встречаются. То же управление подсветкой у каждой модели может быть своё. А вещь необходимая. Я понимаю, ты под свою конкретную плату можешь ядро отполировать так, что сверкать будет. Но мы то не встроенную систему разрабатываем.


Top
   
 Post subject: Re: APIC
PostPosted: Mon Jul 25, 2011 12:07 pm 
Offline
Kernel Developer
User avatar

Joined: Fri Aug 14, 2009 1:46 am
Posts: 1331
Serge
Всё, теперь я наконец тебя понял.
Тебе просто в лом открыть коробку и посмотреть как эти таинственные Разработчики раскинули провода типовой схемы, которая прилагается к каждому чипсету.

Мне понятен суеверный страх "чистых" программистов перед электроникой, но уж ты-то не можешь не знать, что все эти фирменные материнки в пределах одного чипсета отличаются друг от друга только переназначением отдельных GPIO и наличием каких-нибудь дополнительных контроллеров (на которые, в свою очередь, имеются свои типовые схемы подключения).

Ясно, что если система построена на "закрытом" чипсете - то не зная распиновки и спецификации регистровой модели в ней никогда не разберешься. Но ведь это вопрос NDA, а вовсе не ACPI, так!

Ладно, если ты решил строить систему "для всех" - тогда без ACPI конечно не обойтись. Не буду мешать.
Я должен был высказать все свои аргументы перед точкой бифуркации, и я их изложил.


Top
   
 Post subject: Re: APIC
PostPosted: Mon Jul 25, 2011 12:55 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
art_zh
"в пределах одного чипсета" в том то и дело. Будь он один единственный на свете Чипсет на ближайшие ...дцать лет. А тут каждый год считай по новому сокету выпускают.

Это не я решил "строить систему для всех". Так всегда было.
diamond wrote:
Колибри унаследована от системы, которая изначально задумывалась как десктопная, и продолжает развиваться, как десктопная.


Top
   
 Post subject: Re: APIC
PostPosted: Mon Jul 25, 2011 1:04 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1619
Serge, если это а) будет работать, б) будет работать точно как текущее ядро - в режиме PIC - если не удастся загрузить библиотеку, в) поможет дальнейшему развитию, то я согласна.

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


Top
   
 Post subject: Re: APIC
PostPosted: Tue Jul 26, 2011 6:41 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
CleverMouse wrote:
Serge, если это а) будет работать, б) будет работать точно как текущее ядро - в режиме PIC - если не удастся загрузить библиотеку, в) поможет дальнейшему развитию, то я согласна.

Поддерживаю.


Top
   
 Post subject: Re: APIC
PostPosted: Tue Jul 26, 2011 7:19 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
в) Мне поможет точно на ближайшие пару месяцев тестиривать звук и видео одновременно. Плюс я сделаю каскадирование обработчиков прерываний. Так что польза для ядра и системы в целом будет несомненно. Поиск в devices.dat может заменить сканирование шины каждым драйвером. Стабильно работающая ACPICA возможно подвигнет кого-нибудь использовать её возможности для работы с термодатчиками, вентиляторами, батареями, подсветкой, и чем там ещё можно управлять.
а,б)
CleverMouse wrote:
если не удастся загрузить библиотеку
То есть нумератор устройств на базе ACPICA ? Весь остальной код будет в ядре. Разумеется если не удастся найти devices.dat и получить данные от acpi, ядро будет работать в режиме PIC. Дополнительно я планирую добавить опцию в загрузочный экран для выбора режима PIC. Удаление devices.dat и acpi.dll даст тот же результат. В худшем случае devices.dat можно сделать самому.


Top
   
 Post subject: Re: APIC
PostPosted: Tue Jul 26, 2011 7:27 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1619
Тогда флаг в руки и вперёд.

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


Top
   
 Post subject: Re: APIC
PostPosted: Tue Jul 26, 2011 7:41 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Serge wrote:
Мне поможет точно на ближайшие пару месяцев тестиривать звук и видео одновременно.

Аналогично + USB.
Serge wrote:
Плюс я сделаю каскадирование обработчиков прерываний. Так что польза для ядра и системы в целом будет несомненно.

Расшаренные прерывания это очень большой плюс. :)
Serge wrote:
Поиск в devices.dat может заменить сканирование шины каждым драйвером.

Собственно, когда ты только сделал драйверную подсистему количество самих драйверов было не большим и можно было обойтись. Но сейчас уже рядовых пользователей действительно не стоит заставлять разбираться в установке драйверов, да и использование отдельных программ-загрузчиков драйверов выглядит странно, поэтому и появилась тема Driver service.
Serge wrote:
Стабильно работающая ACPICA возможно подвигнет кого-нибудь использовать её возможности для работы с термодатчиками, вентиляторами, батареями, подсветкой, и чем там ещё можно управлять.

А что решил делать с именованием?


Top
   
 Post subject: Re: APIC
PostPosted: Tue Jul 26, 2011 8:19 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
>>А что решил делать с именованием?

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


Top
   
 Post subject: Re: APIC
PostPosted: Tue Jul 26, 2011 8:25 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 988
Товарищи теоретики, вы приглашаетесь к обсуждению и собственно разработке системы именования устройств.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 167 posts ]  Go to page Previous 15 6 7 8 912 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