Symbol: gmap
arch/s390/include/asm/kvm_host.h
425
struct gmap *gmap;
arch/s390/include/asm/kvm_host.h
646
struct gmap *gmap;
arch/s390/kvm/faultin.c
112
rc = gmap_link(mc, kvm->arch.gmap, f);
arch/s390/kvm/faultin.c
52
if (gmap_try_fixup_minor(kvm->arch.gmap, f) == 0)
arch/s390/kvm/gaccess.c
1279
static int walk_guest_tables(struct gmap *sg, unsigned long saddr, struct pgtwalk *w, bool wr)
arch/s390/kvm/gaccess.c
1281
struct gmap *parent = sg->parent;
arch/s390/kvm/gaccess.c
1422
static int _do_shadow_pte(struct gmap *sg, gpa_t raddr, union pte *ptep_h, union pte *ptep,
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
1505
static int _gaccess_do_shadow(struct kvm_s390_mmu_cache *mc, struct gmap *sg,
arch/s390/kvm/gaccess.c
1583
static inline int _gaccess_shadow_fault(struct kvm_vcpu *vcpu, struct gmap *sg, gpa_t saddr,
arch/s390/kvm/gaccess.c
1586
struct gmap *parent;
arch/s390/kvm/gaccess.c
1630
static int __gaccess_shadow_fault(struct kvm_vcpu *vcpu, struct gmap *sg, gpa_t saddr,
arch/s390/kvm/gaccess.c
1655
int gaccess_shadow_fault(struct kvm_vcpu *vcpu, struct gmap *sg, gpa_t saddr,
arch/s390/kvm/gaccess.c
660
r = dat_get_storage_key(kvm->arch.gmap->asce, gpa_to_gfn(gpa), &storage_key);
arch/s390/kvm/gaccess.c
719
r = dat_get_storage_key(vcpu->arch.gmap->asce, gpa_to_gfn(gpa), &storage_key);
arch/s390/kvm/gaccess.h
463
int gaccess_shadow_fault(struct kvm_vcpu *vcpu, struct gmap *sg, gpa_t saddr,
arch/s390/kvm/gmap.c
1005
int gmap_protect_rmap(struct kvm_s390_mmu_cache *mc, struct gmap *sg, gfn_t p_gfn, gfn_t r_gfn,
arch/s390/kvm/gmap.c
1048
void gmap_set_cmma_all_dirty(struct gmap *gmap)
arch/s390/kvm/gmap.c
1054
scoped_guard(read_lock, &gmap->kvm->mmu_lock)
arch/s390/kvm/gmap.c
1055
gfn = _dat_walk_gfn_range(gfn, asce_end(gmap->asce), gmap->asce, &ops,
arch/s390/kvm/gmap.c
1061
static void gmap_unshadow_level(struct gmap *sg, gfn_t r_gfn, int level)
arch/s390/kvm/gmap.c
1089
static void gmap_unshadow(struct gmap *sg)
arch/s390/kvm/gmap.c
1102
gmap_cache->gmap = NULL;
arch/s390/kvm/gmap.c
1109
void _gmap_handle_vsie_unshadow_event(struct gmap *parent, gfn_t gfn)
arch/s390/kvm/gmap.c
1112
struct gmap *sg, *next;
arch/s390/kvm/gmap.c
113
struct gmap *gmap_new_child(struct gmap *parent, gfn_t limit)
arch/s390/kvm/gmap.c
1141
static struct gmap *gmap_find_shadow(struct gmap *parent, union asce asce, int edat_level)
arch/s390/kvm/gmap.c
1143
struct gmap *sg;
arch/s390/kvm/gmap.c
115
struct gmap *res;
arch/s390/kvm/gmap.c
1160
static inline int __gmap_protect_asce_top_level(struct kvm_s390_mmu_cache *mc, struct gmap *sg,
arch/s390/kvm/gmap.c
1163
struct gmap *parent;
arch/s390/kvm/gmap.c
1192
static inline int _gmap_protect_asce_top_level(struct kvm_s390_mmu_cache *mc, struct gmap *sg,
arch/s390/kvm/gmap.c
1213
static int gmap_protect_asce_top_level(struct kvm_s390_mmu_cache *mc, struct gmap *sg)
arch/s390/kvm/gmap.c
1253
struct gmap *gmap_create_shadow(struct kvm_s390_mmu_cache *mc, struct gmap *parent,
arch/s390/kvm/gmap.c
1256
struct gmap *sg, *new;
arch/s390/kvm/gmap.c
126
int gmap_set_limit(struct gmap *gmap, gfn_t limit)
arch/s390/kvm/gmap.c
141
scoped_guard(write_lock, &gmap->kvm->mmu_lock)
arch/s390/kvm/gmap.c
142
rc = dat_set_asce_limit(mc, &gmap->asce, type);
arch/s390/kvm/gmap.c
176
void gmap_remove_child(struct gmap *child)
arch/s390/kvm/gmap.c
190
void gmap_dispose(struct gmap *gmap)
arch/s390/kvm/gmap.c
193
KVM_BUG_ON(gmap->parent, gmap->kvm);
arch/s390/kvm/gmap.c
195
KVM_BUG_ON(!list_empty(&gmap->children), gmap->kvm);
arch/s390/kvm/gmap.c
197
KVM_BUG_ON(!list_empty(&gmap->scb_users), gmap->kvm);
arch/s390/kvm/gmap.c
199
KVM_BUG_ON(!gmap->asce.val, gmap->kvm);
arch/s390/kvm/gmap.c
201
KVM_BUG_ON(refcount_read(&gmap->refcount), gmap->kvm);
arch/s390/kvm/gmap.c
204
asce_flush_tlb(gmap->asce);
arch/s390/kvm/gmap.c
207
dat_free_level(dereference_asce(gmap->asce), owns_page_tables(gmap));
arch/s390/kvm/gmap.c
210
if (is_shadow(gmap))
arch/s390/kvm/gmap.c
211
gmap_rmap_radix_tree_free(&gmap->host_to_rmap);
arch/s390/kvm/gmap.c
213
kfree(gmap);
arch/s390/kvm/gmap.c
232
int s390_replace_asce(struct gmap *gmap)
arch/s390/kvm/gmap.c
238
if (gmap->asce.dt == ASCE_TYPE_SEGMENT)
arch/s390/kvm/gmap.c
244
memcpy(table, dereference_asce(gmap->asce), sizeof(*table));
arch/s390/kvm/gmap.c
247
asce = gmap->asce;
arch/s390/kvm/gmap.c
249
WRITE_ONCE(gmap->asce, asce);
arch/s390/kvm/gmap.c
254
bool _gmap_unmap_prefix(struct gmap *gmap, gfn_t gfn, gfn_t end, bool hint)
arch/s390/kvm/gmap.c
256
struct kvm *kvm = gmap->kvm;
arch/s390/kvm/gmap.c
261
if (is_shadow(gmap))
arch/s390/kvm/gmap.c
278
struct gmap *gmap;
arch/s390/kvm/gmap.c
294
if (!pgste.prefix_notif || gmap_mkold_prefix(p->gmap, gfn, end)) {
arch/s390/kvm/gmap.c
304
pgste = __dat_ptep_xchg(ptep, pgste, new, gfn, walk->asce, uses_skeys(p->gmap));
arch/s390/kvm/gmap.c
323
if (crste_prefix(crste) && !gmap_mkold_prefix(priv->gmap, gfn, end))
arch/s390/kvm/gmap.c
349
bool gmap_age_gfn(struct gmap *gmap, gfn_t start, gfn_t end)
arch/s390/kvm/gmap.c
357
.gmap = gmap,
arch/s390/kvm/gmap.c
361
_dat_walk_gfn_range(start, end, gmap->asce, &ops, 0, &priv);
arch/s390/kvm/gmap.c
367
struct gmap *gmap;
arch/s390/kvm/gmap.c
381
gmap_helper_try_set_pte_unused(priv->gmap->kvm->mm, vmaddr);
arch/s390/kvm/gmap.c
383
if (ptep->s.pr && test_bit(GMAP_FLAG_EXPORT_ON_UNMAP, &priv->gmap->flags))
arch/s390/kvm/gmap.c
385
pgste = gmap_ptep_xchg(priv->gmap, ptep, _PTE_EMPTY, pgste, gfn);
arch/s390/kvm/gmap.c
402
if (old.s.fc1.pr && test_bit(GMAP_FLAG_EXPORT_ON_UNMAP, &priv->gmap->flags))
arch/s390/kvm/gmap.c
405
KVM_BUG_ON(!gmap_crstep_xchg_atomic(priv->gmap, crstep, old, _CRSTE_EMPTY(old.h.tt), gfn),
arch/s390/kvm/gmap.c
406
priv->gmap->kvm);
arch/s390/kvm/gmap.c
423
bool gmap_unmap_gfn_range(struct gmap *gmap, struct kvm_memory_slot *slot, gfn_t start, gfn_t end)
arch/s390/kvm/gmap.c
431
.gmap = gmap,
arch/s390/kvm/gmap.c
435
lockdep_assert_held_write(&gmap->kvm->mmu_lock);
arch/s390/kvm/gmap.c
437
_dat_walk_gfn_range(start, end, gmap->asce, &ops, 0, &priv);
arch/s390/kvm/gmap.c
442
struct gmap *gmap)
arch/s390/kvm/gmap.c
453
if (!pgste.prefix_notif || gmap_mkold_prefix(gmap, gfn, gfn + 1)) {
arch/s390/kvm/gmap.c
456
pgste = gmap_ptep_xchg(gmap, ptep, pte, pgste, gfn);
arch/s390/kvm/gmap.c
459
mark_page_dirty(gmap->kvm, gfn);
arch/s390/kvm/gmap.c
467
struct gmap *gmap = walk->priv;
arch/s390/kvm/gmap.c
471
pgste = __pte_test_and_clear_softdirty(ptep, pgste, gfn, gmap);
arch/s390/kvm/gmap.c
479
struct gmap *gmap = walk->priv;
arch/s390/kvm/gmap.c
496
if (crste.s.fc1.prefix_notif && !gmap_mkold_prefix(gmap, gfn, end))
arch/s390/kvm/gmap.c
501
} while (!gmap_crstep_xchg_atomic(gmap, table, crste, new, gfn));
arch/s390/kvm/gmap.c
504
mark_page_dirty(gmap->kvm, gfn);
arch/s390/kvm/gmap.c
509
void gmap_sync_dirty_log(struct gmap *gmap, gfn_t start, gfn_t end)
arch/s390/kvm/gmap.c
517
lockdep_assert_held(&gmap->kvm->mmu_lock);
arch/s390/kvm/gmap.c
519
_dat_walk_gfn_range(start, end, gmap->asce, &walk_ops, 0, gmap);
arch/s390/kvm/gmap.c
52
struct gmap *gmap_new(struct kvm *kvm, gfn_t limit)
arch/s390/kvm/gmap.c
522
static int gmap_handle_minor_crste_fault(struct gmap *gmap, struct guest_fault *f)
arch/s390/kvm/gmap.c
548
return !gmap_crstep_xchg_atomic(gmap, f->crstep, oldcrste, newcrste, f->gfn);
arch/s390/kvm/gmap.c
55
struct gmap *gmap;
arch/s390/kvm/gmap.c
554
static int _gmap_handle_minor_pte_fault(struct gmap *gmap, union pgste *pgste,
arch/s390/kvm/gmap.c
577
*pgste = gmap_ptep_xchg(gmap, f->ptep, newpte, *pgste, f->gfn);
arch/s390/kvm/gmap.c
593
int gmap_try_fixup_minor(struct gmap *gmap, struct guest_fault *fault)
arch/s390/kvm/gmap.c
598
lockdep_assert_held(&gmap->kvm->mmu_lock);
arch/s390/kvm/gmap.c
60
gmap = kzalloc_obj(*gmap, GFP_KERNEL_ACCOUNT);
arch/s390/kvm/gmap.c
600
rc = dat_entry_walk(NULL, fault->gfn, gmap->asce, DAT_WALK_LEAF, TABLE_TYPE_PAGE_TABLE,
arch/s390/kvm/gmap.c
608
rc = _gmap_handle_minor_pte_fault(gmap, &pgste, fault);
arch/s390/kvm/gmap.c
61
if (!gmap)
arch/s390/kvm/gmap.c
613
rc = gmap_handle_minor_crste_fault(gmap, fault);
arch/s390/kvm/gmap.c
620
static inline bool gmap_2g_allowed(struct gmap *gmap, gfn_t gfn)
arch/s390/kvm/gmap.c
625
static inline bool gmap_1m_allowed(struct gmap *gmap, gfn_t gfn)
arch/s390/kvm/gmap.c
627
return test_bit(GMAP_FLAG_ALLOW_HPAGE_1M, &gmap->flags);
arch/s390/kvm/gmap.c
63
INIT_LIST_HEAD(&gmap->children);
arch/s390/kvm/gmap.c
630
static int _gmap_link(struct kvm_s390_mmu_cache *mc, struct gmap *gmap, int level,
arch/s390/kvm/gmap.c
638
rc = dat_entry_walk(mc, f->gfn, gmap->asce, DAT_WALK_ALLOC_CONTINUE, level,
arch/s390/kvm/gmap.c
64
INIT_LIST_HEAD(&gmap->list);
arch/s390/kvm/gmap.c
642
if (KVM_BUG_ON(rc == -EINVAL, gmap->kvm))
arch/s390/kvm/gmap.c
646
if (KVM_BUG_ON(get_level(f->crstep, f->ptep) > level, gmap->kvm))
arch/s390/kvm/gmap.c
65
INIT_LIST_HEAD(&gmap->scb_users);
arch/s390/kvm/gmap.c
656
pgste = gmap_ptep_xchg(gmap, f->ptep, newpte, pgste, f->gfn);
arch/s390/kvm/gmap.c
66
INIT_RADIX_TREE(&gmap->host_to_rmap, GFP_KVM_S390_MMU_CACHE);
arch/s390/kvm/gmap.c
67
spin_lock_init(&gmap->children_lock);
arch/s390/kvm/gmap.c
673
} while (!gmap_crstep_xchg_atomic(gmap, f->crstep, oldval, newval, f->gfn));
arch/s390/kvm/gmap.c
68
spin_lock_init(&gmap->host_to_rmap_lock);
arch/s390/kvm/gmap.c
681
int gmap_link(struct kvm_s390_mmu_cache *mc, struct gmap *gmap, struct guest_fault *f)
arch/s390/kvm/gmap.c
686
lockdep_assert_held(&gmap->kvm->mmu_lock);
arch/s390/kvm/gmap.c
69
refcount_set(&gmap->refcount, 1);
arch/s390/kvm/gmap.c
691
if (order >= get_order(_REGION3_SIZE) && gmap_2g_allowed(gmap, f->gfn))
arch/s390/kvm/gmap.c
693
else if (order >= get_order(_SEGMENT_SIZE) && gmap_1m_allowed(gmap, f->gfn))
arch/s390/kvm/gmap.c
696
return _gmap_link(mc, gmap, level, f);
arch/s390/kvm/gmap.c
699
static int gmap_ucas_map_one(struct kvm_s390_mmu_cache *mc, struct gmap *gmap,
arch/s390/kvm/gmap.c
709
rc = dat_entry_walk(mc, p_gfn, gmap->parent->asce, DAT_WALK_ALLOC,
arch/s390/kvm/gmap.c
712
rc = dat_entry_walk(mc, p_gfn, gmap->parent->asce, DAT_WALK_ALLOC_CONTINUE,
arch/s390/kvm/gmap.c
725
rc = dat_entry_walk(mc, c_gfn, gmap->asce, DAT_WALK_ALLOC, TABLE_TYPE_SEGMENT,
arch/s390/kvm/gmap.c
73
kfree(gmap);
arch/s390/kvm/gmap.c
733
} while (!dat_crstep_xchg_atomic(crstep, oldcrste, newcrste, c_gfn, gmap->asce));
arch/s390/kvm/gmap.c
737
static int gmap_ucas_translate_simple(struct gmap *gmap, gpa_t *gaddr, union crste **crstepp)
arch/s390/kvm/gmap.c
742
rc = dat_entry_walk(NULL, gpa_to_gfn(*gaddr), gmap->asce, DAT_WALK_CONTINUE,
arch/s390/kvm/gmap.c
766
int gmap_ucas_translate(struct kvm_s390_mmu_cache *mc, struct gmap *gmap, gpa_t *gaddr)
arch/s390/kvm/gmap.c
77
gmap->asce.val = __pa(table);
arch/s390/kvm/gmap.c
775
scoped_guard(read_lock, &gmap->kvm->mmu_lock) {
arch/s390/kvm/gmap.c
776
rc = gmap_ucas_translate_simple(gmap, gaddr, &crstep);
arch/s390/kvm/gmap.c
78
gmap->asce.dt = type;
arch/s390/kvm/gmap.c
781
scoped_guard(write_lock, &gmap->kvm->mmu_lock) {
arch/s390/kvm/gmap.c
782
rc = gmap_ucas_translate_simple(gmap, gaddr, &crstep);
arch/s390/kvm/gmap.c
787
rc = gmap_ucas_map_one(mc, gmap, gpa_to_gfn(translated_address), gfn, true);
arch/s390/kvm/gmap.c
79
gmap->asce.tl = _ASCE_TABLE_LENGTH;
arch/s390/kvm/gmap.c
80
gmap->asce.x = 1;
arch/s390/kvm/gmap.c
802
int gmap_ucas_map(struct gmap *gmap, gfn_t p_gfn, gfn_t c_gfn, unsigned long count)
arch/s390/kvm/gmap.c
81
gmap->asce.p = 1;
arch/s390/kvm/gmap.c
812
scoped_guard(write_lock, &gmap->kvm->mmu_lock)
arch/s390/kvm/gmap.c
813
rc = gmap_ucas_map_one(mc, gmap, p_gfn, c_gfn, false);
arch/s390/kvm/gmap.c
82
gmap->asce.s = 1;
arch/s390/kvm/gmap.c
83
gmap->kvm = kvm;
arch/s390/kvm/gmap.c
830
static void gmap_ucas_unmap_one(struct gmap *gmap, gfn_t c_gfn)
arch/s390/kvm/gmap.c
836
rc = dat_entry_walk(NULL, c_gfn, gmap->asce, 0, TABLE_TYPE_SEGMENT, &crstep, &ptep);
arch/s390/kvm/gmap.c
839
while (!dat_crstep_xchg_atomic(crstep, READ_ONCE(*crstep), _PMD_EMPTY, c_gfn, gmap->asce))
arch/s390/kvm/gmap.c
84
set_bit(GMAP_FLAG_OWNS_PAGETABLES, &gmap->flags);
arch/s390/kvm/gmap.c
843
void gmap_ucas_unmap(struct gmap *gmap, gfn_t c_gfn, unsigned long count)
arch/s390/kvm/gmap.c
845
guard(read_lock)(&gmap->kvm->mmu_lock);
arch/s390/kvm/gmap.c
848
gmap_ucas_unmap_one(gmap, c_gfn);
arch/s390/kvm/gmap.c
853
struct gmap *gmap = walk->priv;
arch/s390/kvm/gmap.c
86
return gmap;
arch/s390/kvm/gmap.c
861
gmap_unmap_prefix(gmap, gfn, next);
arch/s390/kvm/gmap.c
863
gmap_handle_vsie_unshadow_event(gmap, gfn);
arch/s390/kvm/gmap.c
875
void gmap_split_huge_pages(struct gmap *gmap)
arch/s390/kvm/gmap.c
884
scoped_guard(read_lock, &gmap->kvm->mmu_lock)
arch/s390/kvm/gmap.c
885
start = _dat_walk_gfn_range(start, asce_end(gmap->asce), gmap->asce,
arch/s390/kvm/gmap.c
886
&ops, DAT_WALK_IGN_HOLES, gmap);
arch/s390/kvm/gmap.c
89
static void gmap_add_child(struct gmap *parent, struct gmap *child)
arch/s390/kvm/gmap.c
891
static int _gmap_enable_skeys(struct gmap *gmap)
arch/s390/kvm/gmap.c
896
if (uses_skeys(gmap))
arch/s390/kvm/gmap.c
899
set_bit(GMAP_FLAG_USES_SKEYS, &gmap->flags);
arch/s390/kvm/gmap.c
902
clear_bit(GMAP_FLAG_USES_SKEYS, &gmap->flags);
arch/s390/kvm/gmap.c
907
scoped_guard(write_lock, &gmap->kvm->mmu_lock)
arch/s390/kvm/gmap.c
908
start = dat_reset_skeys(gmap->asce, start);
arch/s390/kvm/gmap.c
914
int gmap_enable_skeys(struct gmap *gmap)
arch/s390/kvm/gmap.c
918
mmap_write_lock(gmap->kvm->mm);
arch/s390/kvm/gmap.c
919
rc = _gmap_enable_skeys(gmap);
arch/s390/kvm/gmap.c
920
mmap_write_unlock(gmap->kvm->mm);
arch/s390/kvm/gmap.c
951
int gmap_pv_destroy_range(struct gmap *gmap, gfn_t start, gfn_t end, bool interruptible)
arch/s390/kvm/gmap.c
960
scoped_guard(read_lock, &gmap->kvm->mmu_lock)
arch/s390/kvm/gmap.c
961
start = _dat_walk_gfn_range(start, end, gmap->asce, &ops,
arch/s390/kvm/gmap.c
970
int gmap_insert_rmap(struct gmap *sg, gfn_t p_gfn, gfn_t r_gfn, int level)
arch/s390/kvm/gmap.h
100
int gmap_pv_destroy_range(struct gmap *gmap, gfn_t start, gfn_t end, bool interruptible);
arch/s390/kvm/gmap.h
101
int gmap_insert_rmap(struct gmap *sg, gfn_t p_gfn, gfn_t r_gfn, int level);
arch/s390/kvm/gmap.h
102
int gmap_protect_rmap(struct kvm_s390_mmu_cache *mc, struct gmap *sg, gfn_t p_gfn, gfn_t r_gfn,
arch/s390/kvm/gmap.h
104
void gmap_set_cmma_all_dirty(struct gmap *gmap);
arch/s390/kvm/gmap.h
105
void _gmap_handle_vsie_unshadow_event(struct gmap *parent, gfn_t gfn);
arch/s390/kvm/gmap.h
106
struct gmap *gmap_create_shadow(struct kvm_s390_mmu_cache *mc, struct gmap *gmap,
arch/s390/kvm/gmap.h
108
void gmap_split_huge_pages(struct gmap *gmap);
arch/s390/kvm/gmap.h
110
static inline bool uses_skeys(struct gmap *gmap)
arch/s390/kvm/gmap.h
112
return test_bit(GMAP_FLAG_USES_SKEYS, &gmap->flags);
arch/s390/kvm/gmap.h
115
static inline bool uses_cmm(struct gmap *gmap)
arch/s390/kvm/gmap.h
117
return test_bit(GMAP_FLAG_USES_CMM, &gmap->flags);
arch/s390/kvm/gmap.h
120
static inline bool pfault_enabled(struct gmap *gmap)
arch/s390/kvm/gmap.h
122
return test_bit(GMAP_FLAG_PFAULT_ENABLED, &gmap->flags);
arch/s390/kvm/gmap.h
125
static inline bool is_ucontrol(struct gmap *gmap)
arch/s390/kvm/gmap.h
127
return test_bit(GMAP_FLAG_IS_UCONTROL, &gmap->flags);
arch/s390/kvm/gmap.h
130
static inline bool is_shadow(struct gmap *gmap)
arch/s390/kvm/gmap.h
132
return test_bit(GMAP_FLAG_SHADOW, &gmap->flags);
arch/s390/kvm/gmap.h
135
static inline bool owns_page_tables(struct gmap *gmap)
arch/s390/kvm/gmap.h
137
return test_bit(GMAP_FLAG_OWNS_PAGETABLES, &gmap->flags);
arch/s390/kvm/gmap.h
140
static inline struct gmap *gmap_put(struct gmap *gmap)
arch/s390/kvm/gmap.h
142
if (refcount_dec_and_test(&gmap->refcount))
arch/s390/kvm/gmap.h
143
gmap_dispose(gmap);
arch/s390/kvm/gmap.h
147
static inline void gmap_get(struct gmap *gmap)
arch/s390/kvm/gmap.h
149
WARN_ON_ONCE(unlikely(!refcount_inc_not_zero(&gmap->refcount)));
arch/s390/kvm/gmap.h
152
static inline void gmap_handle_vsie_unshadow_event(struct gmap *parent, gfn_t gfn)
arch/s390/kvm/gmap.h
158
static inline bool gmap_mkold_prefix(struct gmap *gmap, gfn_t gfn, gfn_t end)
arch/s390/kvm/gmap.h
160
return _gmap_unmap_prefix(gmap, gfn, end, true);
arch/s390/kvm/gmap.h
163
static inline bool gmap_unmap_prefix(struct gmap *gmap, gfn_t gfn, gfn_t end)
arch/s390/kvm/gmap.h
165
return _gmap_unmap_prefix(gmap, gfn, end, false);
arch/s390/kvm/gmap.h
168
static inline union pgste _gmap_ptep_xchg(struct gmap *gmap, union pte *ptep, union pte newpte,
arch/s390/kvm/gmap.h
171
lockdep_assert_held(&gmap->kvm->mmu_lock);
arch/s390/kvm/gmap.h
173
lockdep_assert_held(&gmap->children_lock);
arch/s390/kvm/gmap.h
175
lockdep_assert_not_held(&gmap->children_lock);
arch/s390/kvm/gmap.h
179
gmap_unmap_prefix(gmap, gfn, gfn + 1);
arch/s390/kvm/gmap.h
184
gmap_handle_vsie_unshadow_event(gmap, gfn);
arch/s390/kvm/gmap.h
186
_gmap_handle_vsie_unshadow_event(gmap, gfn);
arch/s390/kvm/gmap.h
190
return __dat_ptep_xchg(ptep, pgste, newpte, gfn, gmap->asce, uses_skeys(gmap));
arch/s390/kvm/gmap.h
193
static inline union pgste gmap_ptep_xchg(struct gmap *gmap, union pte *ptep, union pte newpte,
arch/s390/kvm/gmap.h
196
return _gmap_ptep_xchg(gmap, ptep, newpte, pgste, gfn, true);
arch/s390/kvm/gmap.h
199
static inline bool __must_check _gmap_crstep_xchg_atomic(struct gmap *gmap, union crste *crstep,
arch/s390/kvm/gmap.h
205
if (KVM_BUG_ON(crstep->h.tt != oldcrste.h.tt || newcrste.h.tt != oldcrste.h.tt, gmap->kvm))
arch/s390/kvm/gmap.h
208
lockdep_assert_held(&gmap->kvm->mmu_lock);
arch/s390/kvm/gmap.h
210
lockdep_assert_held(&gmap->children_lock);
arch/s390/kvm/gmap.h
215
gmap_unmap_prefix(gmap, gfn, gfn + align);
arch/s390/kvm/gmap.h
221
gmap_handle_vsie_unshadow_event(gmap, gfn);
arch/s390/kvm/gmap.h
223
_gmap_handle_vsie_unshadow_event(gmap, gfn);
arch/s390/kvm/gmap.h
227
return dat_crstep_xchg_atomic(crstep, oldcrste, newcrste, gfn, gmap->asce);
arch/s390/kvm/gmap.h
230
static inline bool __must_check gmap_crstep_xchg_atomic(struct gmap *gmap, union crste *crstep,
arch/s390/kvm/gmap.h
234
return _gmap_crstep_xchg_atomic(gmap, crstep, oldcrste, newcrste, gfn, true);
arch/s390/kvm/gmap.h
248
static inline bool gmap_is_shadow_valid(struct gmap *sg, union asce asce, int edat_level)
arch/s390/kvm/gmap.h
69
struct gmap *parent;
arch/s390/kvm/gmap.h
78
struct gmap *gmap;
arch/s390/kvm/gmap.h
84
int s390_replace_asce(struct gmap *gmap);
arch/s390/kvm/gmap.h
85
bool _gmap_unmap_prefix(struct gmap *gmap, gfn_t gfn, gfn_t end, bool hint);
arch/s390/kvm/gmap.h
86
bool gmap_age_gfn(struct gmap *gmap, gfn_t start, gfn_t end);
arch/s390/kvm/gmap.h
87
bool gmap_unmap_gfn_range(struct gmap *gmap, struct kvm_memory_slot *slot, gfn_t start, gfn_t end);
arch/s390/kvm/gmap.h
88
int gmap_try_fixup_minor(struct gmap *gmap, struct guest_fault *fault);
arch/s390/kvm/gmap.h
89
struct gmap *gmap_new(struct kvm *kvm, gfn_t limit);
arch/s390/kvm/gmap.h
90
struct gmap *gmap_new_child(struct gmap *parent, gfn_t limit);
arch/s390/kvm/gmap.h
91
void gmap_remove_child(struct gmap *child);
arch/s390/kvm/gmap.h
92
void gmap_dispose(struct gmap *gmap);
arch/s390/kvm/gmap.h
93
int gmap_link(struct kvm_s390_mmu_cache *mc, struct gmap *gmap, struct guest_fault *fault);
arch/s390/kvm/gmap.h
94
void gmap_sync_dirty_log(struct gmap *gmap, gfn_t start, gfn_t end);
arch/s390/kvm/gmap.h
95
int gmap_set_limit(struct gmap *gmap, gfn_t limit);
arch/s390/kvm/gmap.h
96
int gmap_ucas_translate(struct kvm_s390_mmu_cache *mc, struct gmap *gmap, gpa_t *gaddr);
arch/s390/kvm/gmap.h
97
int gmap_ucas_map(struct gmap *gmap, gfn_t p_gfn, gfn_t c_gfn, unsigned long count);
arch/s390/kvm/gmap.h
98
void gmap_ucas_unmap(struct gmap *gmap, gfn_t c_gfn, unsigned long count);
arch/s390/kvm/gmap.h
99
int gmap_enable_skeys(struct gmap *gmap);
arch/s390/kvm/interrupt.c
2635
set_bit(GMAP_FLAG_PFAULT_ENABLED, &dev->kvm->arch.gmap->flags);
arch/s390/kvm/interrupt.c
2640
clear_bit(GMAP_FLAG_PFAULT_ENABLED, &dev->kvm->arch.gmap->flags);
arch/s390/kvm/kvm-s390.c
1013
ret = gmap_set_limit(kvm->arch.gmap, gpa_to_gfn(new_limit));
arch/s390/kvm/kvm-s390.c
1016
(void *)kvm->arch.gmap->asce.val);
arch/s390/kvm/kvm-s390.c
1187
gmap_set_cmma_all_dirty(kvm->arch.gmap);
arch/s390/kvm/kvm-s390.c
2100
if (!uses_skeys(kvm->arch.gmap))
arch/s390/kvm/kvm-s390.c
2113
r = dat_get_storage_key(kvm->arch.gmap->asce,
arch/s390/kvm/kvm-s390.c
2156
r = gmap_enable_skeys(kvm->arch.gmap);
arch/s390/kvm/kvm-s390.c
2180
r = dat_set_storage_key(mc, kvm->arch.gmap->asce,
arch/s390/kvm/kvm-s390.c
2218
if (!args->count || !uses_cmm(kvm->arch.gmap)) {
arch/s390/kvm/kvm-s390.c
2234
ret = dat_peek_cmma(args->start_gfn, kvm->arch.gmap->asce, &args->count,
arch/s390/kvm/kvm-s390.c
2237
ret = dat_get_cmma(kvm->arch.gmap->asce, &args->start_gfn, &args->count,
arch/s390/kvm/kvm-s390.c
2295
r = dat_set_cmma_bits(mc, kvm->arch.gmap->asce, args->start_gfn,
arch/s390/kvm/kvm-s390.c
2300
set_bit(GMAP_FLAG_USES_CMM, &kvm->arch.gmap->flags);
arch/s390/kvm/kvm-s390.c
2517
set_bit(GMAP_FLAG_EXPORT_ON_UNMAP, &kvm->arch.gmap->flags);
arch/s390/kvm/kvm-s390.c
3262
kvm->arch.gmap = gmap_new(kvm, gpa_to_gfn(kvm->arch.mem_limit));
arch/s390/kvm/kvm-s390.c
3263
if (!kvm->arch.gmap)
arch/s390/kvm/kvm-s390.c
3265
clear_bit(GMAP_FLAG_PFAULT_ENABLED, &kvm->arch.gmap->flags);
arch/s390/kvm/kvm-s390.c
3280
set_bit(GMAP_FLAG_IS_UCONTROL, &kvm->arch.gmap->flags);
arch/s390/kvm/kvm-s390.c
3282
struct crst_table *table = dereference_asce(kvm->arch.gmap->asce);
arch/s390/kvm/kvm-s390.c
3319
scoped_guard(spinlock, &vcpu->kvm->arch.gmap->children_lock)
arch/s390/kvm/kvm-s390.c
3320
gmap_remove_child(vcpu->arch.gmap);
arch/s390/kvm/kvm-s390.c
3321
vcpu->arch.gmap = gmap_put(vcpu->arch.gmap);
arch/s390/kvm/kvm-s390.c
3360
kvm->arch.gmap = gmap_put(kvm->arch.gmap);
arch/s390/kvm/kvm-s390.c
3515
vcpu->arch.gmap = vcpu->kvm->arch.gmap;
arch/s390/kvm/kvm-s390.c
3756
vcpu->arch.gmap = gmap_new_child(vcpu->kvm->arch.gmap, -1UL);
arch/s390/kvm/kvm-s390.c
3757
if (!vcpu->arch.gmap)
arch/s390/kvm/kvm-s390.c
3774
gmap_remove_child(vcpu->arch.gmap);
arch/s390/kvm/kvm-s390.c
3775
vcpu->arch.gmap = gmap_put(vcpu->arch.gmap);
arch/s390/kvm/kvm-s390.c
4226
rc = gmap_ucas_translate(vcpu->arch.mc, vcpu->arch.gmap, gaddr);
arch/s390/kvm/kvm-s390.c
4255
rc = dat_set_prefix_notif_bit(vcpu->kvm->arch.gmap->asce, gfn);
arch/s390/kvm/kvm-s390.c
4324
if (vcpu->kvm->arch.use_cmma && uses_cmm(vcpu->arch.gmap))
arch/s390/kvm/kvm-s390.c
4436
if (!pfault_enabled(vcpu->arch.gmap))
arch/s390/kvm/kvm-s390.c
4533
.attempt_pfault = pfault_enabled(vcpu->arch.gmap),
arch/s390/kvm/kvm-s390.c
4724
vcpu->arch.gmap->asce.val);
arch/s390/kvm/kvm-s390.c
5498
r = gmap_ucas_map(vcpu->arch.gmap, gpa_to_gfn(ucas.user_addr),
arch/s390/kvm/kvm-s390.c
5516
gmap_ucas_unmap(vcpu->arch.gmap, gpa_to_gfn(ucas.vcpu_addr),
arch/s390/kvm/kvm-s390.c
560
union asce asce = kvm->arch.gmap->asce;
arch/s390/kvm/kvm-s390.c
5718
rc = dat_delete_slot(mc, kvm->arch.gmap->asce, old->base_gfn, old->npages);
arch/s390/kvm/kvm-s390.c
5721
rc = dat_delete_slot(mc, kvm->arch.gmap->asce, old->base_gfn, old->npages);
arch/s390/kvm/kvm-s390.c
5726
rc = dat_create_slot(mc, kvm->arch.gmap->asce, new->base_gfn, new->npages);
arch/s390/kvm/kvm-s390.c
5752
return dat_test_age_gfn(kvm->arch.gmap->asce, range->start, range->end);
arch/s390/kvm/kvm-s390.c
5766
return gmap_age_gfn(kvm->arch.gmap, range->start, range->end);
arch/s390/kvm/kvm-s390.c
5783
return gmap_unmap_gfn_range(kvm->arch.gmap, range->slot, range->start, range->end);
arch/s390/kvm/kvm-s390.c
725
gmap_sync_dirty_log(kvm->arch.gmap, memslot->base_gfn, last_gfn);
arch/s390/kvm/kvm-s390.c
885
set_bit(GMAP_FLAG_ALLOW_HPAGE_1M, &kvm->arch.gmap->flags);
arch/s390/kvm/kvm-s390.c
989
start_gfn = dat_reset_cmma(kvm->arch.gmap->asce, start_gfn);
arch/s390/kvm/kvm-s390.h
119
return test_bit(GMAP_FLAG_IS_UCONTROL, &kvm->arch.gmap->flags);
arch/s390/kvm/kvm-s390.h
443
void kvm_s390_vsie_gmap_notifier(struct gmap *gmap, gpa_t start, gpa_t end);
arch/s390/kvm/kvm-s390.h
467
int __kvm_s390_mprotect_many(struct gmap *gmap, gpa_t gpa, u8 npages, unsigned int prot,
arch/s390/kvm/priv.c
1114
rc = dat_cond_set_storage_key(vcpu->arch.mc, vcpu->arch.gmap->asce,
arch/s390/kvm/priv.c
1161
nappended = dat_perform_essa(vcpu->arch.gmap->asce, gfn, orc, &state, &dirtied);
arch/s390/kvm/priv.c
1192
if (dat_entry_walk(NULL, gpa_to_gfn(cbrl[i]), vcpu->arch.gmap->asce,
arch/s390/kvm/priv.c
1237
set_bit(GMAP_FLAG_USES_CMM, &vcpu->arch.gmap->flags);
arch/s390/kvm/priv.c
226
rc = gmap_enable_skeys(vcpu->arch.gmap);
arch/s390/kvm/priv.c
279
rc = dat_get_storage_key(vcpu->arch.gmap->asce, gpa_to_gfn(gaddr), &key);
arch/s390/kvm/priv.c
310
rc = dat_reset_reference_bit(vcpu->arch.gmap->asce, gpa_to_gfn(gaddr));
arch/s390/kvm/priv.c
362
rc = dat_cond_set_storage_key(vcpu->arch.mc, vcpu->arch.gmap->asce,
arch/s390/kvm/pv.c
466
if (kvm->arch.gmap->asce.dt == TABLE_TYPE_SEGMENT)
arch/s390/kvm/pv.c
479
priv->old_gmap_table = (unsigned long)dereference_asce(kvm->arch.gmap->asce);
arch/s390/kvm/pv.c
480
if (s390_replace_asce(kvm->arch.gmap))
arch/s390/kvm/pv.c
489
gmap_pv_destroy_range(kvm->arch.gmap, 0, gpa_to_gfn(SZ_2G), false);
arch/s390/kvm/pv.c
528
s390_replace_asce(kvm->arch.gmap);
arch/s390/kvm/pv.c
605
gmap_pv_destroy_range(kvm->arch.gmap, 0, asce_end(kvm->arch.gmap->asce), false);
arch/s390/kvm/pv.c
643
if (gmap_pv_destroy_range(kvm->arch.gmap, 0, asce_end(kvm->arch.gmap->asce), true))
arch/s390/kvm/pv.c
682
set_bit(GMAP_FLAG_EXPORT_ON_UNMAP, &kvm->arch.gmap->flags);
arch/s390/kvm/pv.c
716
uvcb.guest_asce = kvm->arch.gmap->asce.val;
arch/s390/kvm/pv.c
724
clear_bit(GMAP_FLAG_ALLOW_HPAGE_1M, &kvm->arch.gmap->flags);
arch/s390/kvm/pv.c
725
gmap_split_huge_pages(kvm->arch.gmap);
arch/s390/kvm/vsie.c
1039
static int vsie_handle_mvpg(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page, struct gmap *sg)
arch/s390/kvm/vsie.c
1119
static int do_vsie_run(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page, struct gmap *sg)
arch/s390/kvm/vsie.c
1218
struct gmap *gmap = vsie_page->gmap_cache.gmap;
arch/s390/kvm/vsie.c
1220
lockdep_assert_held(&gmap->kvm->arch.gmap->children_lock);
arch/s390/kvm/vsie.c
1223
vsie_page->gmap_cache.gmap = NULL;
arch/s390/kvm/vsie.c
1226
if (list_empty(&gmap->scb_users)) {
arch/s390/kvm/vsie.c
1227
gmap_remove_child(gmap);
arch/s390/kvm/vsie.c
1228
gmap_put(gmap);
arch/s390/kvm/vsie.c
1232
static struct gmap *acquire_gmap_shadow(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
arch/s390/kvm/vsie.c
1235
struct gmap *gmap;
arch/s390/kvm/vsie.c
1244
scoped_guard(spinlock, &vcpu->kvm->arch.gmap->children_lock) {
arch/s390/kvm/vsie.c
1245
gmap = vsie_page->gmap_cache.gmap;
arch/s390/kvm/vsie.c
1246
if (gmap) {
arch/s390/kvm/vsie.c
1252
if (gmap_is_shadow_valid(gmap, asce, edat)) {
arch/s390/kvm/vsie.c
1254
gmap_get(gmap);
arch/s390/kvm/vsie.c
1255
return gmap;
arch/s390/kvm/vsie.c
1262
gmap = gmap_create_shadow(vcpu->arch.mc, vcpu->kvm->arch.gmap, asce, edat);
arch/s390/kvm/vsie.c
1263
if (IS_ERR(gmap))
arch/s390/kvm/vsie.c
1264
return gmap;
arch/s390/kvm/vsie.c
1265
scoped_guard(spinlock, &vcpu->kvm->arch.gmap->children_lock) {
arch/s390/kvm/vsie.c
1267
if (vsie_page->gmap_cache.gmap)
arch/s390/kvm/vsie.c
1269
if (!gmap->parent) {
arch/s390/kvm/vsie.c
1270
gmap_put(gmap);
arch/s390/kvm/vsie.c
1274
list_add(&vsie_page->gmap_cache.list, &gmap->scb_users);
arch/s390/kvm/vsie.c
1275
vsie_page->gmap_cache.gmap = gmap;
arch/s390/kvm/vsie.c
1278
return gmap;
arch/s390/kvm/vsie.c
1331
struct gmap *sg = NULL;
arch/s390/kvm/vsie.c
1477
if (vsie_page->gmap_cache.gmap) {
arch/s390/kvm/vsie.c
1478
scoped_guard(spinlock, &kvm->arch.gmap->children_lock)
arch/s390/kvm/vsie.c
1479
if (vsie_page->gmap_cache.gmap)
arch/s390/kvm/vsie.c
1560
scoped_guard(spinlock, &kvm->arch.gmap->children_lock)
arch/s390/kvm/vsie.c
1561
if (vsie_page->gmap_cache.gmap)
arch/s390/kvm/vsie.c
599
void kvm_s390_vsie_gmap_notifier(struct gmap *gmap, gpa_t start, gpa_t end)
arch/s390/kvm/vsie.c
604
KVM_BUG_ON(!test_bit(GMAP_FLAG_SHADOW, &gmap->flags), gmap->kvm);
arch/s390/kvm/vsie.c
609
list_for_each_entry_safe(cur, next, &gmap->scb_users, gmap_cache.list) {
arch/s390/kvm/vsie.c
630
static int map_prefix(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page, struct gmap *sg)
arch/s390/kvm/vsie.c
928
static int handle_fault(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page, struct gmap *sg)
arch/s390/kvm/vsie.c
954
static void handle_last_fault(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page, struct gmap *sg)
drivers/net/dsa/lantiq/lantiq_gswip_common.c
275
tbl->gmap = (crtl & GSWIP_PCE_TBL_CTRL_GMAP_MASK) >> 7;
drivers/net/dsa/lantiq/lantiq_gswip_common.c
327
crtl |= (tbl->gmap << 7) & GSWIP_PCE_TBL_CTRL_GMAP_MASK;
drivers/net/dsa/lantiq/lantiq_gswip_common.c
52
u8 gmap;
drivers/video/fbdev/gbefb.c
806
gbe->gmap[i] = (i << 24) | (i << 16) | (i << 8);
include/video/gbe.h
60
volatile uint32_t gmap[256]; /* gamma map */