PCI Express* の R タイル・Avalon®・ストリーミング・FPGA IP のデザイン例で生成されたドライバー例を CentOS* 8 にインストールしようとすると、以下のようなエラーメッセージが表示されます。
エラー:マクロ "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" の第 1 引数 (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")」をコメントします。
ドライバーは正常にインストールでき、これらの変更後に正しく動作します。
この問題は現在修正される予定はありません。