Перейти к содержанию
    

PCIe Hot-Plug

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

 

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

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

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

 

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

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

 

Беда в том что

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

 

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

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

 

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

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

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

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

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

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

 

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

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

 

 

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

Изменено пользователем Bios71

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

https://www.youtube.com/watch?v=YigN2mkQMPc

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

в спецификации 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

Изменено пользователем Bios71

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On ‎8‎/‎16‎/‎2018 at 8:14 PM, krux said:

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, Nik. сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On ‎2‎/‎1‎/‎2019 at 7:16 PM, gerber said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...