Lines Matching refs:pgste
145 static inline void pgste_set_unlock(pte_t *ptep, pgste_t pgste) in pgste_set_unlock() argument
152 : "d" (pgste_val(pgste)), "Q" (ptep[PTRS_PER_PTE]) in pgste_set_unlock()
159 unsigned long pgste = 0; in pgste_get() local
161 pgste = *(unsigned long *)(ptep + PTRS_PER_PTE); in pgste_get()
163 return __pgste(pgste); in pgste_get()
166 static inline void pgste_set(pte_t *ptep, pgste_t pgste) in pgste_set() argument
169 *(pgste_t *)(ptep + PTRS_PER_PTE) = pgste; in pgste_set()
173 static inline pgste_t pgste_update_all(pte_t pte, pgste_t pgste, in pgste_update_all() argument
180 return pgste; in pgste_update_all()
185 pgste_val(pgste) |= bits << 48; /* GR bit & GC bit */ in pgste_update_all()
187 pgste_val(pgste) &= ~(PGSTE_ACC_BITS | PGSTE_FP_BIT); in pgste_update_all()
188 pgste_val(pgste) |= (skey & (_PAGE_ACC_BITS | _PAGE_FP_BIT)) << 56; in pgste_update_all()
190 return pgste; in pgste_update_all()
194 static inline void pgste_set_key(pte_t *ptep, pgste_t pgste, pte_t entry, in pgste_set_key() argument
210 nkey = (pgste_val(pgste) & (PGSTE_ACC_BITS | PGSTE_FP_BIT)) >> 56; in pgste_set_key()
211 nkey |= (pgste_val(pgste) & (PGSTE_GR_BIT | PGSTE_GC_BIT)) >> 48; in pgste_set_key()
216 static inline pgste_t pgste_set_pte(pte_t *ptep, pgste_t pgste, pte_t entry) in pgste_set_pte() argument
232 pgste_val(pgste) |= PGSTE_UC_BIT; in pgste_set_pte()
236 return pgste; in pgste_set_pte()
241 pte_t *ptep, pgste_t pgste) in pgste_pte_notify()
246 bits = pgste_val(pgste) & (PGSTE_IN_BIT | PGSTE_VSIE_BIT); in pgste_pte_notify()
248 pgste_val(pgste) ^= bits; in pgste_pte_notify()
252 return pgste; in pgste_pte_notify()
258 pgste_t pgste = __pgste(0); in ptep_xchg_start() local
261 pgste = pgste_get_lock(ptep); in ptep_xchg_start()
262 pgste = pgste_pte_notify(mm, addr, ptep, pgste); in ptep_xchg_start()
264 return pgste; in ptep_xchg_start()
269 pgste_t pgste, pte_t old, pte_t new) in ptep_xchg_commit() argument
273 pgste_set_key(ptep, pgste, new, mm); in ptep_xchg_commit()
275 pgste = pgste_update_all(old, pgste, mm); in ptep_xchg_commit()
276 if ((pgste_val(pgste) & _PGSTE_GPS_USAGE_MASK) == in ptep_xchg_commit()
280 pgste = pgste_set_pte(ptep, pgste, new); in ptep_xchg_commit()
281 pgste_set_unlock(ptep, pgste); in ptep_xchg_commit()
291 pgste_t pgste; in ptep_xchg_direct() local
296 pgste = ptep_xchg_start(mm, addr, ptep); in ptep_xchg_direct()
297 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_xchg_direct()
299 old = ptep_xchg_commit(mm, addr, ptep, pgste, old, new); in ptep_xchg_direct()
308 pgste_t pgste; in ptep_xchg_lazy() local
313 pgste = ptep_xchg_start(mm, addr, ptep); in ptep_xchg_lazy()
314 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_xchg_lazy()
316 old = ptep_xchg_commit(mm, addr, ptep, pgste, old, new); in ptep_xchg_lazy()
325 pgste_t pgste; in ptep_modify_prot_start() local
331 pgste = ptep_xchg_start(mm, addr, ptep); in ptep_modify_prot_start()
332 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_modify_prot_start()
335 pgste = pgste_update_all(old, pgste, mm); in ptep_modify_prot_start()
336 pgste_set(ptep, pgste); in ptep_modify_prot_start()
344 pgste_t pgste; in ptep_modify_prot_commit() local
350 pgste = pgste_get(ptep); in ptep_modify_prot_commit()
351 pgste_set_key(ptep, pgste, pte, mm); in ptep_modify_prot_commit()
352 pgste = pgste_set_pte(ptep, pgste, pte); in ptep_modify_prot_commit()
353 pgste_set_unlock(ptep, pgste); in ptep_modify_prot_commit()
593 pgste_t pgste; in ptep_set_pte_at() local
597 pgste = pgste_get_lock(ptep); in ptep_set_pte_at()
598 pgste_val(pgste) &= ~_PGSTE_GPS_ZERO; in ptep_set_pte_at()
599 pgste_set_key(ptep, pgste, entry, mm); in ptep_set_pte_at()
600 pgste = pgste_set_pte(ptep, pgste, entry); in ptep_set_pte_at()
601 pgste_set_unlock(ptep, pgste); in ptep_set_pte_at()
607 pgste_t pgste; in ptep_set_notify() local
610 pgste = pgste_get_lock(ptep); in ptep_set_notify()
611 pgste_val(pgste) |= PGSTE_IN_BIT; in ptep_set_notify()
612 pgste_set_unlock(ptep, pgste); in ptep_set_notify()
631 pgste_t pgste; in ptep_force_prot() local
634 pgste = pgste_get_lock(ptep); in ptep_force_prot()
641 pgste_set_unlock(ptep, pgste); in ptep_force_prot()
645 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_force_prot()
648 pgste = pgste_update_all(entry, pgste, mm); in ptep_force_prot()
656 pgste_val(pgste) |= bit; in ptep_force_prot()
657 pgste = pgste_set_pte(ptep, pgste, entry); in ptep_force_prot()
658 pgste_set_unlock(ptep, pgste); in ptep_force_prot()
691 pgste_t pgste; in ptep_unshadow_pte() local
694 pgste = pgste_get_lock(ptep); in ptep_unshadow_pte()
696 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_unshadow_pte()
699 pgste = pgste_set_pte(ptep, pgste, __pte(_PAGE_INVALID)); in ptep_unshadow_pte()
700 pgste_set_unlock(ptep, pgste); in ptep_unshadow_pte()
719 pgste_t pgste; in ptep_zap_unused() local
724 pgste = pgste_get_lock(ptep); in ptep_zap_unused()
725 pgstev = pgste_val(pgste); in ptep_zap_unused()
734 pgste_val(pgste) &= ~_PGSTE_GPS_USAGE_MASK; in ptep_zap_unused()
735 pgste_set_unlock(ptep, pgste); in ptep_zap_unused()
742 pgste_t pgste; in ptep_zap_key() local
746 pgste = pgste_get_lock(ptep); in ptep_zap_key()
747 pgste_val(pgste) &= ~(PGSTE_ACC_BITS | PGSTE_FP_BIT); in ptep_zap_key()
748 pgste_val(pgste) |= PGSTE_GR_BIT | PGSTE_GC_BIT; in ptep_zap_key()
752 pgste_set_unlock(ptep, pgste); in ptep_zap_key()
762 pgste_t pgste; in ptep_test_and_clear_uc() local
767 pgste = pgste_get_lock(ptep); in ptep_test_and_clear_uc()
768 dirty = !!(pgste_val(pgste) & PGSTE_UC_BIT); in ptep_test_and_clear_uc()
769 pgste_val(pgste) &= ~PGSTE_UC_BIT; in ptep_test_and_clear_uc()
772 pgste = pgste_pte_notify(mm, addr, ptep, pgste); in ptep_test_and_clear_uc()
773 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_test_and_clear_uc()
781 pgste_set_unlock(ptep, pgste); in ptep_test_and_clear_uc()
960 pgste_t pgste; in get_guest_storage_key() local
995 pgste = pgste_get_lock(ptep); in get_guest_storage_key()
996 *key = (pgste_val(pgste) & (PGSTE_ACC_BITS | PGSTE_FP_BIT)) >> 56; in get_guest_storage_key()
1001 *key |= (pgste_val(pgste) & (PGSTE_GR_BIT | PGSTE_GC_BIT)) >> 48; in get_guest_storage_key()
1002 pgste_set_unlock(ptep, pgste); in get_guest_storage_key()
1026 pgste_t pgste; in pgste_perform_essa() local
1040 pgste = pgste_get_lock(ptep); in pgste_perform_essa()
1041 pgstev = pgste_val(pgste); in pgste_perform_essa()
1109 pgste_val(pgste) = pgstev; in pgste_perform_essa()
1110 pgste_set_unlock(ptep, pgste); in pgste_perform_essa()