Hello again!
I'm hoping to get help getting NVIDIA's nvidia-340 module to insert on Ubuntu 14.04 running on the ZYNQ-7000.
On the last post I created, I was trying to get the PCIe bus recognized in Ubuntu 14.04, and I was successful with this forum's help.
I've now got the mini-ITX board running headless with Ubuntu (Linaro) 14.04, running Xilinx's 3.13 kernel. I can see my card, an NVIDIA GTX 660 Ti, on the PCIe bus, I can see that it initializes on the bus properly, and lspci shows that the card looks healthy.
root@linaro-developer:~/samples# 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)
lshw shows the PCIe bus, and the card shows up and looks healthy, and more importantly hasn't been claimed by any other modules:
*-pci
description: PCI bridge
product: Xilinx Corporation
vendor: Xilinx Corporation
physical id: 0
bus info: pci@0000:00:00.0
version: 00
width: 32 bits
clock: 33MHz
capabilities: pci pm msi pciexpress normal_decode bus_master cap_list
resources: ioport:1000(size=4096) memory:60000000-6bffffff
*-display UNCLAIMED
description: VGA compatible controller
product: GK104 [GeForce GTX 660 Ti]
vendor: NVIDIA Corporation
physical id: 0
bus info: pci@0000:01:00.0
version: a1
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress vga_controller cap_list
configuration: latency=0
resources: memory:6a000000-6affffff memory:60000000-67ffffff memory:68000000-69ffffff ioport:1000(size=128) memory:6b000000-6b07ffff
I built the nvidia-340 module against my kernel's natively-compiled (I compiled the kernel on the mini-ITX itself to make the correct source available) code and headers, and it built successfully. When I attempt to modprobe the driver, it fails:
root@linaro-developer:~/samples# modprobe nvidia
modprobe: ERROR: could not insert 'nvidia_340': No such device
Looking at dmesg, it complains that it cannot find an IRQ for the NVIDIA card:
root@linaro-developer:~/samples# dmesg | tail
[<c0082f20>] (SyS_finit_module+0x88/0xa0) from [<c000e5a0>] (ret_fast_syscall+0x0/0x48)
---[ end trace 9c2b35f227d16bf6 ]---
NVRM: Can't find an IRQ for your NVIDIA card!
NVRM: Please check your BIOS settings.
NVRM: [Plug & Play OS] should be set to NO
NVRM: [Assign IRQ to VGA] should be set to YES
nvidia: probe of 0000:01:00.0 failed with error -1
NVRM: The NVIDIA probe routine failed for 1 device(s).
NVRM: None of the NVIDIA graphics adapters were initialized!
NVRM: NVIDIA init module failed!
I've tried everything I can think of, and posts on NVIDIA forums haven't turned up anything useful. For reference, here's my current entry in my device tree, where I've tried to use "advanced interrupt mapping" to clarify IRQ mapping:
axi_pcie_0: axi-pcie@50000000 {
t#address-cells = <3>;
t#size-cells = <2>;
t#interrupt-cells = <1>;
tcompatible = "xlnx,axi-pcie-2.3", "xlnx,axi-pcie-1.05.a";
tinterrupt-parent = <&ps7_scugic_0>;
tinterrupts = <0 29 4>;
tinterrupt-map-mask = <0 0 0 7>;
tinterrupt-map = <0 0 0 1 &ps7_scugic_0 1>,
ttt<0 0 0 2 &ps7_scugic_0 2>,
ttt<0 0 0 3 &ps7_scugic_0 3>,
ttt<0 0 0 4 &ps7_scugic_0 4>;
tranges = <0x2000000 0x0 0x60000000 0x60000000 0x0 0xc000000>;
treg = <0x50000000 0xc000000>;
tdevice_type = "pci";
txlnx,axi-aclk-freq-hz = <0x7735940>;
txlnx,axibar-0 = <0x60000000>;
txlnx,axibar-1 = <0xffffffff>;
txlnx,axibar-2 = <0xffffffff>;
txlnx,axibar-3 = <0xffffffff>;
txlnx,axibar-4 = <0xffffffff>;
txlnx,axibar-5 = <0xffffffff>;
txlnx,axibar-as-0 = <0x0>;
txlnx,axibar-as-1 = <0x0>;
txlnx,axibar-as-2 = <0x0>;
txlnx,axibar-as-3 = <0x0>;
txlnx,axibar-as-4 = <0x0>;
txlnx,axibar-as-5 = <0x0>;
txlnx,axibar-highaddr-0 = <0x6fffffff>;
txlnx,axibar-highaddr-1 = <0x0>;
txlnx,axibar-highaddr-2 = <0x0>;
txlnx,axibar-highaddr-3 = <0x0>;
txlnx,axibar-highaddr-4 = <0x0>;
txlnx,axibar-highaddr-5 = <0x0>;
txlnx,axibar-num = <0x1>;
txlnx,axibar2pciebar-0 = <0x60000000>;
txlnx,axibar2pciebar-1 = <0x0>;
txlnx,axibar2pciebar-2 = <0x0>;
txlnx,axibar2pciebar-3 = <0x0>;
txlnx,axibar2pciebar-4 = <0x0>;
txlnx,axibar2pciebar-5 = <0x0>;
txlnx,class-code = <0x60400>;
txlnx,comp-timeout = <0x1>;
txlnx,device-id = <0x706>;
txlnx,ep-link-partner-rcb = <0x0>;
txlnx,family = "zynq";
txlnx,include-baroffset-reg = <0x1>;
txlnx,include-rc = <0x1>;
txlnx,instance = "axi_pcie_0";
txlnx,interrupt-pin = <0x0>;
txlnx,max-link-speed = <0x0>;
txlnx,no-of-lanes = <0x4>;
txlnx,num-msi-req = <0x0>;
txlnx,pcie-blk-locn = <0x0>;
txlnx,pcie-cap-slot-implemented = <0x1>;
txlnx,pcie-use-mode = "3.0";
txlnx,pciebar-as = <0x0>;
txlnx,pciebar-len-0 = <0x1e>;
txlnx,pciebar-len-1 = <0xd>;
txlnx,pciebar-len-2 = <0xd>;
txlnx,pciebar-num = <0x1>;
txlnx,pciebar2axibar-0 = <0x0>;
txlnx,pciebar2axibar-0-sec = <0x1>;
txlnx,pciebar2axibar-1 = <0xffffffff>;
txlnx,pciebar2axibar-1-sec = <0x1>;
txlnx,pciebar2axibar-2 = <0xffffffff>;
txlnx,pciebar2axibar-2-sec = <0x1>;
txlnx,ref-clk-freq = <0x0>;
txlnx,ref-clk-freq-hz = <0x5f5e100>;
txlnx,rev-id = <0x0>;
txlnx,s-axi-ctl-aclk-freq-hz = <0x7735940>;
txlnx,s-axi-ctl-protocol = "AXI4LITE";
txlnx,s-axi-id-width = <0x1>;
txlnx,s-axi-support-threads = <0x1>;
txlnx,s-axi-supports-narrow-burst = <0x1>;
txlnx,s-axi-supports-read = <0x1>;
txlnx,s-axi-supports-write = <0x1>;
txlnx,subsystem-id = <0x6100>;
txlnx,subsystem-vendor-id = <0x0>;
txlnx,vendor-id = <0x10ee>;
} ;
Is there any help anyone can give? I'm especially interested in any insight into more advanced device tree configuration for the axi-pcie, or a way to get more debugging information out of modprobe, but any information is much appreciated.
At this point, I'm at a loss, and I'm quickly coming to the conclusion that the miniITX isn't going to work for my application.
Thanks!