| /linux/arch/s390/kvm/ |
| H A D | gmap.c | 311 static long gmap_clear_young_crste(union crste *crstep, gfn_t gfn, gfn_t end, struct dat_walk *walk) in gmap_clear_young_crste() argument 317 crste = READ_ONCE(*crstep); in gmap_clear_young_crste() 334 } while (!dat_crstep_xchg_atomic(crstep, crste, new, gfn, walk->asce)); in gmap_clear_young_crste() 393 static long _gmap_unmap_crste(union crste *crstep, gfn_t gfn, gfn_t next, struct dat_walk *walk) in _gmap_unmap_crste() argument 397 union crste old = *crstep; in _gmap_unmap_crste() 405 KVM_BUG_ON(!gmap_crstep_xchg_atomic(priv->gmap, crstep, old, _CRSTE_EMPTY(old.h.tt), gfn), in _gmap_unmap_crste() 524 union crste newcrste, oldcrste = READ_ONCE(*f->crstep); in gmap_handle_minor_crste_fault() 548 return !gmap_crstep_xchg_atomic(gmap, f->crstep, oldcrste, newcrste, f->gfn); in gmap_handle_minor_crste_fault() 601 &fault->crstep, &fault->ptep); in gmap_try_fixup_minor() 639 &f->crstep, &f->ptep); in _gmap_link() [all …]
|
| H A D | dat.c | 152 bool __must_check dat_crstep_xchg_atomic(union crste *crstep, union crste old, union crste new, in dat_crstep_xchg_atomic() argument 156 return arch_try_cmpxchg((long *)crstep, &old.val, new.val); in dat_crstep_xchg_atomic() 158 return crdte_crste(crstep, old, new, gfn, asce); in dat_crstep_xchg_atomic() 159 return cspg_crste(crstep, old, new); in dat_crstep_xchg_atomic() 301 static int dat_split_crste(struct kvm_s390_mmu_cache *mc, union crste *crstep, in dat_split_crste() argument 308 old = READ_ONCE(*crstep); in dat_split_crste() 310 return dat_split_ste(mc, &crstep->pmd, gfn, asce, uses_skeys); in dat_split_crste() 335 if (dat_crstep_xchg_atomic(crstep, old, new, gfn, asce)) in dat_split_crste() 337 old = READ_ONCE(*crstep); in dat_split_crste() 615 union crste *crstep; in dat_get_storage_key() local [all …]
|
| H A D | dat.h | 493 union crste *crstep; /* Used to resolve the fault, or NULL */ member 516 bool dat_crstep_xchg_atomic(union crste *crstep, union crste old, union crste new, gfn_t gfn, 518 void dat_crstep_xchg(union crste *crstep, union crste new, gfn_t gfn, union asce asce); 576 static inline struct crst_table *crste_table_start(union crste *crstep) in crste_table_start() argument 578 return (struct crst_table *)ALIGN_DOWN((unsigned long)crstep, _CRST_TABLE_SIZE); in crste_table_start() 586 static inline bool crdte_crste(union crste *crstep, union crste old, union crste new, gfn_t gfn, in crdte_crste() argument 590 void *table = crste_table_start(crstep); in crdte_crste() 603 static __always_inline void idte_crste(union crste *crstep, gfn_t gfn, unsigned long opt, in idte_crste() argument 606 unsigned long table_origin = __pa(crste_table_start(crstep)); in idte_crste() 612 : "+m" (*crstep) in idte_crste() [all …]
|
| H A D | gmap.h | 199 static inline bool __must_check _gmap_crstep_xchg_atomic(struct gmap *gmap, union crste *crstep, in _gmap_crstep_xchg_atomic() argument 205 if (KVM_BUG_ON(crstep->h.tt != oldcrste.h.tt || newcrste.h.tt != oldcrste.h.tt, gmap->kvm)) in _gmap_crstep_xchg_atomic() 227 return dat_crstep_xchg_atomic(crstep, oldcrste, newcrste, gfn, gmap->asce); in _gmap_crstep_xchg_atomic() 230 static inline bool __must_check gmap_crstep_xchg_atomic(struct gmap *gmap, union crste *crstep, in gmap_crstep_xchg_atomic() argument 234 return _gmap_crstep_xchg_atomic(gmap, crstep, oldcrste, newcrste, gfn, true); in gmap_crstep_xchg_atomic()
|
| H A D | priv.c | 1184 union crste *crstep; in _essa_clear_cbrl() local 1193 0, TABLE_TYPE_PAGE_TABLE, &crstep, &ptep)) in _essa_clear_cbrl()
|