| /linux-6.15/arch/s390/kvm/ |
| H A D | gmap-vsie.c | 45 if (!gmap_shadow_valid(sg, asce, edat_level)) in gmap_find_shadow() 70 struct gmap *gmap_shadow(struct gmap *parent, unsigned long asce, int edat_level) in gmap_shadow() argument 80 sg = gmap_find_shadow(parent, asce, edat_level); in gmap_shadow() 85 limit = -1UL >> (33 - (((asce & _ASCE_TYPE_MASK) >> 2) * 11)); in gmap_shadow() 86 if (asce & _ASCE_REAL_SPACE) in gmap_shadow() 94 new->orig_asce = asce; in gmap_shadow() 99 sg = gmap_find_shadow(parent, asce, edat_level); in gmap_shadow() 105 if (asce & _ASCE_REAL_SPACE) { in gmap_shadow() 120 if (asce & _ASCE_REAL_SPACE) { in gmap_shadow() 129 rc = __kvm_s390_mprotect_many(parent, asce & _ASCE_ORIGIN, in gmap_shadow() [all …]
|
| H A D | gaccess.c | 310 asce->val = aste.asce; in ar_translation() 461 unsigned long *gpa, const union asce asce, in guest_translate() argument 477 if (asce.r) in guest_translate() 631 const union asce asce) in low_address_protection_enabled() argument 673 union asce asce) in fetch_prot_override_applicable() argument 707 enum gacc_mode mode, union asce asce, gpa_t gpa, in vcpu_check_access_key() argument 782 const union asce asce, enum gacc_mode mode, in guest_range_to_gpas() argument 906 union asce asce; in access_guest_with_key() local 1124 union asce asce; in guest_translate_address_with_key() local 1147 union asce asce; in check_gva_range() local [all …]
|
| H A D | gmap.h | 18 struct gmap *gmap_shadow(struct gmap *parent, unsigned long asce, int edat_level); 32 static inline int gmap_shadow_valid(struct gmap *sg, unsigned long asce, int edat_level) in gmap_shadow_valid() argument 36 return sg->orig_asce == asce && sg->edat_level == edat_level; in gmap_shadow_valid()
|
| H A D | vsie.c | 1170 rc = sie64a(scb_s, vcpu->run->s.regs.gprs, vsie_page->gmap->asce); in do_vsie_run() 1228 unsigned long asce; in acquire_gmap_shadow() local 1233 asce = vcpu->arch.sie_block->gcr[1]; in acquire_gmap_shadow() 1243 if (vsie_page->gmap && gmap_shadow_valid(vsie_page->gmap, asce, edat)) { in acquire_gmap_shadow() 1250 gmap = gmap_shadow(vcpu->arch.gmap, asce, edat); in acquire_gmap_shadow()
|
| H A D | pv.c | 335 if ((kvm->arch.gmap->asce & _ASCE_TYPE_MASK) == _ASCE_TYPE_SEGMENT) in kvm_s390_pv_set_aside() 575 uvcb.guest_asce = kvm->arch.gmap->asce; in kvm_s390_pv_init_vm()
|
| H A D | kvm-s390.c | 1026 (void *) kvm->arch.gmap->asce); in kvm_s390_set_mem_control() 5096 vcpu->arch.gmap->asce); in __vcpu_run()
|
| /linux-6.15/arch/s390/mm/ |
| H A D | pgalloc.c | 44 get_lowcore()->user_asce.val = mm->context.asce; in __crst_table_upgrade() 90 mm->context.asce = __pa(mm->pgd) | _ASCE_TABLE_LENGTH | in crst_table_upgrade() 99 mm->context.asce = __pa(mm->pgd) | _ASCE_TABLE_LENGTH | in crst_table_upgrade() 390 void base_asce_free(unsigned long asce) in base_asce_free() argument 392 unsigned long *table = __va(asce & _ASCE_ORIGIN); in base_asce_free() 394 if (!asce) in base_asce_free() 396 switch (asce & _ASCE_TYPE_MASK) { in base_asce_free() 444 unsigned long asce, *table, end; in base_asce_alloc() local 476 base_asce_free(asce); in base_asce_alloc() 477 asce = 0; in base_asce_alloc() [all …]
|
| H A D | fault.c | 79 static void dump_pagetable(unsigned long asce, unsigned long address) in dump_pagetable() argument 81 unsigned long entry, *table = __va(asce & _ASCE_ORIGIN); in dump_pagetable() 83 pr_alert("AS:%016lx ", asce); in dump_pagetable() 84 switch (asce & _ASCE_TYPE_MASK) { in dump_pagetable() 135 unsigned long asce; in dump_fault_info() local 156 asce = get_lowcore()->kernel_asce.val; in dump_fault_info() 159 asce = get_lowcore()->user_asce.val; in dump_fault_info() 163 dump_pagetable(asce, get_fault_address(regs)); in dump_fault_info()
|
| 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() 62 unsigned long opt, asce; in ptep_ipte_global() local 67 if (asce == 0UL || nodat) in ptep_ipte_global() 69 if (asce != -1UL) { in ptep_ipte_global() 70 asce = asce ? : mm->context.asce; in ptep_ipte_global() 371 mm->context.asce, IDTE_LOCAL); in pmdp_idte_local() [all …]
|
| H A D | gmap.c | 98 gmap->asce = atype | _ASCE_TABLE_LENGTH | in gmap_alloc() 129 gmap_asce = gmap->asce; in gmap_create() 141 __tlb_flush_idte(gmap->asce); in gmap_flush_tlb() 297 struct gmap, list)->asce; in gmap_remove() 1438 unsigned long asce; in __gmap_unshadow_r1t() local 1451 gmap_idte_one(asce, raddr); in __gmap_unshadow_r1t() 2110 gmap->asce, IDTE_LOCAL); in gmap_pmdp_idte_local() 2143 gmap->asce, IDTE_GLOBAL); in gmap_pmdp_idte_global() 2605 unsigned long asce; in s390_replace_asce() local 2620 asce = (gmap->asce & ~_ASCE_ORIGIN) | __pa(table); in s390_replace_asce() [all …]
|
| /linux-6.15/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() 72 __tlb_flush_idte(init_mm.context.asce); in __tlb_flush_kernel()
|
| H A D | mmu_context.h | 64 mm->context.asce = __pa(mm->pgd) | _ASCE_TABLE_LENGTH | in init_new_context() 78 get_lowcore()->user_asce.val = next->context.asce; in switch_mm_irqs_off()
|
| H A D | pgtable.h | 703 unsigned long address, unsigned long asce) in crdte() argument 710 : [r2] "d" (r2.pair), [asce] "a" (asce) in crdte() 1152 unsigned long opt, unsigned long asce, in __ptep_rdp() argument 1161 [asce] "a" (asce), [m4] "i" (local)); in __ptep_rdp() 1165 unsigned long opt, unsigned long asce, in __ptep_ipte() argument 1180 opt = opt | (asce & _ASCE_ORIGIN); in __ptep_ipte() 1713 unsigned long opt, unsigned long asce, in __pmdp_idte() argument 1733 [r3] "a" (asce), [m4] "i" (local) in __pmdp_idte() 1739 unsigned long opt, unsigned long asce, in __pudp_idte() argument 1760 [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 | 12 union asce { union
|
| H A D | gmap.h | 52 unsigned long asce; member
|
| H A D | pgalloc.h | 173 void base_asce_free(unsigned long asce);
|
| /linux-6.15/drivers/s390/char/ |
| H A D | sclp_sd.c | 298 unsigned long page, asce = 0; in sclp_sd_store_data() local 321 asce = base_asce_alloc((unsigned long) data, dsize); in sclp_sd_store_data() 322 if (!asce) { in sclp_sd_store_data() 329 rc = sclp_sd_sync(page, SD_EQ_STORE_DATA, di, asce, (u64) data, &dsize, in sclp_sd_store_data() 338 asce = 0; in sclp_sd_store_data() 351 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 | 112 sccb->evbuf.mdd.ftp.asce = _ASCE_REAL_SPACE; in sclp_ftp_et7()
|
| /linux-6.15/arch/s390/kernel/ |
| H A D | entry.S | 119 lctlg %c1,%c1,__LC_KERNEL_ASCE(\lowcore) # load primary asce 187 stg %r5,__SF_SIE_GUEST_ASCE(%r15) # save guest asce 192 lctlg %c1,%c1,__SF_SIE_GUEST_ASCE(%r15) # load primary asce 211 lctlg %c1,%c1,__LC_KERNEL_ASCE(%r14) # load primary asce
|
| /linux-6.15/arch/s390/boot/ |
| H A D | vmem.c | 564 init_mm.context.asce = get_lowcore()->kernel_asce.val; in setup_vmem()
|