From 3a2685c85e790901f5c41be74e16e8492798e6d2 Mon Sep 17 00:00:00 2001 From: Marcelo Tosatti Date: Fri, 11 Apr 2008 13:24:42 -0300 Subject: [PATCH] kvm: libkvm: Add libkvm interface to get/set the mpstate. Signed-off-by: Marcelo Tosatti Signed-off-by: Avi Kivity --- kvm/libkvm/libkvm.c | 22 ++++++++++++++++++++++ kvm/libkvm/libkvm.h | 16 ++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/kvm/libkvm/libkvm.c b/kvm/libkvm/libkvm.c index de913285d4..329f29fe64 100644 --- a/kvm/libkvm/libkvm.c +++ b/kvm/libkvm/libkvm.c @@ -776,6 +776,28 @@ int kvm_set_sregs(kvm_context_t kvm, int vcpu, struct kvm_sregs *sregs) return ioctl(kvm->vcpu_fd[vcpu], KVM_SET_SREGS, sregs); } +#ifdef KVM_CAP_MP_STATE +int kvm_get_mpstate(kvm_context_t kvm, int vcpu, struct kvm_mp_state *mp_state) +{ + int r; + + r = ioctl(kvm->fd, KVM_CHECK_EXTENSION, KVM_CAP_MP_STATE); + if (r > 0) + return ioctl(kvm->vcpu_fd[vcpu], KVM_GET_MP_STATE, mp_state); + return -ENOSYS; +} + +int kvm_set_mpstate(kvm_context_t kvm, int vcpu, struct kvm_mp_state *mp_state) +{ + int r; + + r = ioctl(kvm->fd, KVM_CHECK_EXTENSION, KVM_CAP_MP_STATE); + if (r > 0) + return ioctl(kvm->vcpu_fd[vcpu], KVM_SET_MP_STATE, mp_state); + return -ENOSYS; +} +#endif + static int handle_mmio(kvm_context_t kvm, struct kvm_run *kvm_run) { unsigned long addr = kvm_run->mmio.phys_addr; diff --git a/kvm/libkvm/libkvm.h b/kvm/libkvm/libkvm.h index 29584d98f0..5a522e30b4 100644 --- a/kvm/libkvm/libkvm.h +++ b/kvm/libkvm/libkvm.h @@ -300,6 +300,22 @@ int kvm_get_sregs(kvm_context_t kvm, int vcpu, struct kvm_sregs *regs); */ int kvm_set_sregs(kvm_context_t kvm, int vcpu, struct kvm_sregs *regs); +#ifdef KVM_CAP_MP_STATE +/*! + * * \brief Read VCPU MP state + * + */ +int kvm_get_mpstate(kvm_context_t kvm, int vcpu, + struct kvm_mp_state *mp_state); + +/*! + * * \brief Write VCPU MP state + * + */ +int kvm_set_mpstate(kvm_context_t kvm, int vcpu, + struct kvm_mp_state *mp_state); +#endif + /*! * \brief Simulate an external vectored interrupt * -- 2.11.4.GIT