CleverMouse
Спасибо, я проверю код apic немного позже. За два года уже всё забыл.
APIC
Serge,
запустил /rd/1/drivers/acpi
убедился, evices.dat есть
сохранил образ на флешку
пошла перезагрузка
Создание процесса ядра
Инициализация IRQ
Инициализация PIC
Инициализация системной v86 машины
Инициализация системного таймера
Попытка инициализации APIC
Включить прерывания 2, 13
Поиск floppy дисководов
Запрещение прерывания в контроллере IDE
Поиск жестких дисков и ATAPI приводов
Запрещение прерывания в контроллере IDE
Поиск жестких дисков и ATAPI приводов
Получение памяти для кэша
Поиск разделов на дисковых устройствах
Инициализация системного каталога /sys
Инициализация рамдиска
Разрешение прерывания в контроллере IDE
Установка обработчиков прерываний IDE
Разрешение прерывания в контроллере IDE
Установка обработчиков прерываний IDE
APIC не найден
Количество оперативной памяти 3500
Установка настроек окон по умолчанию
Установка фона
Резервирование IRQ и портов
Частота процессора 3200
Установка мыши
черный экран и курсор мышки посредине, система ни на что не реагирует.
запустил /rd/1/drivers/acpi
убедился, evices.dat есть
сохранил образ на флешку
пошла перезагрузка
Создание процесса ядра
Инициализация IRQ
Инициализация PIC
Инициализация системной v86 машины
Инициализация системного таймера
Попытка инициализации APIC
Включить прерывания 2, 13
Поиск floppy дисководов
Запрещение прерывания в контроллере IDE
Поиск жестких дисков и ATAPI приводов
Запрещение прерывания в контроллере IDE
Поиск жестких дисков и ATAPI приводов
Получение памяти для кэша
Поиск разделов на дисковых устройствах
Инициализация системного каталога /sys
Инициализация рамдиска
Разрешение прерывания в контроллере IDE
Установка обработчиков прерываний IDE
Разрешение прерывания в контроллере IDE
Установка обработчиков прерываний IDE
APIC не найден
Количество оперативной памяти 3500
Установка настроек окон по умолчанию
Установка фона
Резервирование IRQ и портов
Частота процессора 3200
Установка мыши
черный экран и курсор мышки посредине, система ни на что не реагирует.
- Attachments
-
-
ACPI.LOG (13.35 KiB)Downloaded 463 times
-
I had a great time enabling kolibri on my relatively new laptop.
First I tried kolibri.efi from the latest autobuild. It booted but no devices worked except mouse and keyboard.
Then I prepared DEVICES.DAT file using devman by Serge and put the file to /DRIVERS/ directory. It booted but even mouse and keyboard didn't work.
It turned out that my laptop has two I/O APICs, what kolibri didn't expect. While parsing MADT table kolibri put the base address of the first I/O APIC to a variable, and then overwrote the variable with the base address of the second I/O APIC. Thus the first one was never set up properly.
Another issue was that kolibri didn't expect more than 24 interrupts. My laptop has two I/O APICs: one for 24 interrupts and another for 32, i.e. 56 total. It was not enough to just replace 24 with 56 in the corresponding macro because the active interrupt was indicated using a bitmask set/reset via bts/btr instructions, and 56 bits don't fit a single dword. I replaced bts/btr with functions.
It is interesting that our int 0x40 has the same vector as IRQ0x20 at the moment. In theory, I/O APIC can be programmed to map IRQs 0-0x1f to vectors IRQ+0x20, and IRQs 0x20+ to vectors IRQ+0x21. I didn't implement this, good luck.
I committed support for more than one I/O APIC and more than 24 interrupts in r7733. For PIC mode nothing should change.
PCIDEV program has been updated accordingly.
Unfortunately, neither ethernet nor sound cards work for me. However sata disks do work in native mode using ahci driver.
First I tried kolibri.efi from the latest autobuild. It booted but no devices worked except mouse and keyboard.
Then I prepared DEVICES.DAT file using devman by Serge and put the file to /DRIVERS/ directory. It booted but even mouse and keyboard didn't work.
It turned out that my laptop has two I/O APICs, what kolibri didn't expect. While parsing MADT table kolibri put the base address of the first I/O APIC to a variable, and then overwrote the variable with the base address of the second I/O APIC. Thus the first one was never set up properly.
Another issue was that kolibri didn't expect more than 24 interrupts. My laptop has two I/O APICs: one for 24 interrupts and another for 32, i.e. 56 total. It was not enough to just replace 24 with 56 in the corresponding macro because the active interrupt was indicated using a bitmask set/reset via bts/btr instructions, and 56 bits don't fit a single dword. I replaced bts/btr with functions.
It is interesting that our int 0x40 has the same vector as IRQ0x20 at the moment. In theory, I/O APIC can be programmed to map IRQs 0-0x1f to vectors IRQ+0x20, and IRQs 0x20+ to vectors IRQ+0x21. I didn't implement this, good luck.
I committed support for more than one I/O APIC and more than 24 interrupts in r7733. For PIC mode nothing should change.
PCIDEV program has been updated accordingly.
Unfortunately, neither ethernet nor sound cards work for me. However sata disks do work in native mode using ahci driver.
Reboot still doesn't work in Qemu. Is it hard to debug it and fix? Probably if we could fix QEMU then reboot will work on some real devices.
- Attachments
-
-
QEMU.zip (1.26 MiB)Downloaded 336 times
-
Из хаоса в космос
What about a more recent version (4.2.0 at the moment)?QEMU PC emulator version 0.10.6, Copyright (c) 2003-2008 Fabrice Bellard
In the new QEMU reboot works well.dunkaist wrote:What about a more recent version (4.2.0 at the moment)?QEMU PC emulator version 0.10.6, Copyright (c) 2003-2008 Fabrice Bellard
Из хаоса в космос
Отличная работа!dunkaist wrote:I committed support for more than one I/O APIC and more than 24 interrupts
Hello Dunkaist!
Notebook Eee PC 901.
When I choose shutdown, os stop working, but notebook keep working until I press and hold power button.
When I choose core restart, system restart, but don,t start again.
Reset work correctly.
Notebook Eee PC 901.
When I choose shutdown, os stop working, but notebook keep working until I press and hold power button.
When I choose core restart, system restart, but don,t start again.
Reset work correctly.
Uri,
Are you sure you report to 'APIC' topic an issue when APIC is enabled?
If yes, does shutdown work when APIC is disabled?
Are you sure you report to 'APIC' topic an issue when APIC is enabled?
If yes, does shutdown work when APIC is disabled?
А, можно добавить APIC в сборку KolibriOS для ручной загрузки в Drivers т.к. у меня без него не видны диски в системе.
Ранее Serge писал в этой теме viewtopic.php?f=1&t=1195&hilit=devices. ... 105#p37822
И в конце концов я добавил данный драйвер в DRVINST viewtopic.php?f=48&t=3419
Который что может сам всё сделает, а дальше покажет упрощенный вариант руководства. Даже перевёл на английский.
http://websvn.kolibrios.org/filedetails ... readme.txt
Всё для людей
Я обновил запускалку драйвера "acpi" на SVN. Теперь он запускает "acpi.dll" из своей же папки. Больше не нужно очищать место на /rd/1 и копировать туда файлы. Хотя можете, кто ж запрещает... Также лог теперь пришется в /tmp0/1/acpi.log чтобы гарантировано хватило ему места (тут я правил драйвер через HEX редактор).Serge wrote:В ревизии #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 будет включаться при каждой загрузке ядра.
И в конце концов я добавил данный драйвер в DRVINST viewtopic.php?f=48&t=3419
Который что может сам всё сделает, а дальше покажет упрощенный вариант руководства. Даже перевёл на английский.
http://websvn.kolibrios.org/filedetails ... readme.txt
Всё для людей
Из хаоса в космос
How long time run devman takes?
to infinity and beyond
A second or two.
Who is online
Users browsing this forum: No registered users and 0 guests