AMD GPU内存管理(1):概览

这篇具有很好参考价值的文章主要介绍了AMD GPU内存管理(1):概览。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考内核代码:Linux-6.1/driver/gpu/drm/amd

HMM

待更新......

dumb buffer create/map

        在AMDGPU的Graphics业务中,用到了GEM(Graphics Execution Manager),它是用于内核内部管理图形缓冲区,用户空间进程可以通过GEM来创建、处理和销毁GPU中视频内容的内存对象。如下是AMD GPU注册得drm_driver回调

static const struct drm_driver amdgpu_kms_driver = {
    ......
    .dumb_create = amdgpu_mode_dumb_create,
    .dumb_map_offset = amdgpu_mode_dumb_mmap,
    ......
};

        其中:DRM_IOCTL_MODE_CREATE_DUMB中调用amdgpu_mode_dumb_create来分配dumb buffer。这里需要注意amdgpu_mode_dumb_create最终仍然是调用了TTM来分配内存。文章来源地址https://www.toymoban.com/news/detail-416698.html

int drm_mode_create_dumb(struct drm_device *dev,
			 struct drm_mode_create_dumb *args,
			 struct 

到了这里,关于AMD GPU内存管理(1):概览的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深入理解Linux内核——内存管理(2)

    提要:本系列文章主要参考 MIT 6.828课程 以及两本书籍 《深入理解Linux内核》 《深入Linux内核架构》 对Linux内核内容进行总结。 内存管理的实现覆盖了多个领域: 内存中的物理内存页的管理 分配大块内存的伙伴系统 分配较小内存的slab、slub、slob分配器 分配非连续内存块的

    2024年02月13日
    浏览(40)
  • 深入理解Linux内核——内存管理(3)

    提要:本系列文章主要参考 MIT 6.828课程 以及两本书籍 《深入理解Linux内核》 《深入Linux内核架构》 对Linux内核内容进行总结。 内存管理的实现覆盖了多个领域: 内存中的物理内存页的管理 分配大块内存的伙伴系统 分配较小内存的slab、slub、slob分配器 分配非连续内存块的

    2024年02月13日
    浏览(40)
  • 【嵌入式环境下linux内核及驱动学习笔记-(10-内核内存管理)】

    对于包含MMU(内存管理单元)的处理器而言,linux系统以虚拟内存的方式为每个进程分配最大4GB的内存。这真的4GB的内存空间被分为两个部分–用户空间 与 内核空间。用户空间地地址分布为0~3GB,剩下的3 ~ 4GB 为内核空间。如下图。 用户进程通常只能访问用户空间的虚拟地址

    2024年02月11日
    浏览(53)
  • 深入理解Linux内核——内存管理(4)——伙伴系统(1)

    提要:本系列文章主要参考 MIT 6.828课程 以及两本书籍 《深入理解Linux内核》 《深入Linux内核架构》 对Linux内核内容进行总结。 内存管理的实现覆盖了多个领域: 内存中的物理内存页的管理 分配大块内存的伙伴系统 分配较小内存的slab、slub、slob分配器 分配非连续内存块的

    2024年02月10日
    浏览(50)
  • 【Linux 内核源码分析】内存管理——Slab 分配器

    在Linux内核中,伙伴分配器是一种内存管理方式,以页为单位进行内存的管理和分配。但是在内核中,经常会面临结构体内存分配问题,而这些结构体的大小通常是小于一页的。如果使用伙伴分配器来分配这些小内存,将造成很大的内存浪费。因此,为了解决这个问题,Sun公

    2024年02月22日
    浏览(55)
  • Linux内核中内存管理相关配置项的详细解析15

    接前一篇文章:Linux内核中内存管理相关配置项的详细解析14 对应配置变量为:CONFIG_PTE_MARKER_UFFD_WP。 此项只有选中和不选中两种状态,默认为选中。 此项的内核源码详细解释为: Allows to create marker PTEs for userfaultfd write protection purposes. It is required to enable userfaultfd write protecti

    2024年02月08日
    浏览(42)
  • Linux内核中内存管理相关配置项的详细解析5

    接前一篇文章:Linux内核中内存管理相关配置项的详细解析4 对应配置变量为:CONFIG_SHUFFLE_PAGE_ALLOCATOR。 此项只有选中和不选中两种状态,默认为选中。 此项的内核源码详细解释为: Randomization of the page allocator improves the average utilization of a direct-mapped memory-side-cache. See section 5

    2024年02月08日
    浏览(37)
  • Linux 内核内存管理 virt_to_page 函数

    virt_to_page宏根据内核虚拟地址返回其struct page 结构体指针。 x86_64: virt_to_page(kaddr) 宏通过__pa宏将虚拟地址转换为物理地址,然后右移PAGE_SHIFT(12位)位将物理地址转换为页帧号pfn,最后调用pfn_to_page将页帧号pfn转换为struct page 结构体指针,实现了将虚拟地址转换为对应struc

    2024年02月12日
    浏览(34)
  • Spark内核解析-内存管理7(六)

    Spark 作为一个基于内存的分布式计算引擎,其内存管理模块在整个系统中扮演着非常重要的角色。理解 Spark 内存管理的基本原理,有助于更好地开发 Spark 应用程序和进行性能调优。本文中阐述的原理基于 Spark 2.1 版本。 在执行 Spark 的应用程序时,Spark 集群会启动 Driver 和

    2024年02月03日
    浏览(40)
  • Linux 内核学习 3 - 虚拟内存和物理内存

    虚拟内存其实是 CPU 和操作系统使用的一个障眼法,联手给进程编织了一个假象,让进程误以为自己独占了全部的内存空间 : 在 32 位系统中,进程以为自己独占了 3G 的内存空间。 在 64 位系统中,进程以为自己独占了 128T 的内存空间。 这么做的好处是,操作系统为每个进程

    2024年01月21日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包