尝试为 CentOS* 8 中的 PCI Express* 设计示例安装由 R-Tile Avalon® Streaming FPGA IP 生成的示例驱动程序时,将看到如下所示的错误消息:
错误:宏“access_ok”传递了 3 个参数,但只需要 2 个参数
if(! access_ok(VERIFY_WRITE, buf, sizeof(buf))) {
错误:“access_ok”未声明(首次在此函数中使用)
if(! access_ok(VERIFY_WRITE, buf, sizeof(buf))) {
Linux* 内核不匹配会导致这些错误。以下步骤可以帮助解决此问题:
- 在 intel_fpga_pcie_chr.c 中,删除 函数“access_ok”的第一个参数 (VERIFY_WRITE/VERIFY_READ)
- 在 intel_fpga_pcie_ioctl.c 中,将函数 “dma_zalloc_coherent” 的名称替换为 “dma_alloc_coherent”
- 在 intel_fpga_pcie_ioctl.c 中,在“access_ok(uarg, sizeof(uarg))”中,将参数 uarg 更改为 (void__user *)uarg
- 在 intel_fpga_pcie_setup.c 中,将函数“ioremap_nocache”的名称替换为“ioremap_cache”
- 在 intel_fpga_pcie_setup.c 中,注释代码行 “MODULE_SUPPORTED_DEVICE(”英特尔® Stratix 10 FPGA“)”
进行这些修改后,驱动程序可以成功安装并正常工作。
此问题当前未计划修复。