Области памяти не отображаются в 'lspci -vv' при использовании 'моста AXI для подсистемы PCI Express Gen3.0' - PullRequest
0 голосов
/ 26 ноября 2018

Мы разрабатываем систему с пользовательским процессором, Microblaze и некоторыми периферийными устройствами в FPGA VC709 с использованием Xilinx Vivado.Мы используем два «PCIe: BAR» в «AXI Bridge для PCI Express».

Первоначально команда «lspci -vv» использовалась для отображения областей памяти в терминале Ubuntu.

$ lspci -vv 
  0a:00.0 Memory controller: Xilinx Corporation Device 7038         | 0a:00.0 Memory controller: Xilinx Corporation Device 7018             
      Subsystem: Xilinx Corporation Device 0007                     |          Subsystem: Xilinx Corporation Device 0008                     
      Physical Slot: 3                                              |          Physical Slot: 3
      Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- Pa|          Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- Pa
      Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-|          Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
      Interrupt: pin A routed to IRQ 16                             |          Interrupt: pin A routed to IRQ 16
      Region 0: Memory at fbff0000 (32-bit, non-prefetchable) [size=|  ----------------------------------------------------------------------
      Region 1: Memory at fb800000 (32-bit, non-prefetchable) [size=|  ----------------------------------------------------------------------
      Capabilities: <access denied>                                 |          Capabilities: <access denied>
      Kernel modules: riffa

Я создал копию проекта и отредактировал что-то в дизайне (что, к сожалению, не помню), и теперь результат lspci -vv выглядит следующим образом.Обратите внимание, что Регион 0 и Регион 1 сейчас отсутствуют.

$ lspci -vv 
0a:00.0 Memory controller: Xilinx Corporation Device 7018
            Subsystem: Xilinx Corporation Device 0008
            Physical Slot: 3
            Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR- FastB2B- DisINTx-
            Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
            Interrupt: pin A routed to IRQ 16
            Capabilities: <access denied>
            Kernel modules: riffa

В: В чем может быть причина?

Примечания:

  1. Конструкция и соединения блоков одинаковы для обоих проектов
  2. Опции для «моста AXI для подсистемы PCI Express Gen3.0» одинаковы в обоих проектах

Спасибо:)

Дополнительная информация, требуемая сообществом

$ sudo lspci -vv

0a:00.0 Memory controller: Xilinx Corporation Device 7018
Subsystem: Xilinx Corporation Device 0008
Physical Slot: 3
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin A routed to IRQ 16
Capabilities: [80] Power Management version 3
	Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
	Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [90] MSI: Enable- Count=1/1 Maskable- 64bit+
	Address: 0000000000000000  Data: 0000
Capabilities: [c0] Express (v2) Endpoint, MSI 00
	DevCap:	MaxPayload 512 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us
		ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
	DevCtl:	Report errors: Correctable- Non-Fatal+ Fatal+ Unsupported-
		RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+
		MaxPayload 128 bytes, MaxReadReq 4096 bytes
	DevSta:	CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr- TransPend-
	LnkCap:	Port #0, Speed 2.5GT/s, Width x8, ASPM unknown, Latency L0 unlimited, L1 unlimited
		ClockPM- Surprise- LLActRep- BwNot-
	LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+
		ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
	LnkSta:	Speed 2.5GT/s, Width x4, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
	DevCap2: Completion Timeout: Range B, TimeoutDis+
	DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-
	LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-, Selectable De-emphasis: -6dB
		 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
		 Compliance De-emphasis: -6dB
	LnkSta2: Current De-emphasis Level: -6dB
Capabilities: [100 v2] Advanced Error Reporting
	UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-
	UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-
	UESvrt:	DLP- SDES+ TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
	CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
	CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
	AERCap:	First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
Kernel modules: riffa

$ sudo od -tx1z -Ax /proc/bus/pci/0a/00.0

000000 ee 10 38 70 43 00 10 00 00 00 80 05 10 00 00 00  >..8pC...........<
000010 00 00 ff fb 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000020 00 00 00 00 00 00 00 00 00 00 00 00 ee 10 07 00  >................<
000030 00 00 00 00 80 00 00 00 00 00 00 00 0b 01 00 00  >................<
000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
*
000080 01 90 03 00 08 00 00 00 00 00 00 00 00 00 00 00  >................<
000090 05 c0 80 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
0000a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
0000b0 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
0000c0 10 00 02 00 02 80 00 00 16 58 09 00 83 f0 43 00  >.........X....C.<
0000d0 40 00 42 10 00 00 00 00 00 00 00 00 00 00 00 00  >@.B.............<
0000e0 00 00 00 00 12 00 00 00 00 00 00 00 0e 00 00 00  >................<
0000f0 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
000100 01 00 02 30 00 00 10 00 00 00 10 00 20 00 00 00  >...0........ ...<
000110 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >. ..............<
000120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
*
000150 03 00 01 30 00 00 00 00 00 00 00 00 00 00 00 00  >...0............<
000160 04 00 41 27 00 00 00 00 f0 80 0b 00 00 00 00 00  >..A'............<
000170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
*
0001b0 00 00 00 00 00 00 00 00 18 00 01 30 00 00 00 00  >...........0....<
0001c0 16 00 01 30 07 00 00 00 00 00 00 00 00 01 00 00  >...0............<
0001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
*
000270 00 00 00 00 17 00 01 30 05 00 00 00 00 00 00 00  >.......0........<
000280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
*
000300 19 00 01 00 00 00 00 00 00 00 00 00 7f 7f 7f 7f  >................<
000310 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 00 00 00 00  >................<
000320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
*
0003c0 02 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
0003d0 00 00 00 00 01 00 00 80 00 00 00 00 00 00 00 00  >................<
0003e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  >................<
*
001000

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Я вижу, что это 32-разрядный BAR без предварительной выборки

Я обнаружил аналогичную проблему при использовании ПЛИС Altera.Если бы я делал бары 32-битными, они не появлялись, когда я делал lspci.Когда я перешел на 64-битные предварительно выбираемые BAR, я увидел их, как и ожидалось, при запуске lspci.

0 голосов
/ 04 декабря 2018

Память в вашем устройстве не включена (я не заметил этого в первую очередь).

В списке устройств слева, в строке управления, у вас есть «Mem +», но справа у вас есть «Mem-» (то же самое для доступа ввода / вывода).В спецификации PCI флаг Mem - это бит 1 регистра команд.

Как правило, в linux драйвер вызывает функцию pci_enable_device, которая переводит устройство в оперативный режим и обеспечивает доступ к памяти и / или вводу-выводу в соответствии с указаниями драйвера (то есть записывает 1 в один илиоба бита).См. Также Documentation / PCI / pci.txt для получения инструкций по написанию драйверов.

Я предполагаю, что lspci просто не показывает BAR, потому что пространство памяти устройства не включено;похоже, что тому же адресу - 0xfbff0000 - присвоено как минимум BAR 0 (см. смещение 0x10 в / proc / bus / pci dump).В слоте адреса BAR 1 со смещением 0x14 не запрограммирован адрес.

...