Intel PCIe Hard IP Trouble With EFI
I have a fpga design using the Intel Hard IP for PCIe on the Intel Cyclone 10GX development board. The design works well when using traditional BIOS booting, but I'm seeing a very large number of Avalon MM bus issues when booting with EFI. Reads from fpga registers often return trash in the EFI case. Any ideas what the problem may be?
Quartus 22.1 Pro. I've also tried Quartus 21.4 and have the same issue. In both the traditional BIOS and EFI cases I'm seeing the physical address of the PCIe card being mapped in the 32bit address space of the PC host. The PC host is an Intel PC running 64 bit Linux. Same FPGA image in both cases.
Avalon busing appears broken, then you can use the linux 'lspci -vvv' command to verify if the host has correctly set the PCIe endpoint Control register.
As example below, the software driver at host side should set the Memory Space Enable bit[1] and Bus Master bit[2] in Command register to 1.
bit[1] Memory_Space_enable must set (Mem+)
bit[2] Bus_Master must set (BusMater+)