[Top][All Lists]
[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