Lines Matching defs:vaddr

48 struct vm_area_struct *gru_find_vma(unsigned long vaddr)
52 vma = vma_lookup(current->mm, vaddr);
59 * Find and lock the gts that contains the specified user vaddr.
63 * - NULL if vaddr invalid OR is not a valid GSEG vaddr.
66 static struct gru_thread_state *gru_find_lock_gts(unsigned long vaddr)
73 vma = gru_find_vma(vaddr);
75 gts = gru_find_thread_state(vma, TSID(vaddr, vma));
83 static struct gru_thread_state *gru_alloc_locked_gts(unsigned long vaddr)
90 vma = gru_find_vma(vaddr);
94 gts = gru_alloc_thread_state(vma, TSID(vaddr, vma));
170 * convert a vaddr into a physical address. The size of the page
178 unsigned long vaddr, int write,
188 if (get_user_pages(vaddr, 1, write ? FOLL_WRITE : 0, &page) <= 0)
205 static int atomic_pte_lookup(struct vm_area_struct *vma, unsigned long vaddr,
214 pgdp = pgd_offset(vma->vm_mm, vaddr);
218 p4dp = p4d_offset(pgdp, vaddr);
222 pudp = pud_offset(p4dp, vaddr);
226 pmdp = pmd_offset(pudp, vaddr);
234 pte = *pte_offset_kernel(pmdp, vaddr);
252 static int gru_vtop(struct gru_thread_state *gts, unsigned long vaddr,
260 vma = find_vma(mm, vaddr);
269 ret = atomic_pte_lookup(vma, vaddr, write, &paddr, &ps);
273 if (non_atomic_pte_lookup(vma, vaddr, write, &paddr, &ps))
316 unsigned long vaddr = 0, gpa;
323 vaddr = fault_vaddr + GRU_CACHE_LINE_BYTES * cbe->cbe_src_cl - 1;
325 vaddr = fault_vaddr + (1 << cbe->xtypecpy) * cbe->cbe_nelemcur - 1;
328 vaddr &= PAGE_MASK;
329 vaddr = min(vaddr, fault_vaddr + tlb_preload_count * PAGE_SIZE);
331 while (vaddr > fault_vaddr) {
332 ret = gru_vtop(gts, vaddr, write, atomic, &gpa, &pageshift);
333 if (ret || tfh_write_only(tfh, gpa, GAA_RAM, vaddr, asid, write,
337 "%s: gid %d, gts 0x%p, tfh 0x%p, vaddr 0x%lx, asid 0x%x, rw %d, ps %d, gpa 0x%lx\n",
339 vaddr, asid, write, pageshift, gpa);
340 vaddr -= PAGE_SIZE;
363 unsigned long gpa = 0, vaddr = 0;
398 vaddr = tfh->missvaddr;
413 ret = gru_vtop(gts, vaddr, write, atomic, &gpa, &pageshift);
428 gru_preload_tlb(gru, gts, atomic, vaddr, asid, write, tlb_preload_count, tfh, cbe);
434 tfh_write_restart(tfh, gpa, GAA_RAM, vaddr, asid, write,
437 "%s: gid %d, gts 0x%p, tfh 0x%p, vaddr 0x%lx, asid 0x%x, indexway 0x%x,"
439 atomic ? "atomic" : "non-atomic", gru->gs_gid, gts, tfh, vaddr, asid,
447 gru_dbg(grudev, "FAILED no_asid tfh: 0x%p, vaddr 0x%lx\n", tfh, vaddr);
460 gru_dbg(grudev, "FAILED upm tfh: 0x%p, vaddr 0x%lx\n", tfh, vaddr);
497 gru_dbg(grudev, "FAILED inval tfh: 0x%p, vaddr 0x%lx\n", tfh, vaddr);
508 gru_dbg(grudev, "FAILED range active: tfh 0x%p, vaddr 0x%lx\n",
509 tfh, vaddr);
806 gru_dbg(grudev, "gseg 0x%lx, vaddr 0x%lx, len 0x%lx\n", req.gseg,
807 req.vaddr, req.len);
815 gru_flush_tlb_range(gms, req.vaddr, req.len);