Lines Matching refs:pgste

127 static inline void pgste_set_unlock(pte_t *ptep, pgste_t pgste)  in pgste_set_unlock()  argument
134 : "d" (pgste_val(pgste)), "Q" (ptep[PTRS_PER_PTE]) in pgste_set_unlock()
141 unsigned long pgste = 0; in pgste_get() local
143 pgste = *(unsigned long *)(ptep + PTRS_PER_PTE); in pgste_get()
145 return __pgste(pgste); in pgste_get()
148 static inline void pgste_set(pte_t *ptep, pgste_t pgste) in pgste_set() argument
151 *(pgste_t *)(ptep + PTRS_PER_PTE) = pgste; in pgste_set()
155 static inline pgste_t pgste_update_all(pte_t pte, pgste_t pgste, in pgste_update_all() argument
162 return pgste; in pgste_update_all()
167 pgste_val(pgste) |= bits << 48; /* GR bit & GC bit */ in pgste_update_all()
169 pgste_val(pgste) &= ~(PGSTE_ACC_BITS | PGSTE_FP_BIT); in pgste_update_all()
170 pgste_val(pgste) |= (skey & (_PAGE_ACC_BITS | _PAGE_FP_BIT)) << 56; in pgste_update_all()
172 return pgste; in pgste_update_all()
176 static inline void pgste_set_key(pte_t *ptep, pgste_t pgste, pte_t entry, in pgste_set_key() argument
192 nkey = (pgste_val(pgste) & (PGSTE_ACC_BITS | PGSTE_FP_BIT)) >> 56; in pgste_set_key()
193 nkey |= (pgste_val(pgste) & (PGSTE_GR_BIT | PGSTE_GC_BIT)) >> 48; in pgste_set_key()
198 static inline pgste_t pgste_set_pte(pte_t *ptep, pgste_t pgste, pte_t entry) in pgste_set_pte() argument
214 pgste_val(pgste) |= PGSTE_UC_BIT; in pgste_set_pte()
218 return pgste; in pgste_set_pte()
223 pte_t *ptep, pgste_t pgste) in pgste_pte_notify()
228 bits = pgste_val(pgste) & (PGSTE_IN_BIT | PGSTE_VSIE_BIT); in pgste_pte_notify()
230 pgste_val(pgste) ^= bits; in pgste_pte_notify()
234 return pgste; in pgste_pte_notify()
240 pgste_t pgste = __pgste(0); in ptep_xchg_start() local
243 pgste = pgste_get_lock(ptep); in ptep_xchg_start()
244 pgste = pgste_pte_notify(mm, addr, ptep, pgste); in ptep_xchg_start()
246 return pgste; in ptep_xchg_start()
251 pgste_t pgste, pte_t old, pte_t new) in ptep_xchg_commit() argument
255 pgste_set_key(ptep, pgste, new, mm); in ptep_xchg_commit()
257 pgste = pgste_update_all(old, pgste, mm); in ptep_xchg_commit()
258 if ((pgste_val(pgste) & _PGSTE_GPS_USAGE_MASK) == in ptep_xchg_commit()
262 pgste = pgste_set_pte(ptep, pgste, new); in ptep_xchg_commit()
263 pgste_set_unlock(ptep, pgste); in ptep_xchg_commit()
273 pgste_t pgste; in ptep_xchg_direct() local
278 pgste = ptep_xchg_start(mm, addr, ptep); in ptep_xchg_direct()
279 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_xchg_direct()
281 old = ptep_xchg_commit(mm, addr, ptep, pgste, old, new); in ptep_xchg_direct()
290 pgste_t pgste; in ptep_xchg_lazy() local
295 pgste = ptep_xchg_start(mm, addr, ptep); in ptep_xchg_lazy()
296 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_xchg_lazy()
298 old = ptep_xchg_commit(mm, addr, ptep, pgste, old, new); in ptep_xchg_lazy()
307 pgste_t pgste; in ptep_modify_prot_start() local
312 pgste = ptep_xchg_start(mm, addr, ptep); in ptep_modify_prot_start()
313 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_modify_prot_start()
316 pgste = pgste_update_all(old, pgste, mm); in ptep_modify_prot_start()
317 pgste_set(ptep, pgste); in ptep_modify_prot_start()
326 pgste_t pgste; in ptep_modify_prot_commit() local
331 pgste = pgste_get(ptep); in ptep_modify_prot_commit()
332 pgste_set_key(ptep, pgste, pte, mm); in ptep_modify_prot_commit()
333 pgste = pgste_set_pte(ptep, pgste, pte); in ptep_modify_prot_commit()
334 pgste_set_unlock(ptep, pgste); in ptep_modify_prot_commit()
559 pgste_t pgste; in ptep_set_pte_at() local
563 pgste = pgste_get_lock(ptep); in ptep_set_pte_at()
564 pgste_val(pgste) &= ~_PGSTE_GPS_ZERO; in ptep_set_pte_at()
565 pgste_set_key(ptep, pgste, entry, mm); in ptep_set_pte_at()
566 pgste = pgste_set_pte(ptep, pgste, entry); in ptep_set_pte_at()
567 pgste_set_unlock(ptep, pgste); in ptep_set_pte_at()
573 pgste_t pgste; in ptep_set_notify() local
576 pgste = pgste_get_lock(ptep); in ptep_set_notify()
577 pgste_val(pgste) |= PGSTE_IN_BIT; in ptep_set_notify()
578 pgste_set_unlock(ptep, pgste); in ptep_set_notify()
597 pgste_t pgste; in ptep_force_prot() local
600 pgste = pgste_get_lock(ptep); in ptep_force_prot()
607 pgste_set_unlock(ptep, pgste); in ptep_force_prot()
611 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_force_prot()
614 pgste = pgste_update_all(entry, pgste, mm); in ptep_force_prot()
622 pgste_val(pgste) |= bit; in ptep_force_prot()
623 pgste = pgste_set_pte(ptep, pgste, entry); in ptep_force_prot()
624 pgste_set_unlock(ptep, pgste); in ptep_force_prot()
657 pgste_t pgste; in ptep_unshadow_pte() local
660 pgste = pgste_get_lock(ptep); in ptep_unshadow_pte()
662 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_unshadow_pte()
665 pgste = pgste_set_pte(ptep, pgste, __pte(_PAGE_INVALID)); in ptep_unshadow_pte()
666 pgste_set_unlock(ptep, pgste); in ptep_unshadow_pte()
685 pgste_t pgste; in ptep_zap_unused() local
690 pgste = pgste_get_lock(ptep); in ptep_zap_unused()
691 pgstev = pgste_val(pgste); in ptep_zap_unused()
700 pgste_val(pgste) &= ~_PGSTE_GPS_USAGE_MASK; in ptep_zap_unused()
701 pgste_set_unlock(ptep, pgste); in ptep_zap_unused()
708 pgste_t pgste; in ptep_zap_key() local
712 pgste = pgste_get_lock(ptep); in ptep_zap_key()
713 pgste_val(pgste) &= ~(PGSTE_ACC_BITS | PGSTE_FP_BIT); in ptep_zap_key()
714 pgste_val(pgste) |= PGSTE_GR_BIT | PGSTE_GC_BIT; in ptep_zap_key()
718 pgste_set_unlock(ptep, pgste); in ptep_zap_key()
728 pgste_t pgste; in ptep_test_and_clear_uc() local
733 pgste = pgste_get_lock(ptep); in ptep_test_and_clear_uc()
734 dirty = !!(pgste_val(pgste) & PGSTE_UC_BIT); in ptep_test_and_clear_uc()
735 pgste_val(pgste) &= ~PGSTE_UC_BIT; in ptep_test_and_clear_uc()
738 pgste = pgste_pte_notify(mm, addr, ptep, pgste); in ptep_test_and_clear_uc()
739 nodat = !!(pgste_val(pgste) & _PGSTE_GPS_NODAT); in ptep_test_and_clear_uc()
747 pgste_set_unlock(ptep, pgste); in ptep_test_and_clear_uc()
914 pgste_t pgste; in get_guest_storage_key() local
943 pgste = pgste_get_lock(ptep); in get_guest_storage_key()
944 *key = (pgste_val(pgste) & (PGSTE_ACC_BITS | PGSTE_FP_BIT)) >> 56; in get_guest_storage_key()
949 *key |= (pgste_val(pgste) & (PGSTE_GR_BIT | PGSTE_GC_BIT)) >> 48; in get_guest_storage_key()
950 pgste_set_unlock(ptep, pgste); in get_guest_storage_key()
973 pgste_t pgste; in pgste_perform_essa() local
983 pgste = pgste_get_lock(ptep); in pgste_perform_essa()
984 pgstev = pgste_val(pgste); in pgste_perform_essa()
1052 pgste_val(pgste) = pgstev; in pgste_perform_essa()
1053 pgste_set_unlock(ptep, pgste); in pgste_perform_essa()