kvm_svm.h 989 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #ifndef __KVM_SVM_H
  2. #define __KVM_SVM_H
  3. #include <linux/types.h>
  4. #include <linux/list.h>
  5. #include <asm/msr.h>
  6. #include "svm.h"
  7. #include "kvm.h"
  8. static const u32 host_save_msrs[] = {
  9. #ifdef CONFIG_X86_64
  10. MSR_STAR, MSR_LSTAR, MSR_CSTAR, MSR_SYSCALL_MASK, MSR_KERNEL_GS_BASE,
  11. MSR_FS_BASE, MSR_GS_BASE,
  12. #endif
  13. MSR_IA32_SYSENTER_CS, MSR_IA32_SYSENTER_ESP, MSR_IA32_SYSENTER_EIP,
  14. MSR_IA32_DEBUGCTLMSR, /*MSR_IA32_LASTBRANCHFROMIP,
  15. MSR_IA32_LASTBRANCHTOIP, MSR_IA32_LASTINTFROMIP,MSR_IA32_LASTINTTOIP,*/
  16. };
  17. #define NR_HOST_SAVE_MSRS (sizeof(host_save_msrs) / sizeof(*host_save_msrs))
  18. #define NUM_DB_REGS 4
  19. struct vcpu_svm {
  20. struct vmcb *vmcb;
  21. unsigned long vmcb_pa;
  22. struct svm_cpu_data *svm_data;
  23. uint64_t asid_generation;
  24. unsigned long cr0;
  25. unsigned long cr4;
  26. unsigned long db_regs[NUM_DB_REGS];
  27. u64 next_rip;
  28. u64 host_msrs[NR_HOST_SAVE_MSRS];
  29. unsigned long host_cr2;
  30. unsigned long host_db_regs[NUM_DB_REGS];
  31. unsigned long host_dr6;
  32. unsigned long host_dr7;
  33. };
  34. #endif