Home
last modified time | relevance | path

Searched refs:asce (Results 1 – 23 of 23) sorted by relevance

/linux/arch/s390/kvm/
H A Ddat.h29 #define _ASCE(x) ((union asce) { .val = (x), })
367 union asce asce; member
515 gfn_t gfn, union asce asce, bool uses_skeys);
517 union asce asce);
518 void dat_crstep_xchg(union crste *crstep, union crste new, gfn_t gfn, union asce asce);
520 long _dat_walk_gfn_range(gfn_t start, gfn_t end, union asce asce,
523 int dat_entry_walk(struct kvm_s390_mmu_cache *mc, gfn_t gfn, union asce asce, int flags,
527 int dat_set_asce_limit(struct kvm_s390_mmu_cache *mc, union asce *asce, int newtype);
528 int dat_get_storage_key(union asce asce, gfn_t gfn, union skey *skey);
529 int dat_set_storage_key(struct kvm_s390_mmu_cache *mc, union asce asce, gfn_t gfn,
[all …]
H A Ddat.c105 int dat_set_asce_limit(struct kvm_s390_mmu_cache *mc, union asce *asce, int newtype) in dat_set_asce_limit() argument
110 while (asce->dt > newtype) { in dat_set_asce_limit()
111 table = dereference_asce(*asce); in dat_set_asce_limit()
116 asce->rsto = crste.h.fc0.to; in dat_set_asce_limit()
122 asce->dt--; in dat_set_asce_limit()
124 while (asce->dt < newtype) { in dat_set_asce_limit()
125 crste = _crste_fc0(asce->rsto, asce->dt + 1); in dat_set_asce_limit()
131 asce->rsto = __pa(table) >> PAGE_SHIFT; in dat_set_asce_limit()
132 asce->dt++; in dat_set_asce_limit()
153 gfn_t gfn, union asce asce) in dat_crstep_xchg_atomic() argument
[all …]
H A Dgaccess.c106 unsigned long asce : 64; /* Address-Space-Control Element */ member
234 static int ar_translation(struct kvm_vcpu *vcpu, union asce *asce, u8 ar, in ar_translation() argument
253 asce->val = vcpu->arch.sie_block->gcr[1]; in ar_translation()
256 asce->val = vcpu->arch.sie_block->gcr[7]; in ar_translation()
320 asce->val = aste.asce; in ar_translation()
410 static int get_vcpu_asce(struct kvm_vcpu *vcpu, union asce *asce, in get_vcpu_asce() argument
417 asce->val = 0; in get_vcpu_asce()
418 asce->r = 1; in get_vcpu_asce()
427 asce->val = vcpu->arch.sie_block->gcr[1]; in get_vcpu_asce()
430 asce->val = vcpu->arch.sie_block->gcr[7]; in get_vcpu_asce()
[all …]
H A Dgmap.c77 gmap->asce.val = __pa(table); in gmap_new()
78 gmap->asce.dt = type; in gmap_new()
79 gmap->asce.tl = _ASCE_TABLE_LENGTH; in gmap_new()
80 gmap->asce.x = 1; in gmap_new()
81 gmap->asce.p = 1; in gmap_new()
82 gmap->asce.s = 1; in gmap_new()
142 rc = dat_set_asce_limit(mc, &gmap->asce, type); in gmap_set_limit()
199 KVM_BUG_ON(!gmap->asce.val, gmap->kvm); in gmap_dispose()
204 asce_flush_tlb(gmap->asce); in gmap_dispose()
207 dat_free_level(dereference_asce(gmap->asce), owns_page_tables(gmap)); in gmap_dispose()
[all …]
H A Dgmap.h64 union asce asce; member
70 union asce guest_asce;
107 union asce asce, int edat_level);
190 return __dat_ptep_xchg(ptep, pgste, newpte, gfn, gmap->asce, uses_skeys(gmap)); in _gmap_ptep_xchg()
227 return dat_crstep_xchg_atomic(crstep, oldcrste, newcrste, gfn, gmap->asce); in _gmap_crstep_xchg_atomic()
248 static inline bool gmap_is_shadow_valid(struct gmap *sg, union asce asce, int edat_level) in gmap_is_shadow_valid() argument
250 return sg->guest_asce.val == asce.val && sg->edat_level == edat_level; in gmap_is_shadow_valid()
H A Dpv.c466 if (kvm->arch.gmap->asce.dt == TABLE_TYPE_SEGMENT) in kvm_s390_pv_set_aside()
479 priv->old_gmap_table = (unsigned long)dereference_asce(kvm->arch.gmap->asce); in kvm_s390_pv_set_aside()
605 gmap_pv_destroy_range(kvm->arch.gmap, 0, asce_end(kvm->arch.gmap->asce), false); in kvm_s390_pv_deinit_cleanup_all()
643 if (gmap_pv_destroy_range(kvm->arch.gmap, 0, asce_end(kvm->arch.gmap->asce), true)) in kvm_s390_pv_deinit_aside_vm()
716 uvcb.guest_asce = kvm->arch.gmap->asce.val; in kvm_s390_pv_init_vm()
H A Dkvm-s390.c560 union asce asce = kvm->arch.gmap->asce; in kvm_s390_keyop() local
568 r = dat_cond_set_storage_key(mc, asce, gfn, skey, &skey, 0, 0, 0); in kvm_s390_keyop()
573 r = dat_get_storage_key(asce, gfn, &skey); in kvm_s390_keyop()
578 r = dat_reset_reference_bit(asce, gfn); in kvm_s390_keyop()
989 start_gfn = dat_reset_cmma(kvm->arch.gmap->asce, start_gfn); in kvm_s390_set_mem_control()
1016 (void *)kvm->arch.gmap->asce.val); in kvm_s390_set_mem_control()
2113 r = dat_get_storage_key(kvm->arch.gmap->asce, in kvm_s390_get_skeys()
2180 r = dat_set_storage_key(mc, kvm->arch.gmap->asce, in kvm_s390_set_skeys()
2234 ret = dat_peek_cmma(args->start_gfn, kvm->arch.gmap->asce, &args->count, in kvm_s390_get_cmma_bits()
2237 ret = dat_get_cmma(kvm->arch.gmap->asce, &args->start_gfn, &args->count, in kvm_s390_get_cmma_bits()
[all …]
H A Dvsie.c1167 sie_return = kvm_s390_enter_exit_sie(scb_s, vcpu->run->s.regs.gprs, sg->asce.val); in do_vsie_run()
1236 union asce asce; in acquire_gmap_shadow() local
1239 asce.val = vcpu->arch.sie_block->gcr[1]; in acquire_gmap_shadow()
1252 if (gmap_is_shadow_valid(gmap, asce, edat)) { in acquire_gmap_shadow()
1262 gmap = gmap_create_shadow(vcpu->arch.mc, vcpu->kvm->arch.gmap, asce, edat); in acquire_gmap_shadow()
H A Dpriv.c279 rc = dat_get_storage_key(vcpu->arch.gmap->asce, gpa_to_gfn(gaddr), &key); in handle_iske()
310 rc = dat_reset_reference_bit(vcpu->arch.gmap->asce, gpa_to_gfn(gaddr)); in handle_rrbe()
362 rc = dat_cond_set_storage_key(vcpu->arch.mc, vcpu->arch.gmap->asce, in handle_sske()
1114 rc = dat_cond_set_storage_key(vcpu->arch.mc, vcpu->arch.gmap->asce, in handle_pfmf()
1161 nappended = dat_perform_essa(vcpu->arch.gmap->asce, gfn, orc, &state, &dirtied); in __do_essa()
1192 if (dat_entry_walk(NULL, gpa_to_gfn(cbrl[i]), vcpu->arch.gmap->asce, in _essa_clear_cbrl()
/linux/arch/s390/mm/
H A Dpgtable.c42 unsigned long opt, asce; in ptep_ipte_local() local
46 asce = READ_ONCE(mm->context.gmap_asce); in ptep_ipte_local()
47 if (asce == 0UL || nodat) in ptep_ipte_local()
49 if (asce != -1UL) { in ptep_ipte_local()
50 asce = asce ? : mm->context.asce; in ptep_ipte_local()
53 __ptep_ipte(addr, ptep, opt, asce, IPTE_LOCAL); in ptep_ipte_local()
62 unsigned long opt, asce; in ptep_ipte_global() local
66 asce = READ_ONCE(mm->context.gmap_asce); in ptep_ipte_global()
67 if (asce == 0UL || nodat) in ptep_ipte_global()
69 if (asce != -1UL) { in ptep_ipte_global()
[all …]
H A Dpgalloc.c43 struct ctlreg asce; in __crst_table_upgrade() local
47 asce.val = mm->context.asce; in __crst_table_upgrade()
48 get_lowcore()->user_asce = asce; in __crst_table_upgrade()
49 local_ctl_load(7, &asce); in __crst_table_upgrade()
51 local_ctl_load(1, &asce); in __crst_table_upgrade()
91 mm->context.asce = __pa(mm->pgd) | _ASCE_TABLE_LENGTH | in crst_table_upgrade()
100 mm->context.asce = __pa(mm->pgd) | _ASCE_TABLE_LENGTH | in crst_table_upgrade()
367 void base_asce_free(unsigned long asce) in base_asce_free() argument
369 unsigned long *table = __va(asce & _ASCE_ORIGIN); in base_asce_free()
371 if (!asce) in base_asce_free()
[all …]
H A Dfault.c77 static void dump_pagetable(unsigned long asce, unsigned long address) in dump_pagetable() argument
79 unsigned long entry, *table = __va(asce & _ASCE_ORIGIN); in dump_pagetable()
81 pr_alert("AS:%016lx ", asce); in dump_pagetable()
82 switch (asce & _ASCE_TYPE_MASK) { in dump_pagetable()
133 unsigned long asce; in dump_fault_info() local
163 asce = get_lowcore()->kernel_asce.val; in dump_fault_info()
166 asce = get_lowcore()->user_asce.val; in dump_fault_info()
170 dump_pagetable(asce, get_fault_address(regs)); in dump_fault_info()
/linux/arch/s390/include/asm/
H A Dtlbflush.h22 static inline void __tlb_flush_idte(unsigned long asce) in __tlb_flush_idte() argument
30 asm volatile("idte 0,%1,%0" : : "a" (opt), "a" (asce) : "cc"); in __tlb_flush_idte()
60 __tlb_flush_idte(mm->context.asce); in __tlb_flush_mm()
71 __tlb_flush_idte(init_mm.context.asce); in __tlb_flush_kernel()
H A Dmmu_context.h61 mm->context.asce = __pa(mm->pgd) | _ASCE_TABLE_LENGTH | in init_new_context()
75 get_lowcore()->user_asce.val = next->context.asce; in switch_mm_irqs_off()
H A Dpgtable.h641 unsigned long address, unsigned long asce) in crdte() argument
648 : [r2] "d" (r2.pair), [asce] "a" (asce) in crdte()
1114 unsigned long opt, unsigned long asce, in __ptep_ipte() argument
1129 opt = opt | (asce & _ASCE_ORIGIN); in __ptep_ipte()
1604 unsigned long opt, unsigned long asce, in __pmdp_idte() argument
1624 [r3] "a" (asce), [m4] "i" (local) in __pmdp_idte()
1630 unsigned long opt, unsigned long asce, in __pudp_idte() argument
1651 [r3] "a" (asce), [m4] "i" (local) in __pudp_idte()
H A Dmmu.h16 unsigned long asce; member
H A Ddat-bits.h38 union asce { union
H A Dpgalloc.h177 void base_asce_free(unsigned long asce);
/linux/drivers/s390/char/
H A Dsclp_sd.c295 unsigned long page, asce = 0; in sclp_sd_store_data() local
318 asce = base_asce_alloc((unsigned long) data, dsize); in sclp_sd_store_data()
319 if (!asce) { in sclp_sd_store_data()
326 rc = sclp_sd_sync(page, SD_EQ_STORE_DATA, di, asce, (u64) data, &dsize, in sclp_sd_store_data()
335 asce = 0; in sclp_sd_store_data()
348 base_asce_free(asce); in sclp_sd_store_data()
H A Dsclp_diag.h59 u64 asce; member
H A Dsclp_ftp.c111 sccb->evbuf.mdd.ftp.asce = _ASCE_REAL_SPACE; in sclp_ftp_et7()
/linux/arch/s390/kernel/
H A Dentry.S120 lctlg %c1,%c1,__LC_USER_ASCE(\lowcore) # load primary asce
202 stg %r5,__SF_SIE_GUEST_ASCE(%r15) # save guest asce
208 lctlg %c1,%c1,__SF_SIE_GUEST_ASCE(%r15) # load primary asce
227 lctlg %c1,%c1,__LC_USER_ASCE(%r14) # load primary asce
/linux/arch/s390/boot/
H A Dvmem.c554 init_mm.context.asce = get_lowcore()->kernel_asce.val; in setup_vmem()