Lines Matching refs:desc
40 nvkm_vmm_pt_new(const struct nvkm_vmm_desc *desc, bool sparse, in nvkm_vmm_pt_new() argument
43 const u32 pten = 1 << desc->bits; in nvkm_vmm_pt_new()
47 if (desc->type > PGT) { in nvkm_vmm_pt_new()
48 if (desc->type == SPT) { in nvkm_vmm_pt_new()
49 const struct nvkm_vmm_desc *pair = page[-1].desc; in nvkm_vmm_pt_new()
50 lpte = pten >> (desc->bits - pair->bits); in nvkm_vmm_pt_new()
61 if (desc->type == PGD) { in nvkm_vmm_pt_new()
74 const struct nvkm_vmm_desc *desc; member
85 nvkm_vmm_desc_type(const struct nvkm_vmm_desc *desc) in nvkm_vmm_desc_type() argument
87 switch (desc->type) { in nvkm_vmm_desc_type()
140 const struct nvkm_vmm_desc *desc = it->desc; in nvkm_vmm_unref_pdes() local
141 const int type = desc[it->lvl].type == SPT; in nvkm_vmm_unref_pdes()
151 const struct nvkm_vmm_desc_func *func = desc[it->lvl].func; in nvkm_vmm_unref_pdes()
153 TRA(it, "PDE unmap %s", nvkm_vmm_desc_type(&desc[it->lvl - 1])); in nvkm_vmm_unref_pdes()
189 TRA(it, "PDE free %s", nvkm_vmm_desc_type(&desc[it->lvl - 1])); in nvkm_vmm_unref_pdes()
198 const struct nvkm_vmm_desc *desc, u32 ptei, u32 ptes) in nvkm_vmm_unref_sptes() argument
200 const struct nvkm_vmm_desc *pair = it->page[-1].desc; in nvkm_vmm_unref_sptes()
201 const u32 sptb = desc->bits - pair->bits; in nvkm_vmm_unref_sptes()
260 const struct nvkm_vmm_desc *desc = it->desc; in nvkm_vmm_unref_ptes() local
261 const int type = desc->type == SPT; in nvkm_vmm_unref_ptes()
267 dma = desc->func->pfn_clear(it->vmm, pgt->pt[type], ptei, ptes); in nvkm_vmm_unref_ptes()
272 desc->func->pfn_unmap(it->vmm, pgt->pt[type], ptei, ptes); in nvkm_vmm_unref_ptes()
280 if (desc->type == SPT && (pgt->refs[0] || pgt->refs[1])) in nvkm_vmm_unref_ptes()
281 nvkm_vmm_unref_sptes(it, pgt, desc, ptei, ptes); in nvkm_vmm_unref_ptes()
286 TRA(it, "%s empty", nvkm_vmm_desc_type(desc)); in nvkm_vmm_unref_ptes()
297 const struct nvkm_vmm_desc *desc, u32 ptei, u32 ptes) in nvkm_vmm_ref_sptes() argument
299 const struct nvkm_vmm_desc *pair = it->page[-1].desc; in nvkm_vmm_ref_sptes()
300 const u32 sptb = desc->bits - pair->bits; in nvkm_vmm_ref_sptes()
348 desc->func->sparse(vmm, pgt->pt[1], spti, sptc); in nvkm_vmm_ref_sptes()
366 const struct nvkm_vmm_desc *desc = it->desc; in nvkm_vmm_ref_ptes() local
367 const int type = desc->type == SPT; in nvkm_vmm_ref_ptes()
374 if (desc->type == SPT) in nvkm_vmm_ref_ptes()
375 nvkm_vmm_ref_sptes(it, pgt, desc, ptei, ptes); in nvkm_vmm_ref_ptes()
381 nvkm_vmm_sparse_ptes(const struct nvkm_vmm_desc *desc, in nvkm_vmm_sparse_ptes() argument
384 if (desc->type == PGD) { in nvkm_vmm_sparse_ptes()
388 if (desc->type == LPT) { in nvkm_vmm_sparse_ptes()
397 if (it->desc->type == PGD) in nvkm_vmm_sparse_unref_ptes()
400 if (it->desc->type == LPT) in nvkm_vmm_sparse_unref_ptes()
408 nvkm_vmm_sparse_ptes(it->desc, it->pt[0], ptei, ptes); in nvkm_vmm_sparse_ref_ptes()
415 const struct nvkm_vmm_desc *desc = &it->desc[it->lvl - 1]; in nvkm_vmm_ref_hwpt() local
416 const int type = desc->type == SPT; in nvkm_vmm_ref_hwpt()
418 const bool zero = !pgt->sparse && !desc->func->invalid; in nvkm_vmm_ref_hwpt()
422 u32 pten = 1 << desc->bits; in nvkm_vmm_ref_hwpt()
424 u32 size = desc->size * pten; in nvkm_vmm_ref_hwpt()
428 pgt->pt[type] = nvkm_mmu_ptc_get(mmu, size, desc->align, zero); in nvkm_vmm_ref_hwpt()
440 if (desc->type == LPT && pgt->refs[1]) { in nvkm_vmm_ref_hwpt()
457 desc->func->sparse(vmm, pt, pteb, ptes); in nvkm_vmm_ref_hwpt()
459 desc->func->invalid(vmm, pt, pteb, ptes); in nvkm_vmm_ref_hwpt()
462 desc->func->unmap(vmm, pt, pteb, ptes); in nvkm_vmm_ref_hwpt()
469 nvkm_vmm_sparse_ptes(desc, pgt, 0, pten); in nvkm_vmm_ref_hwpt()
470 desc->func->sparse(vmm, pt, 0, pten); in nvkm_vmm_ref_hwpt()
472 desc->func->invalid(vmm, pt, 0, pten); in nvkm_vmm_ref_hwpt()
477 TRA(it, "PDE write %s", nvkm_vmm_desc_type(desc)); in nvkm_vmm_ref_hwpt()
478 it->desc[it->lvl].func->pde(it->vmm, pgd, pdei); in nvkm_vmm_ref_hwpt()
486 const struct nvkm_vmm_desc *desc = &it->desc[it->lvl - 1]; in nvkm_vmm_ref_swpt() local
489 pgt = nvkm_vmm_pt_new(desc, NVKM_VMM_PDE_SPARSED(pgt), it->page); in nvkm_vmm_ref_swpt()
507 const struct nvkm_vmm_desc *desc = page->desc; in nvkm_vmm_iter() local
512 it.desc = desc; in nvkm_vmm_iter()
518 for (it.lvl = 0; desc[it.lvl].bits; it.lvl++) { in nvkm_vmm_iter()
519 it.pte[it.lvl] = bits & ((1 << desc[it.lvl].bits) - 1); in nvkm_vmm_iter()
520 bits >>= desc[it.lvl].bits; in nvkm_vmm_iter()
533 const int type = desc->type == SPT; in nvkm_vmm_iter()
534 const u32 pten = 1 << desc->bits; in nvkm_vmm_iter()
556 if (ref && !pgt->refs[desc[it.lvl - 1].type == SPT]) { in nvkm_vmm_iter()
578 while (it.pte[it.lvl] == (1 << desc[it.lvl].bits)) { in nvkm_vmm_iter()
594 addr = addr << desc[it.max].bits; in nvkm_vmm_iter()
607 page->desc->func->invalid ? in nvkm_vmm_ptes_sparse_put()
608 page->desc->func->invalid : page->desc->func->unmap); in nvkm_vmm_ptes_sparse_put()
618 NULL, NULL, page->desc->func->sparse); in nvkm_vmm_ptes_sparse_get()
683 const struct nvkm_vmm_desc_func *func = page->desc->func; in nvkm_vmm_ptes_unmap()
744 const struct nvkm_vmm_desc_func *func = page->desc->func; in __nvkm_vmm_ptes_unmap_put()
1090 const struct nvkm_vmm_desc *desc; in nvkm_vmm_ctor() local
1114 for (levels = 0, desc = page->desc; desc->bits; desc++, levels++) in nvkm_vmm_ctor()
1115 bits += desc->bits; in nvkm_vmm_ctor()
1117 desc--; in nvkm_vmm_ctor()
1123 vmm->pd = nvkm_vmm_pt_new(desc, false, NULL); in nvkm_vmm_ctor()
1132 if (desc->size) { in nvkm_vmm_ctor()
1133 const u32 size = pd_header + desc->size * (1 << desc->bits); in nvkm_vmm_ctor()
1134 vmm->pd->pt[0] = nvkm_mmu_ptc_get(mmu, size, desc->align, true); in nvkm_vmm_ctor()
1280 page->desc->func->pfn == NULL)) in nvkm_vmm_pfn_map()
1355 desc->func->pfn); in nvkm_vmm_pfn_map()
1358 page->desc->func->pfn); in nvkm_vmm_pfn_map()
1532 func = map->page->desc->func->mem; in nvkm_vmm_map_locked()
1541 func = map->page->desc->func->sgl; in nvkm_vmm_map_locked()
1545 func = map->page->desc->func->dma; in nvkm_vmm_map_locked()
1910 const struct nvkm_vmm_desc *desc = it->desc; in nvkm_vmm_boot_ptes() local
1911 const int type = desc->type == SPT; in nvkm_vmm_boot_ptes()