嘗試安裝 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(”Intel(R) Stratix 10 FPGA“)”
進行這些修改後,驅動程式即可成功安裝並正常工作。
此問題目前未計劃修復。