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

На основной плате стоит свитч PCI Express PEX8509, который имеет 3 PCI Express c hot-plug. К этим PCI Express подключаются дополнительные модули в составе которых стоит тот же свитч PEX8509 и к нему подключены конечные устройства.

Если при постоянном чтении памяти или регистров любого из устройств на дополнительном модуле удалить модуль на ходу, то процессор зависает на операции чтения!

Ведь операция чтения должна завершится по тайм-ауту или abort? Почему зависает???
dsmv
Не могу утверждать точно, но по моему такого нам стандарт PCI не обещает.


Мы должны завершить все операции и только после этого извлечь устройство.




Zazazu
Цитата(dsmv @ Jul 16 2012, 11:52) *
Не могу утверждать точно, но по моему такого нам стандарт PCI не обещает.


Мы должны завершить все операции и только после этого извлечь устройство.



А если устройство выйдет из строя на момент выполнения операции чтения??? Система не имеет права зависать, она должна "обьявить" о неисправном модуле и тогда уж выполнить замену модуля, например.

В PEX8311 предусмотрено если устройство на локальной шине не отвечает, вводится понятие завершения операции по тайм-ауту и т.д.


Что то же и здесь должно быть!!! Помогите пж-та!
gerber
Цитата(Zazazu @ Jul 16 2012, 18:32) *
А если устройство выйдет из строя на момент выполнения операции чтения??? Система не имеет права зависать, она должна "обьявить" о неисправном модуле и тогда уж выполнить замену модуля, например.

Это откуда такие сведения о "неправомерии зависания системы" при аппаратных проблемах ?
Цитата(Zazazu @ Jul 16 2012, 18:32) *
В PEX8311 предусмотрено если устройство на локальной шине не отвечает, вводится понятие завершения операции по тайм-ауту и т.д.
Что то же и здесь должно быть!!! Помогите пж-та!

Если устройство действительно не отвечает, то ничего страшного нет. А если оно подтвердило транзакцию (установкой DEVSEL#), то обязано её завершить. Пока адресованное устройство не завершило транзакцию (сигналом #TRDY) - вся система висит, не обрабатываются даже прерывания, и будет висеть бесконечно, если устройство вытащить как раз в тот момент, когда оно подтвердило транзакцию, но не завершило её.
Это всё касается PCI, но и в PCI-Express принцип тот же самый.
krux
в PCI-Express нет TRDY# как сигнала. По сути там обратно ожидается приход MSI-пакета с окончанием транзакции. (даже в slave! но это замаскировано под legacy-слоем для обратной совместимости с софтом)
И обработка его ведётся драйвером устройства, т.е. всё зависит от того насколько качественно написан драйвер.
Во всяком случае, я подключал к свичу PLX8648 четыре двухпортовые сетевухи на чипах от intel, под linux, и дергал их на горячую.
всё работало без всяких зависаний.
Zazazu
Цитата(krux @ Jul 16 2012, 17:38) *
в PCI-Express нет TRDY# как сигнала. По сути там обратно ожидается приход MSI-пакета с окончанием транзакции. (даже в slave! но это замаскировано под legacy-слоем для обратной совместимости с софтом)
И обработка его ведётся драйвером устройства, т.е. всё зависит от того насколько качественно написан драйвер.
Во всяком случае, я подключал к свичу PLX8648 четыре двухпортовые сетевухи на чипах от intel, под linux, и дергал их на горячую.
всё работало без всяких зависаний.

Драйвер писали сами?
Shivers
Hot plug pci-e в чистом виде нет, и наверно не будет, т.к. плаговую спецификацию pci-e скрестили с графикой и обозвали thunderbolt.
krux
Цитата(Zazazu @ Jul 19 2012, 09:08) *
Драйвер писали сами?

нет конечно. но он доступен для скачивания в открытом доступе с сайта интела.

Цитата(Shivers @ Aug 13 2012, 10:04) *
Hot plug pci-e в чистом виде нет, и наверно не будет, т.к. плаговую спецификацию pci-e скрестили с графикой и обозвали thunderbolt.

hotplug как таковой в эпоху PCI нужен был для отключения питания у PCI-карты, так как если её дернуть на горячую, могли элементарно !)посыпаться искры 2)сдохнуть IO-буферы.

в PCI-Express токи непосредственно на сигнальном интерфейсе - никакие, конденсаторные развязки кругом, так что спалить буферы интерфейсов у микросхем достаточно сложно.
на данный момент есть собственные реализации у некоторых вендоров, этого достаточно чтобы теперь уже даже не задумываться о создании этой спецификации.
в двух словах суть заключаются в том, что по событию 1)в драйвер устройства отправляется запрос на остановку транзакций 2)отключению питания +12В конкретного слота PCIe с помощью hotswap-контроллеров, подключенных по I2C.
технология активно используется во всяких промышленных решениях типа огромных файловых хранилищ например у EMC
Shivers
Я бы не стал так уверенно заявлять про малые токи на сигальном интерфейсе и конденсаторы - ВЧ статика может проскочить и сквозь емкости, и пробить ESD защиту тоже может запросто.

Отключение в PCI-E действительно предусмотрено на уровне спецификации - есть несколько состояний засыпания, верхнее на уровне пониженного питания лейнов, глубже - могут обесточиваться PLL, еще глубже - теряется конфигурация Link, и совсем низкое - полное отключение, либо питание с AUX, которое можно отключить тумблером, к примеру. При полном отключении остается возможность просыпания: по линии может быть отослан и принят некий signal beacon - нч сигнал, сообщающий о желании периферии проснуться. При получении бекона рут порт подает питание и начинает договариваться об установлении соединения (на уровне железа а затем и драйверов).
Проблема тут только одна - насколько мне изместно, нельзя усыпить отдельный эндпоинт: засыпает весь рут порт со всеми висящими на нем свитчами и эндпоинтами. Но если вы говорите что хот своп кто то выпускает, то охотно верю, т.к. как писал выше, возможности для этого в стандарте заложены.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.