ci sto lavorando conducente FPGA per il kernel Linux. Il codice sembra funzionare bene su x86, ma su x86_64 ho alcuni problemi. Ho implementato lo streaming DMA. Così va comestreaming DMA in PCIE driver del kernel linux
get_user_pages(...);
for (...) {
sg_set_page();
}
pci_map_sg();
Ma pci_map_sg
restituito indirizzi come 0xbd285800
, che non sono allineati con PAGE_SIZE
, quindi non può inviare prima pagina, perché le specifiche PCIE dice
"Le richieste non devono specificare una combinazione Indirizzo/Lunghezza che consente a un accesso allo spazio di memoria per superare un limite di 4 KB. "
C'è un modo per ottenere indirizzi allineati o mi sono perso qualcosa di importante?
Puoi includere il codice dalla fonte reale? Non ce n'è abbastanza per individuare il bug. –
Sì, certo. Allegato al post originale. – soh
@soh: Qualche piano per rilasciarlo al pubblico? Stavo cercando un driver aperto e non sono riuscito a trovarne uno buono. Essendo troppo pigro per scrivere il mio, sarei più che felice di contribuire e aiutare con i test. –