48
#define KVM_SREGS_E_IMPL_NONE 0
49
#define KVM_SREGS_E_IMPL_FSL 1
51
#define KVM_SREGS_E_FSL_PIDn (1 << 0) /* PID1/PID2 */
54
* Feature bits indicate which sections of the sregs struct are valid,
55
* both in KVM_GET_SREGS and KVM_SET_SREGS. On KVM_SET_SREGS, registers
56
* corresponding to unset feature bits will not be modified. This allows
57
* restoring a checkpoint made without that feature, while keeping the
58
* default values of the new registers.
60
* KVM_SREGS_E_BASE contains:
61
* CSRR0/1 (refers to SRR2/3 on 40x)
71
#define KVM_SREGS_E_BASE (1 << 0)
74
* KVM_SREGS_E_ARCH206 contains:
81
#define KVM_SREGS_E_ARCH206 (1 << 1)
84
* Contains EPCR, plus the upper half of 64-bit registers
85
* that are 32-bit on 32-bit implementations.
87
#define KVM_SREGS_E_64 (1 << 2)
89
#define KVM_SREGS_E_SPRG8 (1 << 3)
90
#define KVM_SREGS_E_MCIVPR (1 << 4)
93
* IVORs are used -- contains IVOR0-15, plus additional IVORs
94
* in combination with an appropriate feature bit.
96
#define KVM_SREGS_E_IVOR (1 << 5)
99
* Contains MAS0-4, MAS6-7, TLBnCFG, MMUCFG.
100
* Also TLBnPS if MMUCFG[MAVN] = 1.
102
#define KVM_SREGS_E_ARCH206_MMU (1 << 6)
104
/* DBSR, DBCR, IAC, DAC, DVC */
105
#define KVM_SREGS_E_DEBUG (1 << 7)
107
/* Enhanced debug -- DSRR0/1, SPRG9 */
108
#define KVM_SREGS_E_ED (1 << 8)
110
/* Embedded Floating Point (SPE) -- IVOR32-34 if KVM_SREGS_E_IVOR */
111
#define KVM_SREGS_E_SPE (1 << 9)
113
/* External Proxy (EXP) -- EPR */
114
#define KVM_SREGS_EXP (1 << 10)
116
/* External PID (E.PD) -- EPSC/EPLC */
117
#define KVM_SREGS_E_PD (1 << 11)
119
/* Processor Control (E.PC) -- IVOR36-37 if KVM_SREGS_E_IVOR */
120
#define KVM_SREGS_E_PC (1 << 12)
122
/* Page table (E.PT) -- EPTCFG */
123
#define KVM_SREGS_E_PT (1 << 13)
125
/* Embedded Performance Monitor (E.PM) -- IVOR35 if KVM_SREGS_E_IVOR */
126
#define KVM_SREGS_E_PM (1 << 14)
131
* Some registers may change even while a vcpu is not running.
132
* To avoid losing these changes, by default these registers are
133
* not updated by KVM_SET_SREGS. To force an update, set the bit
134
* in u.e.update_special corresponding to the register to be updated.
136
* The update_special field is zero on return from KVM_GET_SREGS.
138
* When restoring a checkpoint, the caller can set update_special
139
* to 0xffffffff to ensure that everything is restored, even new features
140
* that the caller doesn't know about.
142
#define KVM_SREGS_E_UPDATE_MCSR (1 << 0)
143
#define KVM_SREGS_E_UPDATE_TSR (1 << 1)
144
#define KVM_SREGS_E_UPDATE_DEC (1 << 2)
145
#define KVM_SREGS_E_UPDATE_DBSR (1 << 3)
148
* In KVM_SET_SREGS, reserved/pad fields must be left untouched from a
149
* previous KVM_GET_REGS.
151
* Unless otherwise indicated, setting any register with KVM_SET_SREGS
152
* directly sets its value. It does not trigger any special semantics such
153
* as write-one-to-clear. Calling KVM_SET_SREGS on an unmodified struct
154
* just received from KVM_GET_SREGS is always a no-op.
48
156
struct kvm_sregs {
175
struct { /* KVM_SREGS_E_IMPL_FSL */
176
__u32 features; /* KVM_SREGS_E_FSL_ */
181
/* KVM_SREGS_E_FSL_PIDn */
187
__u32 features; /* KVM_SREGS_E_ */
188
__u32 impl_id; /* KVM_SREGS_E_IMPL_ */
189
__u32 update_special; /* KVM_SREGS_E_UPDATE_ */
190
__u32 pir; /* read-only */
192
__u64 sprg9; /* E.ED */
194
__u64 dsrr0; /* E.ED */
197
__u32 dsrr1; /* E.ED */
203
__u64 mcsr; /* KVM_SREGS_E_UPDATE_MCSR */
205
__u32 tsr; /* KVM_SREGS_E_UPDATE_TSR */
208
__u32 dec; /* KVM_SREGS_E_UPDATE_DEC */
211
* Userspace can read TB directly, but the
212
* value reported here is consistent with "dec".
218
__u32 dbsr; /* KVM_SREGS_E_UPDATE_DBSR */
223
__u8 num_iac; /* read-only */
224
__u8 num_dac; /* read-only */
225
__u8 num_dvc; /* read-only */
229
__u32 vrsave; /* a.k.a. USPRG0 */
230
__u32 epcr; /* KVM_SREGS_E_64 */
239
__u32 ivor_low[16]; /* IVOR0-15 */
240
__u32 ivor_high[18]; /* IVOR32+, plus room to expand */
242
__u32 mmucfg; /* read-only */
243
__u32 eptcfg; /* E.PT, read-only */
244
__u32 tlbcfg[4];/* read-only */
245
__u32 tlbps[4]; /* read-only */
247
__u32 eplc, epsc; /* E.PD */