From: Glauber Costa <glommer@redhat.com>
To: kvm@vger.kernel.org
Cc: avi@redhat.com
Subject: [PATCH v2 3/3] use upstream kvm_vcpu_ioctl
Date: Thu, 15 Oct 2009 13:50:37 -0300 [thread overview]
Message-ID: <1255625437-32395-4-git-send-email-glommer@redhat.com> (raw)
In-Reply-To: <1255625437-32395-3-git-send-email-glommer@redhat.com>
[v2: we already return -errno, so fix testers ]
Signed-off-by: Glauber Costa <glommer@redhat.com>
---
kvm-all.c | 3 --
qemu-kvm-x86.c | 57 +++++++++++--------------------------------------------
qemu-kvm.c | 31 ++++++++++++-----------------
qemu-kvm.h | 1 +
4 files changed, 26 insertions(+), 66 deletions(-)
diff --git a/kvm-all.c b/kvm-all.c
index 1356aa8..5ea999e 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -861,7 +861,6 @@ int kvm_vm_ioctl(KVMState *s, int type, ...)
return ret;
}
-#ifdef KVM_UPSTREAM
int kvm_vcpu_ioctl(CPUState *env, int type, ...)
{
int ret;
@@ -879,8 +878,6 @@ int kvm_vcpu_ioctl(CPUState *env, int type, ...)
return ret;
}
-#endif
-
int kvm_has_sync_mmu(void)
{
#ifdef KVM_CAP_SYNC_MMU
diff --git a/qemu-kvm-x86.c b/qemu-kvm-x86.c
index 8c4140d..c8e37ed 100644
--- a/qemu-kvm-x86.c
+++ b/qemu-kvm-x86.c
@@ -174,18 +174,11 @@ static int kvm_handle_tpr_access(CPUState *env)
int kvm_enable_vapic(CPUState *env, uint64_t vapic)
{
- int r;
struct kvm_vapic_addr va = {
.vapic_addr = vapic,
};
- r = ioctl(env->kvm_fd, KVM_SET_VAPIC_ADDR, &va);
- if (r == -1) {
- r = -errno;
- perror("kvm_enable_vapic");
- return r;
- }
- return 0;
+ return kvm_vcpu_ioctl(env, KVM_SET_VAPIC_ADDR, &va);
}
#endif
@@ -283,28 +276,16 @@ int kvm_destroy_memory_alias(kvm_context_t kvm, uint64_t phys_start)
int kvm_get_lapic(CPUState *env, struct kvm_lapic_state *s)
{
- int r;
if (!kvm_irqchip_in_kernel())
return 0;
- r = ioctl(env->kvm_fd, KVM_GET_LAPIC, s);
- if (r == -1) {
- r = -errno;
- perror("kvm_get_lapic");
- }
- return r;
+ return kvm_vcpu_ioctl(env, KVM_GET_LAPIC, s);
}
int kvm_set_lapic(CPUState *env, struct kvm_lapic_state *s)
{
- int r;
if (!kvm_irqchip_in_kernel())
return 0;
- r = ioctl(env->kvm_fd, KVM_SET_LAPIC, s);
- if (r == -1) {
- r = -errno;
- perror("kvm_set_lapic");
- }
- return r;
+ return kvm_vcpu_ioctl(env, KVM_SET_LAPIC, s);
}
#endif
@@ -420,29 +401,25 @@ struct kvm_msr_list *kvm_get_msr_list(kvm_context_t kvm)
int kvm_get_msrs(CPUState *env, struct kvm_msr_entry *msrs, int n)
{
struct kvm_msrs *kmsrs = qemu_malloc(sizeof *kmsrs + n * sizeof *msrs);
- int r, e;
+ int r;
kmsrs->nmsrs = n;
memcpy(kmsrs->entries, msrs, n * sizeof *msrs);
- r = ioctl(env->kvm_fd, KVM_GET_MSRS, kmsrs);
- e = errno;
+ r = kvm_vcpu_ioctl(env, KVM_GET_MSRS, kmsrs);
memcpy(msrs, kmsrs->entries, n * sizeof *msrs);
free(kmsrs);
- errno = e;
return r;
}
int kvm_set_msrs(CPUState *env, struct kvm_msr_entry *msrs, int n)
{
struct kvm_msrs *kmsrs = qemu_malloc(sizeof *kmsrs + n * sizeof *msrs);
- int r, e;
+ int r;
kmsrs->nmsrs = n;
memcpy(kmsrs->entries, msrs, n * sizeof *msrs);
- r = ioctl(env->kvm_fd, KVM_SET_MSRS, kmsrs);
- e = errno;
+ r = kvm_vcpu_ioctl(env, KVM_SET_MSRS, kmsrs);
free(kmsrs);
- errno = e;
return r;
}
@@ -464,7 +441,7 @@ int kvm_get_mce_cap_supported(kvm_context_t kvm, uint64_t *mce_cap,
int kvm_setup_mce(CPUState *env, uint64_t *mcg_cap)
{
#ifdef KVM_CAP_MCE
- return ioctl(env->kvm_fd, KVM_X86_SETUP_MCE, mcg_cap);
+ return kvm_vcpu_ioctl(env, KVM_X86_SETUP_MCE, mcg_cap);
#else
return -ENOSYS;
#endif
@@ -473,7 +450,7 @@ int kvm_setup_mce(CPUState *env, uint64_t *mcg_cap)
int kvm_set_mce(CPUState *env, struct kvm_x86_mce *m)
{
#ifdef KVM_CAP_MCE
- return ioctl(env->kvm_fd, KVM_X86_SET_MCE, m);
+ return kvm_vcpu_ioctl(env, KVM_X86_SET_MCE, m);
#else
return -ENOSYS;
#endif
@@ -563,7 +540,7 @@ int kvm_setup_cpuid(CPUState *env, int nent,
cpuid->nent = nent;
memcpy(cpuid->entries, entries, nent * sizeof(*entries));
- r = ioctl(env->kvm_fd, KVM_SET_CPUID, cpuid);
+ r = kvm_vcpu_ioctl(env, KVM_SET_CPUID, cpuid);
free(cpuid);
return r;
@@ -579,11 +556,7 @@ int kvm_setup_cpuid2(CPUState *env, int nent,
cpuid->nent = nent;
memcpy(cpuid->entries, entries, nent * sizeof(*entries));
- r = ioctl(env->kvm_fd, KVM_SET_CPUID2, cpuid);
- if (r == -1) {
- fprintf(stderr, "kvm_setup_cpuid2: %m\n");
- r = -errno;
- }
+ r = kvm_vcpu_ioctl(env, KVM_SET_CPUID2, cpuid);
free(cpuid);
return r;
}
@@ -634,13 +607,7 @@ static int tpr_access_reporting(CPUState *env, int enabled)
r = kvm_ioctl(kvm_state, KVM_CHECK_EXTENSION, KVM_CAP_VAPIC);
if (r <= 0)
return -ENOSYS;
- r = ioctl(env->kvm_fd, KVM_TPR_ACCESS_REPORTING, &tac);
- if (r == -1) {
- r = -errno;
- perror("KVM_TPR_ACCESS_REPORTING");
- return r;
- }
- return 0;
+ return kvm_vcpu_ioctl(env, KVM_TPR_ACCESS_REPORTING, &tac);
}
int kvm_enable_tpr_access_reporting(CPUState *env)
diff --git a/qemu-kvm.c b/qemu-kvm.c
index 7943281..91cfc32 100644
--- a/qemu-kvm.c
+++ b/qemu-kvm.c
@@ -816,32 +816,32 @@ static int handle_debug(CPUState *env)
int kvm_get_regs(CPUState *env, struct kvm_regs *regs)
{
- return ioctl(env->kvm_fd, KVM_GET_REGS, regs);
+ return kvm_vcpu_ioctl(env, KVM_GET_REGS, regs);
}
int kvm_set_regs(CPUState *env, struct kvm_regs *regs)
{
- return ioctl(env->kvm_fd, KVM_SET_REGS, regs);
+ return kvm_vcpu_ioctl(env, KVM_SET_REGS, regs);
}
int kvm_get_fpu(CPUState *env, struct kvm_fpu *fpu)
{
- return ioctl(env->kvm_fd, KVM_GET_FPU, fpu);
+ return kvm_vcpu_ioctl(env, KVM_GET_FPU, fpu);
}
int kvm_set_fpu(CPUState *env, struct kvm_fpu *fpu)
{
- return ioctl(env->kvm_fd, KVM_SET_FPU, fpu);
+ return kvm_vcpu_ioctl(env, KVM_SET_FPU, fpu);
}
int kvm_get_sregs(CPUState *env, struct kvm_sregs *sregs)
{
- return ioctl(env->kvm_fd, KVM_GET_SREGS, sregs);
+ return kvm_vcpu_ioctl(env, KVM_GET_SREGS, sregs);
}
int kvm_set_sregs(CPUState *env, struct kvm_sregs *sregs)
{
- return ioctl(env->kvm_fd, KVM_SET_SREGS, sregs);
+ return kvm_vcpu_ioctl(env, KVM_SET_SREGS, sregs);
}
#ifdef KVM_CAP_MP_STATE
@@ -851,7 +851,7 @@ int kvm_get_mpstate(CPUState *env, struct kvm_mp_state *mp_state)
r = kvm_ioctl(kvm_state, KVM_CHECK_EXTENSION, KVM_CAP_MP_STATE);
if (r > 0)
- return ioctl(env->kvm_fd, KVM_GET_MP_STATE, mp_state);
+ return kvm_vcpu_ioctl(env, KVM_GET_MP_STATE, mp_state);
return -ENOSYS;
}
@@ -861,7 +861,7 @@ int kvm_set_mpstate(CPUState *env, struct kvm_mp_state *mp_state)
r = kvm_ioctl(kvm_state, KVM_CHECK_EXTENSION, KVM_CAP_MP_STATE);
if (r > 0)
- return ioctl(env->kvm_fd, KVM_SET_MP_STATE, mp_state);
+ return kvm_vcpu_ioctl(env, KVM_SET_MP_STATE, mp_state);
return -ENOSYS;
}
#endif
@@ -1046,13 +1046,13 @@ int kvm_inject_irq(CPUState *env, unsigned irq)
struct kvm_interrupt intr;
intr.irq = irq;
- return ioctl(env->kvm_fd, KVM_INTERRUPT, &intr);
+ return kvm_vcpu_ioctl(env, KVM_INTERRUPT, &intr);
}
#ifdef KVM_CAP_SET_GUEST_DEBUG
int kvm_set_guest_debug(CPUState *env, struct kvm_guest_debug *dbg)
{
- return ioctl(env->kvm_fd, KVM_SET_GUEST_DEBUG, dbg);
+ return kvm_vcpu_ioctl(env, KVM_SET_GUEST_DEBUG, dbg);
}
#endif
@@ -1062,18 +1062,13 @@ int kvm_set_signal_mask(CPUState *env, const sigset_t *sigset)
int r;
if (!sigset) {
- r = ioctl(env->kvm_fd, KVM_SET_SIGNAL_MASK, NULL);
- if (r == -1)
- r = -errno;
- return r;
+ return kvm_vcpu_ioctl(env, KVM_SET_SIGNAL_MASK, NULL);
}
sigmask = qemu_malloc(sizeof(*sigmask) + sizeof(*sigset));
sigmask->len = 8;
memcpy(sigmask->sigset, sigset, sizeof(*sigset));
- r = ioctl(env->kvm_fd, KVM_SET_SIGNAL_MASK, sigmask);
- if (r == -1)
- r = -errno;
+ r = kvm_vcpu_ioctl(env, KVM_SET_SIGNAL_MASK, sigmask);
free(sigmask);
return r;
}
@@ -1086,7 +1081,7 @@ int kvm_pit_in_kernel(kvm_context_t kvm)
int kvm_inject_nmi(CPUState *env)
{
#ifdef KVM_CAP_USER_NMI
- return ioctl(env->kvm_fd, KVM_NMI);
+ return kvm_vcpu_ioctl(env, KVM_NMI);
#else
return -ENOSYS;
#endif
diff --git a/qemu-kvm.h b/qemu-kvm.h
index 588bc80..06507a6 100644
--- a/qemu-kvm.h
+++ b/qemu-kvm.h
@@ -1181,6 +1181,7 @@ extern KVMState *kvm_state;
int kvm_ioctl(KVMState *s, int type, ...);
int kvm_vm_ioctl(KVMState *s, int type, ...);
+int kvm_vcpu_ioctl(CPUState *env, int type, ...);
int kvm_check_extension(KVMState *s, unsigned int ext);
#endif
--
1.6.2.5
next prev parent reply other threads:[~2009-10-15 16:51 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-15 16:50 [PATCH v2 0/3] get rid of vcpu structure Glauber Costa
2009-10-15 16:50 ` [PATCH v2 1/3] change function signatures so that they don't take a vcpu argument Glauber Costa
2009-10-15 16:50 ` [PATCH v2 2/3] get rid of vcpu structure Glauber Costa
2009-10-15 16:50 ` Glauber Costa [this message]
2009-10-19 18:09 ` [PATCH v2 0/3] " Marcelo Tosatti
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1255625437-32395-4-git-send-email-glommer@redhat.com \
--to=glommer@redhat.com \
--cc=avi@redhat.com \
--cc=kvm@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox