void *buf = to GPU Shader

void *buf = to GPU Shader An architecture diagram generated by Archify. void *buf = · malloc(4 MB) (userspace, scattered physical … · Architecture component void *buf = malloc(4 MB) (userspace, scattered physical … get_user_pages() · Pin pages in RAM Return page array · Architecture component get_user_pages() Pin pages in RAM Return page array sg_table · Scatter-gather list of physical pages · Architecture component sg_table Scatter-gather list of physical pages IOMMU (AMD-Vi) · dma_map_sg() Contiguous IOVA from scattered … · Architecture component IOMMU (AMD-Vi) dma_map_sg() Contiguous IOVA from scattered … GART · amdgpu_gart_bind() GPU virtual address → IOV… · Architecture component GART amdgpu_gart_bind() GPU virtual address → IOV… GPU Shader · reads gpu_addr 0x1000 GPU TLB translates DMA… · Architecture component GPU Shader reads gpu_addr 0x1000 GPU TLB translates DMA… Legend Frontend Backend External

Chain

  • • 6 steps, one path
  • • Edge labels omitted for clarity