diff options
Diffstat (limited to 'arch/powerpc/include/asm/kvm_host.h')
-rw-r--r-- | arch/powerpc/include/asm/kvm_host.h | 38 |
1 files changed, 22 insertions, 16 deletions
diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h index 5e5bae7e152f..0c9ad869decd 100644 --- a/arch/powerpc/include/asm/kvm_host.h +++ b/arch/powerpc/include/asm/kvm_host.h | |||
@@ -66,7 +66,7 @@ struct kvm_vcpu_stat { | |||
66 | u32 dec_exits; | 66 | u32 dec_exits; |
67 | u32 ext_intr_exits; | 67 | u32 ext_intr_exits; |
68 | u32 halt_wakeup; | 68 | u32 halt_wakeup; |
69 | #ifdef CONFIG_PPC64 | 69 | #ifdef CONFIG_PPC_BOOK3S |
70 | u32 pf_storage; | 70 | u32 pf_storage; |
71 | u32 pf_instruc; | 71 | u32 pf_instruc; |
72 | u32 sp_storage; | 72 | u32 sp_storage; |
@@ -124,12 +124,12 @@ struct kvm_arch { | |||
124 | }; | 124 | }; |
125 | 125 | ||
126 | struct kvmppc_pte { | 126 | struct kvmppc_pte { |
127 | u64 eaddr; | 127 | ulong eaddr; |
128 | u64 vpage; | 128 | u64 vpage; |
129 | u64 raddr; | 129 | ulong raddr; |
130 | bool may_read; | 130 | bool may_read : 1; |
131 | bool may_write; | 131 | bool may_write : 1; |
132 | bool may_execute; | 132 | bool may_execute : 1; |
133 | }; | 133 | }; |
134 | 134 | ||
135 | struct kvmppc_mmu { | 135 | struct kvmppc_mmu { |
@@ -145,7 +145,7 @@ struct kvmppc_mmu { | |||
145 | int (*xlate)(struct kvm_vcpu *vcpu, gva_t eaddr, struct kvmppc_pte *pte, bool data); | 145 | int (*xlate)(struct kvm_vcpu *vcpu, gva_t eaddr, struct kvmppc_pte *pte, bool data); |
146 | void (*reset_msr)(struct kvm_vcpu *vcpu); | 146 | void (*reset_msr)(struct kvm_vcpu *vcpu); |
147 | void (*tlbie)(struct kvm_vcpu *vcpu, ulong addr, bool large); | 147 | void (*tlbie)(struct kvm_vcpu *vcpu, ulong addr, bool large); |
148 | int (*esid_to_vsid)(struct kvm_vcpu *vcpu, u64 esid, u64 *vsid); | 148 | int (*esid_to_vsid)(struct kvm_vcpu *vcpu, ulong esid, u64 *vsid); |
149 | u64 (*ea_to_vp)(struct kvm_vcpu *vcpu, gva_t eaddr, bool data); | 149 | u64 (*ea_to_vp)(struct kvm_vcpu *vcpu, gva_t eaddr, bool data); |
150 | bool (*is_dcbz32)(struct kvm_vcpu *vcpu); | 150 | bool (*is_dcbz32)(struct kvm_vcpu *vcpu); |
151 | }; | 151 | }; |
@@ -160,7 +160,7 @@ struct hpte_cache { | |||
160 | struct kvm_vcpu_arch { | 160 | struct kvm_vcpu_arch { |
161 | ulong host_stack; | 161 | ulong host_stack; |
162 | u32 host_pid; | 162 | u32 host_pid; |
163 | #ifdef CONFIG_PPC64 | 163 | #ifdef CONFIG_PPC_BOOK3S |
164 | ulong host_msr; | 164 | ulong host_msr; |
165 | ulong host_r2; | 165 | ulong host_r2; |
166 | void *host_retip; | 166 | void *host_retip; |
@@ -175,7 +175,7 @@ struct kvm_vcpu_arch { | |||
175 | ulong gpr[32]; | 175 | ulong gpr[32]; |
176 | 176 | ||
177 | u64 fpr[32]; | 177 | u64 fpr[32]; |
178 | u32 fpscr; | 178 | u64 fpscr; |
179 | 179 | ||
180 | #ifdef CONFIG_ALTIVEC | 180 | #ifdef CONFIG_ALTIVEC |
181 | vector128 vr[32]; | 181 | vector128 vr[32]; |
@@ -186,19 +186,23 @@ struct kvm_vcpu_arch { | |||
186 | u64 vsr[32]; | 186 | u64 vsr[32]; |
187 | #endif | 187 | #endif |
188 | 188 | ||
189 | #ifdef CONFIG_PPC_BOOK3S | ||
190 | /* For Gekko paired singles */ | ||
191 | u32 qpr[32]; | ||
192 | #endif | ||
193 | |||
194 | #ifdef CONFIG_BOOKE | ||
189 | ulong pc; | 195 | ulong pc; |
190 | ulong ctr; | 196 | ulong ctr; |
191 | ulong lr; | 197 | ulong lr; |
192 | 198 | ||
193 | #ifdef CONFIG_BOOKE | ||
194 | ulong xer; | 199 | ulong xer; |
195 | u32 cr; | 200 | u32 cr; |
196 | #endif | 201 | #endif |
197 | 202 | ||
198 | ulong msr; | 203 | ulong msr; |
199 | #ifdef CONFIG_PPC64 | 204 | #ifdef CONFIG_PPC_BOOK3S |
200 | ulong shadow_msr; | 205 | ulong shadow_msr; |
201 | ulong shadow_srr1; | ||
202 | ulong hflags; | 206 | ulong hflags; |
203 | ulong guest_owned_ext; | 207 | ulong guest_owned_ext; |
204 | #endif | 208 | #endif |
@@ -253,20 +257,22 @@ struct kvm_vcpu_arch { | |||
253 | struct dentry *debugfs_exit_timing; | 257 | struct dentry *debugfs_exit_timing; |
254 | #endif | 258 | #endif |
255 | 259 | ||
260 | #ifdef CONFIG_BOOKE | ||
256 | u32 last_inst; | 261 | u32 last_inst; |
257 | #ifdef CONFIG_PPC64 | ||
258 | ulong fault_dsisr; | ||
259 | #endif | ||
260 | ulong fault_dear; | 262 | ulong fault_dear; |
261 | ulong fault_esr; | 263 | ulong fault_esr; |
262 | ulong queued_dear; | 264 | ulong queued_dear; |
263 | ulong queued_esr; | 265 | ulong queued_esr; |
266 | #endif | ||
264 | gpa_t paddr_accessed; | 267 | gpa_t paddr_accessed; |
265 | 268 | ||
266 | u8 io_gpr; /* GPR used as IO source/target */ | 269 | u8 io_gpr; /* GPR used as IO source/target */ |
267 | u8 mmio_is_bigendian; | 270 | u8 mmio_is_bigendian; |
271 | u8 mmio_sign_extend; | ||
268 | u8 dcr_needed; | 272 | u8 dcr_needed; |
269 | u8 dcr_is_write; | 273 | u8 dcr_is_write; |
274 | u8 osi_needed; | ||
275 | u8 osi_enabled; | ||
270 | 276 | ||
271 | u32 cpr0_cfgaddr; /* holds the last set cpr0_cfgaddr */ | 277 | u32 cpr0_cfgaddr; /* holds the last set cpr0_cfgaddr */ |
272 | 278 | ||
@@ -275,7 +281,7 @@ struct kvm_vcpu_arch { | |||
275 | u64 dec_jiffies; | 281 | u64 dec_jiffies; |
276 | unsigned long pending_exceptions; | 282 | unsigned long pending_exceptions; |
277 | 283 | ||
278 | #ifdef CONFIG_PPC64 | 284 | #ifdef CONFIG_PPC_BOOK3S |
279 | struct hpte_cache hpte_cache[HPTEG_CACHE_NUM]; | 285 | struct hpte_cache hpte_cache[HPTEG_CACHE_NUM]; |
280 | int hpte_cache_offset; | 286 | int hpte_cache_offset; |
281 | #endif | 287 | #endif |