- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm referencing the L-Tile and H-Tile Avalon MM+ Intel FPGA IP for PCI Express User Guide (2024.09.13).
On page 19 and after compiling the design example, it wants the user to install the Linux kernel driver which tests the PCI link for reads/writes.
After I change the permission on the install, load and unload files, I then install the driver using sudo ./install
it outputs a lot of errors.
make -C /lib/modules/6.12.0-120.el10.x86_64/build M=/home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux clean
make[1]: Entering directory '/usr/src/kernels/6.12.0-120.el10.x86_64'
make[1]: Leaving directory '/usr/src/kernels/6.12.0-120.el10.x86_64'
make -C /lib/modules/6.12.0-120.el10.x86_64/build M=/home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux modules
make[1]: Entering directory '/usr/src/kernels/6.12.0-120.el10.x86_64'
CC [M] /home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.o
/home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.c: In function ‘chr_mmap’:
/home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.c:313:19: error: assignment of read-only member ‘vm_flags’
313 | vma->vm_flags |= VM_PFNMAP | VM_DONTCOPY | VM_DONTEXPAND;
| ^~
In file included from ./include/linux/printk.h:6,
from ./include/linux/kernel.h:31,
from ./include/linux/cpumask.h:11,
from ./include/linux/smp.h:13,
from ./include/linux/lockdep.h:14,
from ./include/linux/mutex.h:17,
from ./include/linux/kernfs.h:11,
from ./include/linux/sysfs.h:16,
from ./include/linux/kobject.h:20,
from ./include/linux/cdev.h:5,
from /home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_setup.h:47,
from /home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.h:47,
from /home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.c:45:
/home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.c: In function ‘intel_fpga_pcie_chr_init’:
./include/linux/init.h:180:22: error: passing argument 1 of ‘class_create’ from incompatible pointer type [-Wincompatible-pointer-types]
180 | #define THIS_MODULE (&__this_module)
| ~^~~~~~~~~~~~~~~
| |
| struct module *
/home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.c:355:40: note: in expansion of macro ‘THIS_MODULE’
355 | global_bk.chr_class = class_create(THIS_MODULE,
| ^~~~~~~~~~~
In file included from ./include/linux/device.h:30,
from ./include/linux/cdev.h:8:
./include/linux/device/class.h:226:54: note: expected ‘const char *’ but argument is of type ‘struct module *’
226 | struct class * __must_check class_create(const char *name);
| ~~~~~~~~~~~~^~~~
/home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.c:355:27: error: too many arguments to function ‘class_create’
355 | global_bk.chr_class = class_create(THIS_MODULE,
| ^~~~~~~~~~~~
./include/linux/device/class.h:226:29: note: declared here
226 | struct class * __must_check class_create(const char *name);
| ^~~~~~~~~~~~
/home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.c: In function ‘chr_access’:
/home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.c:536:50: error: macro "access_ok" passed 3 arguments, but takes just 2
536 | if(! access_ok(VERIFY_WRITE, buf, sizeof(buf))) {
| ^
In file included from ./arch/x86/include/asm/uaccess.h:25,
from ./include/linux/uaccess.h:12,
from ./include/linux/sched/task.h:13,
from ./include/linux/sched/signal.h:9,
from ./include/linux/rcuwait.h:6,
from ./include/linux/percpu-rwsem.h:7,
from ./include/linux/fs.h:33,
from ./include/linux/compat.h:17,
from ./arch/x86/include/asm/ia32.h:7,
from ./arch/x86/include/asm/elf.h:10,
from ./include/linux/elf.h:6,
from ./include/linux/module.h:19,
from ./include/linux/device/driver.h:21,
from ./include/linux/device.h:32:
./include/asm-generic/access_ok.h:45:9: note: macro "access_ok" defined here
45 | #define access_ok(addr, size) likely(__access_ok(addr, size))
| ^~~~~~~~~
/home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.c:536:10: error: ‘access_ok’ undeclared (first use in this function)
536 | if(! access_ok(VERIFY_WRITE, buf, sizeof(buf))) {
| ^~~~~~~~~
/home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.c:536:10: note: each undeclared identifier is reported only once for each function it appears in
make[3]: *** [scripts/Makefile.build:229: /home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux/intel_fpga_pcie_chr.o] Error 1
make[2]: *** [/usr/src/kernels/6.12.0-120.el10.x86_64/Makefile:1994: /home/rhobbs/Documents/avmm_bridge_512_0_example_design/software/kernel/linux] Error 2
make[1]: *** [Makefile:242: __sub-make] Error 2
make[1]: Leaving directory '/usr/src/kernels/6.12.0-120.el10.x86_64'
make: *** [Makefile:17: all] Error 2
insmod: ERROR: could not load module ./intel_fpga_pcie_drv.ko: No such file or directory
Could someone please tell me what corrections are needed to install the driver?
After I did that, I then proceeded to step 4 which says verify the driver installation, and it lists nothing, so it did not work. This is supposed to be an out of the box solution, you just perform the steps to install the driver. I need someone to please verify it works on there machine as well.
For reference, this was done on CentOS 10 [Coughlin] using Quartus Prime Pro Edition 25.1 (latest)
Thanks
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Embeddedesigner,
Thanks for reaching out.
Based on the error messages, the driver compilation failed due to kernel API compatibility issues.
The PCIe driver provided by the Design Example ( L-Tile and H-Tile Avalon MM+ Intel FPGA IP for PCI Express User Guide (2024.09.13)) was built using an older kernel version. According to the Design Example directory (../software/kernel/linux/README):
The driver was developed and tested on CentOS 7.0, 64-bit with 3.10.514 kernel compiled for x86_64 architecture.
Please ensure that your OS and kernel version meet the software requirements for installing the Linux kernel driver. As you use a different OS and kernel version, you will need to manually update the driver’s Kernel API to be compatible with your current OS.
Thanks.
Best Regards,
Ven

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page