Lines Matching refs:pmdp
361 unsigned long addr, pmd_t *pmdp) in pmdp_idte_local() argument
364 __pmdp_idte(addr, pmdp, IDTE_NODAT | IDTE_GUEST_ASCE, in pmdp_idte_local()
367 __pmdp_idte(addr, pmdp, 0, 0, IDTE_LOCAL); in pmdp_idte_local()
373 unsigned long addr, pmd_t *pmdp) in pmdp_idte_global() argument
376 __pmdp_idte(addr, pmdp, IDTE_NODAT | IDTE_GUEST_ASCE, in pmdp_idte_global()
381 __pmdp_idte(addr, pmdp, 0, 0, IDTE_GLOBAL); in pmdp_idte_global()
385 __pmdp_csp(pmdp); in pmdp_idte_global()
392 unsigned long addr, pmd_t *pmdp) in pmdp_flush_direct() argument
396 old = *pmdp; in pmdp_flush_direct()
402 pmdp_idte_local(mm, addr, pmdp); in pmdp_flush_direct()
404 pmdp_idte_global(mm, addr, pmdp); in pmdp_flush_direct()
410 unsigned long addr, pmd_t *pmdp) in pmdp_flush_lazy() argument
414 old = *pmdp; in pmdp_flush_lazy()
420 pmd_val(*pmdp) |= _SEGMENT_ENTRY_INVALID; in pmdp_flush_lazy()
425 pmdp_idte_global(mm, addr, pmdp); in pmdp_flush_lazy()
432 static int pmd_lookup(struct mm_struct *mm, unsigned long addr, pmd_t **pmdp) in pmd_lookup() argument
460 *pmdp = pmd_offset(pud, addr); in pmd_lookup()
466 pmd_t *pmdp, pmd_t new) in pmdp_xchg_direct() argument
471 old = pmdp_flush_direct(mm, addr, pmdp); in pmdp_xchg_direct()
472 *pmdp = new; in pmdp_xchg_direct()
479 pmd_t *pmdp, pmd_t new) in pmdp_xchg_lazy() argument
484 old = pmdp_flush_lazy(mm, addr, pmdp); in pmdp_xchg_lazy()
485 *pmdp = new; in pmdp_xchg_lazy()
549 void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp, in pgtable_trans_huge_deposit() argument
554 assert_spin_locked(pmd_lockptr(mm, pmdp)); in pgtable_trans_huge_deposit()
557 if (!pmd_huge_pte(mm, pmdp)) in pgtable_trans_huge_deposit()
560 list_add(lh, (struct list_head *) pmd_huge_pte(mm, pmdp)); in pgtable_trans_huge_deposit()
561 pmd_huge_pte(mm, pmdp) = pgtable; in pgtable_trans_huge_deposit()
564 pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp) in pgtable_trans_huge_withdraw() argument
570 assert_spin_locked(pmd_lockptr(mm, pmdp)); in pgtable_trans_huge_withdraw()
573 pgtable = pmd_huge_pte(mm, pmdp); in pgtable_trans_huge_withdraw()
576 pmd_huge_pte(mm, pmdp) = NULL; in pgtable_trans_huge_withdraw()
578 pmd_huge_pte(mm, pmdp) = (pgtable_t) lh->next; in pgtable_trans_huge_withdraw()
792 pmd_t *pmdp; in set_guest_storage_key() local
799 switch (pmd_lookup(mm, addr, &pmdp)) { in set_guest_storage_key()
808 ptl = pmd_lock(mm, pmdp); in set_guest_storage_key()
809 if (!pmd_present(*pmdp)) { in set_guest_storage_key()
814 if (pmd_large(*pmdp)) { in set_guest_storage_key()
815 paddr = pmd_val(*pmdp) & HPAGE_MASK; in set_guest_storage_key()
827 ptep = pte_offset_map_lock(mm, pmdp, addr, &ptl); in set_guest_storage_key()
900 pmd_t *pmdp; in reset_guest_reference_bit() local
908 switch (pmd_lookup(mm, addr, &pmdp)) { in reset_guest_reference_bit()
917 ptl = pmd_lock(mm, pmdp); in reset_guest_reference_bit()
918 if (!pmd_present(*pmdp)) { in reset_guest_reference_bit()
923 if (pmd_large(*pmdp)) { in reset_guest_reference_bit()
924 paddr = pmd_val(*pmdp) & HPAGE_MASK; in reset_guest_reference_bit()
932 ptep = pte_offset_map_lock(mm, pmdp, addr, &ptl); in reset_guest_reference_bit()
961 pmd_t *pmdp; in get_guest_storage_key() local
970 switch (pmd_lookup(mm, addr, &pmdp)) { in get_guest_storage_key()
979 ptl = pmd_lock(mm, pmdp); in get_guest_storage_key()
980 if (!pmd_present(*pmdp)) { in get_guest_storage_key()
985 if (pmd_large(*pmdp)) { in get_guest_storage_key()
986 paddr = pmd_val(*pmdp) & HPAGE_MASK; in get_guest_storage_key()
994 ptep = pte_offset_map_lock(mm, pmdp, addr, &ptl); in get_guest_storage_key()