2016-08-12 27 views
1

나는 PCI BAR0을 통해 FPGA 메모리에 액세스해야하는 프로젝트에서 일하고 있습니다 사용자 공간. 내가 나이가 커널에서 수행하는 데 사용 무엇리눅스 커널 4.7 (아치 ARM64)은 PCI BAR0을 위해/sys/bus/pci/devices/* /에 "resource0"파일을 만들지 않습니다

/SYS/버스/PCI/장치/my_device/에있는 다음을 노출하는 의 mmap() 기능을 사용한다 resource0라는 이름의 파일 열려 FPGA 메모리를 사용자 공간에 할당합니다.

커널 버전 4.7 (아키텍처 ARM64)에서는 resource0 파일이 생성되지 않은 것으로 보입니다.

lspci을 사용하면 시스템이 FPGA의 PCI BAR을 인식하는 것을 알 수 있습니다. 또한 /sys/bus/pci/devices/my_device/ 디렉토리를 검색하면 리소스이라는 파일이 있으며 여기에 쓰여진 PCI BAR의 주소가 있음을 알 수 있습니다.

비슷한 상황에 익숙한 사람이 있습니까? 어떻게하면 리눅스가 리소스 0 파일을 만들 수 있습니까?

+0

아마도 이전 커널은 32 비트 였을 것입니까? –

답변

2

귀하의 걱정을 이해합니다. 업스트림에서 허용되지 않은 트리 패치를 사용해보십시오.

https://patchwork.codeaurora.org/patch/2059/

http://lists.infradead.org/pipermail/linux-arm-kernel/2015-July/359435.html

그것은 당신이 사용자 공간에서 PCI 리소스 파일을 매핑하는 데 도움이 될 것이다.

+0

도와 주셔서 감사합니다! 이 해결 방법은 내 문제의 해결책 인 것으로 보이지만 패치를 적용하는 방법을 알지 못합니다! 테스트 할 때 피드백을 드리겠습니다. –

+0

패치에 대한 의견은 vfio-pci를 사용하여 제안했습니다. 아마도 sysfs 대신에이 모듈을 사용할 수도 있습니다. –