/kernel/linux/linux-6.6/arch/s390/kvm/ |
H A D | gaccess.c | 20 union asce { union 259 unsigned long asce : 64; /* Address-Space-Control Element */ member 380 static int ar_translation(struct kvm_vcpu *vcpu, union asce *asce, u8 ar, in ar_translation() argument 398 asce->val = vcpu->arch.sie_block->gcr[1]; in ar_translation() 401 asce->val = vcpu->arch.sie_block->gcr[7]; in ar_translation() 465 asce->val = aste.asce; in ar_translation() 572 static int get_vcpu_asce(struct kvm_vcpu *vcpu, union asce *asce, in get_vcpu_asce() argument 632 guest_translate(struct kvm_vcpu *vcpu, unsigned long gva, unsigned long *gpa, const union asce asce, enum gacc_mode mode, enum prot_type *prot) guest_translate() argument 802 low_address_protection_enabled(struct kvm_vcpu *vcpu, const union asce asce) low_address_protection_enabled() argument 844 fetch_prot_override_applicable(struct kvm_vcpu *vcpu, enum gacc_mode mode, union asce asce) fetch_prot_override_applicable() argument 878 vcpu_check_access_key(struct kvm_vcpu *vcpu, u8 access_key, enum gacc_mode mode, union asce asce, gpa_t gpa, unsigned long ga, unsigned int len) vcpu_check_access_key() argument 952 guest_range_to_gpas(struct kvm_vcpu *vcpu, unsigned long ga, u8 ar, unsigned long *gpas, unsigned long len, const union asce asce, enum gacc_mode mode, u8 access_key) guest_range_to_gpas() argument 1076 union asce asce; access_guest_with_key() local 1292 union asce asce; guest_translate_address_with_key() local 1315 union asce asce; check_gva_range() local 1387 union asce asce; kvm_s390_shadow_tables() local [all...] |
/kernel/linux/linux-5.10/arch/s390/kvm/ |
H A D | gaccess.c | 19 union asce { union 258 unsigned long asce : 64; /* Address-Space-Control Element */ member 379 static int ar_translation(struct kvm_vcpu *vcpu, union asce *asce, u8 ar, in ar_translation() argument 397 asce->val = vcpu->arch.sie_block->gcr[1]; in ar_translation() 400 asce->val = vcpu->arch.sie_block->gcr[7]; in ar_translation() 464 asce->val = aste.asce; in ar_translation() 554 static int get_vcpu_asce(struct kvm_vcpu *vcpu, union asce *asce, in get_vcpu_asce() argument 614 guest_translate(struct kvm_vcpu *vcpu, unsigned long gva, unsigned long *gpa, const union asce asce, enum gacc_mode mode, enum prot_type *prot) guest_translate() argument 784 low_address_protection_enabled(struct kvm_vcpu *vcpu, const union asce asce) low_address_protection_enabled() argument 797 guest_page_range(struct kvm_vcpu *vcpu, unsigned long ga, u8 ar, unsigned long *pages, unsigned long nr_pages, const union asce asce, enum gacc_mode mode) guest_page_range() argument 838 union asce asce; access_guest() local 909 union asce asce; guest_translate_address() local 989 union asce asce; kvm_s390_shadow_tables() local [all...] |
/kernel/linux/linux-5.10/arch/s390/mm/ |
H A D | pgalloc.c | 75 S390_lowcore.user_asce = mm->context.asce; in __crst_table_upgrade() 128 mm->context.asce = __pa(mm->pgd) | _ASCE_TABLE_LENGTH | in crst_table_upgrade() 137 mm->context.asce = __pa(mm->pgd) | _ASCE_TABLE_LENGTH | in crst_table_upgrade() 521 * base_asce_free - free asce and tables returned from base_asce_alloc() 522 * @asce: asce to be freed 527 void base_asce_free(unsigned long asce) in base_asce_free() argument 529 unsigned long table = asce & _ASCE_ORIGIN; in base_asce_free() 531 if (!asce) in base_asce_free() 533 switch (asce in base_asce_free() 581 unsigned long asce, table, end; base_asce_alloc() local [all...] |
H A D | gmap.c | 79 gmap->asce = atype | _ASCE_TABLE_LENGTH | in gmap_alloc() 109 gmap_asce = gmap->asce; in gmap_create() 121 __tlb_flush_idte(gmap->asce); in gmap_flush_tlb() 260 struct gmap, list)->asce; in gmap_remove() 555 if ((gmap->asce & _ASCE_TYPE_MASK) >= _ASCE_TYPE_REGION1) { in __gmap_link() 563 if ((gmap->asce & _ASCE_TYPE_MASK) >= _ASCE_TYPE_REGION2) { in __gmap_link() 571 if ((gmap->asce & _ASCE_TYPE_MASK) >= _ASCE_TYPE_REGION3) { in __gmap_link() 791 const int asce_type = gmap->asce & _ASCE_TYPE_MASK; in gmap_table_walk() 1265 * @asce: region or segment table *origin* + table-type bits 1270 * The table-type of the @asce identifie 1273 gmap_idte_one(unsigned long asce, unsigned long vaddr) gmap_idte_one() argument 1527 unsigned long asce, *r2t; __gmap_unshadow_r1t() local 1591 gmap_find_shadow(struct gmap *parent, unsigned long asce, int edat_level) gmap_find_shadow() argument 1620 gmap_shadow_valid(struct gmap *sg, unsigned long asce, int edat_level) gmap_shadow_valid() argument 1643 gmap_shadow(struct gmap *parent, unsigned long asce, int edat_level) gmap_shadow() argument 2780 unsigned long asce; s390_replace_asce() local [all...] |
H A D | pgtable.c | 50 unsigned long opt, asce; in ptep_ipte_local() local 54 asce = READ_ONCE(mm->context.gmap_asce); in ptep_ipte_local() 55 if (asce == 0UL || nodat) in ptep_ipte_local() 57 if (asce != -1UL) { in ptep_ipte_local() 58 asce = asce ? : mm->context.asce; in ptep_ipte_local() 61 __ptep_ipte(addr, ptep, opt, asce, IPTE_LOCAL); in ptep_ipte_local() 70 unsigned long opt, asce; in ptep_ipte_global() local 74 asce in ptep_ipte_global() [all...] |
H A D | fault.c | 111 static void dump_pagetable(unsigned long asce, unsigned long address) in dump_pagetable() argument 113 unsigned long *table = __va(asce & _ASCE_ORIGIN); in dump_pagetable() 115 pr_alert("AS:%016lx ", asce); in dump_pagetable() 116 switch (asce & _ASCE_TYPE_MASK) { in dump_pagetable() 166 unsigned long asce; in dump_fault_info() local 188 asce = S390_lowcore.user_asce; in dump_fault_info() 192 asce = S390_lowcore.vdso_asce; in dump_fault_info() 196 asce = ((struct gmap *) S390_lowcore.gmap)->asce; in dump_fault_info() 200 asce in dump_fault_info() [all...] |
/kernel/linux/linux-5.10/arch/s390/include/asm/ |
H A D | tlbflush.h | 20 static inline void __tlb_flush_idte(unsigned long asce) in __tlb_flush_idte() argument 30 : : "a" (opt), "a" (asce) : "cc"); in __tlb_flush_idte() 65 __tlb_flush_idte(mm->context.asce); in __tlb_flush_mm() 77 __tlb_flush_idte(init_mm.context.asce); in __tlb_flush_kernel()
|
H A D | mmu_context.h | 66 mm->context.asce = __pa(mm->pgd) | _ASCE_TABLE_LENGTH | in init_new_context() 76 S390_lowcore.user_asce = mm->context.asce; in set_user_asce() 96 S390_lowcore.user_asce = next->context.asce; in switch_mm()
|
H A D | gmap.h | 33 * @asce: address space control element for gmap page table 55 unsigned long asce; member 126 struct gmap *gmap_shadow(struct gmap *parent, unsigned long asce, 128 int gmap_shadow_valid(struct gmap *sg, unsigned long asce, int edat_level);
|
H A D | mmu.h | 16 unsigned long asce; member
|
H A D | pgtable.h | 231 #define _ASCE_TYPE_MASK 0x0c /* asce table type mask */ 591 unsigned long address, unsigned long asce) in crdte() 600 : "d" (reg3), "d" (reg4), "d" (reg5), "a" (asce) in crdte() 1007 unsigned long opt, unsigned long asce, in __ptep_ipte() 1022 opt = opt | (asce & _ASCE_ORIGIN); in __ptep_ipte() 1488 unsigned long opt, unsigned long asce, in __pmdp_idte() 1495 /* flush without guest asce */ in __pmdp_idte() 1503 /* flush with guest asce */ in __pmdp_idte() 1508 [r3] "a" (asce), [m4] "i" (local) in __pmdp_idte() 1514 unsigned long opt, unsigned long asce, in __pudp_idte() 589 crdte(unsigned long old, unsigned long new, unsigned long table, unsigned long dtt, unsigned long address, unsigned long asce) crdte() argument 1006 __ptep_ipte(unsigned long address, pte_t *ptep, unsigned long opt, unsigned long asce, int local) __ptep_ipte() argument 1487 __pmdp_idte(unsigned long addr, pmd_t *pmdp, unsigned long opt, unsigned long asce, int local) __pmdp_idte() argument 1513 __pudp_idte(unsigned long addr, pud_t *pudp, unsigned long opt, unsigned long asce, int local) __pudp_idte() argument [all...] |
/kernel/linux/linux-6.6/arch/s390/include/asm/ |
H A D | tlbflush.h | 20 static inline void __tlb_flush_idte(unsigned long asce) in __tlb_flush_idte() argument 28 asm volatile("idte 0,%1,%0" : : "a" (opt), "a" (asce) : "cc"); in __tlb_flush_idte() 63 __tlb_flush_idte(mm->context.asce); in __tlb_flush_mm() 75 __tlb_flush_idte(init_mm.context.asce); in __tlb_flush_kernel()
|
H A D | gmap.h | 33 * @asce: address space control element for gmap page table 55 unsigned long asce; member 126 struct gmap *gmap_shadow(struct gmap *parent, unsigned long asce, 128 int gmap_shadow_valid(struct gmap *sg, unsigned long asce, int edat_level);
|
H A D | mmu_context.h | 67 mm->context.asce = __pa(mm->pgd) | _ASCE_TABLE_LENGTH | in init_new_context() 81 S390_lowcore.user_asce = next->context.asce; in switch_mm_irqs_off()
|
H A D | mmu.h | 17 unsigned long asce; member
|
H A D | pgtable.h | 238 #define _ASCE_TYPE_MASK 0x0c /* asce table type mask */ 613 unsigned long address, unsigned long asce) in crdte() 618 asm volatile(".insn rrf,0xb98f0000,%[r1],%[r2],%[asce],0" in crdte() 620 : [r2] "d" (r2.pair), [asce] "a" (asce) in crdte() 1059 unsigned long opt, unsigned long asce, in __ptep_rdp() 1065 asm volatile(".insn rrf,0xb98b0000,%[r1],%[r2],%[asce],%[m4]" in __ptep_rdp() 1068 [asce] "a" (asce), [m4] "i" (local)); in __ptep_rdp() 1072 unsigned long opt, unsigned long asce, in __ptep_ipte() 611 crdte(unsigned long old, unsigned long new, unsigned long *table, unsigned long dtt, unsigned long address, unsigned long asce) crdte() argument 1058 __ptep_rdp(unsigned long addr, pte_t *ptep, unsigned long opt, unsigned long asce, int local) __ptep_rdp() argument 1071 __ptep_ipte(unsigned long address, pte_t *ptep, unsigned long opt, unsigned long asce, int local) __ptep_ipte() argument 1621 __pmdp_idte(unsigned long addr, pmd_t *pmdp, unsigned long opt, unsigned long asce, int local) __pmdp_idte() argument 1647 __pudp_idte(unsigned long addr, pud_t *pudp, unsigned long opt, unsigned long asce, int local) __pudp_idte() argument [all...] |
/kernel/linux/linux-6.6/arch/s390/mm/ |
H A D | pgalloc.c | 65 S390_lowcore.user_asce = mm->context.asce; in __crst_table_upgrade() 109 mm->context.asce = __pa(mm->pgd) | _ASCE_TABLE_LENGTH | in crst_table_upgrade() 118 mm->context.asce = __pa(mm->pgd) | _ASCE_TABLE_LENGTH | in crst_table_upgrade() 661 * base_asce_free - free asce and tables returned from base_asce_alloc() 662 * @asce: asce to be freed 667 void base_asce_free(unsigned long asce) in base_asce_free() argument 669 unsigned long *table = __va(asce & _ASCE_ORIGIN); in base_asce_free() 671 if (!asce) in base_asce_free() 673 switch (asce in base_asce_free() 721 unsigned long asce, *table, end; base_asce_alloc() local [all...] |
H A D | fault.c | 122 static void dump_pagetable(unsigned long asce, unsigned long address) in dump_pagetable() argument 124 unsigned long *table = __va(asce & _ASCE_ORIGIN); in dump_pagetable() 126 pr_alert("AS:%016lx ", asce); in dump_pagetable() 127 switch (asce & _ASCE_TYPE_MASK) { in dump_pagetable() 177 unsigned long asce; in dump_fault_info() local 199 asce = S390_lowcore.user_asce; in dump_fault_info() 203 asce = ((struct gmap *) S390_lowcore.gmap)->asce; in dump_fault_info() 207 asce = S390_lowcore.kernel_asce; in dump_fault_info() 214 dump_pagetable(asce, reg in dump_fault_info() [all...] |
H A D | gmap.c | 90 gmap->asce = atype | _ASCE_TABLE_LENGTH | in gmap_alloc() 120 gmap_asce = gmap->asce; in gmap_create() 132 __tlb_flush_idte(gmap->asce); in gmap_flush_tlb() 271 struct gmap, list)->asce; in gmap_remove() 565 if ((gmap->asce & _ASCE_TYPE_MASK) >= _ASCE_TYPE_REGION1) { in __gmap_link() 573 if ((gmap->asce & _ASCE_TYPE_MASK) >= _ASCE_TYPE_REGION2) { in __gmap_link() 581 if ((gmap->asce & _ASCE_TYPE_MASK) >= _ASCE_TYPE_REGION3) { in __gmap_link() 807 const int asce_type = gmap->asce & _ASCE_TYPE_MASK; in gmap_table_walk() 1288 * @asce: region or segment table *origin* + table-type bits 1293 * The table-type of the @asce identifie 1296 gmap_idte_one(unsigned long asce, unsigned long vaddr) gmap_idte_one() argument 1554 unsigned long asce; __gmap_unshadow_r1t() local 1619 gmap_find_shadow(struct gmap *parent, unsigned long asce, int edat_level) gmap_find_shadow() argument 1648 gmap_shadow_valid(struct gmap *sg, unsigned long asce, int edat_level) gmap_shadow_valid() argument 1671 gmap_shadow(struct gmap *parent, unsigned long asce, int edat_level) gmap_shadow() argument 2861 unsigned long asce; s390_replace_asce() local [all...] |
H A D | pgtable.c | 50 unsigned long opt, asce; in ptep_ipte_local() local 54 asce = READ_ONCE(mm->context.gmap_asce); in ptep_ipte_local() 55 if (asce == 0UL || nodat) in ptep_ipte_local() 57 if (asce != -1UL) { in ptep_ipte_local() 58 asce = asce ? : mm->context.asce; in ptep_ipte_local() 61 __ptep_ipte(addr, ptep, opt, asce, IPTE_LOCAL); in ptep_ipte_local() 70 unsigned long opt, asce; in ptep_ipte_global() local 74 asce in ptep_ipte_global() [all...] |
/kernel/linux/linux-5.10/arch/s390/lib/ |
H A D | uaccess.c | 66 unsigned long asce, cr; in enable_sacf_uaccess() local 75 asce = S390_lowcore.kernel_asce; in enable_sacf_uaccess() 82 asce = S390_lowcore.user_asce; in enable_sacf_uaccess() 85 if (cr != asce) { in enable_sacf_uaccess() 86 __ctl_load(asce, 7, 7); in enable_sacf_uaccess()
|
/kernel/linux/linux-5.10/drivers/s390/char/ |
H A D | sclp_sd.c | 287 unsigned long page, asce = 0; in sclp_sd_store_data() local 310 asce = base_asce_alloc((unsigned long) data, dsize); in sclp_sd_store_data() 311 if (!asce) { in sclp_sd_store_data() 318 rc = sclp_sd_sync(page, SD_EQ_STORE_DATA, di, asce, (u64) data, &dsize, in sclp_sd_store_data() 327 asce = 0; in sclp_sd_store_data() 340 base_asce_free(asce); in sclp_sd_store_data()
|
H A D | sclp_diag.h | 44 * @asce: region or segment table designation 59 u64 asce; member
|
/kernel/linux/linux-6.6/drivers/s390/char/ |
H A D | sclp_sd.c | 288 unsigned long page, asce = 0; in sclp_sd_store_data() local 311 asce = base_asce_alloc((unsigned long) data, dsize); in sclp_sd_store_data() 312 if (!asce) { in sclp_sd_store_data() 319 rc = sclp_sd_sync(page, SD_EQ_STORE_DATA, di, asce, (u64) data, &dsize, in sclp_sd_store_data() 335 base_asce_free(asce); in sclp_sd_store_data()
|
H A D | sclp_diag.h | 44 * @asce: region or segment table designation 59 u64 asce; member
|