2017-08-03 3 views
1

Ich möchte auf PCIe IO von Userland zugreifen.io_remap_pfn_range Problem auf PowerPC

Im Modultreiber kann ich mit dem von ioremap() zurückgegebenen Zeiger ohne Probleme schreiben/lesen.

Von userland, ich möchte den Zeiger von mmap() zurückgegeben, aber der Host hängt, was ich schreibe oder auf dem PCIe-Bus lesen. Ich implementierte den Aufruf von mmap in der Dateioperationsstruktur, die io_remap_pfn_range(vma, vma->vm_start, start >> PAGE_SHIFT, vma->vm_end - vma->vm_start, vma->vm_page_prot); aufruft, wobei Start der Wert ist, der von pci_resource_start() zurückgegeben wird.

Was habe ich vermisst?

Beachten Sie, dass mein Modul auf x86 funktioniert.

Danke,

Fred

+0

Versuchen Sie auf den PCIe * IO * - oder PCIe - Speicherplatz zuzugreifen? –

+0

Hallo, ich versuche auf PCIe IO-Platz zuzugreifen. – Fred

Antwort

1

Die POWER-Architektur PCIe IO nicht greift unterstützen; Sie müssen stattdessen PCIe-Speicherzyklen verwenden. Es ist wahrscheinlich, dass Ihr PCIe-Gerät über eine entsprechende Ressource für MMIO-Speicherplatz verfügt, die Sie möglicherweise verwenden können.

Abhängig von Ihrer Verwendung können Sie auch Zugriffe auf die resource<N> Dateien in sysfs unter /sys/bus/pci/devices/<id> durchführen. Dies kann bedeuten, dass Sie überhaupt keinen Kernel-Code benötigen.

+0

OK, danke. Ich habe Lese-/Schreibmethoden implementiert, damit ich vom Gerät aus E/A-Zugriffe ausführen kann. Es ist nicht so schlimm. – Fred

Verwandte Themen