"Can't find an IRQ for your NVIDIA card!" error when running CUDA example on armv7.

Hello!

I’m not sure if this is the right forum, since I will eventually be using the GPU solely for computation, but at this point I’m having trouble even running the CUDA examples, and the error strikes me more as a Linux question than a computation-specific one. I apologize if this lands in the wrong place!

I’m running headless on a Linaro build of Ubuntu 14.04, with a 3.13 kernel specifically built for the Xilinx Zynq-7000, on an avnet mini-ITX board: http://zedboard.org/product/mini-itx

The Zynq-7000 is an FPGA married to two ARM Cortex A9 cores aka armv7/armhf. I’ve got a GTX 660 Ti in the single PCIe 4x slot, and I can see it on the PCIe bus using lspci:

root@linaro-developer:~# lspci
00:00.0 PCI bridge: Xilinx Corporation Device 0706
01:00.0 VGA compatible controller: NVIDIA Corporation GK104 [GeForce GTX 660 Ti] (rev a1)

I have the CUDA toolkit 6.5 installed from this link: http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/armhf/cuda-repo-ubuntu1404_6.5-14_armhf.deb

I have the nvidia-340 driver installed via ‘apt-get install nvidia-340’. During that installation, the module built against the natively-built kernel source successfully.

For the CUDA samples, I cross-built them from a Ubuntu 14.04 x64 machine; they built successfully there, but when I attempt to run the matrixMul sample program (a program I was confident wouldn’t balk at the lack of an X server), I get this in dmesg:

[ 3259.872635] NVRM: Can’t find an IRQ for your NVIDIA card!
[ 3259.872636] NVRM: Please check your BIOS settings.
[ 3259.872637] NVRM: [Plug & Play OS] should be set to NO
[ 3259.872637] NVRM: [Assign IRQ to VGA] should be set to YES
[ 3259.872638] nvidia: probe of 0000:01:00.0 failed with error -1
[ 3259.872640] NVRM: The NVIDIA probe routine failed for 1 device(s).
[ 3259.872641] NVRM: None of the NVIDIA graphics adapters were initialized!
[ 3259.872643] NVRM: NVIDIA init module failed!

On an Intel system with a BIOS, I would know where to go with this, but on an ARM I’m less certain. Here is my device tree entry for the PCIe bus:

axi_pcie_0: axi-pcie@50000000 {
#address-cells = <3>;
#size-cells = <2>;
compatible = “xlnx,axi-pcie-1.05.a”;
interrupt-parent = <&ps7_scugic_0>;
interrupts = <0 59 4 >;
ranges = <0x2000000 0x0 0x60000000 0x60000000 0x0 0xc000000>;
reg = <0x50000000 0xc000000>;
xlnx,axi-aclk-freq-hz = <0x7735940>;
xlnx,axibar-0 = <0x60000000>;
xlnx,axibar-1 = <0xffffffff>;
xlnx,axibar-2 = <0xffffffff>;
xlnx,axibar-3 = <0xffffffff>;
xlnx,axibar-4 = <0xffffffff>;
xlnx,axibar-5 = <0xffffffff>;
xlnx,axibar-as-0 = <0x0>;
xlnx,axibar-as-1 = <0x0>;
xlnx,axibar-as-2 = <0x0>;
xlnx,axibar-as-3 = <0x0>;
xlnx,axibar-as-4 = <0x0>;
xlnx,axibar-as-5 = <0x0>;
xlnx,axibar-highaddr-0 = <0x6fffffff>;
xlnx,axibar-highaddr-1 = <0x0>;
xlnx,axibar-highaddr-2 = <0x0>;
xlnx,axibar-highaddr-3 = <0x0>;
xlnx,axibar-highaddr-4 = <0x0>;
xlnx,axibar-highaddr-5 = <0x0>;
xlnx,axibar-num = <0x1>;
xlnx,axibar2pciebar-0 = <0x60000000>;
xlnx,axibar2pciebar-1 = <0x0>;
xlnx,axibar2pciebar-2 = <0x0>;
xlnx,axibar2pciebar-3 = <0x0>;
xlnx,axibar2pciebar-4 = <0x0>;
xlnx,axibar2pciebar-5 = <0x0>;
xlnx,class-code = <0x60400>;
xlnx,comp-timeout = <0x1>;
xlnx,device-id = <0x706>;
xlnx,ep-link-partner-rcb = <0x0>;
xlnx,family = “zynq”;
xlnx,include-baroffset-reg = <0x1>;
xlnx,include-rc = <0x1>;
xlnx,instance = “axi_pcie_0”;
xlnx,interrupt-pin = <0x0>;
xlnx,max-link-speed = <0x0>;
xlnx,no-of-lanes = <0x4>;
xlnx,num-msi-req = <0x0>;
xlnx,pcie-blk-locn = <0x0>;
xlnx,pcie-cap-slot-implemented = <0x1>;
xlnx,pcie-use-mode = “3.0”;
xlnx,pciebar-as = <0x0>;
xlnx,pciebar-len-0 = <0x1e>;
xlnx,pciebar-len-1 = <0xd>;
xlnx,pciebar-len-2 = <0xd>;
xlnx,pciebar-num = <0x1>;
xlnx,pciebar2axibar-0 = <0x0>;
xlnx,pciebar2axibar-0-sec = <0x1>;
xlnx,pciebar2axibar-1 = <0xffffffff>;
xlnx,pciebar2axibar-1-sec = <0x1>;
xlnx,pciebar2axibar-2 = <0xffffffff>;
xlnx,pciebar2axibar-2-sec = <0x1>;
xlnx,ref-clk-freq = <0x0>;
xlnx,ref-clk-freq-hz = <0x5f5e100>;
xlnx,rev-id = <0x0>;
xlnx,s-axi-ctl-aclk-freq-hz = <0x7735940>;
xlnx,s-axi-ctl-protocol = “AXI4LITE”;
xlnx,s-axi-id-width = <0x1>;
xlnx,s-axi-support-threads = <0x1>;
xlnx,s-axi-supports-narrow-burst = <0x1>;
xlnx,s-axi-supports-read = <0x1>;
xlnx,s-axi-supports-write = <0x1>;
xlnx,subsystem-id = <0x6100>;
xlnx,subsystem-vendor-id = <0x0>;
xlnx,vendor-id = <0x10ee>;
} ;

I’m comfortable trying or changing anything that needs to be done to get this to work, including kernel configuration, device tree, etc, if anyone has any suggestions. Any help is much appreciated!
nvidia-bug-report.log.gz (13.8 KB)

Per info in the attached nvida-bug-report log, it looks like a problem in kernel or BIOS, rather than a CUDA problem.
On Jetson TK1 board, we don’t have issues while running CUDA samples with L4T images.

[kenrel info]:

I’m running headless on a Linaro build of Ubuntu 14.04, with a 3.13 kernel specifically built for the Xilinx Zynq-7000

[In the attached nvidia-bug-report log]:

[ 64.416866] —[ end trace 3542e3647049dc78 ]—
[ 64.416866] NVRM: Can’t find an IRQ for your NVIDIA card!
[ 64.416866] NVRM: Please check your BIOS settings.
[ 64.416866] NVRM: [Plug & Play OS] should be set to NO
[ 64.416866] NVRM: [Assign IRQ to VGA] should be set to YES
[ 64.416866] nvidia: probe of 0000:01:00.0 failed with error -1
[ 64.416868] NVRM: The NVIDIA probe routine failed for 1 device(s).
[ 64.416868] NVRM: None of the NVIDIA graphics adapters were initialized!
[ 64.416869] NVRM: NVIDIA init module failed!

Does this system support NVIDIA GPU? I suggest to contact Xilinx to get support.

Thanks for looking at the log, Sandip.

This system should (in theory) be able to support NVidia GPUs, but as far as I know, no one has shown a working system before with this processor (Zynq-7000)

I’ll keep focusing on the device tree blob and/or hardware configuration.

Thanks again!