.. | .. |
---|
9 | 9 | #ifndef _ASM_S390_GMAP_H |
---|
10 | 10 | #define _ASM_S390_GMAP_H |
---|
11 | 11 | |
---|
| 12 | +#include <linux/radix-tree.h> |
---|
| 13 | +#include <linux/refcount.h> |
---|
| 14 | + |
---|
12 | 15 | /* Generic bits for GMAP notification on DAT table entry changes. */ |
---|
13 | 16 | #define GMAP_NOTIFY_SHADOW 0x2 |
---|
14 | 17 | #define GMAP_NOTIFY_MPROT 0x1 |
---|
.. | .. |
---|
29 | 32 | * @table: pointer to the page directory |
---|
30 | 33 | * @asce: address space control element for gmap page table |
---|
31 | 34 | * @pfault_enabled: defines if pfaults are applicable for the guest |
---|
| 35 | + * @guest_handle: protected virtual machine handle for the ultravisor |
---|
32 | 36 | * @host_to_rmap: radix tree with gmap_rmap lists |
---|
33 | 37 | * @children: list of shadow gmap structures |
---|
34 | 38 | * @pt_list: list of all page tables used in the shadow guest address space |
---|
.. | .. |
---|
46 | 50 | struct radix_tree_root guest_to_host; |
---|
47 | 51 | struct radix_tree_root host_to_guest; |
---|
48 | 52 | spinlock_t guest_table_lock; |
---|
49 | | - atomic_t ref_count; |
---|
| 53 | + refcount_t ref_count; |
---|
50 | 54 | unsigned long *table; |
---|
51 | 55 | unsigned long asce; |
---|
52 | 56 | unsigned long asce_end; |
---|
53 | 57 | void *private; |
---|
54 | 58 | bool pfault_enabled; |
---|
| 59 | + /* only set for protected virtual machines */ |
---|
| 60 | + unsigned long guest_handle; |
---|
55 | 61 | /* Additional data for shadow guest address spaces */ |
---|
56 | 62 | struct radix_tree_root host_to_rmap; |
---|
57 | 63 | struct list_head children; |
---|
.. | .. |
---|
134 | 140 | |
---|
135 | 141 | void gmap_register_pte_notifier(struct gmap_notifier *); |
---|
136 | 142 | void gmap_unregister_pte_notifier(struct gmap_notifier *); |
---|
137 | | -void gmap_pte_notify(struct mm_struct *, unsigned long addr, pte_t *, |
---|
138 | | - unsigned long bits); |
---|
139 | 143 | |
---|
140 | 144 | int gmap_mprotect_notify(struct gmap *, unsigned long start, |
---|
141 | 145 | unsigned long len, int prot); |
---|
142 | 146 | |
---|
143 | 147 | void gmap_sync_dirty_log_pmd(struct gmap *gmap, unsigned long dirty_bitmap[4], |
---|
144 | 148 | unsigned long gaddr, unsigned long vmaddr); |
---|
| 149 | +int gmap_mark_unmergeable(void); |
---|
| 150 | +void s390_reset_acc(struct mm_struct *mm); |
---|
| 151 | +void s390_unlist_old_asce(struct gmap *gmap); |
---|
| 152 | +int s390_replace_asce(struct gmap *gmap); |
---|
145 | 153 | #endif /* _ASM_S390_GMAP_H */ |
---|