Lines Matching refs:pgste

140 static inline void pgste_set_unlock(pte_t *ptep, pgste_t pgste)  in pgste_set_unlock()  argument
144 WRITE_ONCE(*(unsigned long *)(ptep + PTRS_PER_PTE), pgste_val(pgste) & ~PGSTE_PCL_BIT); in pgste_set_unlock()
150 unsigned long pgste = 0; in pgste_get() local
152 pgste = *(unsigned long *)(ptep + PTRS_PER_PTE); in pgste_get()
154 return __pgste(pgste); in pgste_get()
157 static inline void pgste_set(pte_t *ptep, pgste_t pgste) in pgste_set() argument
160 *(pgste_t *)(ptep + PTRS_PER_PTE) = pgste; in pgste_set()
164 static inline pgste_t pgste_update_all(pte_t pte, pgste_t pgste, in pgste_update_all() argument
171 return pgste; in pgste_update_all()
176 pgste_val(pgste) |= bits << 48; /* GR bit & GC bit */ in pgste_update_all()
178 pgste_val(pgste) &= ~(PGSTE_ACC_BITS | PGSTE_FP_BIT); in pgste_update_all()
179 pgste_val(pgste) |= (skey & (_PAGE_ACC_BITS | _PAGE_FP_BIT)) << 56; in pgste_update_all()
181 return pgste; in pgste_update_all()
185 static inline void pgste_set_key(pte_t *ptep, pgste_t pgste, pte_t entry, in pgste_set_key() argument
201 nkey = (pgste_val(pgste) & (PGSTE_ACC_BITS | PGSTE_FP_BIT)) >> 56; in pgste_set_key()
202 nkey |= (pgste_val(pgste) & (PGSTE_GR_BIT | PGSTE_GC_BIT)) >> 48; in pgste_set_key()
207 static inline pgste_t pgste_set_pte(pte_t *ptep, pgste_t pgste, pte_t entry) in pgste_set_pte() argument
223 pgste_val(pgste) |= PGSTE_UC_BIT; in pgste_set_pte()
227 return pgste; in pgste_set_pte()
232 pte_t *ptep, pgste_t pgste) in pgste_pte_notify()
237 bits = pgste_val(pgste) & (PGSTE_IN_BIT | PGSTE_VSIE_BIT); in pgste_pte_notify()
239 pgste_val(pgste) ^= bits; in pgste_pte_notify()
243 return pgste; in pgste_pte_notify()
249 pgste_t pgste = __pgste(0); in ptep_xchg_start() local
252 pgste = pgste_get_lock(ptep); in ptep_xchg_start()
253 pgste = pgste_pte_notify(mm, addr, ptep, pgste); in ptep_xchg_start()
255 return pgste; in ptep_xchg_start()
260 pgste_t pgste, pte_t old, pte_t new) in ptep_xchg_commit() argument
264 pgste_set_key(ptep, pgste, new, mm); in ptep_xchg_commit()
266 pgste = pgste_update_all(old, pgste, mm); in ptep_xchg_commit()
267 if ((pgste_val(pgste) & _PGSTE_GPS_USAGE_MASK) == in ptep_xchg_commit()
271 pgste = pgste_set_pte(ptep, pgste, new); in ptep_xchg_commit()
272 pgste_set_unlock(ptep, pgste); in ptep_xchg_commit()
282 pgste_t pgste; in ptep_xchg_direct() local
287 pgste = ptep_xchg_start(mm, addr, ptep); in ptep_xchg_direct()
288 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_xchg_direct()
290 old = ptep_xchg_commit(mm, addr, ptep, pgste, old, new); in ptep_xchg_direct()
324 pgste_t pgste; in ptep_xchg_lazy() local
329 pgste = ptep_xchg_start(mm, addr, ptep); in ptep_xchg_lazy()
330 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_xchg_lazy()
332 old = ptep_xchg_commit(mm, addr, ptep, pgste, old, new); in ptep_xchg_lazy()
341 pgste_t pgste; in ptep_modify_prot_start() local
347 pgste = ptep_xchg_start(mm, addr, ptep); in ptep_modify_prot_start()
348 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_modify_prot_start()
351 pgste = pgste_update_all(old, pgste, mm); in ptep_modify_prot_start()
352 pgste_set(ptep, pgste); in ptep_modify_prot_start()
360 pgste_t pgste; in ptep_modify_prot_commit() local
366 pgste = pgste_get(ptep); in ptep_modify_prot_commit()
367 pgste_set_key(ptep, pgste, pte, mm); in ptep_modify_prot_commit()
368 pgste = pgste_set_pte(ptep, pgste, pte); in ptep_modify_prot_commit()
369 pgste_set_unlock(ptep, pgste); in ptep_modify_prot_commit()
609 pgste_t pgste; in ptep_set_pte_at() local
613 pgste = pgste_get_lock(ptep); in ptep_set_pte_at()
614 pgste_val(pgste) &= ~_PGSTE_GPS_ZERO; in ptep_set_pte_at()
615 pgste_set_key(ptep, pgste, entry, mm); in ptep_set_pte_at()
616 pgste = pgste_set_pte(ptep, pgste, entry); in ptep_set_pte_at()
617 pgste_set_unlock(ptep, pgste); in ptep_set_pte_at()
623 pgste_t pgste; in ptep_set_notify() local
626 pgste = pgste_get_lock(ptep); in ptep_set_notify()
627 pgste_val(pgste) |= PGSTE_IN_BIT; in ptep_set_notify()
628 pgste_set_unlock(ptep, pgste); in ptep_set_notify()
647 pgste_t pgste; in ptep_force_prot() local
650 pgste = pgste_get_lock(ptep); in ptep_force_prot()
657 pgste_set_unlock(ptep, pgste); in ptep_force_prot()
661 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_force_prot()
664 pgste = pgste_update_all(entry, pgste, mm); in ptep_force_prot()
672 pgste_val(pgste) |= bit; in ptep_force_prot()
673 pgste = pgste_set_pte(ptep, pgste, entry); in ptep_force_prot()
674 pgste_set_unlock(ptep, pgste); in ptep_force_prot()
707 pgste_t pgste; in ptep_unshadow_pte() local
710 pgste = pgste_get_lock(ptep); in ptep_unshadow_pte()
712 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_unshadow_pte()
715 pgste = pgste_set_pte(ptep, pgste, __pte(_PAGE_INVALID)); in ptep_unshadow_pte()
716 pgste_set_unlock(ptep, pgste); in ptep_unshadow_pte()
735 pgste_t pgste; in ptep_zap_unused() local
740 pgste = pgste_get_lock(ptep); in ptep_zap_unused()
741 pgstev = pgste_val(pgste); in ptep_zap_unused()
750 pgste_val(pgste) &= ~(_PGSTE_GPS_USAGE_MASK | _PGSTE_GPS_NODAT); in ptep_zap_unused()
751 pgste_set_unlock(ptep, pgste); in ptep_zap_unused()
758 pgste_t pgste; in ptep_zap_key() local
762 pgste = pgste_get_lock(ptep); in ptep_zap_key()
763 pgste_val(pgste) &= ~(PGSTE_ACC_BITS | PGSTE_FP_BIT); in ptep_zap_key()
764 pgste_val(pgste) |= PGSTE_GR_BIT | PGSTE_GC_BIT; in ptep_zap_key()
768 pgste_set_unlock(ptep, pgste); in ptep_zap_key()
778 pgste_t pgste; in ptep_test_and_clear_uc() local
783 pgste = pgste_get_lock(ptep); in ptep_test_and_clear_uc()
784 dirty = !!(pgste_val(pgste) & PGSTE_UC_BIT); in ptep_test_and_clear_uc()
785 pgste_val(pgste) &= ~PGSTE_UC_BIT; in ptep_test_and_clear_uc()
788 pgste = pgste_pte_notify(mm, addr, ptep, pgste); in ptep_test_and_clear_uc()
789 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_test_and_clear_uc()
797 pgste_set_unlock(ptep, pgste); in ptep_test_and_clear_uc()
980 pgste_t pgste; in get_guest_storage_key() local
1017 pgste = pgste_get_lock(ptep); in get_guest_storage_key()
1018 *key = (pgste_val(pgste) & (PGSTE_ACC_BITS | PGSTE_FP_BIT)) >> 56; in get_guest_storage_key()
1023 *key |= (pgste_val(pgste) & (PGSTE_GR_BIT | PGSTE_GC_BIT)) >> 48; in get_guest_storage_key()
1024 pgste_set_unlock(ptep, pgste); in get_guest_storage_key()
1048 pgste_t pgste; in pgste_perform_essa() local
1062 pgste = pgste_get_lock(ptep); in pgste_perform_essa()
1063 pgstev = pgste_val(pgste); in pgste_perform_essa()
1131 pgste_val(pgste) = pgstev; in pgste_perform_essa()
1132 pgste_set_unlock(ptep, pgste); in pgste_perform_essa()