[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 15/17] arm: enhance kvm_arm_create_scratch_host_vcpu
From: |
Peter Maydell |
Subject: |
[Qemu-devel] [PULL 15/17] arm: enhance kvm_arm_create_scratch_host_vcpu |
Date: |
Wed, 30 Mar 2016 15:57:47 +0100 |
From: Peter Xu <address@hidden>
Support passing NULL for the first parameter (with the same effect
as passing an empty array) and for the third parameter (meaning
that we should not attempt to init the vcpu).
Signed-off-by: Peter Xu <address@hidden>
Acked-by: Sergey Fedorov <address@hidden>
Message-id: address@hidden
[PMM: tweaked commit message, comment]
Reviewed-by: Peter Maydell <address@hidden>
Signed-off-by: Peter Maydell <address@hidden>
---
target-arm/kvm.c | 14 +++++++++++++-
target-arm/kvm_arm.h | 7 +++++--
2 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/target-arm/kvm.c b/target-arm/kvm.c
index 969ab0b..3671032 100644
--- a/target-arm/kvm.c
+++ b/target-arm/kvm.c
@@ -62,13 +62,18 @@ bool kvm_arm_create_scratch_host_vcpu(const uint32_t
*cpus_to_try,
goto err;
}
+ if (!init) {
+ /* Caller doesn't want the VCPU to be initialized, so skip it */
+ goto finish;
+ }
+
ret = ioctl(vmfd, KVM_ARM_PREFERRED_TARGET, init);
if (ret >= 0) {
ret = ioctl(cpufd, KVM_ARM_VCPU_INIT, init);
if (ret < 0) {
goto err;
}
- } else {
+ } else if (cpus_to_try) {
/* Old kernel which doesn't know about the
* PREFERRED_TARGET ioctl: we know it will only support
* creating one kind of guest CPU which is its preferred
@@ -85,8 +90,15 @@ bool kvm_arm_create_scratch_host_vcpu(const uint32_t
*cpus_to_try,
if (ret < 0) {
goto err;
}
+ } else {
+ /* Treat a NULL cpus_to_try argument the same as an empty
+ * list, which means we will fail the call since this must
+ * be an old kernel which doesn't support PREFERRED_TARGET.
+ */
+ goto err;
}
+finish:
fdarray[0] = kvmfd;
fdarray[1] = vmfd;
fdarray[2] = cpufd;
diff --git a/target-arm/kvm_arm.h b/target-arm/kvm_arm.h
index 07f0c72..345233c 100644
--- a/target-arm/kvm_arm.h
+++ b/target-arm/kvm_arm.h
@@ -124,9 +124,12 @@ void kvm_arm_reset_vcpu(ARMCPU *cpu);
* kvm_arm_create_scratch_host_vcpu:
* @cpus_to_try: array of QEMU_KVM_ARM_TARGET_* values (terminated with
* QEMU_KVM_ARM_TARGET_NONE) to try as fallback if the kernel does not
- * know the PREFERRED_TARGET ioctl
+ * know the PREFERRED_TARGET ioctl. Passing NULL is the same as passing
+ * an empty array.
* @fdarray: filled in with kvmfd, vmfd, cpufd file descriptors in that order
- * @init: filled in with the necessary values for creating a host vcpu
+ * @init: filled in with the necessary values for creating a host
+ * vcpu. If NULL is provided, will not init the vCPU (though the cpufd
+ * will still be set up).
*
* Create a scratch vcpu in its own VM of the type preferred by the host
* kernel (as would be used for '-cpu host'), for purposes of probing it
--
1.9.1
- [Qemu-devel] [PULL 14/17] arm: qmp: add query-gic-capabilities interface, (continued)
- [Qemu-devel] [PULL 14/17] arm: qmp: add query-gic-capabilities interface, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 13/17] block: m25p80: at25128a/at25256a models, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 04/17] block: m25p80: RESET_ENABLE and RESET_MEMORY commands, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 09/17] block: m25p80: Dummy cycles for N25Q256/512, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 06/17] block: m25p80: Extend address mode, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 08/17] block: m25p80: Add configuration registers, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 07/17] block: m25p80: 4byte address mode, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 05/17] block: m25p80: Widen flags variable, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 16/17] kvm: add kvm_device_supported() helper function, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 10/17] block: m25p80: Fast read and 4bytes commands, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 15/17] arm: enhance kvm_arm_create_scratch_host_vcpu,
Peter Maydell <=
- [Qemu-devel] [PULL 01/17] hw/gpio: Add the emulation of gpio_key, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 02/17] ARM: Virt: Use gpio_key for power button, Peter Maydell, 2016/03/30
- [Qemu-devel] [PULL 03/17] block: m25p80: Removed unused variable, Peter Maydell, 2016/03/30
- Re: [Qemu-devel] [PULL 00/17] target-arm queue, Peter Maydell, 2016/03/30