• Home
  • Raw
  • Download

Lines Matching refs:pmdp

907 	pmd_t *pmdp;  in gmap_pmd_op_walk()  local
910 pmdp = (pmd_t *) gmap_table_walk(gmap, gaddr, 1); in gmap_pmd_op_walk()
911 if (!pmdp) in gmap_pmd_op_walk()
916 return pmd_none(*pmdp) ? NULL : pmdp; in gmap_pmd_op_walk()
919 if (pmd_none(*pmdp)) { in gmap_pmd_op_walk()
925 if (!pmd_large(*pmdp)) in gmap_pmd_op_walk()
927 return pmdp; in gmap_pmd_op_walk()
935 static inline void gmap_pmd_op_end(struct gmap *gmap, pmd_t *pmdp) in gmap_pmd_op_end() argument
937 if (pmd_large(*pmdp)) in gmap_pmd_op_end()
956 pmd_t *pmdp, int prot, unsigned long bits) in gmap_protect_pmd() argument
958 int pmd_i = pmd_val(*pmdp) & _SEGMENT_ENTRY_INVALID; in gmap_protect_pmd()
959 int pmd_p = pmd_val(*pmdp) & _SEGMENT_ENTRY_PROTECT; in gmap_protect_pmd()
960 pmd_t new = *pmdp; in gmap_protect_pmd()
968 gmap_pmdp_xchg(gmap, pmdp, new, gaddr); in gmap_protect_pmd()
974 gmap_pmdp_xchg(gmap, pmdp, new, gaddr); in gmap_protect_pmd()
978 pmd_val(*pmdp) |= _SEGMENT_ENTRY_GMAP_IN; in gmap_protect_pmd()
1001 pmd_t *pmdp, int prot, unsigned long bits) in gmap_protect_pte() argument
1008 if (pmd_val(*pmdp) & _SEGMENT_ENTRY_INVALID) in gmap_protect_pte()
1011 ptep = pte_alloc_map_lock(gmap->mm, pmdp, gaddr, &ptl); in gmap_protect_pte()
1040 pmd_t *pmdp; in gmap_protect_range() local
1046 pmdp = gmap_pmd_op_walk(gmap, gaddr); in gmap_protect_range()
1047 if (pmdp) { in gmap_protect_range()
1048 if (!pmd_large(*pmdp)) { in gmap_protect_range()
1049 rc = gmap_protect_pte(gmap, gaddr, pmdp, prot, in gmap_protect_range()
1056 rc = gmap_protect_pmd(gmap, gaddr, pmdp, prot, in gmap_protect_range()
1064 gmap_pmd_op_end(gmap, pmdp); in gmap_protect_range()
2264 static void pmdp_notify_gmap(struct gmap *gmap, pmd_t *pmdp, in pmdp_notify_gmap() argument
2267 pmd_val(*pmdp) &= ~_SEGMENT_ENTRY_GMAP_IN; in pmdp_notify_gmap()
2281 static void gmap_pmdp_xchg(struct gmap *gmap, pmd_t *pmdp, pmd_t new, in gmap_pmdp_xchg() argument
2285 pmdp_notify_gmap(gmap, pmdp, gaddr); in gmap_pmdp_xchg()
2288 __pmdp_idte(gaddr, (pmd_t *)pmdp, IDTE_GUEST_ASCE, gmap->asce, in gmap_pmdp_xchg()
2291 __pmdp_idte(gaddr, (pmd_t *)pmdp, 0, 0, IDTE_GLOBAL); in gmap_pmdp_xchg()
2293 __pmdp_csp(pmdp); in gmap_pmdp_xchg()
2294 *pmdp = new; in gmap_pmdp_xchg()
2300 pmd_t *pmdp; in gmap_pmdp_clear() local
2307 pmdp = (pmd_t *)radix_tree_delete(&gmap->host_to_guest, in gmap_pmdp_clear()
2309 if (pmdp) { in gmap_pmdp_clear()
2310 gaddr = __gmap_segment_gaddr((unsigned long *)pmdp); in gmap_pmdp_clear()
2311 pmdp_notify_gmap(gmap, pmdp, gaddr); in gmap_pmdp_clear()
2312 WARN_ON(pmd_val(*pmdp) & ~(_SEGMENT_ENTRY_HARDWARE_BITS_LARGE | in gmap_pmdp_clear()
2315 __pmdp_csp(pmdp); in gmap_pmdp_clear()
2316 pmd_val(*pmdp) = _SEGMENT_ENTRY_EMPTY; in gmap_pmdp_clear()
2355 pmd_t *pmdp; in gmap_pmdp_idte_local() local
2363 pmdp = (pmd_t *)entry; in gmap_pmdp_idte_local()
2365 pmdp_notify_gmap(gmap, pmdp, gaddr); in gmap_pmdp_idte_local()
2369 __pmdp_idte(gaddr, pmdp, IDTE_GUEST_ASCE, in gmap_pmdp_idte_local()
2372 __pmdp_idte(gaddr, pmdp, 0, 0, IDTE_LOCAL); in gmap_pmdp_idte_local()
2390 pmd_t *pmdp; in gmap_pmdp_idte_global() local
2398 pmdp = (pmd_t *)entry; in gmap_pmdp_idte_global()
2400 pmdp_notify_gmap(gmap, pmdp, gaddr); in gmap_pmdp_idte_global()
2404 __pmdp_idte(gaddr, pmdp, IDTE_GUEST_ASCE, in gmap_pmdp_idte_global()
2407 __pmdp_idte(gaddr, pmdp, 0, 0, IDTE_GLOBAL); in gmap_pmdp_idte_global()
2409 __pmdp_csp(pmdp); in gmap_pmdp_idte_global()
2427 static bool gmap_test_and_clear_dirty_pmd(struct gmap *gmap, pmd_t *pmdp, in gmap_test_and_clear_dirty_pmd() argument
2430 if (pmd_val(*pmdp) & _SEGMENT_ENTRY_INVALID) in gmap_test_and_clear_dirty_pmd()
2434 if (pmd_val(*pmdp) & _SEGMENT_ENTRY_PROTECT && in gmap_test_and_clear_dirty_pmd()
2435 !(pmd_val(*pmdp) & _SEGMENT_ENTRY_GMAP_UC)) in gmap_test_and_clear_dirty_pmd()
2439 pmd_val(*pmdp) &= ~_SEGMENT_ENTRY_GMAP_UC; in gmap_test_and_clear_dirty_pmd()
2440 gmap_protect_pmd(gmap, gaddr, pmdp, PROT_READ, 0); in gmap_test_and_clear_dirty_pmd()
2458 pmd_t *pmdp; in gmap_sync_dirty_log_pmd() local
2462 pmdp = gmap_pmd_op_walk(gmap, gaddr); in gmap_sync_dirty_log_pmd()
2463 if (!pmdp) in gmap_sync_dirty_log_pmd()
2466 if (pmd_large(*pmdp)) { in gmap_sync_dirty_log_pmd()
2467 if (gmap_test_and_clear_dirty_pmd(gmap, pmdp, gaddr)) in gmap_sync_dirty_log_pmd()
2471 ptep = pte_alloc_map_lock(gmap->mm, pmdp, vmaddr, &ptl); in gmap_sync_dirty_log_pmd()
2479 gmap_pmd_op_end(gmap, pmdp); in gmap_sync_dirty_log_pmd()