PnP OS

Обмен опытом по установке Линукс на разные аппаратные конфигурации

Модераторы: Olej, vikos

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

PnP OS

Непрочитанное сообщение Olej » 18 авг 2012, 15:21

Да или нет?
Устанавливать в BIOS "PnP OS" перед установкой Linux или запретить?

Системы Windows "аж пищат" чтобы им дали PnP OS.

Другие системы - QNX - категорически рекомендуют не разрешать PnP OS.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: PnP OS

Непрочитанное сообщение Olej » 18 авг 2012, 15:31

Поехали... ;-)

Полные настройки BIOS
IV. PNP/PCI Configuration

PNP OS Installed (Plug&Play операционной системы)
Опции: Yes, No
Выбирайте "Yes" если все ваши установленные операционные системы поддерживают Plug & Play (PnP), тогда OS получат полный контроль над ресурсами устройств. Если хотя бы одна не поддерживает PnP выбирайте "No", тогда BIOS самостоятельно сконфигурирует все устройства.
Примечание: Windows 2000 будет работать с ACPI (Advanced Computer Management and Interface) даже в том случае если PNP OS Installed = Yes. Достаточно убедится, что отключен APM (Advanced Power Management). Как обычно Майкрософт рекомендует ставить PNP OS Installed = No
Совет для пользователей Linux: Не смотря на то, что Linux не по настоящему PnP совместимый, многие дистрибутивы используют часть программы ISAPNPTOOLS, для установки ISA карт. Если у вас значение PNP OS Installed = No, BIOS будет пытаться конфигурировать ISA карты самостоятельно. Это не сделает их работоспособными в Linux, и необходимость в ISAPNPTOOLS или подобной утилите останется. Если пытаться конфигурировать ISA карты и с помощью BIOS и с помощью ISAPNPTOOLS могут возникнуть проблемы. Оптимальный вариант это установка PNP OS Installed = Yes, затем с помощью ISAPNPTOOLS конфигурировать ISA устройства.
Но это 19.05.2002, а любые "оправдания" Plug & Play относятся только к ISA/EISA адаптерам, которые все уже давно забыли.

Я бы и не ссылался на эту статью, если бы не:
- массовое её перекопирование в Интернет вплоть до 2011 года (я видел, может и позже есть);
- не заинтересовавшие меня в заметке слова: "Linux не по настоящему PnP совместимый"

ALT Linux 2.4 Master. Справочник пользователя
К сожалению, существует много типов BIOS, поэтому придётся самостоятельно подбирать подходящую опцию. Эта опция обычно называется PNP OS installed (или Plug'n'Play OS installed). Установите эту опцию на значение No, и тогда BIOS будет инициализировать все устройства plug'n'play. Это может помочь Linux распознать некоторые устройства компьютера, с которыми у неё без этого могли бы возникнуть сложности.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: PnP OS

Непрочитанное сообщение Olej » 18 авг 2012, 16:54

Вот здесь ответ на тот же вопрос на форуме RFRemix:
C.XBATOB писал(а):Отвечаю без всяких ссылок: Linux (и все прочие ОС кроме одной) - не PnP. Для конфигурирования железа при старте существует firmware: BIOS, UEFI, UBoot,.. У них это получается гораздо лучше.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: PnP OS

Непрочитанное сообщение Olej » 19 авг 2012, 00:50

Вот здесь Конфликт прерываний PCI-модуля и сетевых адаптеров в QNX4.25 - достаточно любопытное обсуждение, вскрывающее некоторые детали ... то, что это QNX а не Linux - не имеет никакого значения: это вопросы касательно железа, а железо, оно и в Африке железо...
Всё, что имеет касательство и к Linux из этого обсуждения, я позже прокомментирую.

Пока могу, то что из своего опыта помню, сказать, что:

1. Для обычных типовых десктопов, похожих как близнецы братья, установка PnP OS хоть в Yes, хоть в No - особо принципиальной разницы не будет иметь, и правильнее, пожалуй, запрещать PnP OS;

2. А вот для навороченных серверов от Sun, или AMD, с большим числом интерфейсов и периферии - это может иметь значение...

3. Вообще, всё, что касается инициализации PCI устройств, стоит того, чтобы в нём поразбираться и потерять время...

4. Для настройки сложной железки ещё такое же принципиальное значение как PnP OS может иметь установка режима контроллера прерываний по фронту (Edge) или по уровню (Level). В некоторых BIOS есть такая установка - http://computerf1.at.ua/publ/bios/nastr ... /19-1-0-88:
PCI IRQ Activated By (Активизация прерывания)
Опции: Edge, Level
Это редкая функция BIOS которая позволяет выбирать метод активизации прерываний ваших PCI карт. ISA и старые PCI карты активизируются по перепаду уровня сигнала (используя единое напряжение), тогда как новые PCI и AGP карты активизируются только по уровню сигнала (используя составное напряжение). Когда PCI устройства только появились, опцию устанавливали в значение Edge потому как эти устройства ёщё не поддерживали распределение прерываний. Однако сейчас практически все PCI устройства поддерживают распределение IRQ, поэтому ставьте опцию в положение Level чтобы работало распределение, до тех пор пока вам не понадобится использовать старые PCI карты активизирующиеся по перепаду уровня сигнала.

(то, что здесь написано - весьма поверхностно, и не нужно на 100% принимать на веру).
С другой стороны, если в BIOS даже нет такой настройки, то для перепрограммирования контроллера IRQ с одного режима на другой нужно 2-3 процессорных команды, которые могут выполнять программы инициализации ОС, или драйверы - модули ядра Linux.

5. Для тяжёлых случаем, кроме выбора PnP OS Yes/No (кто будет инициализировать и расставлять линии прерываний?) есть ещё возможность вмешаться, и вручную расставить линии прерываний (все или некоторые) между слотами PCI:
PIRQ_0 Use IRQ No. ~ PIRQ_3 Use IRQ No. (Установка IRQ индивидуально)
Опции: Auto, 3, 4, 5, 7, 9, 10, 11, 12, 14, 15
Эта опция позволяет устанавливать прерывания индивидуально каждому устройству на PCI и AGP шине. Это очень полезная функция может пригодиться, если вы переносите жесткий диск с одного компьютера на другой, и вы не хотите переустанавливать операционную систему чтобы переопределить прерывания. Тогда вы можете подогнать установки прерываний к оригинальным и избежать множество проблем при установке жесткого диска в новую систему. Заметки:
Если вы укажите прерывание, такое же как для ISA шины возникнет конфликт.
Каждый PCI слот может активизировать до четырёх прерываний - INT A, INT B, INT C и INT D
AGP слот может активизировать два прерывания - INT A и INT B
Нормально когда каждый слот назначен как INT A. Остальные прерывания как резервы если PCI/AGP устройство потребует больше чем одно прерывание или если запрашиваемое прерывание занято.
AGP слот и PCI слот#1 распределяют одинаковые прерывания (IRQ)
PCI слот #4 и #5 распределяют одинаковые прерывания (IRQ)
USB использует PIRQ_4
Таблица показывающая связь между PIRQ (programmable interrupt request - программируемый запрос прерывания) и INT (Interrupt - прерывание):

Код: Выделить всё

Сигнал	AGP Slot  PCI Slot 2	PCI Slot 3	PCI Slot 4
         PCI Slot 1                          PCI Slot 5
PIRQ_0	INT A     INT D        INT C        INT B
PIRQ_1	INT B     INT A        INT D        INT C
PIRQ_2	INT C     INT B        INT A        INT D
PIRQ_3	INT D     INT C        INT B        INT A
Обычно следует оставить опцию в положении AUTO. Но, если возникла необходимость установить индивидуальное IRQ устройству на AGP или PCI шине, вот совет как использовать эту функцию. Прежде всего определите в каком слоту установлено устройство. Потом посмотрите таблицу чтобы установить основной PIRQ. Например если сетевая карта установлена в слот 3 то основной PIRQ будет PIRQ_2 потому как все слоты назначены на INT A, если возможно. После этого, выберите то IRQ, которое хотите использовать, присваивая нужное значение PIRQ. Если сетевая карта требует IRQ 7 установите PIRQ_2 чтобы использовать IRQ 7. BIOS распределит IRQ 7 для третьего PCI слота. Только помните, что BIOS будет пытаться назначить PIRQ в INT A для каждого слота. Так что, для AGP и PCI #1 слотов основной PIRQ это PIRQ_0, тогда как для PCI слота #2 основной PIRQ это PIRQ_1 и так далее.
6. И + сложность всего происходящего умножить на то, что все описания пересказывают давнее состояние дел с контроллерами прерываний PIC, которые при какодном включении обеспечивали 15 линий прерываний IRQ 0-15. Но таких контроллеров давно уже нигде нет (только в публикациях и остались), а есть APIC, и число линий IRQ получается куда больше. Вот а моём совсем не новом ноутбуке с которого я сейчас пишу:

Код: Выделить всё

bash-4.2$ cat /proc/interrupts 
           CPU0       CPU1       
  0:   14370074          0   IO-APIC-edge      timer
  1:          9          0   IO-APIC-edge      i8042
  7:          1          0   IO-APIC-edge      parport0
  8:          1          0   IO-APIC-edge      rtc0
  9:        598          0   IO-APIC-fasteoi   acpi
 12:        156          0   IO-APIC-edge      i8042
 14:      48732          0   IO-APIC-edge      ata_piix
 15:          0          0   IO-APIC-edge      ata_piix
 16:     753680          0   IO-APIC-fasteoi   i915, eth0
 18:     583894          0   IO-APIC-fasteoi   uhci_hcd:usb4, yenta
 19:          0          0   IO-APIC-fasteoi   uhci_hcd:usb5, tifm_7xx1
 20:     967595          0   IO-APIC-fasteoi   ehci_hcd:usb1, uhci_hcd:usb2
 21:          0          0   IO-APIC-fasteoi   uhci_hcd:usb3
 22:          0          0   IO-APIC-fasteoi   mmc0
 41:     319470          0   PCI-MSI-edge      ahci
 42:     482300          0   PCI-MSI-edge      snd_hda_intel
 43:         99          0   PCI-MSI-edge      iwl3945
NMI:       6205       6142   Non-maskable interrupts
LOC:    5295004   10949478   Local timer interrupts
...
Вот здесь коротко об APIC в BIOS: APIC Mode.
И очень коротко о прерываниях на шине PCI: http://www.probios.ru/article/computer/bus.html
При использовании расширенного контроллера прерываний, атрибута любого современного компьютера, количество прерываний увеличивается до 24, что существенно упрощает наращивание возможностей компьютера за счет карт расширения и интегрированных контроллеров.
...
Физически контроллер прерывания «общается» с картой расширения посредством 4-х («классический» вариант) или 8-и (современные решения) сигнальных линий.
...
7. И во всё это кино добавляет сложности то, что BIOS может не перераспределять ресурсы PCI, а просто использовать ранее записанное распределение в ESCD (Extended System Configuration Data):
ESCD (Extended System Configuration Data) — специальная таблица, хранящаяся в CMOS, предназначенная для распределения аппаратных ресурсов компьютера.
Эта таблица заполняется в момент первого включения компьютера после изменения его конфигурации. Она значительно упрощает процесс распределения ресурсов при включении или перезагрузке.
Изображение

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: PnP OS

Непрочитанное сообщение Olej » 19 авг 2012, 01:06

Olej писал(а):Вот здесь коротко об APIC в BIOS: APIC Mode.
Это вообще любопытный ресурс в тему: Настройка BIOS Setup

Здесь же: PNP OS Installed:
Указывает, будет ли заниматься распределением ресурсов операционная система, поддерживающая стандарт Plug and Play (значение Yes), или системные ресурсы будет распределять BIOS (значение No).

Впервые поддержка стандарта Plug and Play появилась в Windows 95, сейчас ему соответствуют все актуальные версии операционных систем. Так что в большинстве случаев распределение ресурсов вполне можно переложить «на плечи» ОС, что несколько ускорит загрузку компьютера и обеспечит большую гибкость при подключении нового оборудования.

С другой стороны, распределение ресурсов с помощью BIOS, даже при использовании совместимой с Plug and Play операционной системы, тоже имеет свои плюсы. В этом случае исключен такой неприятный момент, как постоянное нахождение «новых» устройств после очередной загрузки операционной системы. В реальности, естественно, никакого нового оборудования нет, просто устройствам по каким-то причинам назначены ресурсы, отличные от тех, что использовались в прошлый раз.

Исходя из этого, можно рекомендовать для начала разрешить распределение ресурсов операционной системе (выбрав Yes). Если все работает нормально, стоит остановиться именно на этом варианте. Но при появлении признаков постоянного «перераспределения» ресурсов, периодическом изменении назначенных прерываний, каналов прямого доступа к памяти, стоит передать управление распределением ресурсов «в руки» BIOS (установив для опции значение No).

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: PnP OS

Непрочитанное сообщение Olej » 19 авг 2012, 02:03

Olej писал(а): 4. Для настройки сложной железки ещё такое же принципиальное значение как PnP OS может иметь установка режима контроллера прерываний по фронту (Edge) или по уровню (Level).
...
С другой стороны, если в BIOS даже нет такой настройки, то для перепрограммирования контроллера IRQ с одного режима на другой нужно 2-3 процессорных команды, которые могут выполнять программы инициализации ОС, или драйверы - модули ядра Linux.
http://qnx.org.ru/forum/index.php?topic ... 9#msg61319
Google for ELCR port 0x4d0-0x4d1.

Код: Выделить всё

#define BIT(n)  (1<<(n))
out16(0x4d0,  in16(0x4d0) | BIT(9) | BIT(10) | BIT(11));
This should be done by BIOS when you choose PCI/ISA PnP for these interrupt lines.
http://qnx.org.ru/forum/index.php?topic ... 4#msg61324
Посмотрел исходник picinfo - действительно 8-ми битовый доступ к регистрам. Т.е. надо в порт по адресу 0x04d1 записать то, что в нем было, установив биты 1, 2 и 3 - что будет соответствовать переводу IRQ линий 9, 10 и 11 в чувствительность по уровню.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: PnP OS

Непрочитанное сообщение Olej » 19 авг 2012, 15:01

Olej писал(а):Устанавливать в BIOS "PnP OS" перед установкой Linux или запретить?
Вот показали мне такой исчерпывающий документ: Plug-and-Play-HOWTO (это ссылка на оглавление, чтоб сразу увидеть затрагиваемые вопросы). И в меру не старый документ:
v1.15, August 2007
Очень объёмный документ + он затрагивает много вопросов, в частности и те, которые касаются нашей темы:
3. Setting up a PnP BIOS

3.1 Do you have a PnP operating system?
3.2 Assigning Resources by the BIOS
3.3 Reset the configuration?
P.S. Этот документ будет ещё более интересен тем, кто интересуется написанием драйверов, модулей ядра Linux!

Ответить

Вернуться в «Железо для Linux»

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

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