qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] [S390] [KVM] Enable SIGP Initial Reset


From: Aurelien Jarno
Subject: Re: [Qemu-devel] [PATCH] [S390] [KVM] Enable SIGP Initial Reset
Date: Tue, 18 May 2010 21:24:06 +0200
User-agent: Mutt/1.5.20 (2009-06-14)

On Fri, May 14, 2010 at 04:14:31PM +0200, Alexander Graf wrote:
> For SMP to work with KVM, we need to properly emulate the SIGP Initial Reset
> Command. Recent (2.6.32) kernels issue that before the SIGP Reset command that
> actually wakes up the vcpu.
> 
> This patch makes -smp work on S390x.
> 
> Signed-off-by: Alexander Graf <address@hidden>

Thanks, applied.

> ---
>  target-s390x/kvm.c |   17 ++++++++++++++---
>  1 files changed, 14 insertions(+), 3 deletions(-)
> 
> diff --git a/target-s390x/kvm.c b/target-s390x/kvm.c
> index a2d7741..9bf6abb 100644
> --- a/target-s390x/kvm.c
> +++ b/target-s390x/kvm.c
> @@ -344,9 +344,20 @@ static int s390_store_status(CPUState *env, uint32_t 
> parameter)
>  
>  static int s390_cpu_initial_reset(CPUState *env)
>  {
> -    /* XXX */
> -    fprintf(stderr, "XXX SIGP init\n");
> -    return -1;
> +    int i;
> +
> +    if (kvm_vcpu_ioctl(env, KVM_S390_INITIAL_RESET, NULL) < 0) {
> +        perror("cannot init reset vcpu");
> +    }
> +
> +    /* Manually zero out all registers */
> +    cpu_synchronize_state(env);
> +    for (i = 0; i < 16; i++) {
> +        env->regs[i] = 0;
> +    }
> +
> +    dprintf("DONE: SIGP initial reset: %p\n", env);
> +    return 0;
>  }
>  
>  static int handle_sigp(CPUState *env, struct kvm_run *run, uint8_t ipa1)
> -- 
> 1.6.0.2
> 
> 
> 

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
address@hidden                 http://www.aurel32.net



reply via email to

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