All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Andreas Färber" <afaerber@suse.de>
To: Jens Freimann <jfrei@linux.vnet.ibm.com>
Cc: Heinz Graalfs <graalfs@linux.vnet.ibm.com>,
	Alexander Graf <agraf@suse.de>,
	qemu-devel <qemu-devel@nongnu.org>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	Cornelia Huck <cornelia.huck@de.ibm.com>,
	Einar Lueck <elelueck@linux.vnet.ibm.com>
Subject: Re: [Qemu-devel] [PATCH 3/3] s390: add cpu reset handler
Date: Fri, 07 Dec 2012 20:07:45 +0100	[thread overview]
Message-ID: <50C23E81.6020009@suse.de> (raw)
In-Reply-To: <1354888531-47836-4-git-send-email-jfrei@linux.vnet.ibm.com>

Am 07.12.2012 14:55, schrieb Jens Freimann:
> Add a CPU reset handler to have all CPUs in a PoP compliant
> state.
> 
> Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com>
> ---
>  target-s390x/cpu.c |   25 +++++++++++++++++++++++++
>  target-s390x/kvm.c |   10 +++++++++-
>  2 files changed, 34 insertions(+), 1 deletions(-)
> 
> diff --git a/target-s390x/cpu.c b/target-s390x/cpu.c
> index 619b202..a601380 100644
> --- a/target-s390x/cpu.c
> +++ b/target-s390x/cpu.c
> @@ -4,6 +4,7 @@
>   * Copyright (c) 2009 Ulrich Hecht
>   * Copyright (c) 2011 Alexander Graf
>   * Copyright (c) 2012 SUSE LINUX Products GmbH
> + * Copyright (c) 2012 IBM Corp.
>   *
>   * This library is free software; you can redistribute it and/or
>   * modify it under the terms of the GNU Lesser General Public
> @@ -18,12 +19,35 @@
>   * You should have received a copy of the GNU Lesser General Public
>   * License along with this library; if not, see
>   * <http://www.gnu.org/licenses/lgpl-2.1.html>
> + * Contributions after 2012-12-07 are licensed under the terms of the
> + * GNU GPL, version 2 or (at your option) any later version.
> + *
>   */
>  
>  #include "cpu.h"
> +#include "hw/hw.h"
>  #include "qemu-common.h"
>  #include "qemu-timer.h"
>  
> +/* TODO: remove me, when reset over QOM tree is implemented */
> +static void s390_cpu_machine_reset_cb(void *opaque)
> +{
> +    S390CPU *cpu = opaque;
> +    CPUS390XState *env = &cpu->env;
> +
> +    memset(env->regs, 0, sizeof(env->regs));
> +    memset(env->aregs, 0, sizeof(env->aregs));
> +    memset(env->cregs, 0, sizeof(env->cregs));
> +    memset(env->fregs, 0, sizeof(env->fregs));
> +    /* architectured initial values for CR 0 and 14 */
> +    env->cregs[0] = 0xE0UL;
> +    env->cregs[14] = 0xC2000000UL;
> +    env->psw.addr = 0;
> +    /* set to z/Architecture mode */
> +    env->psw.mask = 0x0000000180000000ULL;
> +    env->psa = 0;
> +    s390_del_running_cpu(env);
> +}

What's the connection between lack of reset over QOM tree and not
calling the existing s390_cpu_reset() from s390_cpu_machine_reset_cb()?
Are some CPUS390XState fields maybe misplaced?

Regards,
Andreas

>  
>  /* CPUClass::reset() */
>  static void s390_cpu_reset(CPUState *s)
> @@ -56,6 +80,7 @@ static void s390_cpu_initfn(Object *obj)
>  
>      cpu_exec_init(env);
>  #if !defined(CONFIG_USER_ONLY)
> +    qemu_register_reset(s390_cpu_machine_reset_cb, cpu);
>      qemu_get_timedate(&tm, 0);
>      env->tod_offset = TOD_UNIX_EPOCH +
>                        (time2tod(mktimegm(&tm)) * 1000000000ULL);
> diff --git a/target-s390x/kvm.c b/target-s390x/kvm.c
> index 94de764..3969a49 100644
> --- a/target-s390x/kvm.c
> +++ b/target-s390x/kvm.c
> @@ -85,7 +85,15 @@ int kvm_arch_init_vcpu(CPUS390XState *env)
>  
>  void kvm_arch_reset_vcpu(CPUS390XState *env)
>  {
> -    /* FIXME: add code to reset vcpu. */
> +    /* The initial reset call is needed here to reset in-kernel
> +     * vcpu data that we can't access directly from QEMU
> +     * (i.e. with older kernels which don't support sync_regs/ONE_REG).
> +     * Before this ioctl cpu_synchronize_state() is called in common kvm
> +     * code (kvm-all) */
> +    if (kvm_vcpu_ioctl(env, KVM_S390_INITIAL_RESET, NULL)) {
> +        perror("Can't reset vcpu\n");
> +    }
> +
>  }
>  
>  int kvm_arch_put_registers(CPUS390XState *env, int level)
> 


-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg

  reply	other threads:[~2012-12-07 19:07 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-07 13:55 [Qemu-devel] [PATCH 0/3] s390: ipl device and cpu reset handler Jens Freimann
2012-12-07 13:55 ` [Qemu-devel] [PATCH 1/3] s390: Fix empty kernel command line Jens Freimann
2012-12-11 10:34   ` Alexander Graf
2012-12-11 11:15     ` Christian Borntraeger
2012-12-11 11:19       ` Alexander Graf
2012-12-11 11:26         ` Christian Borntraeger
2012-12-07 13:55 ` [Qemu-devel] [PATCH 2/3] s390: Move IPL code into a separate device Jens Freimann
2012-12-07 15:14   ` [Qemu-devel] [RFC/PATCH 0/2] ipl device followup Christian Borntraeger
2012-12-07 15:14     ` [Qemu-devel] [RFC/PATCH 1/2] s390: Add bootmap parsing to ipl device Christian Borntraeger
2012-12-07 15:14     ` [Qemu-devel] [RFC/PATCH 2/2] s390: enable ipl device for virtio-ccw Christian Borntraeger
2012-12-11 10:36     ` [Qemu-devel] [RFC/PATCH 0/2] ipl device followup Alexander Graf
2012-12-11 10:38   ` [Qemu-devel] [PATCH 2/3] s390: Move IPL code into a separate device Alexander Graf
2012-12-07 13:55 ` [Qemu-devel] [PATCH 3/3] s390: add cpu reset handler Jens Freimann
2012-12-07 19:07   ` Andreas Färber [this message]
2012-12-08 17:32     ` Jens Freimann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=50C23E81.6020009@suse.de \
    --to=afaerber@suse.de \
    --cc=agraf@suse.de \
    --cc=borntraeger@de.ibm.com \
    --cc=cornelia.huck@de.ibm.com \
    --cc=elelueck@linux.vnet.ibm.com \
    --cc=graalfs@linux.vnet.ibm.com \
    --cc=jfrei@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.