| /linux/arch/s390/kvm/ |
| H A D | dat.h | 29 #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 D | dat.c | 105 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 D | gaccess.c | 106 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 D | gmap.c | 77 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 D | gmap.h | 64 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 D | pv.c | 466 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 D | kvm-s390.c | 560 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 D | vsie.c | 1167 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 D | priv.c | 279 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 D | pgtable.c | 42 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 D | pgalloc.c | 43 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 D | fault.c | 77 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 D | tlbflush.h | 22 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 D | mmu_context.h | 61 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 D | pgtable.h | 641 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 D | mmu.h | 16 unsigned long asce; member
|
| H A D | dat-bits.h | 38 union asce { union
|
| H A D | pgalloc.h | 177 void base_asce_free(unsigned long asce);
|
| /linux/drivers/s390/char/ |
| H A D | sclp_sd.c | 295 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 D | sclp_diag.h | 59 u64 asce; member
|
| H A D | sclp_ftp.c | 111 sccb->evbuf.mdd.ftp.asce = _ASCE_REAL_SPACE; in sclp_ftp_et7()
|
| /linux/arch/s390/kernel/ |
| H A D | entry.S | 120 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 D | vmem.c | 554 init_mm.context.asce = get_lowcore()->kernel_asce.val; in setup_vmem()
|