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

Kintex Ultrascale PCI-E не получает результаты MRd

А вы запрос по BDF делаете? Я всегда с адресами памяти работал. Свич по идее не должен влиять — при енумерации RC его должен обнаружить и запрограммировать на корректную маршрутизацию. И она же работает на два запроса. Со свичами дел не имел, не могу ничего сказать, может там и правда надо что-то со стороны драйвера настраивать, хотя это сомнительно.

Всё же надо как-то локализовать проблему — где возникает. Вот ушёл второй запрос, что на RR порте? Он (порт) готов принимать запрос? Или может там уже после второго tready в нуле. Или, например, только на третьем затыкается. Или и после третьего не затыкается, но просто уже не проходит — ломается где-то дальше. По тому, что ругается на таймаут, похоже на то, что запрос где-то потерялся и ядро вернуло ошибку таймаута.

Адреса (если по адресам запросы идут) посмотрите внимательно — корректные ли. На уровне TLP 32-разрядные запросы можно метать только в 32-разрядно-адресуемую память, а  и 64-разрядные — в 64-разрядно-адресуемую. Хотя тут не TLP, а их проприетарный интерфейс. Но может есть какие-то нюансы. 

Не включен ли на хосте IOMMU, может он там вносит коррективы.

Пока идеи кончились. 🙂

 

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


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

Может, у вас банально кривой драйвер на чипсет (свитч) в системе стоит? Или какая-нибудь экзотическая аппаратная шалость, в виде, например, неподходящего по стандарту генератора опорной частоты? Помнится, когда-то давно сталкивался с подобной проблемой на какой-то матери: опорный кварц имел отклонение чуть больше ppm, чем вытаскивает Elastic Buffer. Простите, могу в терминологии путаться, давно дело было.

Покупные PCIE устройства в используемом слоте работают?

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


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

12 hours ago, dxp said:

У вас тут не самая простая топология — коммутатор имеется, проблема может быть на любом уровне.

Выяснили: на том же CPC-512 воткнули в дальние слоты (трудно это было) и... Всё заработало! Значит всё упирается в PCI-E Switch. Но я ведь правильно понимаю, что его наличие должно оставаться для устройства абсолютно прозрачным и в прошивке это учитывать вообще никак не надо? Если надо то как, получать топологию, какой то иной адрес запроса делать?

33 minutes ago, fingertouch said:

Может, у вас банально кривой драйвер на чипсет (свитч) в системе стоит? Покупные PCIE устройства в используемом слоте работают?

Пробовали более новые ОС - ничего не исправилось, дело не в драйвере конкретной ОС. На свитч точно нужно драйвер? Просто как он тогда без драйвера обеспечивает первичную энумерацию?

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


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

20 минут назад, 1891ВМ12Я сказал:

На свитч точно нужно драйвер? Просто как он тогда без драйвера обеспечивает первичную энумерацию?

Опять же, прошу простить, если что-то помню неверно. Но коль скоро switch имеет конфигурационное пространство, то и настраивать его кто-то должен. Могу, конечно, превратно помнить такие подробности, поскольку сам занимался только аппаратной частью, но кажется, программисты даже из него что-то вычитывали. 

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


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

11 часов назад, 1891ВМ12Я сказал:

На свитч точно нужно драйвер? Просто как он тогда без драйвера обеспечивает первичную энумерацию?

Обычно это входит в драйвер чипсета (часто и свичи в "южном" мосте). Енумерацию проходит, но корректно ли после этого работает — вот вопрос. Там может быть инициализация проходит на уровне стандартных действий, а конкретный свич требует ещё какие-то специфичные действия, которые обеспечивает проприетарный для этого компонента драйвер. По типу как с видеокартами — все они как-то обнаруживаются системой и что-то выдают. Но чтобы извлечь из видеокарты её настоящий потенциал, необходимо использовать специализированный драйвер для неё.

Другие PCIe устройства в этом слоте исправно работают?

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


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

9 hours ago, dxp said:

Другие PCIe устройства в этом слоте исправно работают?

Увы, никаких других устройств просто тупо нет в наличии. Было бы любопытно, но к сожалению нет. Пример с видеокартой - великолепный. Сейчас перепиливаю на 128-байтный payload прошивку, куда деваться. Точнее при помощи ifdef else end делаю вариацию для 256/128 байт. Затем попробую собрать ультра-распоследнее свежайшее ядро туда. Ведь где еще взять драйвер на Linux для этого switch? Отдельно не лежит

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


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

58 минут назад, 1891ВМ12Я сказал:

Ведь где еще взять драйвер на Linux для этого switch? Отдельно не лежит

Он штатно входит в ядро и я ни разу не видел специфичного драйвера для PCIE-мостов.

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


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

On 3/28/2023 at 3:20 PM, makc said:

Он штатно входит в ядро и я ни разу не видел специфичного драйвера для PCIE-мостов.

Сегодня пробовали свежайшее ультра-последнее ядро Linux 6.2.8 + Debian 10, собрал со всеми драйверами и свитча и dma engine самой последней версии драйвер (тоже разработчик PLX), собрал вручную. Всё то же самое, значит это не баг старой версии, и либо что то в биосе не так, либо я всё таки делаю что то не так. Предположим что 90% скорее моя где то ошибка, но почему без switch напрямую всё работает. Что же я не учел, вообще не представляю. Тэги разные пробовал. Если я делаю запрос - кто должен выдавать тэг? Я выдавать

 

Какая может быть интересно несовместимость, а главное в чем. Опять мысль про адресацию 32-64 бита, но я убедился что DMA у меня 32 битные и маска по дефолту dma_mask 32 бита

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


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

50 минут назад, 1891ВМ12Я сказал:

Предположим что 90% скорее моя где то ошибка, но почему без switch напрямую всё работает.

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

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


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

58 minutes ago, makc said:

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

Прилагаю лог, но это чуть устаревший файл, System peripheral: PLX Technology, Inc. Device 87d0 также имеет драйвер plx_dma

 

Утром добуду полный lspci свежий, где устройство торчит в проблемном слоте

Screenshot_20230329_182217.png

pci_20230329_1.txt

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


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

13 минут назад, 1891ВМ12Я сказал:

Утром добуду полный lspci свежий, где устройство торчит в проблемном слоте

Сделайте два снимка состояния с помощью lspci: сразу после загрузки и после попытки обмена через DMA. И выложите их сюда.

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


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

10 hours ago, makc said:

Сделайте два снимка состояния с помощью lspci: сразу после загрузки и после попытки обмена через DMA. И выложите их сюда.

Два файла - до и после. После - загрузился драйвер и там при старте обмен произошел - запрошен MRd. Я их при помощи kdiff3 сравниваю, и вот что вижу!

PCI bridge: PLX Technology, Inc. Device 8725 было FatalErr- а стало FatalErr+

Ваш совет посмотреть - помог увидеть проблему! А у моего устройства вот что: AERCap: First Error Pointer: 0e - как извлечь код ошибки из этого факта? Что за 0x0E?

lspci_20230330_1.tar.gz
lspci_before.txt
lspci_after.txt

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


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

4 минуты назад, 1891ВМ12Я сказал:

Два файла - до и после.

Похоже проблема всё-таки в том, как вы формируете или как у вас отправляется TLP:

image.thumb.png.1f04dd2d287b54ab97adf3a97f700a1c.png

FatalErr+ и MalfTLP+ прямо на это намекают.

Вообще говоря у вас при этом в dmesg должны были появляться сообщения от AER, если только вы его не заглушили.

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


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

3 minutes ago, makc said:

Похоже проблема всё-таки в том, как вы формируете или как у вас отправляется TLP:

У моего устройства вот что: AERCap: First Error Pointer: 0e - как извлечь код ошибки из этого факта? Что за 0x0E?

Да, MalfTLP+ вижу, malformed TLP

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


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

Цитата

The Fatal Error Reporting bit or bit 2 is set for any of the following reasons:

Protocol error  

Receive buffer overflow

Flow Control error  

Malformed TLP

 

4 минуты назад, 1891ВМ12Я сказал:

У моего устройства вот что: AERCap: First Error Pointer: 0e - как извлечь код ошибки из этого факта? Что за 0x0E?

image.thumb.png.16aceaf133b26d97a680b93f9d5560a8.png

4 минуты назад, 1891ВМ12Я сказал:

Да, MalfTLP+ вижу, malformed TLP

Нужно лечить эту проблему. Разные мосты по-разному относятся к отклонениям от требования стандарта и при некоторых раскладах вам могло неповезти с излишне дотошным мостом.

Распишите в удобоваримом для человека виде отправляемый TLP в виде массива 32-битных значений, чтобы можно было удобно читать и сверять со стандартом и давайте разбираться с ним.

В стандарте полно оговорок приблизительно такого вида:

Цитата

Receivers may optionally check for violations of these rules (but must not check Reserved bits).
These checks are independently optional (see Section ...). If a Receiver implementing these
checks determines that a TLP violates these rules, the TLP is a Malformed TLP.

Соответственно, PLX может проверять что-то, что не проверяют другие и это пока полностью укладывается в наблюдаемую вами картину.

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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