Lines Matching refs:pt

34 	struct nvkm_mmu_pt *pt;
42 nvkm_mmu_ptp_put(struct nvkm_mmu *mmu, bool force, struct nvkm_mmu_pt *pt)
44 const int slot = pt->base >> pt->ptp->shift;
45 struct nvkm_mmu_ptp *ptp = pt->ptp;
56 nvkm_mmu_ptc_put(mmu, force, &ptp->pt);
61 kfree(pt);
67 struct nvkm_mmu_pt *pt;
71 if (!(pt = kzalloc(sizeof(*pt), GFP_KERNEL)))
78 kfree(pt);
82 ptp->pt = nvkm_mmu_ptc_get(mmu, 0x1000, 0x1000, false);
83 if (!ptp->pt) {
85 kfree(pt);
90 slot = nvkm_memory_size(ptp->pt->memory) >> ptp->shift;
95 pt->ptp = ptp;
96 pt->sub = true;
106 pt->memory = pt->ptp->pt->memory;
107 pt->base = slot << ptp->shift;
108 pt->addr = pt->ptp->pt->addr + pt->base;
109 return pt;
143 struct nvkm_mmu_pt *pt = *ppt;
144 if (pt) {
146 if (pt->sub) {
148 nvkm_mmu_ptp_put(mmu, force, pt);
155 if (pt->ptc->refs < 8 /* Heuristic. */ && !force) {
156 list_add_tail(&pt->head, &pt->ptc->item);
157 pt->ptc->refs++;
159 nvkm_memory_unref(&pt->memory);
160 kfree(pt);
170 struct nvkm_mmu_pt *pt;
176 pt = nvkm_mmu_ptp_get(mmu, align, zero);
178 return pt;
190 pt = list_first_entry_or_null(&ptc->item, typeof(*pt), head);
191 if (pt) {
193 nvkm_fo64(pt->memory, 0, 0, size >> 3);
194 list_del(&pt->head);
197 return pt;
202 if (!(pt = kmalloc(sizeof(*pt), GFP_KERNEL)))
204 pt->ptc = ptc;
205 pt->sub = false;
208 size, align, zero, &pt->memory);
210 kfree(pt);
214 pt->base = 0;
215 pt->addr = nvkm_memory_addr(pt->memory);
216 return pt;
224 struct nvkm_mmu_pt *pt, *tt;
225 list_for_each_entry_safe(pt, tt, &ptc->item, head) {
226 nvkm_memory_unref(&pt->memory);
227 list_del(&pt->head);
228 kfree(pt);