我正在研究用于Linux内核的FPGA驱动程序.代码似乎在x86上工作正常,但在x86_64上我遇到了一些问题.我实现了流式DMA.所以它就像
get_user_pages(...);
for (...) {
sg_set_page();
}
pci_map_sg();
Run Code Online (Sandbox Code Playgroud)
但pci_map_sg返回的地址就像是0xbd285800,它们没有对齐PAGE_SIZE,所以我无法发送完整的第一页,因为PCIE规范说
"请求不得指定地址/长度组合,这会导致内存空间访问跨越4 KB边界."
有没有办法获得对齐的地址,还是我错过了一些重要的东西?