реклама на сайте
подробности

 
 
> PCIe Interrupts, как реализовать несколько прерываний?
doom13
сообщение Nov 5 2015, 11:22
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Приветствую.
Хочу реализовать в устройстве PCIe несколько источников прерывания. Попытался использовать MSI, но система не хочет разрешать более одного MSI. Как быть в такой ситуации? Можно поставить контроллер прерываний, а сигнал от него завести на ядро PCIe, но правильно ли это? Кто как делал?
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
krux
сообщение Nov 5 2015, 17:16
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



не знаю, как в убунте, но обычно настройки ядра (.config-файл с опциями) кладут в /boot , там можно поискать.
если нет - бывает этот файл вместе с -dev пакетом с ядром устанавливается. бывает ещё и /proc/config.gz
вот там CONFIG_PCI_MSI опцию и посмотреть.

а покажите, что у вас записано в MSI Control Register? в PCI BAR, в MSI capability structure.

кроме того, дело может быть и в материнке.
бывает так, что MSI-прерываний материнка поддерживает 1 на устройство, а MSI-X - несколько.
а бывает наоборот, что MSI-X не поддерживается вообще, а MSI можно несколько.

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


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
doom13
сообщение Nov 5 2015, 20:36
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Цитата(krux @ Nov 5 2015, 20:16) *
а покажите, что у вас записано в MSI Control Register? в PCI BAR, в MSI capability structure.

Это пока не могу, но #lspci -vv говорит, что поддерживает 4 или 2 (пробовал разные настройки для ядра PCIe Bridge).

Цитата(krux @ Nov 5 2015, 20:16) *
кроме того, дело может быть и в материнке.
бывает так, что MSI-прерываний материнка поддерживает 1 на устройство, а MSI-X - несколько.
а бывает наоборот, что MSI-X не поддерживается вообще, а MSI можно несколько.

Попробовал и MSI-X использовать (настроил ядро на поддержку MSI-X), результат тот же - показывает, что устройство поддерживает 4, а система выделяет только одно, при попытке выделить больше выдаёт ошибку (если использую MSI, то просто выделяет одно).

Цитата(krux @ Nov 5 2015, 20:16) *
поэтому если хотите чтобы много прерываний было на разных платформах, то в драйвере придется раскорячится - и поддерживать по максимуму, и MSI, и MSI-X.
но это не гарантирует того, что вашу плату не вставят туда, где будет только Legacy-поддержка с одним прерыванием.

А что если использовать одно, но от AXI Interrupt Controller-a, а на него завести сколько необходимо? Или это "костыль" (в драйвере придётся разруливать, что за устройство послало прерывание) - правильно добиться выделения нескольких MSI/MSI-X прерываний?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 21:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01376 секунд с 7
ELECTRONIX ©2004-2016