OSDev

для всех
Текущее время: 22 ноя 2017, 17:46

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




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

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
Вычитал, что PCI прерывания у APICа после 16го и в настройках нужно включать 15 и 13 бит для них.
Кстати посмотрел в настройках устройств у винды и действительно у сетевушки для PIC было 11 а для APIC 17 и сошлось проверкой опытным путём у себя.
Для AHCI было 15(22) тоже сошлось, для HDA тоже сошлось

Где смотреть какое у APICа зная PICовское


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: APIC
СообщениеДобавлено: 17 июн 2012, 13:42 

Зарегистрирован: 26 мар 2012, 17:32
Сообщения: 208
В mptable и $PIR такое пишут, но это уже deprecated, нынче всё через ACPI, хотя на весьма новых железках внезапно mptable оказывалась рабочей. Почитать можно тут: http://people.freebsd.org/~jhb/papers/b ... node5.html , но зная твой подход, можешь сразу качать pirtool.c и mptable.c из freebsd'шной репы и собирать (оно в т.ч. и под линухом прекрасно собирается с небольшими изменениями, и даже под голое железо), смотреть на выхлоп, если устраивает - разбираться как работают эти парсеры.
Строго говоря, если не верить этим таблицам и пытаться выяснять из оборудования, то оно весьма чипсетозависимо, ибо есть нередко ещё interrupt router, который можно перепрограммировать, меняя соответствие между выходами от карт расширения и входами I/O APIC'а.

Плюс, 2012 на дворе, надо по-возможности переходить на MSI/MSI-X, оно очень клёвое и тупо устройству вектор даёшь, оно его и шлёт.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: APIC
СообщениеДобавлено: 17 июн 2012, 13:49 
Заблокирован

Зарегистрирован: 28 окт 2011, 12:14
Сообщения: 555
Откуда: Новосибирск
Nable писал(а):
В mptable и $PIR такое пишут, но это уже deprecated, нынче всё через ACPI, хотя на весьма новых железках внезапно mptable оказывалась рабочей.
А, вообще, оно весьма чипсетозависимо, ибо есть нередко ещё interrupt router, который можно перепрограммировать, меняя соответствие между выходами от карт расширения и входами I/O APIC'а.
Плюс, 2012 на дворе, надо по-возможности переходить на MSI/MSI-X, оно очень клёвое.


Что даёт MSI, я его включал так для сетевушки, я всмысле, она даёт приемущества только по определению на любоё вектор и побыстрее работает
;push eax
;mov ebx,0FEC00020h
;mov eax,84 ;Message Address
;call pci_w32
;mov ebx,0
;mov eax,88 ;Message Address
;call pci_w32
;mov bx,17
;mov eax,92 ;Message Data
;call pci_w16
;mov eax,82 ;Message Control
;call pci_r8
;mov bl,al
;or bl,0100001b ;включим MSI
;mov eax,82 ;Message Control
;call pci_w8
;pop eax
правда ещё не отладил


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: APIC
СообщениеДобавлено: 23 ноя 2013, 18:35 
Аватара пользователя

Зарегистрирован: 21 ноя 2013, 17:00
Сообщения: 10
Откуда: Russia, Magnitogorsk
Что-то не могу разобраться с APIC :?
Вроде инициализируется, пишу в IOAPIC вектор, но обработки не происходит...
Где-то читал, что для правильной работы APIC нужно чтоб были замаскированы все(?) прерывания на 8259 (PIC) - это действительно так?
Разве нельзя использовать старый PIC(8259) для обработки IRQ0-15 и APIC для обработки прерываний от PCI?
Код:
cpu0 = {
  local_apic = {
    base_addr = 0xfee00000
    apic_id = 0x00000000
    mode = 0x00000002
    spurious_vector = 0x27
    software_enabled = true
    focus_disable = false
    task_priority = 0x00000000
    ldr = 0x00000000
    dest_format = 0x0000000f
    isr = {
      0x20 = 1
    }
  }
}

если я правильно понимаю, то isr это запрос прерывания, вектор 0x20, т.е. IRQ0... или нет?
если это так, то почему не происходит вызова вектора 0x80 для IRQ0 (согласно redirect table) ?
Код:
ioapic = {
  ioregsel = 0x00000023
  intin = 0x00000004
  irr = 0x00004066
  ioredtbl = {
    0x00 = {
      lo = 0x00000080
      hi = 0x00000000
    }
    0x09 = {
      lo = 0x0000a029
      hi = 0x00000000
    }
  }
}

Подскажите, пожалуйста... Уже вторую неделю мучаюсь... :oops:

_________________
Пилю ось)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: APIC
СообщениеДобавлено: 23 ноя 2013, 23:47 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1025
Откуда: Балаково
В структурах весьма условные сведения. Покажи весь код программирования Local APIC и IO APIC.
PIC и APIC вместе не работают. Да, PIC лучше замаскировать, но в принципе это не влияет на работу APIC, прерывания работают в любом случае. Учти, что линии прерываний PCI в APIC настраиваются иначе, и имеют другие номера IRQ16..IRQ23.
Какие атрибуты у тебя в элементе 0x09, такие же используются и для прерываний PCI.
Здесь на сайте что-то такое уже обсуждалось:
viewtopic.php?f=5&t=706
viewtopic.php?f=6&t=797


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: APIC
СообщениеДобавлено: 24 ноя 2013, 16:24 
Аватара пользователя

Зарегистрирован: 21 ноя 2013, 17:00
Сообщения: 10
Откуда: Russia, Magnitogorsk
Himik писал(а):
Покажи весь код программирования Local APIC и IO APIC
Стал смотреть код, чтоб сюда вставить и БАЦ(!) - меня осенило - я тупо забыл выполнить call init_ioapic :roll:
Т.е. я проинициализировал APIC (о чем в логах успешно отписал Bochs), прописал вектор в IOAPIC, но включить-то последний забыл)

_________________
Пилю ось)


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

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


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

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


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

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