I Linux çekirdeği için FPGA sürücüsü üzerinde çalışıyorum. Kod x86 üzerinde iyi çalışıyor gibi görünüyor, ancak x86_64 üzerinde bazı sorunlarım var. DMA akışı gerçekleştirdim.Akış DMA PCIE linux çekirdek sürücüsü
get_user_pages(...);
for (...) {
sg_set_page();
}
pci_map_sg();
Ama pci_map_sg
PAGE_SIZE
tarafından hizalanmamıştır 0xbd285800
gibi adresler, döndü, bu yüzden tam ilk sayfayı gönderemezsiniz gibi PCIE şartname
"İstekler belirtmemelidir diyor çünkü Yani, gider 412 KB sınırını geçmek için bir Bellek Alanı erişimine neden olan bir Adres/Uzunluk birleşimi. "
Hizalanmış adresler almanın bir yolu var mı, yoksa önemli bir şeyi mi özledim?
Source code of DMA. akla gelen
Gerçek kaynağınızdan kod ekleyebilir misiniz? Böceği tespit etmek için yeterli yok. –
Evet, tabiki. Orijinal yayına eklenmiştir. – soh
@soh: Bunu halka açıklamak için bir plan var mı? Açık bir sürücü için etrafa bakıyordum ve iyi bir tane bulamadım. Kendimi yazmak için çok tembel olmak, test etmede yardımcı olmaktan ve yardımcı olmaktan memnuniyet duyarım. –