OSDev

для всех
Текущее время: 29 апр 2024, 11:24

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Таймер APIC в Bochs
СообщениеДобавлено: 12 май 2012, 14:13 

Зарегистрирован: 26 мар 2012, 17:32
Сообщения: 209
trunk из svn'а, собран с
Код:
CFLAGS="-O2 -msse4.2 -fomit-frame-pointer" CXXFLAGS="-O2 -msse4.2 -fomit-frame-pointer" ./configure \
--prefix=~/bochs-bin \
--mandir=\$${prefix}/share/man \
--with-x11 \
--without-rfb \
--with-term \
--without-sdl \
--without-wx \
--disable-docbook \
--enable-cdrom \
--enable-pci \
--disable-usb \
--disable-usb-ohci \
--enable-a20-pin \
--enable-cpu-level=6 \
--enable-x86-64 \
--enable-long-phy-address \
--enable-smp \
--enable-fpu \
--enable-monitor-mwait \
--enable-avx \
--disable-gdb-stub \
--enable-disasm \
--enable-idle-hack \
--enable-all-optimizations \
--enable-repeat-speedups \
--enable-fast-function-calls \
--enable-handlers-chaining \
--enable-plugins \
--disable-ne2000 \
--disable-pnic \
--disable-e1000 \
--disable-sb16 \
--disable-es1370 \
--enable-vmx=2 \
--enable-svm \
--enable-debugger


Конфиг вот:
Код:
# configuration file generated by Bochs
plugin_ctrl: serial=1
config_interface: textconfig
display_library: x
memory: host=1024, guest=3072
romimage: file="~/bochs-bin/share/bochs/BIOS-bochs-latest"
vgaromimage: file="~/bochs-bin/share/bochs/VGABIOS-lgpl-latest"
boot: disk
floppy_bootsig_check: disabled=0
# no floppya
# no floppyb
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, mode=flat, translation=lba, path="/tmp/boot.img", cylinders=5778, heads=11, spt=63, biosdetect=auto, model="Generic HDD" # тут chs параметры от моего 2Гб образа для разработки, не обращайте внимания
ata1: enabled=0
ata2: enabled=0
ata3: enabled=0
pci: enabled=1, chipset=i440fx
vga: extension=vbe, update_freq=5
cpu: count=1:1:1, ips=50000000, quantum=5, model=phenom_8650_toliman, reset_on_triple_fault=1, cpuid_limit_winnt=0, ignore_bad_msrs=1, mwait_is_nop=0
print_timestamps: enabled=0
debugger_log: -
magic_break: enabled=0
port_e9_hack: enabled=0
private_colormap: enabled=0
clock: sync=none, time0=local
# no cmosimage
# no loader
log: bochsout.txt
logprefix: %t%e%d
panic: action=ask
error: action=report
info: action=report
debug: action=ignore
keyboard_type: mf
keyboard_serial_delay: 250
keyboard_paste_delay: 100000
keyboard_mapping: enabled=0, map=
user_shortcut: keys=none
mouse: enabled=0, type=none, toggle=ctrl+mbutton
com1: enabled=1, mode=file, dev="/tmp/ttyS0_bochs"
com2: enabled=0
com3: enabled=0
com4: enabled=0


Upd: понял что r11160 тут ни при чём.

P.S> на обоих osdev'ах жутко не хватает тега spoiler, хотя длинные копипасты логов и тому подобного всё же ужасно портят читабельность.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таймер APIC в Bochs
СообщениеДобавлено: 12 май 2012, 14:23 

Зарегистрирован: 12 май 2012, 14:02
Сообщения: 18
Nable писал(а):
На тему PIT, somehow related


на 2.5.1 выглядит так же, так что я думаю все-таки багфикс из 2.5

ну да : когда отменил багфикс из ioapic.cc пример заработал.

кстати - фикс похоже тоже работает.

оригинал выдает 198/200/400, исправленный 198/400/400.
что правильно ?


Последний раз редактировалось stlw 12 май 2012, 14:28, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таймер APIC в Bochs
СообщениеДобавлено: 12 май 2012, 14:26 

Зарегистрирован: 22 май 2007, 15:29
Сообщения: 283
stlw писал(а):
grindars писал(а):
Нет прерываний от PIT-а. Можно конфиг и версию bochs?


Дай угадаю:

bugfix in Bochs 2.5:
[3025030] PIT mistakenly connected to IRQ0 IOAPIC instead of IRQ2

У вас похоже диск имидж под старую версию Bochs заточен.


Похоже, это и есть причина - у меня bochs 2.4.6 и там используется вход 0 I/O APIC. Но я беру маппинг из таблицы MADT ACPI, и на реальных машинах (и других эмуляторах), где есть interrupt source override с 0 на 2, все работает. Вероятно, в bochs-овской таблице просто нет записи.

Nable, у вас BIOS соответствует Bochs? На скриншоте видно, что используется нулевой вход, но bochs-то новый.

Nable писал(а):
P.S> на обоих osdev'ах жутко не хватает тега spoiler, хотя длинные копипасты логов и тому подобного всё же ужасно портят читабельность.


В prosilver есть полосы прокрутки у кода, так что выглядит не так ужасно. Вообще, такие портянки лучше класть аттачами.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таймер APIC в Bochs
СообщениеДобавлено: 12 май 2012, 14:29 

Зарегистрирован: 22 май 2007, 15:29
Сообщения: 283
stlw писал(а):
кстати - фикс похоже тоже работает.

оригинал выдает 198/200/400, исправленный 198/400/400.
что правильно ?


Правильно 198/400/400, так что фикс работает. Осталось разобраться с MADT.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таймер APIC в Bochs
СообщениеДобавлено: 12 май 2012, 14:32 

Зарегистрирован: 12 май 2012, 14:02
Сообщения: 18
grindars писал(а):
stlw писал(а):
кстати - фикс похоже тоже работает.

оригинал выдает 198/200/400, исправленный 198/400/400.
что правильно ?


Правильно 198/400/400, так что фикс работает. Осталось разобраться с MADT.


А что там должно быть ? Я в ACPI не силен ...

Станислав

P.S. Кстати, Bochs авторы это тут.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таймер APIC в Bochs
СообщениеДобавлено: 12 май 2012, 14:38 

Зарегистрирован: 22 май 2007, 15:29
Сообщения: 283
5.2.12.4 Platforms with APIC and Dual 8259 Support писал(а):
Systems that support both APIC and dual 8259 interrupt models must map global system interrupts 0-15 to
the 8259 IRQs 0-15, except where Interrupt Source Overrides are provided (see section 5.2.12.5, “Interrupt
Source Override Structure” below). This means that I/O APIC interrupt inputs 0-15 must be mapped to
global system interrupts 0-15 and have identical sources as the 8259 IRQs 0-15 unless overrides are used.
This allows a platform to support OSPM implementations that use the APIC model as well as OSPM
implementations that use the 8259 model (OSPM will only use one model; it will not mix models).


В Bochs 2.5, как и на большинстве других машин, PIT подключен к 0 входу 8259 (он же ISA IRQ 0), но не к 0 входу входу I/O APIC, а к 2 входу. Согласно ACPI, в этом случае в таблице MADT, описывающей имеющиеся в системе APIC-и, должна быть запись Interrupt Source Override, которая укажет, что прерывание ISA 0 подключено ко входу 2. На реальной машине эта запись выглядит так:
Код:

[0A4h 0164  1]                Subtable Type : 02 <Interrupt Source Override>
[0A5h 0165  1]                       Length : 0A
[0A6h 0166  1]                          Bus : 00
[0A7h 0167  1]                       Source : 00
[0A8h 0168  4]                    Interrupt : 00000002
[0ACh 0172  2]        Flags (decoded below) : 0000
                                   Polarity : 0
                               Trigger Mode : 0


Так как в таблице, отдаваемой мне Bochs, такой записи нет, я ожидаю прерывание на входе 0, и получаю тишину.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таймер APIC в Bochs
СообщениеДобавлено: 13 май 2012, 14:09 
Аватара пользователя

Зарегистрирован: 06 мар 2012, 20:05
Сообщения: 130
Откуда: Санкт-Петербург
grindars писал(а):
Вообще, такие портянки лучше класть аттачами.
Оффтоп: http://pastebin.com/ ;)

_________________
We are back with a hard even better than before [D-Block & S-Te-Fan – Evolutionz {Ran-D remix}]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таймер APIC в Bochs
СообщениеДобавлено: 14 май 2012, 09:15 

Зарегистрирован: 12 май 2012, 14:02
Сообщения: 18
grindars писал(а):
Так как в таблице, отдаваемой мне Bochs, такой записи нет, я ожидаю прерывание на входе 0, и получаю тишину.


Fixed in latest Bochs SVN revision.

Stanislav


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Таймер APIC в Bochs
СообщениеДобавлено: 14 май 2012, 10:44 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
Пользуясь случаем хочу выразить свою признательность и благодарность разработчикам Bochs за отменный продукт и хорошую поддержку. Bochs, безусловно, вне конкуренции! :)

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB