ikwzm / udmabuf

User space mappable dma buffer device driver for Linux.
BSD 2-Clause "Simplified" License
539 stars 165 forks source link

udmabuf can't be build on kernel >= 6.6.0 #114

Closed stan-servaenergy closed 9 months ago

stan-servaenergy commented 9 months ago

When trying to build udmabuf on kernel>=6.6.0 following error is produced:

make -C /lib/modules/6.6.1-060601-generic/build ARCH=x86_64 CROSS_COMPILE= M=/home/stan/Projects/readers/cyclone_pcie_driver/udmabuf CONFIG_U_DMA_BUF=m modules
make[1]: Entering directory '/usr/src/linux-headers-6.6.1-060601-generic'
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: x86_64-linux-gnu-gcc-13 (Ubuntu 13.2.0-6ubuntu1) 13.2.0
  You are using:           gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0
  CC [M]  /home/stan/Projects/readers/cyclone_pcie_driver/udmabuf/u-dma-buf.o
  MODPOST /home/stan/Projects/readers/cyclone_pcie_driver/udmabuf/Module.symvers
ERROR: modpost: "pcie_port_bus_type" [/home/stan/Projects/readers/cyclone_pcie_driver/udmabuf/u-dma-buf.ko] undefined!
make[3]: *** [scripts/Makefile.modpost:145: /home/stan/Projects/readers/cyclone_pcie_driver/udmabuf/Module.symvers] Error 1
make[2]: *** [/usr/src/linux-headers-6.6.1-060601-generic/Makefile:1871: modpost] Error 2
make[1]: *** [Makefile:234: __sub-make] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-6.6.1-060601-generic'
make: *** [Makefile:38: all] Error 2

I believe the reason is that Linux kernel 6.6.0 has unexported pcie_port_bus_type which is needed by udmabuf.

Unfortunately I'm not familiar enough with either udmabuf or kernel source to provide a fix.

ikwzm commented 9 months ago

Thank you for the issue.

Removed pcie_port_bus_type from udmabuf_available_bus_type_list[] so that u-dma-buf can be successfully built on linux kernel 6.6. As a result of this action, "pci_express" can no longer be specified as the parent device. We appreciate your understanding, and apologize for inconvenience. Thank you.