c - 使用 pci_alloc_consistent 分配内存的限制是多少?

标签 c linux-kernel linux-device-driver

当我尝试使用 - pci_alloc_concient 分配 600 个 2 MB 内存块时,为什么会发生 cpuacct_charge 内核崩溃,有更好的方法吗?

最佳答案

您可能用完了 32 位可寻址内存。

如果您的 PCIe 芯片实际上支持更大的地址,则您的驱动程序应使用 dma_set_mask 和 dma_set_consistent_mask 来告诉内核这一点。 (请参阅文档/DMA-API-HOWTO.txt。)

关于c - 使用 pci_alloc_consistent 分配内存的限制是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17471831/

相关文章:

c - 二维数组的大小在哪里以及如何使用点将 1 维变为 2 维?

linux-kernel - 从用户空间到内核空间的回调

c - 如何对 Linux 内核中的特定函数进行基准测试或跟踪?

linux - 自旋锁原子上下文期间的抢占和休眠

Linux PCI 驱动程序调用 init,但不调用probe

linux-kernel - 将设备树中断标志映射到 devm_request_irq

c - Vim 自动完成 C 中的结构

c - 卡在从文本文件中获取标题上

c - 二维数组内存分配出错时如何正确释放

linux - 在linux内核/文档中编译特定程序