qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC PATCH V5 7/8] target-arm: Implement kvm_arch_reset


From: Diana Craciun
Subject: Re: [Qemu-devel] [RFC PATCH V5 7/8] target-arm: Implement kvm_arch_reset_vcpu() for KVM ARM64
Date: Thu, 15 May 2014 18:12:13 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130625 Thunderbird/17.0.7

On 05/14/2014 06:42 PM, Peter Maydell wrote:
On 12 May 2014 13:37, Pranavkumar Sawargaonkar <address@hidden> wrote:
To implement kvm_arch_reset_vcpu(), we simply re-init the VCPU
using kvm_arm_vcpu_init() so that all registers of VCPU are set
to their reset values by in-kernel KVM code.

Signed-off-by: Pranavkumar Sawargaonkar <address@hidden>
Signed-off-by: Anup Patel <address@hidden>
---
  target-arm/kvm64.c |    4 ++++
  1 file changed, 4 insertions(+)

diff --git a/target-arm/kvm64.c b/target-arm/kvm64.c
index 917d256..6e988f3 100644
--- a/target-arm/kvm64.c
+++ b/target-arm/kvm64.c
@@ -269,4 +269,8 @@ int kvm_arch_get_registers(CPUState *cs)

  void kvm_arch_reset_vcpu(CPUState *cs)
  {
+    /* Re-init VCPU so that all registers are set to
+     * their respective reset values.
+     */
+    kvm_arm_vcpu_init(cs);
  }
Reviewed-by: Peter Maydell <address@hidden>

There is a cleanup we can make which makes this the
common reset function for both 32 and 64 bit, but let's
not tangle that up with this patchseries.

It is not just cleanup, on 32 bit the reset is not working properly as it is currently implemented. The reason is that the secondary cores fail to boot because the "cpu->arch.pause" (to mark the VCPU as paused) is not set in KVM because the KVM_ARM_VCPU_INIT ioctl is not called on reset.

I can make the changes to re-initialize the VCPU also for 32 bit once these patches are final.

Diana



reply via email to

[Prev in Thread] Current Thread [Next in Thread]