Home
last modified time | relevance | path

Searched refs:crstep (Results 1 – 3 of 3) sorted by relevance

/linux/arch/s390/kvm/
H A Ddat.c146 void dat_crstep_xchg(union crste *crstep, union crste new, gfn_t gfn, union asce asce) in dat_crstep_xchg() argument
148 if (crstep->h.i) { in dat_crstep_xchg()
149 WRITE_ONCE(*crstep, new); in dat_crstep_xchg()
152 crdte_crste(crstep, *crstep, new, gfn, asce); in dat_crstep_xchg()
157 idte_crste(crstep, gfn, IDTE_GUEST_ASCE, asce, IDTE_GLOBAL); in dat_crstep_xchg()
159 idte_crste(crstep, gfn, 0, NULL_ASCE, IDTE_GLOBAL); in dat_crstep_xchg()
160 WRITE_ONCE(*crstep, new); in dat_crstep_xchg()
178 bool dat_crstep_xchg_atomic(union crste *crstep, union crste old, union crste new, gfn_t gfn, in dat_crstep_xchg_atomic() argument
182 return arch_try_cmpxchg((long *)crstep, &old.val, new.val); in dat_crstep_xchg_atomic()
184 return crdte_crste(crstep, old, new, gfn, asce); in dat_crstep_xchg_atomic()
[all …]
H A Dgmap.c311 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
316 crste = READ_ONCE(*crstep); in gmap_clear_young_crste()
331 dat_crstep_xchg(crstep, new, gfn, walk->asce); in gmap_clear_young_crste()
390 static long _gmap_unmap_crste(union crste *crstep, gfn_t gfn, gfn_t next, struct dat_walk *walk) in _gmap_unmap_crste() argument
395 if (crstep->h.fc) { in _gmap_unmap_crste()
396 if (crstep->s.fc1.pr && test_bit(GMAP_FLAG_EXPORT_ON_UNMAP, &priv->gmap->flags)) in _gmap_unmap_crste()
397 folio = phys_to_folio(crste_origin_large(*crstep)); in _gmap_unmap_crste()
398 gmap_crstep_xchg(priv->gmap, crstep, _CRSTE_EMPTY(crstep->h.tt), gfn); in _gmap_unmap_crste()
516 union crste newcrste, oldcrste = READ_ONCE(*f->crstep); in gmap_handle_minor_crste_fault()
542 return !dat_crstep_xchg_atomic(f->crstep, oldcrste, newcrste, f->gfn, asce); in gmap_handle_minor_crste_fault()
[all …]
H A Ddat.h493 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);
578 static inline struct crst_table *crste_table_start(union crste *crstep) in crste_table_start() argument
580 return (struct crst_table *)ALIGN_DOWN((unsigned long)crstep, _CRST_TABLE_SIZE); in crste_table_start()
588 static inline bool crdte_crste(union crste *crstep, union crste old, union crste new, gfn_t gfn, in crdte_crste() argument
592 void *table = crste_table_start(crstep); in crdte_crste()
605 static __always_inline void idte_crste(union crste *crstep, gfn_t gfn, unsigned long opt, in idte_crste() argument
608 unsigned long table_origin = __pa(crste_table_start(crstep)); in idte_crste()
614 : "+m" (*crstep) in idte_crste()
[all …]