2323/**
2424 * struct gmap_struct - guest address space
2525 * @list: list head for the mm->context gmap list
26- * @crst_list: list of all crst tables used in the guest address space
2726 * @mm: pointer to the parent mm_struct
2827 * @guest_to_host: radix tree with guest to host address translation
2928 * @host_to_guest: radix tree with pointer to segment table entries
3534 * @guest_handle: protected virtual machine handle for the ultravisor
3635 * @host_to_rmap: radix tree with gmap_rmap lists
3736 * @children: list of shadow gmap structures
38- * @pt_list: list of all page tables used in the shadow guest address space
3937 * @shadow_lock: spinlock to protect the shadow gmap list
4038 * @parent: pointer to the parent gmap for shadow guest address spaces
4139 * @orig_asce: ASCE for which the shadow page table has been created
4543 */
4644struct gmap {
4745 struct list_head list ;
48- struct list_head crst_list ;
4946 struct mm_struct * mm ;
5047 struct radix_tree_root guest_to_host ;
5148 struct radix_tree_root host_to_guest ;
@@ -61,7 +58,6 @@ struct gmap {
6158 /* Additional data for shadow guest address spaces */
6259 struct radix_tree_root host_to_rmap ;
6360 struct list_head children ;
64- struct list_head pt_list ;
6561 spinlock_t shadow_lock ;
6662 struct gmap * parent ;
6763 unsigned long orig_asce ;
@@ -106,23 +102,21 @@ struct gmap *gmap_create(struct mm_struct *mm, unsigned long limit);
106102void gmap_remove (struct gmap * gmap );
107103struct gmap * gmap_get (struct gmap * gmap );
108104void gmap_put (struct gmap * gmap );
105+ void gmap_free (struct gmap * gmap );
106+ struct gmap * gmap_alloc (unsigned long limit );
109107
110108int gmap_map_segment (struct gmap * gmap , unsigned long from ,
111109 unsigned long to , unsigned long len );
112110int gmap_unmap_segment (struct gmap * gmap , unsigned long to , unsigned long len );
113111unsigned long __gmap_translate (struct gmap * , unsigned long gaddr );
114- unsigned long gmap_translate (struct gmap * , unsigned long gaddr );
115112int __gmap_link (struct gmap * gmap , unsigned long gaddr , unsigned long vmaddr );
116- int gmap_fault (struct gmap * , unsigned long gaddr , unsigned int fault_flags );
117113void gmap_discard (struct gmap * , unsigned long from , unsigned long to );
118114void __gmap_zap (struct gmap * , unsigned long gaddr );
119115void gmap_unlink (struct mm_struct * , unsigned long * table , unsigned long vmaddr );
120116
121117int gmap_read_table (struct gmap * gmap , unsigned long gaddr , unsigned long * val );
122118
123- struct gmap * gmap_shadow (struct gmap * parent , unsigned long asce ,
124- int edat_level );
125- int gmap_shadow_valid (struct gmap * sg , unsigned long asce , int edat_level );
119+ void gmap_unshadow (struct gmap * sg );
126120int gmap_shadow_r2t (struct gmap * sg , unsigned long saddr , unsigned long r2t ,
127121 int fake );
128122int gmap_shadow_r3t (struct gmap * sg , unsigned long saddr , unsigned long r3t ,
@@ -131,24 +125,22 @@ int gmap_shadow_sgt(struct gmap *sg, unsigned long saddr, unsigned long sgt,
131125 int fake );
132126int gmap_shadow_pgt (struct gmap * sg , unsigned long saddr , unsigned long pgt ,
133127 int fake );
134- int gmap_shadow_pgt_lookup (struct gmap * sg , unsigned long saddr ,
135- unsigned long * pgt , int * dat_protection , int * fake );
136128int gmap_shadow_page (struct gmap * sg , unsigned long saddr , pte_t pte );
137129
138130void gmap_register_pte_notifier (struct gmap_notifier * );
139131void gmap_unregister_pte_notifier (struct gmap_notifier * );
140132
141- int gmap_mprotect_notify (struct gmap * , unsigned long start ,
142- unsigned long len , int prot );
133+ int gmap_protect_one (struct gmap * gmap , unsigned long gaddr , int prot , unsigned long bits );
143134
144135void gmap_sync_dirty_log_pmd (struct gmap * gmap , unsigned long dirty_bitmap [4 ],
145136 unsigned long gaddr , unsigned long vmaddr );
146137int s390_disable_cow_sharing (void );
147- void s390_unlist_old_asce (struct gmap * gmap );
148138int s390_replace_asce (struct gmap * gmap );
149139void s390_uv_destroy_pfns (unsigned long count , unsigned long * pfns );
150140int __s390_uv_destroy_range (struct mm_struct * mm , unsigned long start ,
151141 unsigned long end , bool interruptible );
142+ int kvm_s390_wiggle_split_folio (struct mm_struct * mm , struct folio * folio , bool split );
143+ unsigned long * gmap_table_walk (struct gmap * gmap , unsigned long gaddr , int level );
152144
153145/**
154146 * s390_uv_destroy_range - Destroy a range of pages in the given mm.
0 commit comments