> man operating_systems
Модераторы: Roman I Khimov, Wanderer, Dron
Автор Добавил
Dreamer
Суббота 21.05.2005 19:10

ID пользователя #9
Зарегистрирован: Воскресенье 04.07.2004 14:01
Сообщений: 235
В документации по Intel'овским процам читал, что начиная с Pentium I в них реализован Advanced Porgrammable Interrupt Controller (APIC). У меня, естественно, пень (Celeron, 433 MHz), однако программы тестирования компа показывают, что как раз APIC у меня отсутствует. Это глюк программ или в Celeron'ах APIC не реализовывался?

Жизнь на Линуксе есть!
Наверх
Freeman
Воскресенье 22.05.2005 00:40
ID пользователя #3
Зарегистрирован: Четверг 01.07.2004 14:57
Сообщений: 207
Из личного опыта - первый раз параметр в BIOS, относящийся к APIC, я увидел в материнке под Athlon XP.
Наверх
Roman I Khimov
Воскресенье 22.05.2005 11:08

ID пользователя #1
Зарегистрирован: Воскресенье 27.06.2004 12:37
Местонахождение: Санкт-Петербург
Сообщений: 601
А загрузись в GNU/Linux и сделай
cat /proc/cpuinfo
Если среди flags есть apic, значит поддерживается. Но, если загружая ядро с опцией lapic по
cat /proc/interrupts
ты видишь только многочисленные прерывания от XT-PIC, то не сильно этот самый lapic тебе поможет. У меня именно так - процессор держит, а lapic ничуть не помогает. Скорее всего это действительно в BIOS'е дело.

Правда, на стоящем рядом Celeron Mendocino APIC не обнаружился...

А вообще, я сейчас тоже в этот ман заглянул, так похоже, что нужна поддержка чипсета, что для всяких Celeron... Ой, а его еще и запрещать можно так, чтобы по cpuid его и не видно было... В общем, можно, конечно, похакать через MSR, но что выйдет - неизвестно. Попробуй взять наш образцово-показательный модуль для ядра Linux, который вырубает кеш и впиши туда пару асмовских команд, чтобы через MSR'ы включить тот самый LAPIC, авось чего выйдет?..


Греби и улыбайся!
Наверх
Сайт
Roman I Khimov
Воскресенье 22.05.2005 11:30

ID пользователя #1
Зарегистрирован: Воскресенье 27.06.2004 12:37
Местонахождение: Санкт-Петербург
Сообщений: 601
Хотя, похоже, что lapic у меня все же работает, только толку от этого - ноль.
============
rik@rik-note:/usr/src/linux-2.6.11-mm1/Documentation> grep -ri LAPIC *
kernel-parameters.txt: lapic [IA-32,APIC] Enable the local APIC even if BIOS disabled it.
============
Ядро загружено с lapic опцией, а прерывания все равно от XT-PIC идут все. Знать, мать кривовата... Ну да ладно, чудес производительности это и не обещает...

А у тебя, значит, скорее всего lapic и в BIOS вырублен. Попробуй ядро с опцией "lapic" загрузить. Увидишь, скорее всего оно появится в cpuid.


Греби и улыбайся!
Наверх
Сайт
Roman I Khimov
Воскресенье 22.05.2005 12:39

ID пользователя #1
Зарегистрирован: Воскресенье 27.06.2004 12:37
Местонахождение: Санкт-Петербург
Сообщений: 601
Ага. Проверил. Если загружаться без lapic, то не видать среди флагов apic - прячется...


Греби и улыбайся!
Наверх
Сайт
Roman I Khimov
Воскресенье 22.05.2005 14:11

ID пользователя #1
Зарегистрирован: Воскресенье 27.06.2004 12:37
Местонахождение: Санкт-Петербург
Сообщений: 601
Нет, все-таки это меня задело. Черт побери!
Без lapic:
[html]
rik@rik-note:~/tests/apic> cat nolapic
rik@rik-note:~> dmesg | grep APIC
Local APIC disabled by BIOS -- you can enable it with "lapic"
mapped APIC to ffffd000 (011e1000)
rik@rik-note:~> cat /proc/interrupts
           CPU0
  0:    4551686          XT-PIC  timer
  1:       7631          XT-PIC  i8042
  2:          0          XT-PIC  cascade
  3:      10527          XT-PIC  irda0
  5:          2          XT-PIC  ohci1394
  7:          1          XT-PIC  parport0
  8:          0          XT-PIC  rtc
  9:          0          XT-PIC  acpi
 10:     378831          XT-PIC  uhci_hcd:usb1, eth0
 11:       3332          XT-PIC  uhci_hcd:usb2, yenta
 12:     145050          XT-PIC  i8042
 14:      28504          XT-PIC  ide0
 15:         31          XT-PIC  ide1
NMI:          0
LOC:          0
ERR:          0
MIS:          0
[/html]


С lapic:
[html]
rik@rik-note:~/tests/apic> cat lapic
rik@rik-note:~> dmesg | grep APIC
Local APIC disabled by BIOS -- reenabling.
Found and enabled local APIC!
mapped APIC to ffffd000 (fee00000)
rik@rik-note:~> cat /proc/interrupts
           CPU0
  0:     205940          XT-PIC  timer
  1:        455          XT-PIC  i8042
  2:          0          XT-PIC  cascade
  3:        382          XT-PIC  irda0
  5:          2          XT-PIC  ohci1394
  7:        345          XT-PIC  parport0
  8:          0          XT-PIC  rtc
  9:          0          XT-PIC  acpi
 10:          3          XT-PIC  uhci_hcd:usb1, eth0
 11:          1          XT-PIC  uhci_hcd:usb2, yenta
 12:       3132          XT-PIC  i8042
 14:      12149          XT-PIC  ide0
 15:         31          XT-PIC  ide1
NMI:          0
LOC:     205900
ERR:        164
MIS:          0
[/html]


То, что основные прерывания так и остались от XT-PIC - это ладно, переживем, но появились таки прерывания LOC и ERR. Осталось только выяснить, "шо вся эта хрень значит"... Видимо, и на Celeron APIC можно будет активировать с использованием опции lapic. Только, кажется, я ядро собирал без его поддержки... Ну, посмотрим.

Интересно, что будет, если врубить APIC уже на полном ходу системы через MSR'ы...


Греби и улыбайся!
Наверх
Сайт
Roman I Khimov
Воскресенье 22.05.2005 19:35

ID пользователя #1
Зарегистрирован: Воскресенье 27.06.2004 12:37
Местонахождение: Санкт-Петербург
Сообщений: 601
Что и следовало ожидать. На старом добром Celeron Mendocino 480 с копейками тоже обнаружился APIC:
[html]
rik@assam ~/tests $ cat nolapic
assam tests # dmesg | grep APIC
Local APIC disabled by BIOS -- you can enable it with "lapic"
mapped APIC to ffffd000 (01101000)
assam tests # cat /proc/interrupts
           CPU0
  0:     157734          XT-PIC  timer
  1:        614          XT-PIC  i8042
  2:          0          XT-PIC  cascade
  7:          0          XT-PIC  parport0
  8:          2          XT-PIC  rtc
  9:          0          XT-PIC  acpi
 10:          0          XT-PIC  eth0
 11:       1300          XT-PIC  uhci_hcd
 12:          1          XT-PIC  EMU10K1
 14:       6430          XT-PIC  ide0
 15:         25          XT-PIC  ide1
NMI:          0
LOC:          0
ERR:          0
MIS:          0
rik@assam ~/tests $ cat lapic
assam tests # dmesg | grep APIC
Local APIC disabled by BIOS -- reenabling.
Found and enabled local APIC!
mapped APIC to ffffd000 (fee00000)
assam tests # cat /proc/interrupts
           CPU0
  0:     114539          XT-PIC  timer
  1:        516          XT-PIC  i8042
  2:          0          XT-PIC  cascade
  7:          0          XT-PIC  parport0
  8:          2          XT-PIC  rtc
  9:          0          XT-PIC  acpi
 10:          0          XT-PIC  eth0
 11:        614          XT-PIC  uhci_hcd
 12:          1          XT-PIC  EMU10K1
 14:       7244          XT-PIC  ide0
 15:         25          XT-PIC  ide1
NMI:          0
LOC:     114291
ERR:          0
MIS:          0
[/html]



Греби и улыбайся!
Наверх
Сайт
Dreamer
Вторник 24.05.2005 10:53

ID пользователя #9
Зарегистрирован: Воскресенье 04.07.2004 14:01
Сообщений: 235
Запустил ядро с опцией lapic и естественно появились пункты LOC и ERR. Только что дальше? Как включить APIC? В cpuinfo APIC есть, но в BIOS о нем ни слова.

Жизнь на Линуксе есть!
Наверх
Roman I Khimov
Вторник 24.05.2005 11:03

ID пользователя #1
Зарегистрирован: Воскресенье 27.06.2004 12:37
Местонахождение: Санкт-Петербург
Сообщений: 601
Тык он работает. А BIOS действительно не в курсе. То есть, получается, что ты его активировал, только толку мало, кроме вот этих прерываний ничего особенно и не поменялось (надо бы поискать, что это за прерывания, но мне сейчас малость не до того... ). Нужна более серьезная поддержка со стороны материнки, чтобы оно давало нечто большее.

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


Греби и улыбайся!
Наверх
Сайт
 

Перейти:     Наверх

Транслировать сообщения этой темы: rss 0.92 Транслировать сообщения этой темы: rss 2.0 Транслировать сообщения этой темы: RDF
Powered by e107 Forum System

© OSRC.info, 2004-2010.
Авторские права на любые материалы, авторы которых явно указаны, принадлежат их авторам. По вопросам публикации таких материалов обращайтесь к авторам.
Авторские права на любые другие материалы принадлежат OSRC.info.
Сайт является помещением библиотеки. Копирование, сохранение на жестком диске или иной способ сохранения произведений осуществляются пользователями на свой риск.
При использовании материалов сайта ссылка на OSRC.info обязательна.