Memory 我如何告诉kmalloc使用大(>;2M)页面?

Memory 我如何告诉kmalloc使用大(>;2M)页面?,memory,pager,opensuse,kmalloc,Memory,Pager,Opensuse,Kmalloc,我正在编写一个设备驱动程序,为DMA分配一个大的缓冲区。我的系统使用(或者我相信是这样)4k页面,我希望它使用更大的页面,即至少2M页面 我怎样才能: 在系统中启用大页面(或检查是否已启用) 指定当前的kmalloc应使用大页面 我不确定如何准确分配大页面,因此我无法直接回答这个问题,但请注意,通常由于内存碎片,大页面根本不可用。如果您的设备(或IOMMU)支持分散-聚集DMA,那么最好使用它,而不是使用单个巨型缓冲区;否则,您将需要在启动过程的早期保留内存,此时仍有大量连续的可用物理内存块。

我正在编写一个设备驱动程序,为DMA分配一个大的缓冲区。我的系统使用(或者我相信是这样)4k页面,我希望它使用更大的页面,即至少2M页面

我怎样才能:

  • 在系统中启用大页面(或检查是否已启用)
  • 指定当前的
    kmalloc
    应使用大页面

我不确定如何准确分配大页面,因此我无法直接回答这个问题,但请注意,通常由于内存碎片,大页面根本不可用。如果您的设备(或IOMMU)支持分散-聚集DMA,那么最好使用它,而不是使用单个巨型缓冲区;否则,您将需要在启动过程的早期保留内存,此时仍有大量连续的可用物理内存块。我不确定如何准确分配大页面,因此我无法直接回答这个问题,但请注意,通常由于内存碎片,大页面根本不可用。如果您的设备(或IOMMU)支持分散-聚集DMA,那么最好使用它,而不是使用单个巨型缓冲区;否则,您将需要在启动过程的早期保留内存,此时仍有大量连续的可用物理内存块。