gmap 62 arch/s390/include/asm/gmap.h struct gmap *parent; gmap 92 arch/s390/include/asm/gmap.h void (*notifier_call)(struct gmap *gmap, unsigned long start, gmap 96 arch/s390/include/asm/gmap.h static inline int gmap_is_shadow(struct gmap *gmap) gmap 98 arch/s390/include/asm/gmap.h return !!gmap->parent; gmap 101 arch/s390/include/asm/gmap.h struct gmap *gmap_create(struct mm_struct *mm, unsigned long limit); gmap 102 arch/s390/include/asm/gmap.h void gmap_remove(struct gmap *gmap); gmap 103 arch/s390/include/asm/gmap.h struct gmap *gmap_get(struct gmap *gmap); gmap 104 arch/s390/include/asm/gmap.h void gmap_put(struct gmap *gmap); gmap 106 arch/s390/include/asm/gmap.h void gmap_enable(struct gmap *gmap); gmap 107 arch/s390/include/asm/gmap.h void gmap_disable(struct gmap *gmap); gmap 108 arch/s390/include/asm/gmap.h struct gmap *gmap_get_enabled(void); gmap 109 arch/s390/include/asm/gmap.h int gmap_map_segment(struct gmap *gmap, unsigned long from, gmap 111 arch/s390/include/asm/gmap.h int gmap_unmap_segment(struct gmap *gmap, unsigned long to, unsigned long len); gmap 112 arch/s390/include/asm/gmap.h unsigned long __gmap_translate(struct gmap *, unsigned long gaddr); gmap 113 arch/s390/include/asm/gmap.h unsigned long gmap_translate(struct gmap *, unsigned long gaddr); gmap 114 arch/s390/include/asm/gmap.h int __gmap_link(struct gmap *gmap, unsigned long gaddr, unsigned long vmaddr); gmap 115 arch/s390/include/asm/gmap.h int gmap_fault(struct gmap *, unsigned long gaddr, unsigned int fault_flags); gmap 116 arch/s390/include/asm/gmap.h void gmap_discard(struct gmap *, unsigned long from, unsigned long to); gmap 117 arch/s390/include/asm/gmap.h void __gmap_zap(struct gmap *, unsigned long gaddr); gmap 120 arch/s390/include/asm/gmap.h int gmap_read_table(struct gmap *gmap, unsigned long gaddr, unsigned long *val); gmap 122 arch/s390/include/asm/gmap.h struct gmap *gmap_shadow(struct gmap *parent, unsigned long asce, gmap 124 arch/s390/include/asm/gmap.h int gmap_shadow_valid(struct gmap *sg, unsigned long asce, int edat_level); gmap 125 arch/s390/include/asm/gmap.h int gmap_shadow_r2t(struct gmap *sg, unsigned long saddr, unsigned long r2t, gmap 127 arch/s390/include/asm/gmap.h int gmap_shadow_r3t(struct gmap *sg, unsigned long saddr, unsigned long r3t, gmap 129 arch/s390/include/asm/gmap.h int gmap_shadow_sgt(struct gmap *sg, unsigned long saddr, unsigned long sgt, gmap 131 arch/s390/include/asm/gmap.h int gmap_shadow_pgt(struct gmap *sg, unsigned long saddr, unsigned long pgt, gmap 133 arch/s390/include/asm/gmap.h int gmap_shadow_pgt_lookup(struct gmap *sg, unsigned long saddr, gmap 135 arch/s390/include/asm/gmap.h int gmap_shadow_page(struct gmap *sg, unsigned long saddr, pte_t pte); gmap 142 arch/s390/include/asm/gmap.h int gmap_mprotect_notify(struct gmap *, unsigned long start, gmap 145 arch/s390/include/asm/gmap.h void gmap_sync_dirty_log_pmd(struct gmap *gmap, unsigned long dirty_bitmap[4], gmap 652 arch/s390/include/asm/kvm_host.h struct gmap *gmap; gmap 654 arch/s390/include/asm/kvm_host.h struct gmap *enabled_gmap; gmap 850 arch/s390/include/asm/kvm_host.h struct gmap *gmap; gmap 139 arch/s390/include/asm/lowcore.h __u64 gmap; /* 0x03d0 */ gmap 178 arch/s390/kernel/asm-offsets.c OFFSET(__LC_GMAP, lowcore, gmap); gmap 201 arch/s390/kernel/asm-offsets.c OFFSET(__GMAP_ASCE, gmap, asce); gmap 41 arch/s390/kvm/diag.c gmap_discard(vcpu->arch.gmap, start, end); gmap 49 arch/s390/kvm/diag.c gmap_discard(vcpu->arch.gmap, start, prefix); gmap 51 arch/s390/kvm/diag.c gmap_discard(vcpu->arch.gmap, 0, PAGE_SIZE); gmap 53 arch/s390/kvm/diag.c gmap_discard(vcpu->arch.gmap, PAGE_SIZE, 2 * PAGE_SIZE); gmap 54 arch/s390/kvm/diag.c gmap_discard(vcpu->arch.gmap, prefix + 2 * PAGE_SIZE, end); gmap 982 arch/s390/kvm/gaccess.c static int kvm_s390_shadow_tables(struct gmap *sg, unsigned long saddr, gmap 986 arch/s390/kvm/gaccess.c struct gmap *parent; gmap 1164 arch/s390/kvm/gaccess.c int kvm_s390_shadow_fault(struct kvm_vcpu *vcpu, struct gmap *sg, gmap 362 arch/s390/kvm/gaccess.h int kvm_s390_shadow_fault(struct kvm_vcpu *vcpu, struct gmap *shadow, gmap 2374 arch/s390/kvm/interrupt.c map->addr = gmap_translate(kvm->arch.gmap, addr); gmap 2610 arch/s390/kvm/interrupt.c dev->kvm->arch.gmap->pfault_enabled = 1; gmap 2613 arch/s390/kvm/interrupt.c dev->kvm->arch.gmap->pfault_enabled = 0; gmap 235 arch/s390/kvm/kvm-s390.c static void kvm_gmap_notifier(struct gmap *gmap, unsigned long start, gmap 581 arch/s390/kvm/kvm-s390.c struct gmap *gmap = kvm->arch.gmap; gmap 594 arch/s390/kvm/kvm-s390.c gmap_sync_dirty_log_pmd(gmap, bitmap, gaddr, vmaddr); gmap 846 arch/s390/kvm/kvm-s390.c s390_reset_cmma(kvm->arch.gmap->mm); gmap 875 arch/s390/kvm/kvm-s390.c struct gmap *new = gmap_create(current->mm, new_limit); gmap 880 arch/s390/kvm/kvm-s390.c gmap_remove(kvm->arch.gmap); gmap 882 arch/s390/kvm/kvm-s390.c kvm->arch.gmap = new; gmap 889 arch/s390/kvm/kvm-s390.c (void *) kvm->arch.gmap->asce); gmap 2493 arch/s390/kvm/kvm-s390.c kvm->arch.gmap = NULL; gmap 2501 arch/s390/kvm/kvm-s390.c kvm->arch.gmap = gmap_create(current->mm, kvm->arch.mem_limit - 1); gmap 2502 arch/s390/kvm/kvm-s390.c if (!kvm->arch.gmap) gmap 2504 arch/s390/kvm/kvm-s390.c kvm->arch.gmap->private = kvm; gmap 2505 arch/s390/kvm/kvm-s390.c kvm->arch.gmap->pfault_enabled = 0; gmap 2534 arch/s390/kvm/kvm-s390.c gmap_remove(vcpu->arch.gmap); gmap 2568 arch/s390/kvm/kvm-s390.c gmap_remove(kvm->arch.gmap); gmap 2578 arch/s390/kvm/kvm-s390.c vcpu->arch.gmap = gmap_create(current->mm, -1UL); gmap 2579 arch/s390/kvm/kvm-s390.c if (!vcpu->arch.gmap) gmap 2581 arch/s390/kvm/kvm-s390.c vcpu->arch.gmap->private = vcpu->kvm; gmap 2889 arch/s390/kvm/kvm-s390.c vcpu->arch.gmap = vcpu->kvm->arch.gmap; gmap 2895 arch/s390/kvm/kvm-s390.c vcpu->arch.enabled_gmap = vcpu->arch.gmap; gmap 3150 arch/s390/kvm/kvm-s390.c static void kvm_gmap_notifier(struct gmap *gmap, unsigned long start, gmap 3153 arch/s390/kvm/kvm-s390.c struct kvm *kvm = gmap->private; gmap 3158 arch/s390/kvm/kvm-s390.c if (gmap_is_shadow(gmap)) gmap 3507 arch/s390/kvm/kvm-s390.c rc = gmap_mprotect_notify(vcpu->arch.gmap, gmap 3615 arch/s390/kvm/kvm-s390.c return gmap_fault(vcpu->arch.gmap, gpa, gmap 3682 arch/s390/kvm/kvm-s390.c if (!vcpu->arch.gmap->pfault_enabled) gmap 4399 arch/s390/kvm/kvm-s390.c r = gmap_map_segment(vcpu->arch.gmap, ucasmap.user_addr, gmap 4416 arch/s390/kvm/kvm-s390.c r = gmap_unmap_segment(vcpu->arch.gmap, ucasmap.vcpu_addr, gmap 4422 arch/s390/kvm/kvm-s390.c r = gmap_fault(vcpu->arch.gmap, arg, 0); gmap 4537 arch/s390/kvm/kvm-s390.c rc = gmap_unmap_segment(kvm->arch.gmap, old->base_gfn * PAGE_SIZE, gmap 4541 arch/s390/kvm/kvm-s390.c rc = gmap_unmap_segment(kvm->arch.gmap, old->base_gfn * PAGE_SIZE, gmap 4547 arch/s390/kvm/kvm-s390.c rc = gmap_map_segment(kvm->arch.gmap, mem->userspace_addr, gmap 76 arch/s390/kvm/kvm-s390.h if (kvm->arch.gmap) gmap 274 arch/s390/kvm/kvm-s390.h void kvm_s390_vsie_gmap_notifier(struct gmap *gmap, unsigned long start, gmap 1189 arch/s390/kvm/priv.c struct gmap *gmap; gmap 1193 arch/s390/kvm/priv.c gmap = vcpu->arch.gmap; gmap 1249 arch/s390/kvm/priv.c down_read(&gmap->mm->mmap_sem); gmap 1251 arch/s390/kvm/priv.c __gmap_zap(gmap, cbrlo[i]); gmap 1252 arch/s390/kvm/priv.c up_read(&gmap->mm->mmap_sem); gmap 38 arch/s390/kvm/vsie.c struct gmap *gmap; /* 0x0220 */ gmap 560 arch/s390/kvm/vsie.c void kvm_s390_vsie_gmap_notifier(struct gmap *gmap, unsigned long start, gmap 563 arch/s390/kvm/vsie.c struct kvm *kvm = gmap->private; gmap 569 arch/s390/kvm/vsie.c if (!gmap_is_shadow(gmap)) gmap 584 arch/s390/kvm/vsie.c if (READ_ONCE(cur->gmap) != gmap) gmap 621 arch/s390/kvm/vsie.c rc = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, prefix); gmap 623 arch/s390/kvm/vsie.c rc = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, gmap 914 arch/s390/kvm/vsie.c rc = kvm_s390_shadow_fault(vcpu, vsie_page->gmap, gmap 936 arch/s390/kvm/vsie.c kvm_s390_shadow_fault(vcpu, vsie_page->gmap, gmap 1081 arch/s390/kvm/vsie.c if (vsie_page->gmap) gmap 1082 arch/s390/kvm/vsie.c gmap_put(vsie_page->gmap); gmap 1083 arch/s390/kvm/vsie.c WRITE_ONCE(vsie_page->gmap, NULL); gmap 1092 arch/s390/kvm/vsie.c struct gmap *gmap; gmap 1105 arch/s390/kvm/vsie.c if (vsie_page->gmap && gmap_shadow_valid(vsie_page->gmap, asce, edat)) gmap 1110 arch/s390/kvm/vsie.c gmap = gmap_shadow(vcpu->arch.gmap, asce, edat); gmap 1111 arch/s390/kvm/vsie.c if (IS_ERR(gmap)) gmap 1112 arch/s390/kvm/vsie.c return PTR_ERR(gmap); gmap 1113 arch/s390/kvm/vsie.c gmap->private = vcpu->kvm; gmap 1114 arch/s390/kvm/vsie.c WRITE_ONCE(vsie_page->gmap, gmap); gmap 1175 arch/s390/kvm/vsie.c gmap_enable(vsie_page->gmap); gmap 1178 arch/s390/kvm/vsie.c gmap_enable(vcpu->arch.gmap); gmap 196 arch/s390/mm/fault.c asce = ((struct gmap *) S390_lowcore.gmap)->asce; gmap 387 arch/s390/mm/fault.c struct gmap *gmap; gmap 439 arch/s390/mm/fault.c gmap = NULL; gmap 441 arch/s390/mm/fault.c gmap = (struct gmap *) S390_lowcore.gmap; gmap 445 arch/s390/mm/fault.c address = __gmap_translate(gmap, address); gmap 450 arch/s390/mm/fault.c if (gmap->pfault_enabled) gmap 509 arch/s390/mm/fault.c if (IS_ENABLED(CONFIG_PGSTE) && gmap && gmap 526 arch/s390/mm/fault.c if (IS_ENABLED(CONFIG_PGSTE) && gmap) { gmap 527 arch/s390/mm/fault.c address = __gmap_link(gmap, current->thread.gmap_addr, gmap 35 arch/s390/mm/gmap.c static struct gmap *gmap_alloc(unsigned long limit) gmap 37 arch/s390/mm/gmap.c struct gmap *gmap; gmap 59 arch/s390/mm/gmap.c gmap = kzalloc(sizeof(struct gmap), GFP_KERNEL); gmap 60 arch/s390/mm/gmap.c if (!gmap) gmap 62 arch/s390/mm/gmap.c INIT_LIST_HEAD(&gmap->crst_list); gmap 63 arch/s390/mm/gmap.c INIT_LIST_HEAD(&gmap->children); gmap 64 arch/s390/mm/gmap.c INIT_LIST_HEAD(&gmap->pt_list); gmap 65 arch/s390/mm/gmap.c INIT_RADIX_TREE(&gmap->guest_to_host, GFP_KERNEL); gmap 66 arch/s390/mm/gmap.c INIT_RADIX_TREE(&gmap->host_to_guest, GFP_ATOMIC); gmap 67 arch/s390/mm/gmap.c INIT_RADIX_TREE(&gmap->host_to_rmap, GFP_ATOMIC); gmap 68 arch/s390/mm/gmap.c spin_lock_init(&gmap->guest_table_lock); gmap 69 arch/s390/mm/gmap.c spin_lock_init(&gmap->shadow_lock); gmap 70 arch/s390/mm/gmap.c refcount_set(&gmap->ref_count, 1); gmap 75 arch/s390/mm/gmap.c list_add(&page->lru, &gmap->crst_list); gmap 78 arch/s390/mm/gmap.c gmap->table = table; gmap 79 arch/s390/mm/gmap.c gmap->asce = atype | _ASCE_TABLE_LENGTH | gmap 81 arch/s390/mm/gmap.c gmap->asce_end = limit; gmap 82 arch/s390/mm/gmap.c return gmap; gmap 85 arch/s390/mm/gmap.c kfree(gmap); gmap 97 arch/s390/mm/gmap.c struct gmap *gmap_create(struct mm_struct *mm, unsigned long limit) gmap 99 arch/s390/mm/gmap.c struct gmap *gmap; gmap 102 arch/s390/mm/gmap.c gmap = gmap_alloc(limit); gmap 103 arch/s390/mm/gmap.c if (!gmap) gmap 105 arch/s390/mm/gmap.c gmap->mm = mm; gmap 107 arch/s390/mm/gmap.c list_add_rcu(&gmap->list, &mm->context.gmap_list); gmap 109 arch/s390/mm/gmap.c gmap_asce = gmap->asce; gmap 114 arch/s390/mm/gmap.c return gmap; gmap 118 arch/s390/mm/gmap.c static void gmap_flush_tlb(struct gmap *gmap) gmap 121 arch/s390/mm/gmap.c __tlb_flush_idte(gmap->asce); gmap 183 arch/s390/mm/gmap.c static void gmap_free(struct gmap *gmap) gmap 188 arch/s390/mm/gmap.c if (!(gmap_is_shadow(gmap) && gmap->removed)) gmap 189 arch/s390/mm/gmap.c gmap_flush_tlb(gmap); gmap 191 arch/s390/mm/gmap.c list_for_each_entry_safe(page, next, &gmap->crst_list, lru) gmap 193 arch/s390/mm/gmap.c gmap_radix_tree_free(&gmap->guest_to_host); gmap 194 arch/s390/mm/gmap.c gmap_radix_tree_free(&gmap->host_to_guest); gmap 197 arch/s390/mm/gmap.c if (gmap_is_shadow(gmap)) { gmap 199 arch/s390/mm/gmap.c list_for_each_entry_safe(page, next, &gmap->pt_list, lru) gmap 201 arch/s390/mm/gmap.c gmap_rmap_radix_tree_free(&gmap->host_to_rmap); gmap 203 arch/s390/mm/gmap.c gmap_put(gmap->parent); gmap 206 arch/s390/mm/gmap.c kfree(gmap); gmap 215 arch/s390/mm/gmap.c struct gmap *gmap_get(struct gmap *gmap) gmap 217 arch/s390/mm/gmap.c refcount_inc(&gmap->ref_count); gmap 218 arch/s390/mm/gmap.c return gmap; gmap 228 arch/s390/mm/gmap.c void gmap_put(struct gmap *gmap) gmap 230 arch/s390/mm/gmap.c if (refcount_dec_and_test(&gmap->ref_count)) gmap 231 arch/s390/mm/gmap.c gmap_free(gmap); gmap 239 arch/s390/mm/gmap.c void gmap_remove(struct gmap *gmap) gmap 241 arch/s390/mm/gmap.c struct gmap *sg, *next; gmap 245 arch/s390/mm/gmap.c if (!list_empty(&gmap->children)) { gmap 246 arch/s390/mm/gmap.c spin_lock(&gmap->shadow_lock); gmap 247 arch/s390/mm/gmap.c list_for_each_entry_safe(sg, next, &gmap->children, list) { gmap 251 arch/s390/mm/gmap.c spin_unlock(&gmap->shadow_lock); gmap 254 arch/s390/mm/gmap.c spin_lock(&gmap->mm->context.lock); gmap 255 arch/s390/mm/gmap.c list_del_rcu(&gmap->list); gmap 256 arch/s390/mm/gmap.c if (list_empty(&gmap->mm->context.gmap_list)) gmap 258 arch/s390/mm/gmap.c else if (list_is_singular(&gmap->mm->context.gmap_list)) gmap 259 arch/s390/mm/gmap.c gmap_asce = list_first_entry(&gmap->mm->context.gmap_list, gmap 260 arch/s390/mm/gmap.c struct gmap, list)->asce; gmap 263 arch/s390/mm/gmap.c WRITE_ONCE(gmap->mm->context.gmap_asce, gmap_asce); gmap 264 arch/s390/mm/gmap.c spin_unlock(&gmap->mm->context.lock); gmap 267 arch/s390/mm/gmap.c gmap_put(gmap); gmap 275 arch/s390/mm/gmap.c void gmap_enable(struct gmap *gmap) gmap 277 arch/s390/mm/gmap.c S390_lowcore.gmap = (unsigned long) gmap; gmap 285 arch/s390/mm/gmap.c void gmap_disable(struct gmap *gmap) gmap 287 arch/s390/mm/gmap.c S390_lowcore.gmap = 0UL; gmap 296 arch/s390/mm/gmap.c struct gmap *gmap_get_enabled(void) gmap 298 arch/s390/mm/gmap.c return (struct gmap *) S390_lowcore.gmap; gmap 305 arch/s390/mm/gmap.c static int gmap_alloc_table(struct gmap *gmap, unsigned long *table, gmap 317 arch/s390/mm/gmap.c spin_lock(&gmap->guest_table_lock); gmap 319 arch/s390/mm/gmap.c list_add(&page->lru, &gmap->crst_list); gmap 325 arch/s390/mm/gmap.c spin_unlock(&gmap->guest_table_lock); gmap 356 arch/s390/mm/gmap.c static int __gmap_unlink_by_vmaddr(struct gmap *gmap, unsigned long vmaddr) gmap 361 arch/s390/mm/gmap.c BUG_ON(gmap_is_shadow(gmap)); gmap 362 arch/s390/mm/gmap.c spin_lock(&gmap->guest_table_lock); gmap 363 arch/s390/mm/gmap.c entry = radix_tree_delete(&gmap->host_to_guest, vmaddr >> PMD_SHIFT); gmap 368 arch/s390/mm/gmap.c spin_unlock(&gmap->guest_table_lock); gmap 379 arch/s390/mm/gmap.c static int __gmap_unmap_by_gaddr(struct gmap *gmap, unsigned long gaddr) gmap 383 arch/s390/mm/gmap.c vmaddr = (unsigned long) radix_tree_delete(&gmap->guest_to_host, gmap 385 arch/s390/mm/gmap.c return vmaddr ? __gmap_unlink_by_vmaddr(gmap, vmaddr) : 0; gmap 396 arch/s390/mm/gmap.c int gmap_unmap_segment(struct gmap *gmap, unsigned long to, unsigned long len) gmap 401 arch/s390/mm/gmap.c BUG_ON(gmap_is_shadow(gmap)); gmap 408 arch/s390/mm/gmap.c down_write(&gmap->mm->mmap_sem); gmap 410 arch/s390/mm/gmap.c flush |= __gmap_unmap_by_gaddr(gmap, to + off); gmap 411 arch/s390/mm/gmap.c up_write(&gmap->mm->mmap_sem); gmap 413 arch/s390/mm/gmap.c gmap_flush_tlb(gmap); gmap 427 arch/s390/mm/gmap.c int gmap_map_segment(struct gmap *gmap, unsigned long from, gmap 433 arch/s390/mm/gmap.c BUG_ON(gmap_is_shadow(gmap)); gmap 437 arch/s390/mm/gmap.c from + len - 1 > TASK_SIZE_MAX || to + len - 1 > gmap->asce_end) gmap 441 arch/s390/mm/gmap.c down_write(&gmap->mm->mmap_sem); gmap 444 arch/s390/mm/gmap.c flush |= __gmap_unmap_by_gaddr(gmap, to + off); gmap 446 arch/s390/mm/gmap.c if (radix_tree_insert(&gmap->guest_to_host, gmap 451 arch/s390/mm/gmap.c up_write(&gmap->mm->mmap_sem); gmap 453 arch/s390/mm/gmap.c gmap_flush_tlb(gmap); gmap 456 arch/s390/mm/gmap.c gmap_unmap_segment(gmap, to, len); gmap 474 arch/s390/mm/gmap.c unsigned long __gmap_translate(struct gmap *gmap, unsigned long gaddr) gmap 479 arch/s390/mm/gmap.c radix_tree_lookup(&gmap->guest_to_host, gaddr >> PMD_SHIFT); gmap 494 arch/s390/mm/gmap.c unsigned long gmap_translate(struct gmap *gmap, unsigned long gaddr) gmap 498 arch/s390/mm/gmap.c down_read(&gmap->mm->mmap_sem); gmap 499 arch/s390/mm/gmap.c rc = __gmap_translate(gmap, gaddr); gmap 500 arch/s390/mm/gmap.c up_read(&gmap->mm->mmap_sem); gmap 514 arch/s390/mm/gmap.c struct gmap *gmap; gmap 518 arch/s390/mm/gmap.c list_for_each_entry_rcu(gmap, &mm->context.gmap_list, list) { gmap 519 arch/s390/mm/gmap.c flush = __gmap_unlink_by_vmaddr(gmap, vmaddr); gmap 521 arch/s390/mm/gmap.c gmap_flush_tlb(gmap); gmap 526 arch/s390/mm/gmap.c static void gmap_pmdp_xchg(struct gmap *gmap, pmd_t *old, pmd_t new, gmap 540 arch/s390/mm/gmap.c int __gmap_link(struct gmap *gmap, unsigned long gaddr, unsigned long vmaddr) gmap 552 arch/s390/mm/gmap.c BUG_ON(gmap_is_shadow(gmap)); gmap 554 arch/s390/mm/gmap.c table = gmap->table; gmap 555 arch/s390/mm/gmap.c if ((gmap->asce & _ASCE_TYPE_MASK) >= _ASCE_TYPE_REGION1) { gmap 558 arch/s390/mm/gmap.c gmap_alloc_table(gmap, table, _REGION2_ENTRY_EMPTY, gmap 563 arch/s390/mm/gmap.c if ((gmap->asce & _ASCE_TYPE_MASK) >= _ASCE_TYPE_REGION2) { gmap 566 arch/s390/mm/gmap.c gmap_alloc_table(gmap, table, _REGION3_ENTRY_EMPTY, gmap 571 arch/s390/mm/gmap.c if ((gmap->asce & _ASCE_TYPE_MASK) >= _ASCE_TYPE_REGION3) { gmap 574 arch/s390/mm/gmap.c gmap_alloc_table(gmap, table, _SEGMENT_ENTRY_EMPTY, gmap 581 arch/s390/mm/gmap.c mm = gmap->mm; gmap 594 arch/s390/mm/gmap.c if (pmd_large(*pmd) && !gmap->mm->context.allow_gmap_hpage_1m) gmap 601 arch/s390/mm/gmap.c spin_lock(&gmap->guest_table_lock); gmap 603 arch/s390/mm/gmap.c rc = radix_tree_insert(&gmap->host_to_guest, gmap 619 arch/s390/mm/gmap.c gmap_pmdp_xchg(gmap, (pmd_t *)table, __pmd(unprot), gaddr); gmap 621 arch/s390/mm/gmap.c spin_unlock(&gmap->guest_table_lock); gmap 636 arch/s390/mm/gmap.c int gmap_fault(struct gmap *gmap, unsigned long gaddr, gmap 643 arch/s390/mm/gmap.c down_read(&gmap->mm->mmap_sem); gmap 647 arch/s390/mm/gmap.c vmaddr = __gmap_translate(gmap, gaddr); gmap 652 arch/s390/mm/gmap.c if (fixup_user_fault(current, gmap->mm, vmaddr, fault_flags, gmap 664 arch/s390/mm/gmap.c rc = __gmap_link(gmap, gaddr, vmaddr); gmap 666 arch/s390/mm/gmap.c up_read(&gmap->mm->mmap_sem); gmap 674 arch/s390/mm/gmap.c void __gmap_zap(struct gmap *gmap, unsigned long gaddr) gmap 681 arch/s390/mm/gmap.c vmaddr = (unsigned long) radix_tree_lookup(&gmap->guest_to_host, gmap 686 arch/s390/mm/gmap.c ptep = get_locked_pte(gmap->mm, vmaddr, &ptl); gmap 688 arch/s390/mm/gmap.c ptep_zap_unused(gmap->mm, vmaddr, ptep, 0); gmap 694 arch/s390/mm/gmap.c void gmap_discard(struct gmap *gmap, unsigned long from, unsigned long to) gmap 699 arch/s390/mm/gmap.c down_read(&gmap->mm->mmap_sem); gmap 704 arch/s390/mm/gmap.c radix_tree_lookup(&gmap->guest_to_host, gmap 710 arch/s390/mm/gmap.c vma = find_vma(gmap->mm, vmaddr); gmap 722 arch/s390/mm/gmap.c up_read(&gmap->mm->mmap_sem); gmap 760 arch/s390/mm/gmap.c static void gmap_call_notifier(struct gmap *gmap, unsigned long start, gmap 766 arch/s390/mm/gmap.c nb->notifier_call(gmap, start, end); gmap 787 arch/s390/mm/gmap.c static inline unsigned long *gmap_table_walk(struct gmap *gmap, gmap 790 arch/s390/mm/gmap.c const int asce_type = gmap->asce & _ASCE_TYPE_MASK; gmap 793 arch/s390/mm/gmap.c if ((gmap->asce & _ASCE_TYPE_MASK) + 4 < (level * 4)) gmap 795 arch/s390/mm/gmap.c if (gmap_is_shadow(gmap) && gmap->removed) gmap 802 arch/s390/mm/gmap.c table = gmap->table; gmap 803 arch/s390/mm/gmap.c switch (gmap->asce & _ASCE_TYPE_MASK) { gmap 849 arch/s390/mm/gmap.c static pte_t *gmap_pte_op_walk(struct gmap *gmap, unsigned long gaddr, gmap 854 arch/s390/mm/gmap.c BUG_ON(gmap_is_shadow(gmap)); gmap 856 arch/s390/mm/gmap.c table = gmap_table_walk(gmap, gaddr, 1); /* get segment pointer */ gmap 859 arch/s390/mm/gmap.c return pte_alloc_map_lock(gmap->mm, (pmd_t *) table, gaddr, ptl); gmap 873 arch/s390/mm/gmap.c static int gmap_pte_op_fixup(struct gmap *gmap, unsigned long gaddr, gmap 876 arch/s390/mm/gmap.c struct mm_struct *mm = gmap->mm; gmap 880 arch/s390/mm/gmap.c BUG_ON(gmap_is_shadow(gmap)); gmap 888 arch/s390/mm/gmap.c return __gmap_link(gmap, gaddr, vmaddr); gmap 909 arch/s390/mm/gmap.c static inline pmd_t *gmap_pmd_op_walk(struct gmap *gmap, unsigned long gaddr) gmap 913 arch/s390/mm/gmap.c BUG_ON(gmap_is_shadow(gmap)); gmap 914 arch/s390/mm/gmap.c pmdp = (pmd_t *) gmap_table_walk(gmap, gaddr, 1); gmap 919 arch/s390/mm/gmap.c if (!gmap->mm->context.allow_gmap_hpage_1m) gmap 922 arch/s390/mm/gmap.c spin_lock(&gmap->guest_table_lock); gmap 924 arch/s390/mm/gmap.c spin_unlock(&gmap->guest_table_lock); gmap 930 arch/s390/mm/gmap.c spin_unlock(&gmap->guest_table_lock); gmap 939 arch/s390/mm/gmap.c static inline void gmap_pmd_op_end(struct gmap *gmap, pmd_t *pmdp) gmap 942 arch/s390/mm/gmap.c spin_unlock(&gmap->guest_table_lock); gmap 959 arch/s390/mm/gmap.c static int gmap_protect_pmd(struct gmap *gmap, unsigned long gaddr, gmap 972 arch/s390/mm/gmap.c gmap_pmdp_xchg(gmap, pmdp, new, gaddr); gmap 978 arch/s390/mm/gmap.c gmap_pmdp_xchg(gmap, pmdp, new, gaddr); gmap 1004 arch/s390/mm/gmap.c static int gmap_protect_pte(struct gmap *gmap, unsigned long gaddr, gmap 1015 arch/s390/mm/gmap.c ptep = pte_alloc_map_lock(gmap->mm, pmdp, gaddr, &ptl); gmap 1022 arch/s390/mm/gmap.c rc = ptep_force_prot(gmap->mm, gaddr, ptep, prot, pbits); gmap 1040 arch/s390/mm/gmap.c static int gmap_protect_range(struct gmap *gmap, unsigned long gaddr, gmap 1047 arch/s390/mm/gmap.c BUG_ON(gmap_is_shadow(gmap)); gmap 1050 arch/s390/mm/gmap.c pmdp = gmap_pmd_op_walk(gmap, gaddr); gmap 1053 arch/s390/mm/gmap.c rc = gmap_protect_pte(gmap, gaddr, pmdp, prot, gmap 1060 arch/s390/mm/gmap.c rc = gmap_protect_pmd(gmap, gaddr, pmdp, prot, gmap 1068 arch/s390/mm/gmap.c gmap_pmd_op_end(gmap, pmdp); gmap 1075 arch/s390/mm/gmap.c vmaddr = __gmap_translate(gmap, gaddr); gmap 1078 arch/s390/mm/gmap.c rc = gmap_pte_op_fixup(gmap, gaddr, vmaddr, prot); gmap 1100 arch/s390/mm/gmap.c int gmap_mprotect_notify(struct gmap *gmap, unsigned long gaddr, gmap 1105 arch/s390/mm/gmap.c if ((gaddr & ~PAGE_MASK) || (len & ~PAGE_MASK) || gmap_is_shadow(gmap)) gmap 1109 arch/s390/mm/gmap.c down_read(&gmap->mm->mmap_sem); gmap 1110 arch/s390/mm/gmap.c rc = gmap_protect_range(gmap, gaddr, len, prot, GMAP_NOTIFY_MPROT); gmap 1111 arch/s390/mm/gmap.c up_read(&gmap->mm->mmap_sem); gmap 1129 arch/s390/mm/gmap.c int gmap_read_table(struct gmap *gmap, unsigned long gaddr, unsigned long *val) gmap 1136 arch/s390/mm/gmap.c if (gmap_is_shadow(gmap)) gmap 1141 arch/s390/mm/gmap.c ptep = gmap_pte_op_walk(gmap, gaddr, &ptl); gmap 1156 arch/s390/mm/gmap.c vmaddr = __gmap_translate(gmap, gaddr); gmap 1161 arch/s390/mm/gmap.c rc = gmap_pte_op_fixup(gmap, gaddr, vmaddr, PROT_READ); gmap 1177 arch/s390/mm/gmap.c static inline void gmap_insert_rmap(struct gmap *sg, unsigned long vmaddr, gmap 1205 arch/s390/mm/gmap.c static int gmap_protect_rmap(struct gmap *sg, unsigned long raddr, gmap 1208 arch/s390/mm/gmap.c struct gmap *parent; gmap 1286 arch/s390/mm/gmap.c static void gmap_unshadow_page(struct gmap *sg, unsigned long raddr) gmap 1306 arch/s390/mm/gmap.c static void __gmap_unshadow_pgt(struct gmap *sg, unsigned long raddr, gmap 1323 arch/s390/mm/gmap.c static void gmap_unshadow_pgt(struct gmap *sg, unsigned long raddr) gmap 1352 arch/s390/mm/gmap.c static void __gmap_unshadow_sgt(struct gmap *sg, unsigned long raddr, gmap 1380 arch/s390/mm/gmap.c static void gmap_unshadow_sgt(struct gmap *sg, unsigned long raddr) gmap 1409 arch/s390/mm/gmap.c static void __gmap_unshadow_r3t(struct gmap *sg, unsigned long raddr, gmap 1437 arch/s390/mm/gmap.c static void gmap_unshadow_r3t(struct gmap *sg, unsigned long raddr) gmap 1466 arch/s390/mm/gmap.c static void __gmap_unshadow_r2t(struct gmap *sg, unsigned long raddr, gmap 1494 arch/s390/mm/gmap.c static void gmap_unshadow_r2t(struct gmap *sg, unsigned long raddr) gmap 1523 arch/s390/mm/gmap.c static void __gmap_unshadow_r1t(struct gmap *sg, unsigned long raddr, gmap 1553 arch/s390/mm/gmap.c static void gmap_unshadow(struct gmap *sg) gmap 1590 arch/s390/mm/gmap.c static struct gmap *gmap_find_shadow(struct gmap *parent, unsigned long asce, gmap 1593 arch/s390/mm/gmap.c struct gmap *sg; gmap 1619 arch/s390/mm/gmap.c int gmap_shadow_valid(struct gmap *sg, unsigned long asce, int edat_level) gmap 1642 arch/s390/mm/gmap.c struct gmap *gmap_shadow(struct gmap *parent, unsigned long asce, gmap 1645 arch/s390/mm/gmap.c struct gmap *sg, *new; gmap 1734 arch/s390/mm/gmap.c int gmap_shadow_r2t(struct gmap *sg, unsigned long saddr, unsigned long r2t, gmap 1818 arch/s390/mm/gmap.c int gmap_shadow_r3t(struct gmap *sg, unsigned long saddr, unsigned long r3t, gmap 1902 arch/s390/mm/gmap.c int gmap_shadow_sgt(struct gmap *sg, unsigned long saddr, unsigned long sgt, gmap 1986 arch/s390/mm/gmap.c int gmap_shadow_pgt_lookup(struct gmap *sg, unsigned long saddr, gmap 2026 arch/s390/mm/gmap.c int gmap_shadow_pgt(struct gmap *sg, unsigned long saddr, unsigned long pgt, gmap 2105 arch/s390/mm/gmap.c int gmap_shadow_page(struct gmap *sg, unsigned long saddr, pte_t pte) gmap 2107 arch/s390/mm/gmap.c struct gmap *parent; gmap 2173 arch/s390/mm/gmap.c static void gmap_shadow_notify(struct gmap *sg, unsigned long vmaddr, gmap 2240 arch/s390/mm/gmap.c struct gmap *gmap, *sg, *next; gmap 2245 arch/s390/mm/gmap.c list_for_each_entry_rcu(gmap, &mm->context.gmap_list, list) { gmap 2246 arch/s390/mm/gmap.c spin_lock(&gmap->guest_table_lock); gmap 2247 arch/s390/mm/gmap.c table = radix_tree_lookup(&gmap->host_to_guest, gmap 2251 arch/s390/mm/gmap.c spin_unlock(&gmap->guest_table_lock); gmap 2255 arch/s390/mm/gmap.c if (!list_empty(&gmap->children) && (bits & PGSTE_VSIE_BIT)) { gmap 2256 arch/s390/mm/gmap.c spin_lock(&gmap->shadow_lock); gmap 2258 arch/s390/mm/gmap.c &gmap->children, list) gmap 2260 arch/s390/mm/gmap.c spin_unlock(&gmap->shadow_lock); gmap 2263 arch/s390/mm/gmap.c gmap_call_notifier(gmap, gaddr, gaddr + PAGE_SIZE - 1); gmap 2269 arch/s390/mm/gmap.c static void pmdp_notify_gmap(struct gmap *gmap, pmd_t *pmdp, gmap 2273 arch/s390/mm/gmap.c gmap_call_notifier(gmap, gaddr, gaddr + HPAGE_SIZE - 1); gmap 2286 arch/s390/mm/gmap.c static void gmap_pmdp_xchg(struct gmap *gmap, pmd_t *pmdp, pmd_t new, gmap 2290 arch/s390/mm/gmap.c pmdp_notify_gmap(gmap, pmdp, gaddr); gmap 2293 arch/s390/mm/gmap.c __pmdp_idte(gaddr, (pmd_t *)pmdp, IDTE_GUEST_ASCE, gmap->asce, gmap 2306 arch/s390/mm/gmap.c struct gmap *gmap; gmap 2310 arch/s390/mm/gmap.c list_for_each_entry_rcu(gmap, &mm->context.gmap_list, list) { gmap 2311 arch/s390/mm/gmap.c spin_lock(&gmap->guest_table_lock); gmap 2312 arch/s390/mm/gmap.c pmdp = (pmd_t *)radix_tree_delete(&gmap->host_to_guest, gmap 2316 arch/s390/mm/gmap.c pmdp_notify_gmap(gmap, pmdp, gaddr); gmap 2323 arch/s390/mm/gmap.c spin_unlock(&gmap->guest_table_lock); gmap 2359 arch/s390/mm/gmap.c struct gmap *gmap; gmap 2363 arch/s390/mm/gmap.c list_for_each_entry_rcu(gmap, &mm->context.gmap_list, list) { gmap 2364 arch/s390/mm/gmap.c spin_lock(&gmap->guest_table_lock); gmap 2365 arch/s390/mm/gmap.c entry = radix_tree_delete(&gmap->host_to_guest, gmap 2370 arch/s390/mm/gmap.c pmdp_notify_gmap(gmap, pmdp, gaddr); gmap 2375 arch/s390/mm/gmap.c gmap->asce, IDTE_LOCAL); gmap 2380 arch/s390/mm/gmap.c spin_unlock(&gmap->guest_table_lock); gmap 2394 arch/s390/mm/gmap.c struct gmap *gmap; gmap 2398 arch/s390/mm/gmap.c list_for_each_entry_rcu(gmap, &mm->context.gmap_list, list) { gmap 2399 arch/s390/mm/gmap.c spin_lock(&gmap->guest_table_lock); gmap 2400 arch/s390/mm/gmap.c entry = radix_tree_delete(&gmap->host_to_guest, gmap 2405 arch/s390/mm/gmap.c pmdp_notify_gmap(gmap, pmdp, gaddr); gmap 2410 arch/s390/mm/gmap.c gmap->asce, IDTE_GLOBAL); gmap 2417 arch/s390/mm/gmap.c spin_unlock(&gmap->guest_table_lock); gmap 2432 arch/s390/mm/gmap.c static bool gmap_test_and_clear_dirty_pmd(struct gmap *gmap, pmd_t *pmdp, gmap 2445 arch/s390/mm/gmap.c gmap_protect_pmd(gmap, gaddr, pmdp, PROT_READ, 0); gmap 2459 arch/s390/mm/gmap.c void gmap_sync_dirty_log_pmd(struct gmap *gmap, unsigned long bitmap[4], gmap 2467 arch/s390/mm/gmap.c pmdp = gmap_pmd_op_walk(gmap, gaddr); gmap 2472 arch/s390/mm/gmap.c if (gmap_test_and_clear_dirty_pmd(gmap, pmdp, gaddr)) gmap 2476 arch/s390/mm/gmap.c ptep = pte_alloc_map_lock(gmap->mm, pmdp, vmaddr, &ptl); gmap 2479 arch/s390/mm/gmap.c if (ptep_test_and_clear_uc(gmap->mm, vmaddr, ptep)) gmap 2484 arch/s390/mm/gmap.c gmap_pmd_op_end(gmap, pmdp); gmap 265 drivers/net/dsa/lantiq_gswip.c u8 gmap; gmap 540 drivers/net/dsa/lantiq_gswip.c tbl->gmap = (crtl & GSWIP_PCE_TBL_CTRL_GMAP_MASK) >> 7; gmap 585 drivers/net/dsa/lantiq_gswip.c crtl |= (tbl->gmap << 7) & GSWIP_PCE_TBL_CTRL_GMAP_MASK; gmap 807 drivers/video/fbdev/gbefb.c gbe->gmap[i] = (i << 24) | (i << 16) | (i << 8); gmap 60 include/video/gbe.h volatile uint32_t gmap[256]; /* gamma map */