Lines Matching defs:smram

184 				    struct kvm_smram_state_32 *smram)
189 smram->cr0 = kvm_read_cr0(vcpu);
190 smram->cr3 = kvm_read_cr3(vcpu);
191 smram->eflags = kvm_get_rflags(vcpu);
192 smram->eip = kvm_rip_read(vcpu);
195 smram->gprs[i] = kvm_register_read_raw(vcpu, i);
197 smram->dr6 = (u32)vcpu->arch.dr6;
198 smram->dr7 = (u32)vcpu->arch.dr7;
200 enter_smm_save_seg_32(vcpu, &smram->tr, &smram->tr_sel, VCPU_SREG_TR);
201 enter_smm_save_seg_32(vcpu, &smram->ldtr, &smram->ldtr_sel, VCPU_SREG_LDTR);
204 smram->gdtr.base = dt.address;
205 smram->gdtr.limit = dt.size;
208 smram->idtr.base = dt.address;
209 smram->idtr.limit = dt.size;
211 enter_smm_save_seg_32(vcpu, &smram->es, &smram->es_sel, VCPU_SREG_ES);
212 enter_smm_save_seg_32(vcpu, &smram->cs, &smram->cs_sel, VCPU_SREG_CS);
213 enter_smm_save_seg_32(vcpu, &smram->ss, &smram->ss_sel, VCPU_SREG_SS);
215 enter_smm_save_seg_32(vcpu, &smram->ds, &smram->ds_sel, VCPU_SREG_DS);
216 enter_smm_save_seg_32(vcpu, &smram->fs, &smram->fs_sel, VCPU_SREG_FS);
217 enter_smm_save_seg_32(vcpu, &smram->gs, &smram->gs_sel, VCPU_SREG_GS);
219 smram->cr4 = kvm_read_cr4(vcpu);
220 smram->smm_revision = 0x00020000;
221 smram->smbase = vcpu->arch.smbase;
223 smram->int_shadow = static_call(kvm_x86_get_interrupt_shadow)(vcpu);
228 struct kvm_smram_state_64 *smram)
234 smram->gprs[15 - i] = kvm_register_read_raw(vcpu, i);
236 smram->rip = kvm_rip_read(vcpu);
237 smram->rflags = kvm_get_rflags(vcpu);
239 smram->dr6 = vcpu->arch.dr6;
240 smram->dr7 = vcpu->arch.dr7;
242 smram->cr0 = kvm_read_cr0(vcpu);
243 smram->cr3 = kvm_read_cr3(vcpu);
244 smram->cr4 = kvm_read_cr4(vcpu);
246 smram->smbase = vcpu->arch.smbase;
247 smram->smm_revison = 0x00020064;
249 smram->efer = vcpu->arch.efer;
251 enter_smm_save_seg_64(vcpu, &smram->tr, VCPU_SREG_TR);
254 smram->idtr.limit = dt.size;
255 smram->idtr.base = dt.address;
257 enter_smm_save_seg_64(vcpu, &smram->ldtr, VCPU_SREG_LDTR);
260 smram->gdtr.limit = dt.size;
261 smram->gdtr.base = dt.address;
263 enter_smm_save_seg_64(vcpu, &smram->es, VCPU_SREG_ES);
264 enter_smm_save_seg_64(vcpu, &smram->cs, VCPU_SREG_CS);
265 enter_smm_save_seg_64(vcpu, &smram->ss, VCPU_SREG_SS);
266 enter_smm_save_seg_64(vcpu, &smram->ds, VCPU_SREG_DS);
267 enter_smm_save_seg_64(vcpu, &smram->fs, VCPU_SREG_FS);
268 enter_smm_save_seg_64(vcpu, &smram->gs, VCPU_SREG_GS);
270 smram->int_shadow = static_call(kvm_x86_get_interrupt_shadow)(vcpu);
279 union kvm_smram smram;
283 memset(smram.bytes, 0, sizeof(smram.bytes));
287 enter_smm_save_state_64(vcpu, &smram.smram64);
290 enter_smm_save_state_32(vcpu, &smram.smram32);
300 if (static_call(kvm_x86_enter_smm)(vcpu, &smram))
305 if (kvm_vcpu_write_guest(vcpu, vcpu->arch.smbase + 0xfe00, &smram, sizeof(smram)))
568 union kvm_smram smram;
574 ret = kvm_vcpu_read_guest(vcpu, smbase + 0xfe00, smram.bytes, sizeof(smram));
631 if (static_call(kvm_x86_leave_smm)(vcpu, &smram))
636 return rsm_load_state_64(ctxt, &smram.smram64);
639 return rsm_load_state_32(ctxt, &smram.smram32);