0

Предположим, что аппаратная PCI поддерживает три доступных парадигм прерываний: на основепарадигм прерывания (MSI/MSI-X и унаследованных) в драйверах

  • Наследство контактный IntX
  • MSI
  • MXI-X

Я хотел бы поддержать все три режима в моем драйвере и передать аргумент intr_type в макросе module_param(). Мне интересно, какое общее правило: если по умолчанию параметр командной строки пуст, поддерживайте MSI или MSI-X? Поскольку MSI и MSI-X логически близки, какой предпочтительнее использовать?

Например: если драйвер обнаружил, что устройство поддерживает MSI-X, достаточно ли этого, чтобы попробовать включить MSI-X и использовать его в драйвере, а в случае отказа вернуться к устаревшему INTx?

Спасибо.

ответ

1

Прерывания INTX, скорее всего, будут доступны совместно, поэтому драйвер всегда должен проверить, является ли его собственное устройство источником прерываний. Как правило, вы хотите избежать этого.

MSI-X был разработан для преодоления некоторых недостатков MSI. Если вы не знаете, что это такое, то, скорее всего, они не имеют значения для вашего водителя, и вы можете выбрать один из них.

+0

благодарит за комментарии. Я знаю, что MSI-X позволяет распределить до 2048 прерываний устройством. Другое то, что и MSI, и MSI-X действуют одинаково, правильно? – Mark

+0

Существуют и другие отличия, но они действительно похожи. –

1

В принципе, вы можете просто запросить возможности конечных точек поддержки MSI/MSIX.

Grep для: PCI_CAP_ID_MSI и PCI_CAP_ID_MSIX

Вы должны Откат от MSIX к MSI и INT, если оно не поддерживается.

Смежные вопросы