Jump to content

    

PCIe Hot-Plug

Что за зверь и как с ним бороться?

 

Hot-Plug когда собственно "работать" должен? В БИОСе/UEFI-Shell? В DOS? В Win/Linux?

В Win/Linux любом или только "серверном" варианте?

В Win/Linux нужны ли "особые" драйвера, которые "оживляють" эту волшебную функциональность?

 

Местами/временами упоминаются какието "защелки" держащие PCIe-плату и сигнализирующие микровыключателем, что "плата внутри".

А если сервер есть, но на слоте нет той "защёлки", и нет той "микрокнопки", а ХотПлаговость тем не менее "заявлена" в описании на PCIe-слот?

 

Видимо у всех все работает из коробки, и потому никто не утруждается описывать процесс "от и до".

Ищу тех кто трогал PCIe-Hot-Plug своими руками

Share this post


Link to post
Share on other sites

весь PCIe хотплаг по идеологии представляет из себя

1) в железе - кнопку "хочу вынуть эту плату", цепи, обеспечивающие детектирования физического наличия в слоте, ключи на материнке, осуществляющие подачу питания на плату. вся эта радость по идеологии заведена на GPIO южного моста/чип компаньона

2) в BIOS реализованы соответствующие алгоритмы, рулящие процессом через GPIO, и отдающие соответствующие события в ACPI-таблицы.

3) операционка определяет хотплаг-события по наличию изменений в ACPI-таблицах, и предпринимает соответствующие действия по энумерации устройств, назначению BAR и подсовыванию драйвера. Плюс обратный процесс отрубания без вываливания в BSOD/Kernel panic.

 

http://www.ti.com/lit/ds/symlink/tps2363.pdf

вот вам пример типового hotplug-контроллера, который на материнке вешается на SMbus.

Share this post


Link to post
Share on other sites

Cпасибо за информацию.

Действительно забыл про ACPI таблицы.

 

Сходил к своим IT-шникам, они про это только в журналах читали, и то в лучшем случае про горячюю замену SATA дисков.

 

Беда в том что

в железе - кнопку "хочу вынуть эту плату", цепи, обеспечивающие детектирования физического наличия в слоте, ключи на материнке, осуществляющие подачу питания на плату. вся эта радость по идеологии заведена на GPIO южного моста/чип компаньона

 

стандарт позволяет как с кнопкой так и без, как с лампочками так и без. Но минимум GPIO всетаки действительно нужен.

В нашем биосе планируется GPIO эхспандер на PCA9535, через I2C, и с прерыванием от него.

 

в BIOS реализованы соответствующие алгоритмы, рулящие процессом через GPIO,

Тут все еще интереснее, у АМД последних серий, БИОС только готовит "таблицы" и "скармитвает" их ядрам микроконтроллеров(SMU/MP1).

А вот код для тех микроконтроллеров(внутри ядер) PSP/MP0, SMI/MP1, идет бинарником и творит чтото своё "универсальное" , без кнопок/лампочек.

Обыкновенная Вин10, после "скармливания" биосом таблиц для SMU, бодренько опознала все описанные слоты как HotPlug и "весело" с ними работает.

Вставишь карту, менеджер устройств находит новое устройство. Вынешь - исчезает.

Но это пока совсем не то что надо. Остается не определенной последовательность подачи напряжения в слот. А сгоревшие катры нам не к чему. Нужны кнопки, тайминги подачи напряжений, лампочки, и т.п.

 

и отдающие соответствующие события в ACPI-таблицы.

а вот в этом надо покопаться, давно не дебажил ACPI, надо вспомнить навыки.

 

 

Еще раз спасибо за отклик.

Edited by Bios71

Share this post


Link to post
Share on other sites

тут весь вопрос может быть в другом.

в спецификации PCIe есть такая штука как native hotplug.

и я полагаю, что его сузили до рамок "пропал линк" - "ну ок, значит из слота плату вынули".

и в связи с этим, имхо, опытом не подтверженное имхо, сейчас весь интерлокинг в виде "нажатие кнопки" - "мигание лампочками" - "обесточивание платы ключами" - "механическая защелка" - "ручка" возможно производить независимо от BIOS или OC.

Share this post


Link to post
Share on other sites
тут весь вопрос может быть в другом.

в спецификации PCIe есть такая штука как native hotplug.

и я полагаю, что его сузили до рамок "пропал линк" - "ну ок, значит из слота плату вынули".

и в связи с этим, имхо, опытом не подтверженное имхо, сейчас весь интерлокинг в виде "нажатие кнопки" - "мигание лампочками" - "обесточивание платы ключами" - "механическая защелка" - "ручка" возможно производить независимо от BIOS или OC.

 

Да, зоопарк страшный.

Тот же АМД вводит/использует следующие понятия

- Simple Presence Detect, минимальная GPIO поддержка, реакция только на "present", дабы снять питание из опустевшего внезапно слота

(наиболее энергосберегающий вариант), требует Runtime поддержки от биоса для коммуникации с/через ACPI таблицы/методы

- PCIe модуль А , применяемый на оригинальных АМД платформах

- PCIe модуль B , индустриальный формат, отличается от А GPIO распиновкой ехпандера

- HotplugBasic

- native

- HotplugEnhanced, "всегда включено и всегда в поиске", при установке/удалении устройства на него реагирует сам P2P мост,

генеря прерывание для ОС не требует поддержки БИОСа, но наиболее энергозатратный (питание всегда подано в слот)

- HotplugServer , хаха ... серверный вариант! догадываемся кто и что под этим подразумевает. :biggrin:

 

А PCIe спецификация одарила понятием

- HotPlug-Surprise поддерживающий "ВНЕЗАПНОЕ" Hot-insertion/removal (под линуксом выдающий ТОЛЬКО сигнал DEV_REMOVAL)

- HotPlug-Non-Surprise (Managed HotPlug) т.е. с предупреждением "СЕЙЧАС БУДЕТ ЗАЙЧИК" (под линуксом выдающий сигнал и DEV_SHUTDOWN и DEV_REMOVAL)

 

 

А ACPI таблицы у меня хранят гробовое молчание, т.е. кода для поддержки HotPlug там вагон и маленькая тележка, но он не кем ни когда не вызывается.

Все идет через внутренюю CPU/SMU/M1 кухню. Видимо в режиме HotplugEnhanced

Edited by Bios71

Share this post


Link to post
Share on other sites
On ‎8‎/‎16‎/‎2018 at 8:14 PM, krux said:

тут весь вопрос может быть в другом.

в спецификации PCIe есть такая штука как native hotplug.

и я полагаю, что его сузили до рамок "пропал линк" - "ну ок, значит из слота плату вынули".

и в связи с этим, имхо, опытом не подтверженное имхо, сейчас весь интерлокинг в виде "нажатие кнопки" - "мигание лампочками" - "обесточивание платы ключами" - "механическая защелка" - "ручка" возможно производить независимо от BIOS или OC.

А как в драйверах, это ловить интересует QNX, Win, Linux ??? ( можно отвечать в последовательности следования ОСм)

Share this post


Link to post
Share on other sites
2 часа назад, Nik. сказал:

А как в драйверах, это ловить интересует QNX, Win, Linux ??? ( можно отвечать в последовательности следования ОСм)

В QNX через Dev-менеджер, в Win - через диспетчер Plug-and-Play (PnP), в Linux - через udev.

Share this post


Link to post
Share on other sites
On ‎2‎/‎1‎/‎2019 at 7:16 PM, gerber said:

В QNX через Dev-менеджер, в Win - через диспетчер Plug-and-Play (PnP), в Linux - через udev.

А ссылок, на какие нить примеры , не можете дать ?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now