Symbol: crste
arch/s390/kvm/dat.c
1000
static long dat_set_pn_crste(union crste *crstep, gfn_t gfn, gfn_t next, struct dat_walk *walk)
arch/s390/kvm/dat.c
1002
union crste newcrste, oldcrste;
arch/s390/kvm/dat.c
1065
union crste *crstep;
arch/s390/kvm/dat.c
108
union crste crste;
arch/s390/kvm/dat.c
112
crste = table->crstes[0];
arch/s390/kvm/dat.c
113
if (crste.h.fc)
arch/s390/kvm/dat.c
115
if (!crste.h.i) {
arch/s390/kvm/dat.c
116
asce->rsto = crste.h.fc0.to;
arch/s390/kvm/dat.c
1189
static long __dat_peek_cmma_crste(union crste *crstep, gfn_t gfn, gfn_t next, struct dat_walk *walk)
arch/s390/kvm/dat.c
119
crste.h.tt--;
arch/s390/kvm/dat.c
120
crst_table_init((void *)table, crste.val);
arch/s390/kvm/dat.c
125
crste = _crste_fc0(asce->rsto, asce->dt + 1);
arch/s390/kvm/dat.c
129
crst_table_init((void *)table, _CRSTE_HOLE(crste.h.tt).val);
arch/s390/kvm/dat.c
130
table->crstes[0] = crste;
arch/s390/kvm/dat.c
1309
union crste *crstep;
arch/s390/kvm/dat.c
152
bool __must_check dat_crstep_xchg_atomic(union crste *crstep, union crste old, union crste new,
arch/s390/kvm/dat.c
301
static int dat_split_crste(struct kvm_s390_mmu_cache *mc, union crste *crstep,
arch/s390/kvm/dat.c
305
union crste old, new, init;
arch/s390/kvm/dat.c
379
int walk_level, union crste **last, union pte **ptepp)
arch/s390/kvm/dat.c
391
union crste entry;
arch/s390/kvm/dat.c
538
union crste crste;
arch/s390/kvm/dat.c
549
crste = READ_ONCE(*walk->last);
arch/s390/kvm/dat.c
551
if (crste_hole(crste)) {
arch/s390/kvm/dat.c
558
the_op = walk->ops->crste_ops[crste.h.tt];
arch/s390/kvm/dat.c
561
crste = READ_ONCE(*walk->last);
arch/s390/kvm/dat.c
565
if (!crste.h.i && !crste.h.fc) {
arch/s390/kvm/dat.c
566
if (!is_pmd(crste))
arch/s390/kvm/dat.c
568
_dereference_crste(crste), walk);
arch/s390/kvm/dat.c
571
dereference_pmd(crste.pmd), walk);
arch/s390/kvm/dat.c
615
union crste *crstep;
arch/s390/kvm/dat.c
626
union crste crste;
arch/s390/kvm/dat.c
628
crste = READ_ONCE(*crstep);
arch/s390/kvm/dat.c
629
if (!crste.h.fc || !crste.s.fc1.pr)
arch/s390/kvm/dat.c
631
skey->skey = page_get_storage_key(large_crste_to_phys(crste, gfn));
arch/s390/kvm/dat.c
657
union crste *crstep;
arch/s390/kvm/dat.c
712
union crste *crstep;
arch/s390/kvm/dat.c
758
union crste *crstep;
arch/s390/kvm/dat.c
767
union crste crste = READ_ONCE(*crstep);
arch/s390/kvm/dat.c
769
if (!crste.h.fc || !crste.s.fc1.pr)
arch/s390/kvm/dat.c
806
static long dat_reset_skeys_crste(union crste *crstep, gfn_t gfn, gfn_t next, struct dat_walk *walk)
arch/s390/kvm/dat.c
844
union crste dummy = { .val = p->token };
arch/s390/kvm/dat.c
857
static long _dat_slot_crste(union crste *crstep, gfn_t gfn, gfn_t next, struct dat_walk *walk)
arch/s390/kvm/dat.c
859
union crste new_crste, crste = READ_ONCE(*crstep);
arch/s390/kvm/dat.c
863
new_crste.h.tt = crste.h.tt;
arch/s390/kvm/dat.c
866
if (crste.val == new_crste.val)
arch/s390/kvm/dat.c
871
if (!dat_crstep_xchg_atomic(crstep, crste, new_crste, gfn, walk->asce))
arch/s390/kvm/dat.c
874
if (!crste.h.fc && !crste.h.i) {
arch/s390/kvm/dat.c
875
if (is_pmd(crste))
arch/s390/kvm/dat.c
876
dat_free_pt(dereference_pmd(crste.pmd));
arch/s390/kvm/dat.c
878
dat_free_level(dereference_crste(crste), true);
arch/s390/kvm/dat.c
884
if (!crste.h.fc && !crste.h.i)
arch/s390/kvm/dat.c
973
static long _dat_test_young_crste(union crste *crstep, gfn_t start, gfn_t end,
arch/s390/kvm/dat.h
309
static_assert(sizeof(union crste) == sizeof(unsigned long));
arch/s390/kvm/dat.h
330
union crste crstes[_CRST_ENTRIES];
arch/s390/kvm/dat.h
348
typedef long (*dat_walk_op)(union crste *crste, gfn_t gfn, gfn_t next, struct dat_walk *w);
arch/s390/kvm/dat.h
365
union crste *last;
arch/s390/kvm/dat.h
37
#define _CRSTE_TOK(l, t, p) ((union crste) { \
arch/s390/kvm/dat.h
407
static inline union crste _crste_fc0(kvm_pfn_t pfn, int tt)
arch/s390/kvm/dat.h
409
union crste res = { .val = PFN_PHYS(pfn) };
arch/s390/kvm/dat.h
431
static inline union crste _crste_fc1(kvm_pfn_t pfn, int tt, bool writable, bool dirty)
arch/s390/kvm/dat.h
433
union crste res = { .val = PFN_PHYS(pfn) & _SEGMENT_MASK };
arch/s390/kvm/dat.h
493
union crste *crstep; /* Used to resolve the fault, or NULL */
arch/s390/kvm/dat.h
516
bool dat_crstep_xchg_atomic(union crste *crstep, union crste old, union crste new, gfn_t gfn,
arch/s390/kvm/dat.h
518
void dat_crstep_xchg(union crste *crstep, union crste new, gfn_t gfn, union asce asce);
arch/s390/kvm/dat.h
524
int walk_level, union crste **last, union pte **ptepp);
arch/s390/kvm/dat.h
576
static inline struct crst_table *crste_table_start(union crste *crstep)
arch/s390/kvm/dat.h
586
static inline bool crdte_crste(union crste *crstep, union crste old, union crste new, gfn_t gfn,
arch/s390/kvm/dat.h
603
static __always_inline void idte_crste(union crste *crstep, gfn_t gfn, unsigned long opt,
arch/s390/kvm/dat.h
643
#define _CRSTE(x) ((union crste) { .val = _Generic((x), \
arch/s390/kvm/dat.h
648
union crste : (x).val)})
arch/s390/kvm/dat.h
650
#define _CRSTEP(x) ((union crste *)_Generic((*(x)), \
arch/s390/kvm/dat.h
655
union crste : (x)))
arch/s390/kvm/dat.h
669
static inline bool is_pmd(union crste crste)
arch/s390/kvm/dat.h
671
return crste.h.tt == TABLE_TYPE_SEGMENT;
arch/s390/kvm/dat.h
674
static inline bool is_pud(union crste crste)
arch/s390/kvm/dat.h
676
return crste.h.tt == TABLE_TYPE_REGION3;
arch/s390/kvm/dat.h
679
static inline bool is_p4d(union crste crste)
arch/s390/kvm/dat.h
681
return crste.h.tt == TABLE_TYPE_REGION2;
arch/s390/kvm/dat.h
684
static inline bool is_pgd(union crste crste)
arch/s390/kvm/dat.h
686
return crste.h.tt == TABLE_TYPE_REGION1;
arch/s390/kvm/dat.h
708
static inline phys_addr_t crste_origin_large(union crste crste)
arch/s390/kvm/dat.h
710
if (unlikely(!crste.h.fc || crste.h.tt > TABLE_TYPE_REGION3))
arch/s390/kvm/dat.h
712
if (is_pmd(crste))
arch/s390/kvm/dat.h
713
return pmd_origin_large(crste.pmd);
arch/s390/kvm/dat.h
714
return pud_origin_large(crste.pud);
arch/s390/kvm/dat.h
738
static inline bool crste_leaf(union crste crste)
arch/s390/kvm/dat.h
740
return (crste.h.tt <= TABLE_TYPE_REGION3) && crste.h.fc;
arch/s390/kvm/dat.h
743
static inline bool crste_prefix(union crste crste)
arch/s390/kvm/dat.h
745
return crste_leaf(crste) && crste.s.fc1.prefix_notif;
arch/s390/kvm/dat.h
748
static inline bool crste_dirty(union crste crste)
arch/s390/kvm/dat.h
750
return crste_leaf(crste) && crste.s.fc1.d;
arch/s390/kvm/dat.h
763
static inline bool _crste_hole(union crste crste)
arch/s390/kvm/dat.h
765
return crste.h.i && !crste.tok.pr && crste.tok.type != _DAT_TOKEN_NONE;
arch/s390/kvm/dat.h
770
static inline bool _crste_none(union crste crste)
arch/s390/kvm/dat.h
772
return crste.h.i && !crste.tok.pr && crste.tok.type == _DAT_TOKEN_NONE;
arch/s390/kvm/dat.h
787
static inline phys_addr_t large_crste_to_phys(union crste crste, gfn_t gfn)
arch/s390/kvm/dat.h
789
if (unlikely(!crste.h.fc || crste.h.tt > TABLE_TYPE_REGION3))
arch/s390/kvm/dat.h
791
if (is_pmd(crste))
arch/s390/kvm/dat.h
792
return large_pmd_to_phys(crste.pmd, gfn);
arch/s390/kvm/dat.h
793
return large_pud_to_phys(crste.pud, gfn);
arch/s390/kvm/dat.h
796
static inline bool cspg_crste(union crste *crstep, union crste old, union crste new)
arch/s390/kvm/dat.h
821
static inline struct crst_table *_dereference_crste(union crste crste)
arch/s390/kvm/dat.h
823
if (unlikely(is_pmd(crste)))
arch/s390/kvm/dat.h
825
return phys_to_virt(crste_origin(crste.pud));
arch/s390/kvm/dat.h
832
union crste : _dereference_crste(_CRSTE(x))))
arch/s390/kvm/dat.h
939
static inline union crste dat_crstep_clear_atomic(union crste *crstep, gfn_t gfn, union asce asce)
arch/s390/kvm/dat.h
941
union crste oldcrste, empty = _CRSTE_EMPTY(crstep->h.tt);
arch/s390/kvm/dat.h
949
static inline int get_level(union crste *crstep, union pte *ptep)
arch/s390/kvm/dat.h
966
static inline bool crste_is_ucas(union crste crste)
arch/s390/kvm/dat.h
968
return is_pmd(crste) && crste.h.i && crste.h.fc0.tl == 1 && crste.h.fc == 0;
arch/s390/kvm/gaccess.c
1464
static int _do_shadow_crste(struct gmap *sg, gpa_t raddr, union crste *host, union crste *table,
arch/s390/kvm/gaccess.c
1467
union crste newcrste, oldcrste;
arch/s390/kvm/gaccess.c
1510
union crste *table, *host;
arch/s390/kvm/gmap.c
1009
union crste *crstep;
arch/s390/kvm/gmap.c
1066
union crste *crstep;
arch/s390/kvm/gmap.c
1067
union crste crste;
arch/s390/kvm/gmap.c
1082
crste = dat_crstep_clear_atomic(crstep, r_gfn, sg->asce);
arch/s390/kvm/gmap.c
1083
if (crste_leaf(crste) || crste.h.i)
arch/s390/kvm/gmap.c
1085
if (is_pmd(crste))
arch/s390/kvm/gmap.c
1086
dat_free_pt(dereference_pmd(crste.pmd));
arch/s390/kvm/gmap.c
1088
dat_free_level(dereference_crste(crste), true);
arch/s390/kvm/gmap.c
312
static long gmap_clear_young_crste(union crste *crstep, gfn_t gfn, gfn_t end, struct dat_walk *walk)
arch/s390/kvm/gmap.c
315
union crste crste, new;
arch/s390/kvm/gmap.c
318
crste = READ_ONCE(*crstep);
arch/s390/kvm/gmap.c
320
if (!crste.h.fc)
arch/s390/kvm/gmap.c
322
if (!crste.s.fc1.y && crste.h.i)
arch/s390/kvm/gmap.c
324
if (crste_prefix(crste) && !gmap_mkold_prefix(priv->gmap, gfn, end))
arch/s390/kvm/gmap.c
327
new = crste;
arch/s390/kvm/gmap.c
332
folio_set_dirty(phys_to_folio(crste_origin_large(crste)));
arch/s390/kvm/gmap.c
335
} while (!dat_crstep_xchg_atomic(crstep, crste, new, gfn, walk->asce));
arch/s390/kvm/gmap.c
394
static long _gmap_unmap_crste(union crste *crstep, gfn_t gfn, gfn_t next, struct dat_walk *walk)
arch/s390/kvm/gmap.c
398
union crste old = *crstep;
arch/s390/kvm/gmap.c
477
static long _crste_test_and_clear_softdirty(union crste *table, gfn_t gfn, gfn_t end,
arch/s390/kvm/gmap.c
481
union crste crste, new;
arch/s390/kvm/gmap.c
486
crste = READ_ONCE(*table);
arch/s390/kvm/gmap.c
487
if (!crste.h.fc)
arch/s390/kvm/gmap.c
489
if (crste.h.p && !crste.s.fc1.sd)
arch/s390/kvm/gmap.c
497
if (crste.s.fc1.prefix_notif && !gmap_mkold_prefix(gmap, gfn, end))
arch/s390/kvm/gmap.c
499
new = crste;
arch/s390/kvm/gmap.c
502
} while (!gmap_crstep_xchg_atomic(gmap, table, crste, new, gfn));
arch/s390/kvm/gmap.c
525
union crste newcrste, oldcrste = READ_ONCE(*f->crstep);
arch/s390/kvm/gmap.c
634
union crste oldval, newval;
arch/s390/kvm/gmap.c
703
union crste newcrste, oldcrste;
arch/s390/kvm/gmap.c
705
union crste *crstep;
arch/s390/kvm/gmap.c
738
static int gmap_ucas_translate_simple(struct gmap *gmap, gpa_t *gaddr, union crste **crstepp)
arch/s390/kvm/gmap.c
770
union crste *crstep;
arch/s390/kvm/gmap.c
833
union crste *crstep;
arch/s390/kvm/gmap.c
852
static long _gmap_split_crste(union crste *crstep, gfn_t gfn, gfn_t next, struct dat_walk *walk)
arch/s390/kvm/gmap.c
855
union crste crste, newcrste;
arch/s390/kvm/gmap.c
857
crste = READ_ONCE(*crstep);
arch/s390/kvm/gmap.c
858
newcrste = _CRSTE_EMPTY(crste.h.tt);
arch/s390/kvm/gmap.c
860
while (crste_leaf(crste)) {
arch/s390/kvm/gmap.c
861
if (crste_prefix(crste))
arch/s390/kvm/gmap.c
863
if (crste.s.fc1.vsie_notif)
arch/s390/kvm/gmap.c
865
if (dat_crstep_xchg_atomic(crstep, crste, newcrste, gfn, walk->asce))
arch/s390/kvm/gmap.c
867
crste = READ_ONCE(*crstep);
arch/s390/kvm/gmap.c
935
static long _destroy_pages_crste(union crste *crstep, gfn_t gfn, gfn_t next, struct dat_walk *walk)
arch/s390/kvm/gmap.h
200
static inline bool __must_check _gmap_crstep_xchg_atomic(struct gmap *gmap, union crste *crstep,
arch/s390/kvm/gmap.h
201
union crste oldcrste, union crste newcrste,
arch/s390/kvm/gmap.h
231
static inline bool __must_check gmap_crstep_xchg_atomic(struct gmap *gmap, union crste *crstep,
arch/s390/kvm/gmap.h
232
union crste oldcrste, union crste newcrste,
arch/s390/kvm/priv.c
1184
union crste *crstep;