问题1:implicit declaration of function "mmiowb()"
解决方法:在 libxdma.c 和 cdev_xvc.c 文件中注释掉所有 mmiowb () 函数调用
问题2: "macro"access_ok"passed 3 arguments, but takes just 2"
解决方法:修改 cdev_ctrl.c 文件中两处 access_ok 宏调用
- result = !access_ok(VERIFY_READ, (void __user *)arg,
+ result = !access_ok((void __user *)arg,
问题3: "implicit declaration of function ‘pci_cleanup_aer_uncorrect_error_status’"
解决方法:在 xdma_mod.c 文件中添加版本判断,根据内核版本选择不同的函数调用
static void xdma_error_resume(struct pci_dev *pdev){struct xdma_pci_dev *xpdev = dev_get_drvdata(&pdev->dev);pr_info("dev 0x%p,0x%p.\n", pdev, xpdev);
+#if KERNEL_VERSION(5, 7, 0) <= LINUX_VERSION_CODEpci_aer_clear_nonfatal_status(pdev);
+#elsepci_cleanup_aer_uncorrect_error_status(pdev);
+#endif
}