Lines Matching refs:pmdp

917 	pmd_t *pmdp;  in gmap_pmd_op_walk()  local
920 pmdp = (pmd_t *) gmap_table_walk(gmap, gaddr, 1); in gmap_pmd_op_walk()
921 if (!pmdp) in gmap_pmd_op_walk()
926 return pmd_none(*pmdp) ? NULL : pmdp; in gmap_pmd_op_walk()
929 if (pmd_none(*pmdp)) { in gmap_pmd_op_walk()
935 if (!pmd_large(*pmdp)) in gmap_pmd_op_walk()
937 return pmdp; in gmap_pmd_op_walk()
945 static inline void gmap_pmd_op_end(struct gmap *gmap, pmd_t *pmdp) in gmap_pmd_op_end() argument
947 if (pmd_large(*pmdp)) in gmap_pmd_op_end()
966 pmd_t *pmdp, int prot, unsigned long bits) in gmap_protect_pmd() argument
968 int pmd_i = pmd_val(*pmdp) & _SEGMENT_ENTRY_INVALID; in gmap_protect_pmd()
969 int pmd_p = pmd_val(*pmdp) & _SEGMENT_ENTRY_PROTECT; in gmap_protect_pmd()
970 pmd_t new = *pmdp; in gmap_protect_pmd()
978 gmap_pmdp_xchg(gmap, pmdp, new, gaddr); in gmap_protect_pmd()
984 gmap_pmdp_xchg(gmap, pmdp, new, gaddr); in gmap_protect_pmd()
988 pmd_val(*pmdp) |= _SEGMENT_ENTRY_GMAP_IN; in gmap_protect_pmd()
1011 pmd_t *pmdp, int prot, unsigned long bits) in gmap_protect_pte() argument
1018 if (pmd_val(*pmdp) & _SEGMENT_ENTRY_INVALID) in gmap_protect_pte()
1021 ptep = pte_alloc_map_lock(gmap->mm, pmdp, gaddr, &ptl); in gmap_protect_pte()
1050 pmd_t *pmdp; in gmap_protect_range() local
1056 pmdp = gmap_pmd_op_walk(gmap, gaddr); in gmap_protect_range()
1057 if (pmdp) { in gmap_protect_range()
1058 if (!pmd_large(*pmdp)) { in gmap_protect_range()
1059 rc = gmap_protect_pte(gmap, gaddr, pmdp, prot, in gmap_protect_range()
1066 rc = gmap_protect_pmd(gmap, gaddr, pmdp, prot, in gmap_protect_range()
1074 gmap_pmd_op_end(gmap, pmdp); in gmap_protect_range()
2275 static void pmdp_notify_gmap(struct gmap *gmap, pmd_t *pmdp, in pmdp_notify_gmap() argument
2278 pmd_val(*pmdp) &= ~_SEGMENT_ENTRY_GMAP_IN; in pmdp_notify_gmap()
2292 static void gmap_pmdp_xchg(struct gmap *gmap, pmd_t *pmdp, pmd_t new, in gmap_pmdp_xchg() argument
2296 pmdp_notify_gmap(gmap, pmdp, gaddr); in gmap_pmdp_xchg()
2299 __pmdp_idte(gaddr, (pmd_t *)pmdp, IDTE_GUEST_ASCE, gmap->asce, in gmap_pmdp_xchg()
2302 __pmdp_idte(gaddr, (pmd_t *)pmdp, 0, 0, IDTE_GLOBAL); in gmap_pmdp_xchg()
2304 __pmdp_csp(pmdp); in gmap_pmdp_xchg()
2305 *pmdp = new; in gmap_pmdp_xchg()
2311 pmd_t *pmdp; in gmap_pmdp_clear() local
2318 pmdp = (pmd_t *)radix_tree_delete(&gmap->host_to_guest, in gmap_pmdp_clear()
2320 if (pmdp) { in gmap_pmdp_clear()
2321 gaddr = __gmap_segment_gaddr((unsigned long *)pmdp); in gmap_pmdp_clear()
2322 pmdp_notify_gmap(gmap, pmdp, gaddr); in gmap_pmdp_clear()
2323 WARN_ON(pmd_val(*pmdp) & ~(_SEGMENT_ENTRY_HARDWARE_BITS_LARGE | in gmap_pmdp_clear()
2326 __pmdp_csp(pmdp); in gmap_pmdp_clear()
2327 pmd_val(*pmdp) = _SEGMENT_ENTRY_EMPTY; in gmap_pmdp_clear()
2366 pmd_t *pmdp; in gmap_pmdp_idte_local() local
2374 pmdp = (pmd_t *)entry; in gmap_pmdp_idte_local()
2376 pmdp_notify_gmap(gmap, pmdp, gaddr); in gmap_pmdp_idte_local()
2380 __pmdp_idte(gaddr, pmdp, IDTE_GUEST_ASCE, in gmap_pmdp_idte_local()
2383 __pmdp_idte(gaddr, pmdp, 0, 0, IDTE_LOCAL); in gmap_pmdp_idte_local()
2401 pmd_t *pmdp; in gmap_pmdp_idte_global() local
2409 pmdp = (pmd_t *)entry; in gmap_pmdp_idte_global()
2411 pmdp_notify_gmap(gmap, pmdp, gaddr); in gmap_pmdp_idte_global()
2415 __pmdp_idte(gaddr, pmdp, IDTE_GUEST_ASCE, in gmap_pmdp_idte_global()
2418 __pmdp_idte(gaddr, pmdp, 0, 0, IDTE_GLOBAL); in gmap_pmdp_idte_global()
2420 __pmdp_csp(pmdp); in gmap_pmdp_idte_global()
2438 static bool gmap_test_and_clear_dirty_pmd(struct gmap *gmap, pmd_t *pmdp, in gmap_test_and_clear_dirty_pmd() argument
2441 if (pmd_val(*pmdp) & _SEGMENT_ENTRY_INVALID) in gmap_test_and_clear_dirty_pmd()
2445 if (pmd_val(*pmdp) & _SEGMENT_ENTRY_PROTECT && in gmap_test_and_clear_dirty_pmd()
2446 !(pmd_val(*pmdp) & _SEGMENT_ENTRY_GMAP_UC)) in gmap_test_and_clear_dirty_pmd()
2450 pmd_val(*pmdp) &= ~_SEGMENT_ENTRY_GMAP_UC; in gmap_test_and_clear_dirty_pmd()
2451 gmap_protect_pmd(gmap, gaddr, pmdp, PROT_READ, 0); in gmap_test_and_clear_dirty_pmd()
2469 pmd_t *pmdp; in gmap_sync_dirty_log_pmd() local
2473 pmdp = gmap_pmd_op_walk(gmap, gaddr); in gmap_sync_dirty_log_pmd()
2474 if (!pmdp) in gmap_sync_dirty_log_pmd()
2477 if (pmd_large(*pmdp)) { in gmap_sync_dirty_log_pmd()
2478 if (gmap_test_and_clear_dirty_pmd(gmap, pmdp, gaddr)) in gmap_sync_dirty_log_pmd()
2482 ptep = pte_alloc_map_lock(gmap->mm, pmdp, vmaddr, &ptl); in gmap_sync_dirty_log_pmd()
2490 gmap_pmd_op_end(gmap, pmdp); in gmap_sync_dirty_log_pmd()