diff -r 24b2d17c9b85 -r 40beaa8357a6 src/cpu/kvm/vm.hh --- a/src/cpu/kvm/vm.hh Thu May 07 11:39:14 2015 +0100 +++ b/src/cpu/kvm/vm.hh Thu May 07 11:39:20 2015 +0100 @@ -75,9 +75,6 @@ friend class KvmVM; public: - typedef std::vector CPUIDVector; - typedef std::vector MSRIndexVector; - virtual ~Kvm(); Kvm *create(); @@ -143,6 +140,16 @@ bool capXSave() const; /** @} */ +#if defined(__i386__) || defined(__x86_64__) + public: // x86-specific + /** + * @{ + * @name X86-specific APIs + */ + + typedef std::vector CPUIDVector; + typedef std::vector MSRIndexVector; + /** * Get the CPUID features supported by the hardware and Kvm. * @@ -181,6 +188,17 @@ */ const MSRIndexVector &getSupportedMSRs() const; + private: // x86-specific + /** Cached vector of supported CPUID entries. */ + mutable CPUIDVector supportedCPUIDCache; + + /** Cached vector of supported MSRs. */ + mutable MSRIndexVector supportedMSRCache; + + + /** @} */ +#endif + protected: /** * Check for the presence of an extension to the KVM API. @@ -239,12 +257,6 @@ /** Size of the MMAPed vCPU parameter area. */ int vcpuMMapSize; - /** Cached vector of supported CPUID entries. */ - mutable CPUIDVector supportedCPUIDCache; - - /** Cached vector of supported MSRs. */ - mutable MSRIndexVector supportedMSRCache; - /** Singleton instance */ static Kvm *instance; }; diff -r 24b2d17c9b85 -r 40beaa8357a6 src/cpu/kvm/vm.cc --- a/src/cpu/kvm/vm.cc Thu May 07 11:39:14 2015 +0100 +++ b/src/cpu/kvm/vm.cc Thu May 07 11:39:20 2015 +0100 @@ -191,10 +191,11 @@ #endif } + +#if defined(__i386__) || defined(__x86_64__) bool Kvm::getSupportedCPUID(struct kvm_cpuid2 &cpuid) const { -#if defined(__i386__) || defined(__x86_64__) if (ioctl(KVM_GET_SUPPORTED_CPUID, (void *)&cpuid) == -1) { if (errno == E2BIG) return false; @@ -202,9 +203,6 @@ panic("KVM: Failed to get supported CPUID (errno: %i)\n", errno); } else return true; -#else - panic("KVM: getSupportedCPUID is unsupported on this platform.\n"); -#endif } const Kvm::CPUIDVector & @@ -230,7 +228,6 @@ bool Kvm::getSupportedMSRs(struct kvm_msr_list &msrs) const { -#if defined(__i386__) || defined(__x86_64__) if (ioctl(KVM_GET_MSR_INDEX_LIST, (void *)&msrs) == -1) { if (errno == E2BIG) return false; @@ -238,9 +235,6 @@ panic("KVM: Failed to get supported CPUID (errno: %i)\n", errno); } else return true; -#else - panic("KVM: getSupportedCPUID is unsupported on this platform.\n"); -#endif } const Kvm::MSRIndexVector & @@ -262,6 +256,9 @@ return supportedMSRCache; } +#endif // x86-specific + + int Kvm::checkExtension(int extension) const {