23
23
/**
24
24
* struct gmap_struct - guest address space
25
25
* @list: list head for the mm->context gmap list
26
- * @crst_list: list of all crst tables used in the guest address space
27
26
* @mm: pointer to the parent mm_struct
28
27
* @guest_to_host: radix tree with guest to host address translation
29
28
* @host_to_guest: radix tree with pointer to segment table entries
35
34
* @guest_handle: protected virtual machine handle for the ultravisor
36
35
* @host_to_rmap: radix tree with gmap_rmap lists
37
36
* @children: list of shadow gmap structures
38
- * @pt_list: list of all page tables used in the shadow guest address space
39
37
* @shadow_lock: spinlock to protect the shadow gmap list
40
38
* @parent: pointer to the parent gmap for shadow guest address spaces
41
39
* @orig_asce: ASCE for which the shadow page table has been created
45
43
*/
46
44
struct gmap {
47
45
struct list_head list ;
48
- struct list_head crst_list ;
49
46
struct mm_struct * mm ;
50
47
struct radix_tree_root guest_to_host ;
51
48
struct radix_tree_root host_to_guest ;
@@ -61,7 +58,6 @@ struct gmap {
61
58
/* Additional data for shadow guest address spaces */
62
59
struct radix_tree_root host_to_rmap ;
63
60
struct list_head children ;
64
- struct list_head pt_list ;
65
61
spinlock_t shadow_lock ;
66
62
struct gmap * parent ;
67
63
unsigned long orig_asce ;
@@ -106,23 +102,21 @@ struct gmap *gmap_create(struct mm_struct *mm, unsigned long limit);
106
102
void gmap_remove (struct gmap * gmap );
107
103
struct gmap * gmap_get (struct gmap * gmap );
108
104
void gmap_put (struct gmap * gmap );
105
+ void gmap_free (struct gmap * gmap );
106
+ struct gmap * gmap_alloc (unsigned long limit );
109
107
110
108
int gmap_map_segment (struct gmap * gmap , unsigned long from ,
111
109
unsigned long to , unsigned long len );
112
110
int gmap_unmap_segment (struct gmap * gmap , unsigned long to , unsigned long len );
113
111
unsigned long __gmap_translate (struct gmap * , unsigned long gaddr );
114
- unsigned long gmap_translate (struct gmap * , unsigned long gaddr );
115
112
int __gmap_link (struct gmap * gmap , unsigned long gaddr , unsigned long vmaddr );
116
- int gmap_fault (struct gmap * , unsigned long gaddr , unsigned int fault_flags );
117
113
void gmap_discard (struct gmap * , unsigned long from , unsigned long to );
118
114
void __gmap_zap (struct gmap * , unsigned long gaddr );
119
115
void gmap_unlink (struct mm_struct * , unsigned long * table , unsigned long vmaddr );
120
116
121
117
int gmap_read_table (struct gmap * gmap , unsigned long gaddr , unsigned long * val );
122
118
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 );
126
120
int gmap_shadow_r2t (struct gmap * sg , unsigned long saddr , unsigned long r2t ,
127
121
int fake );
128
122
int 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,
131
125
int fake );
132
126
int gmap_shadow_pgt (struct gmap * sg , unsigned long saddr , unsigned long pgt ,
133
127
int fake );
134
- int gmap_shadow_pgt_lookup (struct gmap * sg , unsigned long saddr ,
135
- unsigned long * pgt , int * dat_protection , int * fake );
136
128
int gmap_shadow_page (struct gmap * sg , unsigned long saddr , pte_t pte );
137
129
138
130
void gmap_register_pte_notifier (struct gmap_notifier * );
139
131
void gmap_unregister_pte_notifier (struct gmap_notifier * );
140
132
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 );
143
134
144
135
void gmap_sync_dirty_log_pmd (struct gmap * gmap , unsigned long dirty_bitmap [4 ],
145
136
unsigned long gaddr , unsigned long vmaddr );
146
137
int s390_disable_cow_sharing (void );
147
- void s390_unlist_old_asce (struct gmap * gmap );
148
138
int s390_replace_asce (struct gmap * gmap );
149
139
void s390_uv_destroy_pfns (unsigned long count , unsigned long * pfns );
150
140
int __s390_uv_destroy_range (struct mm_struct * mm , unsigned long start ,
151
141
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 );
152
144
153
145
/**
154
146
* s390_uv_destroy_range - Destroy a range of pages in the given mm.
0 commit comments