Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: PCIe Hot-Plug
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > ISA/PCI/PCI-X/PCI Express
Bios71
Что за зверь и как с ним бороться?

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

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

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

http://www.ti.com/lit/ds/symlink/tps2363.pdf
вот вам пример типового hotplug-контроллера, который на материнке вешается на SMbus.
Bios71
Cпасибо за информацию.
Действительно забыл про ACPI таблицы.

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

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


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

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

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

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

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


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

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

Bios71
Цитата(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
полезная ссылка

PCI EXPRESS BASE SPECIFICATION, REV. 3.0 str 514 6.7. PCI Express Hot-Plug Support
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.