aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/include
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/include')
-rw-r--r--arch/powerpc/include/asm/kvm_e500.h8
-rw-r--r--arch/powerpc/include/asm/kvm_host.h6
-rw-r--r--arch/powerpc/include/asm/kvm_para.h31
3 files changed, 29 insertions, 16 deletions
diff --git a/arch/powerpc/include/asm/kvm_e500.h b/arch/powerpc/include/asm/kvm_e500.h
index bc17441535f2..8cd50a514271 100644
--- a/arch/powerpc/include/asm/kvm_e500.h
+++ b/arch/powerpc/include/asm/kvm_e500.h
@@ -71,14 +71,6 @@ struct kvmppc_vcpu_e500 {
71 u32 pid[E500_PID_NUM]; 71 u32 pid[E500_PID_NUM];
72 u32 svr; 72 u32 svr;
73 73
74 u32 mas0;
75 u32 mas1;
76 u32 mas2;
77 u64 mas7_3;
78 u32 mas4;
79 u32 mas5;
80 u32 mas6;
81
82 /* vcpu id table */ 74 /* vcpu id table */
83 struct vcpu_id_table *idt; 75 struct vcpu_id_table *idt;
84 76
diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h
index bf8af5d5d5dc..bfd0c9912da5 100644
--- a/arch/powerpc/include/asm/kvm_host.h
+++ b/arch/powerpc/include/asm/kvm_host.h
@@ -318,10 +318,6 @@ struct kvm_vcpu_arch {
318 u32 vrsave; /* also USPRG0 */ 318 u32 vrsave; /* also USPRG0 */
319 u32 mmucr; 319 u32 mmucr;
320 ulong shadow_msr; 320 ulong shadow_msr;
321 ulong sprg4;
322 ulong sprg5;
323 ulong sprg6;
324 ulong sprg7;
325 ulong csrr0; 321 ulong csrr0;
326 ulong csrr1; 322 ulong csrr1;
327 ulong dsrr0; 323 ulong dsrr0;
@@ -329,7 +325,6 @@ struct kvm_vcpu_arch {
329 ulong mcsrr0; 325 ulong mcsrr0;
330 ulong mcsrr1; 326 ulong mcsrr1;
331 ulong mcsr; 327 ulong mcsr;
332 ulong esr;
333 u32 dec; 328 u32 dec;
334 u32 decar; 329 u32 decar;
335 u32 tbl; 330 u32 tbl;
@@ -338,7 +333,6 @@ struct kvm_vcpu_arch {
338 u32 tsr; 333 u32 tsr;
339 u32 ivor[64]; 334 u32 ivor[64];
340 ulong ivpr; 335 ulong ivpr;
341 u32 pir;
342 u32 pvr; 336 u32 pvr;
343 337
344 u32 shadow_pid; 338 u32 shadow_pid;
diff --git a/arch/powerpc/include/asm/kvm_para.h b/arch/powerpc/include/asm/kvm_para.h
index 50533f9adf40..ece70fb36513 100644
--- a/arch/powerpc/include/asm/kvm_para.h
+++ b/arch/powerpc/include/asm/kvm_para.h
@@ -33,11 +33,35 @@ struct kvm_vcpu_arch_shared {
33 __u64 sprg3; 33 __u64 sprg3;
34 __u64 srr0; 34 __u64 srr0;
35 __u64 srr1; 35 __u64 srr1;
36 __u64 dar; 36 __u64 dar; /* dear on BookE */
37 __u64 msr; 37 __u64 msr;
38 __u32 dsisr; 38 __u32 dsisr;
39 __u32 int_pending; /* Tells the guest if we have an interrupt */ 39 __u32 int_pending; /* Tells the guest if we have an interrupt */
40 __u32 sr[16]; 40 __u32 sr[16];
41 __u32 mas0;
42 __u32 mas1;
43 __u64 mas7_3;
44 __u64 mas2;
45 __u32 mas4;
46 __u32 mas6;
47 __u32 esr;
48 __u32 pir;
49
50 /*
51 * SPRG4-7 are user-readable, so we can only keep these consistent
52 * between the shared area and the real registers when there's an
53 * intervening exit to KVM. This also applies to SPRG3 on some
54 * chips.
55 *
56 * This suffices for access by guest userspace, since in PR-mode
57 * KVM, an exit must occur when changing the guest's MSR[PR].
58 * If the guest kernel writes to SPRG3-7 via the shared area, it
59 * must also use the shared area for reading while in kernel space.
60 */
61 __u64 sprg4;
62 __u64 sprg5;
63 __u64 sprg6;
64 __u64 sprg7;
41}; 65};
42 66
43#define KVM_SC_MAGIC_R0 0x4b564d21 /* "KVM!" */ 67#define KVM_SC_MAGIC_R0 0x4b564d21 /* "KVM!" */
@@ -47,7 +71,10 @@ struct kvm_vcpu_arch_shared {
47 71
48#define KVM_FEATURE_MAGIC_PAGE 1 72#define KVM_FEATURE_MAGIC_PAGE 1
49 73
50#define KVM_MAGIC_FEAT_SR (1 << 0) 74#define KVM_MAGIC_FEAT_SR (1 << 0)
75
76/* MASn, ESR, PIR, and high SPRGs */
77#define KVM_MAGIC_FEAT_MAS0_TO_SPRG7 (1 << 1)
51 78
52#ifdef __KERNEL__ 79#ifdef __KERNEL__
53 80