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 */