Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум разработчиков электроники ELECTRONIX.ru _ ISA/PCI/PCI-X/PCI Express _ PCIe Hot-Plug

Автор: Bios71 Aug 14 2018, 07:21

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

Hot-Plug когда собственно "работать" должен? В БИОСе/UEFI-Shell? В DOS? В Win/Linux?
В Win/Linux любом или только "серверном" варианте?
В Win/Linux нужны ли "особые" драйвера, которые "оживляють" эту волшебную функциональность?

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

Видимо у всех все работает из коробки, и потому никто не утруждается описывать процесс "от и до".
Ищу тех кто трогал PCIe-Hot-Plug своими руками

Автор: krux Aug 14 2018, 13:31

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

http://electronix.ru/redirect.php?http://www.ti.com/lit/ds/symlink/tps2363.pdf
вот вам пример типового hotplug-контроллера, который на материнке вешается на SMbus.

Автор: Bios71 Aug 16 2018, 12:55

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

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

Беда в том что

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


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

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

Тут все еще интереснее, у АМД последних серий, БИОС только готовит "таблицы" и "скармитвает" их ядрам микроконтроллеров(SMU/MP1).
А вот код для тех микроконтроллеров(внутри ядер) PSP/MP0, SMI/MP1, идет бинарником и творит чтото своё "универсальное" , без кнопок/лампочек.
Обыкновенная Вин10, после "скармливания" биосом таблиц для SMU, бодренько опознала все описанные слоты как HotPlug и "весело" с ними работает.
Вставишь карту, менеджер устройств находит новое устройство. Вынешь - исчезает.
Но это пока совсем не то что надо. Остается не определенной последовательность подачи напряжения в слот. А сгоревшие катры нам не к чему. Нужны кнопки, тайминги подачи напряжений, лампочки, и т.п.

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

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


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

Автор: krux Aug 16 2018, 17:14

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

Автор: Bios71 Aug 17 2018, 06:16

Вот нашел видео где ХотПлаг работает как у меня.
Вставил карту - оборудование нашлось. Вынул - пропало.

http://electronix.ru/redirect.php?https://www.youtube.com/watch?v=YigN2mkQMPc


Автор: Bios71 Aug 22 2018, 05:56

Цитата(krux @ Aug 16 2018, 20:14) *
тут весь вопрос может быть в другом.
в спецификации PCIe есть такая штука как native hotplug.
и я полагаю, что его сузили до рамок "пропал линк" - "ну ок, значит из слота плату вынули".
и в связи с этим, имхо, опытом не подтверженное имхо, сейчас весь интерлокинг в виде "нажатие кнопки" - "мигание лампочками" - "обесточивание платы ключами" - "механическая защелка" - "ручка" возможно производить независимо от BIOS или OC.


Да, зоопарк страшный.
Тот же АМД вводит/использует следующие понятия
- Simple Presence Detect, минимальная GPIO поддержка, реакция только на "present", дабы снять питание из опустевшего внезапно слота
(наиболее энергосберегающий вариант), требует Runtime поддержки от биоса для коммуникации с/через ACPI таблицы/методы
- PCIe модуль А , применяемый на оригинальных АМД платформах
- PCIe модуль B , индустриальный формат, отличается от А GPIO распиновкой ехпандера
- HotplugBasic
- native
- HotplugEnhanced, "всегда включено и всегда в поиске", при установке/удалении устройства на него реагирует сам P2P мост,
генеря прерывание для ОС не требует поддержки БИОСа, но наиболее энергозатратный (питание всегда подано в слот)
- HotplugServer , хаха ... серверный вариант! догадываемся кто и что под этим подразумевает. biggrin.gif

А PCIe спецификация одарила понятием
- HotPlug-Surprise поддерживающий "ВНЕЗАПНОЕ" Hot-insertion/removal (под линуксом выдающий ТОЛЬКО сигнал DEV_REMOVAL)
- HotPlug-Non-Surprise (Managed HotPlug) т.е. с предупреждением "СЕЙЧАС БУДЕТ ЗАЙЧИК" (под линуксом выдающий сигнал и DEV_SHUTDOWN и DEV_REMOVAL)


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

Автор: Bios71 Aug 28 2018, 09:07

полезная ссылка

http://electronix.ru/redirect.php?http://composter.com.ua/documents/PCI_Express_Base_Specification_Revision_3.0.pdf#page=514

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)