ReturnAddress Asked: 2025-03-11 22:21:30 +0800 CST2025-03-11 22:21:30 +0800 CST 2025-03-11 22:21:30 +0800 CST 使用 dma_alloc_coherent() 分配物理连续内存 772 我在使用 dma_alloc_coherent(NULL, 1, &ack_physical_address, GFP_KERNEL); 时遇到了问题,导致空指针引用,从而引发 #PF。我想创建一个 1 字节的连续小物理内存位置。 linux-kernel 1 个回答 Voted Best Answer Uzair Ali 2025-03-11T23:59:17+08:002025-03-11T23:59:17+08:00 dma_alloc_coherent ()的第一个参数不能为NULL,因为它需要一个有效的struct device。请改为传递一个有效的设备指针。此外,由于 DMA 分配通常与页面或缓存行大小对齐,因此仅请求1 个字节可能不切实际。请尝试请求完整的缓存行(例如 64 字节)。
dma_alloc_coherent ()的第一个参数不能为NULL,因为它需要一个有效的struct device。请改为传递一个有效的设备指针。此外,由于 DMA 分配通常与页面或缓存行大小对齐,因此仅请求1 个字节可能不切实际。请尝试请求完整的缓存行(例如 64 字节)。