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()
579 pgste_t pgste; in ptep_set_pte_at() local
583 pgste = pgste_get_lock(ptep); in ptep_set_pte_at()
584 pgste_val(pgste) &= ~_PGSTE_GPS_ZERO; in ptep_set_pte_at()
585 pgste_set_key(ptep, pgste, entry, mm); in ptep_set_pte_at()
586 pgste = pgste_set_pte(ptep, pgste, entry); in ptep_set_pte_at()
587 pgste_set_unlock(ptep, pgste); in ptep_set_pte_at()
593 pgste_t pgste; in ptep_set_notify() local
596 pgste = pgste_get_lock(ptep); in ptep_set_notify()
597 pgste_val(pgste) |= PGSTE_IN_BIT; in ptep_set_notify()
598 pgste_set_unlock(ptep, pgste); in ptep_set_notify()
617 pgste_t pgste; in ptep_force_prot() local
620 pgste = pgste_get_lock(ptep); in ptep_force_prot()
627 pgste_set_unlock(ptep, pgste); in ptep_force_prot()
631 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_force_prot()
634 pgste = pgste_update_all(entry, pgste, mm); in ptep_force_prot()
642 pgste_val(pgste) |= bit; in ptep_force_prot()
643 pgste = pgste_set_pte(ptep, pgste, entry); in ptep_force_prot()
644 pgste_set_unlock(ptep, pgste); in ptep_force_prot()
677 pgste_t pgste; in ptep_unshadow_pte() local
680 pgste = pgste_get_lock(ptep); in ptep_unshadow_pte()
682 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_unshadow_pte()
685 pgste = pgste_set_pte(ptep, pgste, __pte(_PAGE_INVALID)); in ptep_unshadow_pte()
686 pgste_set_unlock(ptep, pgste); in ptep_unshadow_pte()
705 pgste_t pgste; in ptep_zap_unused() local
710 pgste = pgste_get_lock(ptep); in ptep_zap_unused()
711 pgstev = pgste_val(pgste); in ptep_zap_unused()
720 pgste_val(pgste) &= ~_PGSTE_GPS_USAGE_MASK; in ptep_zap_unused()
721 pgste_set_unlock(ptep, pgste); in ptep_zap_unused()
728 pgste_t pgste; in ptep_zap_key() local
732 pgste = pgste_get_lock(ptep); in ptep_zap_key()
733 pgste_val(pgste) &= ~(PGSTE_ACC_BITS | PGSTE_FP_BIT); in ptep_zap_key()
734 pgste_val(pgste) |= PGSTE_GR_BIT | PGSTE_GC_BIT; in ptep_zap_key()
738 pgste_set_unlock(ptep, pgste); in ptep_zap_key()
748 pgste_t pgste; in ptep_test_and_clear_uc() local
753 pgste = pgste_get_lock(ptep); in ptep_test_and_clear_uc()
754 dirty = !!(pgste_val(pgste) & PGSTE_UC_BIT); in ptep_test_and_clear_uc()
755 pgste_val(pgste) &= ~PGSTE_UC_BIT; in ptep_test_and_clear_uc()
758 pgste = pgste_pte_notify(mm, addr, ptep, pgste); in ptep_test_and_clear_uc()
759 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_test_and_clear_uc()
767 pgste_set_unlock(ptep, pgste); in ptep_test_and_clear_uc()
934 pgste_t pgste; in get_guest_storage_key() local
963 pgste = pgste_get_lock(ptep); in get_guest_storage_key()
964 *key = (pgste_val(pgste) & (PGSTE_ACC_BITS | PGSTE_FP_BIT)) >> 56; in get_guest_storage_key()
969 *key |= (pgste_val(pgste) & (PGSTE_GR_BIT | PGSTE_GC_BIT)) >> 48; in get_guest_storage_key()
970 pgste_set_unlock(ptep, pgste); in get_guest_storage_key()
994 pgste_t pgste; in pgste_perform_essa() local
1008 pgste = pgste_get_lock(ptep); in pgste_perform_essa()
1009 pgstev = pgste_val(pgste); in pgste_perform_essa()
1077 pgste_val(pgste) = pgstev; in pgste_perform_essa()
1078 pgste_set_unlock(ptep, pgste); in pgste_perform_essa()