Lines Matching refs:vmaddr

368 static int __gmap_unlink_by_vmaddr(struct gmap *gmap, unsigned long vmaddr)  in __gmap_unlink_by_vmaddr()  argument
375 entry = radix_tree_delete(&gmap->host_to_guest, vmaddr >> PMD_SHIFT); in __gmap_unlink_by_vmaddr()
393 unsigned long vmaddr; in __gmap_unmap_by_gaddr() local
395 vmaddr = (unsigned long) radix_tree_delete(&gmap->guest_to_host, in __gmap_unmap_by_gaddr()
397 return vmaddr ? __gmap_unlink_by_vmaddr(gmap, vmaddr) : 0; in __gmap_unmap_by_gaddr()
488 unsigned long vmaddr; in __gmap_translate() local
490 vmaddr = (unsigned long) in __gmap_translate()
493 return vmaddr ? (vmaddr | (gaddr & ~PMD_MASK)) : -EFAULT; in __gmap_translate()
524 unsigned long vmaddr) in gmap_unlink() argument
531 flush = __gmap_unlink_by_vmaddr(gmap, vmaddr); in gmap_unlink()
552 int __gmap_link(struct gmap *gmap, unsigned long gaddr, unsigned long vmaddr) in __gmap_link() argument
594 pgd = pgd_offset(mm, vmaddr); in __gmap_link()
596 p4d = p4d_offset(pgd, vmaddr); in __gmap_link()
598 pud = pud_offset(p4d, vmaddr); in __gmap_link()
603 pmd = pmd_offset(pud, vmaddr); in __gmap_link()
616 vmaddr >> PMD_SHIFT, table); in __gmap_link()
651 unsigned long vmaddr; in gmap_fault() local
659 vmaddr = __gmap_translate(gmap, gaddr); in gmap_fault()
660 if (IS_ERR_VALUE(vmaddr)) { in gmap_fault()
661 rc = vmaddr; in gmap_fault()
664 if (fixup_user_fault(gmap->mm, vmaddr, fault_flags, in gmap_fault()
676 rc = __gmap_link(gmap, gaddr, vmaddr); in gmap_fault()
689 unsigned long vmaddr; in __gmap_zap() local
694 vmaddr = (unsigned long) radix_tree_lookup(&gmap->guest_to_host, in __gmap_zap()
696 if (vmaddr) { in __gmap_zap()
697 vmaddr |= gaddr & ~PMD_MASK; in __gmap_zap()
699 vma = vma_lookup(gmap->mm, vmaddr); in __gmap_zap()
704 ptep = get_locked_pte(gmap->mm, vmaddr, &ptl); in __gmap_zap()
706 ptep_zap_unused(gmap->mm, vmaddr, ptep, 0); in __gmap_zap()
715 unsigned long gaddr, vmaddr, size; in gmap_discard() local
722 vmaddr = (unsigned long) in gmap_discard()
725 if (!vmaddr) in gmap_discard()
727 vmaddr |= gaddr & ~PMD_MASK; in gmap_discard()
729 vma = find_vma(gmap->mm, vmaddr); in gmap_discard()
739 zap_page_range_single(vma, vmaddr, size, NULL); in gmap_discard()
893 unsigned long vmaddr, int prot) in gmap_pte_op_fixup() argument
901 if (fixup_user_fault(mm, vmaddr, fault_flags, &unlocked)) in gmap_pte_op_fixup()
907 return __gmap_link(gmap, gaddr, vmaddr); in gmap_pte_op_fixup()
1062 unsigned long vmaddr, dist; in gmap_protect_range() local
1094 vmaddr = __gmap_translate(gmap, gaddr); in gmap_protect_range()
1095 if (IS_ERR_VALUE(vmaddr)) in gmap_protect_range()
1096 return vmaddr; in gmap_protect_range()
1097 rc = gmap_pte_op_fixup(gmap, gaddr, vmaddr, prot); in gmap_protect_range()
1150 unsigned long address, vmaddr; in gmap_read_table() local
1175 vmaddr = __gmap_translate(gmap, gaddr); in gmap_read_table()
1176 if (IS_ERR_VALUE(vmaddr)) { in gmap_read_table()
1177 rc = vmaddr; in gmap_read_table()
1180 rc = gmap_pte_op_fixup(gmap, gaddr, vmaddr, PROT_READ); in gmap_read_table()
1196 static inline void gmap_insert_rmap(struct gmap *sg, unsigned long vmaddr, in gmap_insert_rmap() argument
1203 slot = radix_tree_lookup_slot(&sg->host_to_rmap, vmaddr >> PAGE_SHIFT); in gmap_insert_rmap()
1216 radix_tree_insert(&sg->host_to_rmap, vmaddr >> PAGE_SHIFT, in gmap_insert_rmap()
1236 unsigned long vmaddr; in gmap_protect_rmap() local
1244 vmaddr = __gmap_translate(parent, paddr); in gmap_protect_rmap()
1245 if (IS_ERR_VALUE(vmaddr)) in gmap_protect_rmap()
1246 return vmaddr; in gmap_protect_rmap()
1263 gmap_insert_rmap(sg, vmaddr, rmap); in gmap_protect_rmap()
1270 rc = gmap_pte_op_fixup(parent, paddr, vmaddr, PROT_READ); in gmap_protect_rmap()
2141 unsigned long vmaddr, paddr; in gmap_shadow_page() local
2158 vmaddr = __gmap_translate(parent, paddr); in gmap_shadow_page()
2159 if (IS_ERR_VALUE(vmaddr)) { in gmap_shadow_page()
2160 rc = vmaddr; in gmap_shadow_page()
2181 gmap_insert_rmap(sg, vmaddr, rmap); in gmap_shadow_page()
2191 rc = gmap_pte_op_fixup(parent, paddr, vmaddr, prot); in gmap_shadow_page()
2205 static void gmap_shadow_notify(struct gmap *sg, unsigned long vmaddr, in gmap_shadow_notify() argument
2231 head = radix_tree_delete(&sg->host_to_rmap, vmaddr >> PAGE_SHIFT); in gmap_shadow_notify()
2267 void ptep_notify(struct mm_struct *mm, unsigned long vmaddr, in ptep_notify() argument
2280 vmaddr >> PMD_SHIFT); in ptep_notify()
2291 gmap_shadow_notify(sg, vmaddr, gaddr); in ptep_notify()
2334 static void gmap_pmdp_clear(struct mm_struct *mm, unsigned long vmaddr, in gmap_pmdp_clear() argument
2345 vmaddr >> PMD_SHIFT); in gmap_pmdp_clear()
2366 void gmap_pmdp_invalidate(struct mm_struct *mm, unsigned long vmaddr) in gmap_pmdp_invalidate() argument
2368 gmap_pmdp_clear(mm, vmaddr, 0); in gmap_pmdp_invalidate()
2377 void gmap_pmdp_csp(struct mm_struct *mm, unsigned long vmaddr) in gmap_pmdp_csp() argument
2379 gmap_pmdp_clear(mm, vmaddr, 1); in gmap_pmdp_csp()
2388 void gmap_pmdp_idte_local(struct mm_struct *mm, unsigned long vmaddr) in gmap_pmdp_idte_local() argument
2398 vmaddr >> PMD_SHIFT); in gmap_pmdp_idte_local()
2423 void gmap_pmdp_idte_global(struct mm_struct *mm, unsigned long vmaddr) in gmap_pmdp_idte_global() argument
2433 vmaddr >> PMD_SHIFT); in gmap_pmdp_idte_global()
2492 unsigned long gaddr, unsigned long vmaddr) in gmap_sync_dirty_log_pmd() argument
2507 for (i = 0; i < _PAGE_ENTRIES; i++, vmaddr += PAGE_SIZE) { in gmap_sync_dirty_log_pmd()
2508 ptep = pte_alloc_map_lock(gmap->mm, pmdp, vmaddr, &ptl); in gmap_sync_dirty_log_pmd()
2511 if (ptep_test_and_clear_uc(gmap->mm, vmaddr, ptep)) in gmap_sync_dirty_log_pmd()