Lines Matching refs:gaddr

37 #define IS_GADDR_VALID(gaddr) ((gaddr) & VALID_GADDR_FLAG)  argument
38 #define MAKE_VALID_GADDR(gaddr) (((gaddr) & HPAGE_MASK) | VALID_GADDR_FLAG) argument
313 unsigned long init, unsigned long gaddr) in gmap_alloc_table() argument
347 unsigned long *gaddr) in host_to_guest_pmd_delete() argument
349 *gaddr = host_to_guest_delete(gmap, vmaddr); in host_to_guest_pmd_delete()
350 if (IS_GADDR_VALID(*gaddr)) in host_to_guest_pmd_delete()
351 return (pmd_t *)gmap_table_walk(gmap, *gaddr, 1); in host_to_guest_pmd_delete()
364 unsigned long gaddr; in __gmap_unlink_by_vmaddr() local
371 pmdp = host_to_guest_pmd_delete(gmap, vmaddr, &gaddr); in __gmap_unlink_by_vmaddr()
388 static int __gmap_unmap_by_gaddr(struct gmap *gmap, unsigned long gaddr) in __gmap_unmap_by_gaddr() argument
393 gaddr >> PMD_SHIFT); in __gmap_unmap_by_gaddr()
483 unsigned long __gmap_translate(struct gmap *gmap, unsigned long gaddr) in __gmap_translate() argument
488 radix_tree_lookup(&gmap->guest_to_host, gaddr >> PMD_SHIFT); in __gmap_translate()
490 return vmaddr ? (vmaddr | (gaddr & ~PMD_MASK)) : -EFAULT; in __gmap_translate()
516 unsigned long gaddr);
529 int __gmap_link(struct gmap *gmap, unsigned long gaddr, unsigned long vmaddr) in __gmap_link() argument
545 table += (gaddr & _REGION1_INDEX) >> _REGION1_SHIFT; in __gmap_link()
548 gaddr & _REGION1_MASK)) in __gmap_link()
553 table += (gaddr & _REGION2_INDEX) >> _REGION2_SHIFT; in __gmap_link()
556 gaddr & _REGION2_MASK)) in __gmap_link()
561 table += (gaddr & _REGION3_INDEX) >> _REGION3_SHIFT; in __gmap_link()
564 gaddr & _REGION3_MASK)) in __gmap_link()
568 table += (gaddr & _SEGMENT_INDEX) >> _SEGMENT_SHIFT; in __gmap_link()
594 (void *)MAKE_VALID_GADDR(gaddr)); in __gmap_link()
610 gmap_pmdp_xchg(gmap, (pmd_t *)table, __pmd(unprot), gaddr); in __gmap_link()
622 void __gmap_zap(struct gmap *gmap, unsigned long gaddr) in __gmap_zap() argument
630 gaddr >> PMD_SHIFT); in __gmap_zap()
632 vmaddr |= gaddr & ~PMD_MASK; in __gmap_zap()
699 unsigned long *gmap_table_walk(struct gmap *gmap, unsigned long gaddr, int level) in gmap_table_walk() argument
711 gaddr & (-1UL << (31 + (asce_type >> 2) * 11))) in gmap_table_walk()
716 table += (gaddr & _REGION1_INDEX) >> _REGION1_SHIFT; in gmap_table_walk()
724 table += (gaddr & _REGION2_INDEX) >> _REGION2_SHIFT; in gmap_table_walk()
732 table += (gaddr & _REGION3_INDEX) >> _REGION3_SHIFT; in gmap_table_walk()
740 table += (gaddr & _SEGMENT_INDEX) >> _SEGMENT_SHIFT; in gmap_table_walk()
746 table += (gaddr & _PAGE_INDEX) >> PAGE_SHIFT; in gmap_table_walk()
761 static pte_t *gmap_pte_op_walk(struct gmap *gmap, unsigned long gaddr, in gmap_pte_op_walk() argument
768 table = gmap_table_walk(gmap, gaddr, 1); /* get segment pointer */ in gmap_pte_op_walk()
771 return pte_alloc_map_lock(gmap->mm, (pmd_t *) table, gaddr, ptl); in gmap_pte_op_walk()
785 static int gmap_pte_op_fixup(struct gmap *gmap, unsigned long gaddr, in gmap_pte_op_fixup() argument
800 return __gmap_link(gmap, gaddr, vmaddr); in gmap_pte_op_fixup()
821 static inline pmd_t *gmap_pmd_op_walk(struct gmap *gmap, unsigned long gaddr) in gmap_pmd_op_walk() argument
826 pmdp = (pmd_t *) gmap_table_walk(gmap, gaddr, 1); in gmap_pmd_op_walk()
871 static int gmap_protect_pmd(struct gmap *gmap, unsigned long gaddr, in gmap_protect_pmd() argument
884 gmap_pmdp_xchg(gmap, pmdp, new, gaddr); in gmap_protect_pmd()
890 gmap_pmdp_xchg(gmap, pmdp, new, gaddr); in gmap_protect_pmd()
916 static int gmap_protect_pte(struct gmap *gmap, unsigned long gaddr, in gmap_protect_pte() argument
927 ptep = pte_alloc_map_lock(gmap->mm, pmdp, gaddr, &ptl); in gmap_protect_pte()
934 rc = ptep_force_prot(gmap->mm, gaddr, ptep, prot, pbits); in gmap_protect_pte()
956 int gmap_protect_one(struct gmap *gmap, unsigned long gaddr, int prot, unsigned long bits) in gmap_protect_one() argument
963 pmdp = gmap_pmd_op_walk(gmap, gaddr); in gmap_protect_one()
968 rc = gmap_protect_pte(gmap, gaddr, pmdp, prot, bits); in gmap_protect_one()
972 rc = gmap_protect_pmd(gmap, gaddr, pmdp, prot, bits); in gmap_protect_one()
995 int gmap_read_table(struct gmap *gmap, unsigned long gaddr, unsigned long *val) in gmap_read_table() argument
1007 ptep = gmap_pte_op_walk(gmap, gaddr, &ptl); in gmap_read_table()
1012 address += gaddr & ~PAGE_MASK; in gmap_read_table()
1022 vmaddr = __gmap_translate(gmap, gaddr); in gmap_read_table()
1027 rc = gmap_pte_op_fixup(gmap, gaddr, vmaddr, PROT_READ); in gmap_read_table()
1874 unsigned long gaddr) in gmap_shadow_notify() argument
1889 if (!(sg->orig_asce & _ASCE_REAL_SPACE) && gaddr >= start && in gmap_shadow_notify()
1890 gaddr < end) { in gmap_shadow_notify()
1938 unsigned long offset, gaddr = 0; in ptep_notify() local
1946 gaddr = host_to_guest_lookup(gmap, vmaddr) + offset; in ptep_notify()
1948 if (!IS_GADDR_VALID(gaddr)) in ptep_notify()
1955 gmap_shadow_notify(sg, vmaddr, gaddr); in ptep_notify()
1959 gmap_call_notifier(gmap, gaddr, gaddr + PAGE_SIZE - 1); in ptep_notify()
1966 unsigned long gaddr) in pmdp_notify_gmap() argument
1969 gmap_call_notifier(gmap, gaddr, gaddr + HPAGE_SIZE - 1); in pmdp_notify_gmap()
1983 unsigned long gaddr) in gmap_pmdp_xchg() argument
1985 gaddr &= HPAGE_MASK; in gmap_pmdp_xchg()
1986 pmdp_notify_gmap(gmap, pmdp, gaddr); in gmap_pmdp_xchg()
1989 __pmdp_idte(gaddr, (pmd_t *)pmdp, IDTE_GUEST_ASCE, gmap->asce, in gmap_pmdp_xchg()
1992 __pmdp_idte(gaddr, (pmd_t *)pmdp, 0, 0, IDTE_GLOBAL); in gmap_pmdp_xchg()
2003 unsigned long gaddr; in gmap_pmdp_clear() local
2008 pmdp = host_to_guest_pmd_delete(gmap, vmaddr, &gaddr); in gmap_pmdp_clear()
2010 pmdp_notify_gmap(gmap, pmdp, gaddr); in gmap_pmdp_clear()
2053 unsigned long gaddr; in gmap_pmdp_idte_local() local
2060 pmdp = host_to_guest_pmd_delete(gmap, vmaddr, &gaddr); in gmap_pmdp_idte_local()
2062 pmdp_notify_gmap(gmap, pmdp, gaddr); in gmap_pmdp_idte_local()
2067 __pmdp_idte(gaddr, pmdp, IDTE_GUEST_ASCE, in gmap_pmdp_idte_local()
2070 __pmdp_idte(gaddr, pmdp, 0, 0, IDTE_LOCAL); in gmap_pmdp_idte_local()
2086 unsigned long gaddr; in gmap_pmdp_idte_global() local
2093 pmdp = host_to_guest_pmd_delete(gmap, vmaddr, &gaddr); in gmap_pmdp_idte_global()
2095 pmdp_notify_gmap(gmap, pmdp, gaddr); in gmap_pmdp_idte_global()
2100 __pmdp_idte(gaddr, pmdp, IDTE_GUEST_ASCE, in gmap_pmdp_idte_global()
2103 __pmdp_idte(gaddr, pmdp, 0, 0, IDTE_GLOBAL); in gmap_pmdp_idte_global()
2124 unsigned long gaddr) in gmap_test_and_clear_dirty_pmd() argument
2136 gmap_protect_pmd(gmap, gaddr, pmdp, PROT_READ, 0); in gmap_test_and_clear_dirty_pmd()
2151 unsigned long gaddr, unsigned long vmaddr) in gmap_sync_dirty_log_pmd() argument
2158 pmdp = gmap_pmd_op_walk(gmap, gaddr); in gmap_sync_dirty_log_pmd()
2163 if (gmap_test_and_clear_dirty_pmd(gmap, pmdp, gaddr)) in gmap_sync_dirty_log_pmd()