Beim Versuch, den vom R-Tile Avalon® Streaming FPGA IP for PCI Express* Designbeispiel in CentOS* 8 generierten Beispieltreiber zu installieren, werden Fehlermeldungen wie die unten gezeigten angezeigt:
Fehler: Makro "access_ok" hat 3 Argumente übergeben, benötigt aber nur 2
if(! access_ok(VERIFY_WRITE, buf, sizeof(buf))) {
Fehler: "access_ok" nicht deklariert (erste Verwendung in dieser Funktion)
if(! access_ok(VERIFY_WRITE, buf, sizeof(buf))) {
Eine Nichtübereinstimmung des Linux*-Kernels verursacht diese Fehler. Die folgenden Schritte können helfen, dieses Problem zu beheben:
- In intel_fpga_pcie_chr.c ist das erste Argument (VERIFY_WRITE/VERIFY_READ) der Funktion "access_ok" zu streichen.
- Ersetzen Sie in intel_fpga_pcie_ioctl.c den Namen der Funktion "dma_zalloc_coherent" durch "dma_alloc_coherent"
- Ändern Sie in intel_fpga_pcie_ioctl.c in "access_ok(uarg, sizeof(uarg))" das Argument uarg in (void__user *)uarg
- Ersetzen Sie in intel_fpga_pcie_setup.c den Namen der Funktion "ioremap_nocache" durch "ioremap_cache".
- Kommentieren Sie in intel_fpga_pcie_setup.c die Codezeile "MODULE_SUPPORTED_DEVICE("Intel(R) Stratix 10 FPGA")"
Der Treiber kann erfolgreich installiert werden und funktioniert nach diesen Änderungen ordnungsgemäß.
Die Behebung dieses Problems ist derzeit nicht geplant.