On 5 May 2014 10:00, Pranavkumar Sawargaonkar <pranavkumar@xxxxxxxxxx> wrote: > Introduce a common kvm_arm_vcpu_init() for doing KVM_ARM_VCPU_INIT > ioctl in KVM ARM and KVM ARM64. This also helps us factor-out few > common code lines from kvm_arch_init_vcpu() for KVM ARM/ARM64. > > Signed-off-by: Pranavkumar Sawargaonkar <pranavkumar@xxxxxxxxxx> > Signed-off-by: Anup Patel <anup.patel@xxxxxxxxxx> > --- > target-arm/kvm.c | 23 +++++++++++++++++++++++ > target-arm/kvm32.c | 18 +++--------------- > target-arm/kvm64.c | 22 ++++++++-------------- > target-arm/kvm_arm.h | 14 ++++++++++++++ > 4 files changed, 48 insertions(+), 29 deletions(-) > > diff --git a/target-arm/kvm.c b/target-arm/kvm.c > index 39202d7..55bc3a3 100644 > --- a/target-arm/kvm.c > +++ b/target-arm/kvm.c > @@ -27,6 +27,29 @@ const KVMCapabilityInfo kvm_arch_required_capabilities[] = { > KVM_CAP_LAST_INFO > }; > > +int kvm_arm_vcpu_init(CPUState *cs, uint32_t feature0_extra) > +{ > + ARMCPU *cpu = ARM_CPU(cs); > + struct kvm_vcpu_init init; > + > + if (cpu->kvm_target == QEMU_KVM_ARM_TARGET_NONE) { > + fprintf(stderr, "KVM is not supported for this guest CPU type\n"); > + return -EINVAL; > + } > + > + init.target = cpu->kvm_target; > + memset(init.features, 0, sizeof(init.features)); > + if (cpu->start_powered_off) { > + init.features[0] |= 1 << KVM_ARM_VCPU_POWER_OFF; > + } > + if (kvm_check_extension(cs->kvm_state, KVM_CAP_ARM_PSCI_0_2)) { > + init.features[0] |= 1 << KVM_ARM_VCPU_PSCI_0_2; > + } > + init.features[0] |= feature0_extra; > + > + return kvm_vcpu_ioctl(cs, KVM_ARM_VCPU_INIT, &init); > +} I said back in the review comments for v2 of this series that we didn't need to do all this just for reset. Put the features word in cpu along with kvm_target: http://patchwork.ozlabs.org/patch/335900/ thanks -- PMM _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm