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()
333 pgste_t pgste; in ptep_xchg_lazy() local
338 pgste = ptep_xchg_start(mm, addr, ptep); in ptep_xchg_lazy()
339 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_xchg_lazy()
341 old = ptep_xchg_commit(mm, addr, ptep, pgste, old, new); in ptep_xchg_lazy()
350 pgste_t pgste; in ptep_modify_prot_start() local
356 pgste = ptep_xchg_start(mm, addr, ptep); in ptep_modify_prot_start()
357 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_modify_prot_start()
360 pgste = pgste_update_all(old, pgste, mm); in ptep_modify_prot_start()
361 pgste_set(ptep, pgste); in ptep_modify_prot_start()
369 pgste_t pgste; in ptep_modify_prot_commit() local
375 pgste = pgste_get(ptep); in ptep_modify_prot_commit()
376 pgste_set_key(ptep, pgste, pte, mm); in ptep_modify_prot_commit()
377 pgste = pgste_set_pte(ptep, pgste, pte); in ptep_modify_prot_commit()
378 pgste_set_unlock(ptep, pgste); in ptep_modify_prot_commit()
618 pgste_t pgste; in ptep_set_pte_at() local
622 pgste = pgste_get_lock(ptep); in ptep_set_pte_at()
623 pgste_val(pgste) &= ~_PGSTE_GPS_ZERO; in ptep_set_pte_at()
624 pgste_set_key(ptep, pgste, entry, mm); in ptep_set_pte_at()
625 pgste = pgste_set_pte(ptep, pgste, entry); in ptep_set_pte_at()
626 pgste_set_unlock(ptep, pgste); in ptep_set_pte_at()
632 pgste_t pgste; in ptep_set_notify() local
635 pgste = pgste_get_lock(ptep); in ptep_set_notify()
636 pgste_val(pgste) |= PGSTE_IN_BIT; in ptep_set_notify()
637 pgste_set_unlock(ptep, pgste); in ptep_set_notify()
656 pgste_t pgste; in ptep_force_prot() local
659 pgste = pgste_get_lock(ptep); in ptep_force_prot()
666 pgste_set_unlock(ptep, pgste); in ptep_force_prot()
670 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_force_prot()
673 pgste = pgste_update_all(entry, pgste, mm); in ptep_force_prot()
681 pgste_val(pgste) |= bit; in ptep_force_prot()
682 pgste = pgste_set_pte(ptep, pgste, entry); in ptep_force_prot()
683 pgste_set_unlock(ptep, pgste); in ptep_force_prot()
716 pgste_t pgste; in ptep_unshadow_pte() local
719 pgste = pgste_get_lock(ptep); in ptep_unshadow_pte()
721 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_unshadow_pte()
724 pgste = pgste_set_pte(ptep, pgste, __pte(_PAGE_INVALID)); in ptep_unshadow_pte()
725 pgste_set_unlock(ptep, pgste); in ptep_unshadow_pte()
744 pgste_t pgste; in ptep_zap_unused() local
749 pgste = pgste_get_lock(ptep); in ptep_zap_unused()
750 pgstev = pgste_val(pgste); in ptep_zap_unused()
759 pgste_val(pgste) &= ~_PGSTE_GPS_USAGE_MASK; in ptep_zap_unused()
760 pgste_set_unlock(ptep, pgste); in ptep_zap_unused()
767 pgste_t pgste; in ptep_zap_key() local
771 pgste = pgste_get_lock(ptep); in ptep_zap_key()
772 pgste_val(pgste) &= ~(PGSTE_ACC_BITS | PGSTE_FP_BIT); in ptep_zap_key()
773 pgste_val(pgste) |= PGSTE_GR_BIT | PGSTE_GC_BIT; in ptep_zap_key()
777 pgste_set_unlock(ptep, pgste); in ptep_zap_key()
787 pgste_t pgste; in ptep_test_and_clear_uc() local
792 pgste = pgste_get_lock(ptep); in ptep_test_and_clear_uc()
793 dirty = !!(pgste_val(pgste) & PGSTE_UC_BIT); in ptep_test_and_clear_uc()
794 pgste_val(pgste) &= ~PGSTE_UC_BIT; in ptep_test_and_clear_uc()
797 pgste = pgste_pte_notify(mm, addr, ptep, pgste); in ptep_test_and_clear_uc()
798 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_test_and_clear_uc()
806 pgste_set_unlock(ptep, pgste); in ptep_test_and_clear_uc()
989 pgste_t pgste; in get_guest_storage_key() local
1026 pgste = pgste_get_lock(ptep); in get_guest_storage_key()
1027 *key = (pgste_val(pgste) & (PGSTE_ACC_BITS | PGSTE_FP_BIT)) >> 56; in get_guest_storage_key()
1032 *key |= (pgste_val(pgste) & (PGSTE_GR_BIT | PGSTE_GC_BIT)) >> 48; in get_guest_storage_key()
1033 pgste_set_unlock(ptep, pgste); in get_guest_storage_key()
1057 pgste_t pgste; in pgste_perform_essa() local
1071 pgste = pgste_get_lock(ptep); in pgste_perform_essa()
1072 pgstev = pgste_val(pgste); in pgste_perform_essa()
1140 pgste_val(pgste) = pgstev; in pgste_perform_essa()
1141 pgste_set_unlock(ptep, pgste); in pgste_perform_essa()