3. 已知问题和限制

  • devm_memremap_pages 注册 VRAM 到 ZONE_DEVICE 时,需要消耗系统内存用于创建对应的 struct page,对应 64GB 的 VRAM,需要消耗 1GB 的系统内存。

  • 系统中 GPU BAR0 的物理地址不能超过 Linux 最大物理地址(MAX_PHYSMEM_BITS)。如果超过了,MAS 会被禁用,内核日志可以看到如下记录:

    METAX.B300.D0.BASE.INFO VRAM PA exceeds limit!
    
  • 由于注册 ZONE_DEVICE 会推高 high_memory,在开启 KASLR 的情况下,可能造成直接映射区和 VMALLOC 区地址区间发生冲突。 MAS 初始化的时候会做检测,如何发现冲突,MAS 会被禁用,内核日志可以看到如下记录:

    METAX.B300.D0.BASE.INFO last page exceeds VMALLOC_START!
    

    这时可以尝试关闭 KASLR。

  • 只支持同步的读写操作。