Lines Matching full:mapping
218 * State for vm_bo objects meaning the underlying BO had mapping changes (move, PRT bind/unbind)
957 * amdgpu_vm_map_gart - Resolve gart mapping of addr
1122 * @pages_addr: DMA addresses to use for mapping
1289 struct amdgpu_bo_va_mapping *mapping; in amdgpu_vm_bo_update() local
1338 /* Implicitly sync to moving fences before mapping anything */ in amdgpu_vm_bo_update()
1375 list_for_each_entry(mapping, &bo_va->invalids, list) { in amdgpu_vm_bo_update()
1381 if (!(mapping->flags & AMDGPU_VM_PAGE_READABLE)) in amdgpu_vm_bo_update()
1383 if (!(mapping->flags & AMDGPU_VM_PAGE_WRITEABLE)) in amdgpu_vm_bo_update()
1386 /* Apply ASIC specific mapping flags */ in amdgpu_vm_bo_update()
1387 amdgpu_gmc_get_vm_pte(adev, vm, bo, mapping->flags, in amdgpu_vm_bo_update()
1390 trace_amdgpu_vm_bo_update(mapping); in amdgpu_vm_bo_update()
1393 !uncached, &sync, mapping->start, in amdgpu_vm_bo_update()
1394 mapping->last, update_flags, in amdgpu_vm_bo_update()
1395 mapping->offset, vram_base, mem, in amdgpu_vm_bo_update()
1414 * A PRT/sparse mapping has no BO and is kept off the vm_bo in amdgpu_vm_bo_update()
1427 list_for_each_entry(mapping, &bo_va->valids, list) in amdgpu_vm_bo_update()
1428 trace_amdgpu_vm_bo_mapping(mapping); in amdgpu_vm_bo_update()
1521 * amdgpu_vm_free_mapping - free a mapping
1525 * @mapping: mapping to be freed
1528 * Free a mapping and make sure we decrease the PRT usage count if applicable.
1532 struct amdgpu_bo_va_mapping *mapping, in amdgpu_vm_free_mapping() argument
1535 if (mapping->flags & AMDGPU_VM_PAGE_PRT) in amdgpu_vm_free_mapping()
1537 kfree(mapping); in amdgpu_vm_free_mapping()
1580 struct amdgpu_bo_va_mapping *mapping; in amdgpu_vm_clear_freed() local
1599 mapping = list_first_entry(&vm->freed, in amdgpu_vm_clear_freed()
1601 list_del(&mapping->list); in amdgpu_vm_clear_freed()
1604 &sync, mapping->start, mapping->last, in amdgpu_vm_clear_freed()
1606 amdgpu_vm_free_mapping(adev, vm, mapping, f); in amdgpu_vm_clear_freed()
1798 * amdgpu_vm_bo_insert_map - insert a new mapping
1802 * @mapping: the mapping to insert
1804 * Insert a new mapping into all structures.
1808 struct amdgpu_bo_va_mapping *mapping) in amdgpu_vm_bo_insert_map() argument
1813 mapping->bo_va = bo_va; in amdgpu_vm_bo_insert_map()
1814 list_add(&mapping->list, &bo_va->invalids); in amdgpu_vm_bo_insert_map()
1815 amdgpu_vm_it_insert(mapping, &vm->va); in amdgpu_vm_bo_insert_map()
1817 if (mapping->flags & AMDGPU_VM_PAGE_PRT) in amdgpu_vm_bo_insert_map()
1823 trace_amdgpu_vm_bo_map(bo_va, mapping); in amdgpu_vm_bo_insert_map()
1867 * Add a mapping of the BO at the specefied addr into the VM.
1879 struct amdgpu_bo_va_mapping *mapping, *tmp; in amdgpu_vm_bo_map() local
1901 mapping = kmalloc_obj(*mapping); in amdgpu_vm_bo_map()
1902 if (!mapping) in amdgpu_vm_bo_map()
1905 mapping->start = saddr; in amdgpu_vm_bo_map()
1906 mapping->last = eaddr; in amdgpu_vm_bo_map()
1907 mapping->offset = offset; in amdgpu_vm_bo_map()
1908 mapping->flags = flags; in amdgpu_vm_bo_map()
1910 amdgpu_vm_bo_insert_map(adev, bo_va, mapping); in amdgpu_vm_bo_map()
1925 * Add a mapping of the BO at the specefied addr into the VM. Replace existing
1938 struct amdgpu_bo_va_mapping *mapping; in amdgpu_vm_bo_replace_map() local
1948 mapping = kmalloc_obj(*mapping); in amdgpu_vm_bo_replace_map()
1949 if (!mapping) in amdgpu_vm_bo_replace_map()
1954 kfree(mapping); in amdgpu_vm_bo_replace_map()
1961 mapping->start = saddr; in amdgpu_vm_bo_replace_map()
1962 mapping->last = eaddr; in amdgpu_vm_bo_replace_map()
1963 mapping->offset = offset; in amdgpu_vm_bo_replace_map()
1964 mapping->flags = flags; in amdgpu_vm_bo_replace_map()
1966 amdgpu_vm_bo_insert_map(adev, bo_va, mapping); in amdgpu_vm_bo_replace_map()
1972 * amdgpu_vm_bo_unmap - remove bo mapping from vm
1978 * Remove a mapping of the BO at the specefied addr from the VM.
1989 struct amdgpu_bo_va_mapping *mapping; in amdgpu_vm_bo_unmap() local
1995 list_for_each_entry(mapping, &bo_va->valids, list) { in amdgpu_vm_bo_unmap()
1996 if (mapping->start == saddr) in amdgpu_vm_bo_unmap()
2000 if (&mapping->list == &bo_va->valids) { in amdgpu_vm_bo_unmap()
2003 list_for_each_entry(mapping, &bo_va->invalids, list) { in amdgpu_vm_bo_unmap()
2004 if (mapping->start == saddr) in amdgpu_vm_bo_unmap()
2008 if (&mapping->list == &bo_va->invalids) in amdgpu_vm_bo_unmap()
2012 /* It's unlikely to happen that the mapping userq hasn't been idled in amdgpu_vm_bo_unmap()
2017 amdgpu_userq_gem_va_unmap_validate(adev, mapping); in amdgpu_vm_bo_unmap()
2019 list_del(&mapping->list); in amdgpu_vm_bo_unmap()
2020 amdgpu_vm_it_remove(mapping, &vm->va); in amdgpu_vm_bo_unmap()
2021 mapping->bo_va = NULL; in amdgpu_vm_bo_unmap()
2022 trace_amdgpu_vm_bo_unmap(bo_va, mapping); in amdgpu_vm_bo_unmap()
2025 list_add(&mapping->list, &vm->freed); in amdgpu_vm_bo_unmap()
2027 amdgpu_vm_free_mapping(adev, vm, mapping, in amdgpu_vm_bo_unmap()
2078 /* Remember mapping split at the start */ in amdgpu_vm_bo_clear_mappings()
2088 /* Remember mapping split at the end */ in amdgpu_vm_bo_clear_mappings()
2120 /* Insert partial mapping before the range */ in amdgpu_vm_bo_clear_mappings()
2135 /* Insert partial mapping after the range */ in amdgpu_vm_bo_clear_mappings()
2154 * amdgpu_vm_bo_lookup_mapping - find mapping by address
2159 * Find a mapping by it's address.
2181 struct amdgpu_bo_va_mapping *mapping; in amdgpu_vm_bo_trace_cs() local
2186 for (mapping = amdgpu_vm_it_iter_first(&vm->va, 0, U64_MAX); mapping; in amdgpu_vm_bo_trace_cs()
2187 mapping = amdgpu_vm_it_iter_next(mapping, 0, U64_MAX)) { in amdgpu_vm_bo_trace_cs()
2188 if (mapping->bo_va && mapping->bo_va->base.bo) { in amdgpu_vm_bo_trace_cs()
2191 bo = mapping->bo_va->base.bo; in amdgpu_vm_bo_trace_cs()
2197 trace_amdgpu_vm_bo_cs(mapping); in amdgpu_vm_bo_trace_cs()
2214 struct amdgpu_bo_va_mapping *mapping, *next; in amdgpu_vm_bo_del() local
2241 list_for_each_entry_safe(mapping, next, &bo_va->valids, list) { in amdgpu_vm_bo_del()
2242 list_del(&mapping->list); in amdgpu_vm_bo_del()
2243 amdgpu_vm_it_remove(mapping, &vm->va); in amdgpu_vm_bo_del()
2244 mapping->bo_va = NULL; in amdgpu_vm_bo_del()
2245 trace_amdgpu_vm_bo_unmap(bo_va, mapping); in amdgpu_vm_bo_del()
2246 list_add(&mapping->list, &vm->freed); in amdgpu_vm_bo_del()
2248 list_for_each_entry_safe(mapping, next, &bo_va->invalids, list) { in amdgpu_vm_bo_del()
2249 list_del(&mapping->list); in amdgpu_vm_bo_del()
2250 amdgpu_vm_it_remove(mapping, &vm->va); in amdgpu_vm_bo_del()
2251 amdgpu_vm_free_mapping(adev, vm, mapping, in amdgpu_vm_bo_del()
2773 struct amdgpu_bo_va_mapping *mapping, *tmp; in amdgpu_vm_fini() local
2791 list_for_each_entry_safe(mapping, tmp, &vm->freed, list) { in amdgpu_vm_fini()
2792 if (mapping->flags & AMDGPU_VM_PAGE_PRT && prt_fini_needed) { in amdgpu_vm_fini()
2797 list_del(&mapping->list); in amdgpu_vm_fini()
2798 amdgpu_vm_free_mapping(adev, vm, mapping, NULL); in amdgpu_vm_fini()
2811 rbtree_postorder_for_each_entry_safe(mapping, tmp, in amdgpu_vm_fini()
2813 /* Don't remove the mapping here, we don't want to trigger a in amdgpu_vm_fini()
2816 list_del(&mapping->list); in amdgpu_vm_fini()
2817 kfree(mapping); in amdgpu_vm_fini()