From: Alexander Graf <agraf@suse.de>
To: Jens Freimann <jfrei@linux.vnet.ibm.com>
Cc: Cornelia Huck <cornelia.huck@de.ibm.com>,
Christian Borntraeger <borntraeger@de.ibm.com>,
Heinz Graalfs <graalfs@linux.vnet.ibm.com>,
qemu-devel <qemu-devel@nongnu.org>,
Einar Lueck <elelueck@linux.vnet.ibm.com>
Subject: Re: [Qemu-devel] [PATCH v2] s390: clear registers, psw and prefix at vcpu reset
Date: Tue, 27 Nov 2012 18:15:09 +0100 [thread overview]
Message-ID: <50B4F51D.5030009@suse.de> (raw)
In-Reply-To: <20121127171346.GA12208@chuck.boeblingen.de.ibm.com>
On 11/27/2012 06:13 PM, Jens Freimann wrote:
> On Tue, Nov 27, 2012 at 10:37:25AM +0100, Alexander Graf wrote:
>>
>> On 27.11.2012, at 09:33, Jens Freimann<jfrei@linux.vnet.ibm.com> wrote:
>>
>>> When resetting vcpus on s390/kvm we have to clear registers, psw
>>> and prefix as described in the z/Architecture PoP, otherwise a
>>> reboot won't work. IPL PSW and prefix are set later on by the
>>> s390-ipl device reset code.
>>>
>>> Signed-off-by: Jens Freimann<jfrei@linux.vnet.ibm.com>
>>> ---
>>>
>>> changes v1->v2:
>>> - moved cpu reset code from kvm.c to cpu.c
>>> - only kvm initial_reset ioctl remains in kvm.c
>>> - registered reset handler for s390 cpu reset, like x86 does it
>>>
>>> target-s390x/cpu.c | 29 +++++++++++++++++++++++++++--
>>> target-s390x/kvm.c | 9 ++++++++-
>>> 2 files changed, 35 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/target-s390x/cpu.c b/target-s390x/cpu.c
>>> index 619b202..f74d6f6 100644
>>> --- a/target-s390x/cpu.c
>>> +++ b/target-s390x/cpu.c
>>> @@ -24,10 +24,21 @@
>>> #include "qemu-common.h"
>>> #include "qemu-timer.h"
>>>
>>> +#ifndef CONFIG_USER_ONLY
>>> +#include "hw/s390x/sclp.h"
>>> +
>>> +/* TODO: remove me, when reset over QOM tree is implemented */
>>> +static void s390_cpu_machine_reset_cb(void *opaque)
>>> +{
>>> + S390CPU *cpu = opaque;
>>> + cpu_reset(CPU(cpu));
>>> +}
>>> +#endif
>>>
>>> /* CPUClass::reset() */
>>> static void s390_cpu_reset(CPUState *s)
>>> {
>>> + int i;
>>> S390CPU *cpu = S390_CPU(s);
>>> S390CPUClass *scc = S390_CPU_GET_CLASS(cpu);
>>> CPUS390XState *env =&cpu->env;
>>> @@ -40,9 +51,22 @@ static void s390_cpu_reset(CPUState *s)
>>> scc->parent_reset(s);
>>>
>>> memset(env, 0, offsetof(CPUS390XState, breakpoints));
>>> - /* FIXME: reset vector? */
>>> +
>>> + env->halted = 1;
>> Every cpu would start in halted state? So how does the primary one get rolling?
> The first cpu is set to not-halted by the ipl device reset code.
Please document this here.
>>> + env->exception_index = EXCP_HLT;
>>> + for (i = 0; i< 16; i++) {
>>> + env->regs[i] = 0;
>>> + env->aregs[i] = 0;
>>> + env->cregs[i] = 0;
>>> + env->fregs[i].ll = 0;
>>> + }
>> Please make this more self-adjusting. For example using memset(sizeof));. You could also make the clear implicit by ensuring the registers are in the cpu struct before breakpoints. But explicit tends to be more readable ;).
> Ok
>
>>> + /* architectured initial values for CR 0 and 14 */
>>> + env->cregs[0] = 0xE0UL;
>>> + env->cregs[14] = 0xC2000000UL;
>>> + env->psw.mask = 0;
>>> + env->psw.addr = 0;
>>> + env->psa = 0;
>>> tlb_flush(env, 1);
>>> - s390_add_running_cpu(env);
>> Why can we remove this one?
> Good point. I took a closer look and found that we add an additional
> cpu to the counter every time we reboot. Will fix this and send a new
> version.
Yeah, if anything this should be a separate patch :).
Alex
prev parent reply other threads:[~2012-11-27 17:15 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-27 8:33 [Qemu-devel] [PATCH v2] s390: clear registers, psw and prefix at vcpu reset Jens Freimann
2012-11-27 9:37 ` Alexander Graf
2012-11-27 17:13 ` Jens Freimann
2012-11-27 17:15 ` Alexander Graf [this message]
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=50B4F51D.5030009@suse.de \
--to=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.