From: Thomas Huth <thuth@redhat.com>
To: qemu-devel@nongnu.org
Cc: Peter Maydell <peter.maydell@linaro.org>,
Eric Farman <farman@linux.ibm.com>,
David Hildenbrand <david@redhat.com>
Subject: [PULL 10/10] s390x: sigp: Reorder the SIGP STOP code
Date: Wed, 19 Jan 2022 09:32:15 +0100 [thread overview]
Message-ID: <20220119083215.120911-11-thuth@redhat.com> (raw)
In-Reply-To: <20220119083215.120911-1-thuth@redhat.com>
From: Eric Farman <farman@linux.ibm.com>
Let's wait to mark the VCPU STOPPED until the possible
STORE STATUS operation is completed, so that we know the
CPU is fully stopped and done doing anything. (When we
also clear the possible sigp_order field for STOP orders.)
Suggested-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Eric Farman <farman@linux.ibm.com>
Message-Id: <20211213210919.856693-2-farman@linux.ibm.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
target/s390x/sigp.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/target/s390x/sigp.c b/target/s390x/sigp.c
index 51c727834c..9dd977349a 100644
--- a/target/s390x/sigp.c
+++ b/target/s390x/sigp.c
@@ -139,7 +139,7 @@ static void sigp_stop_and_store_status(CPUState *cs, run_on_cpu_data arg)
case S390_CPU_STATE_OPERATING:
cpu->env.sigp_order = SIGP_STOP_STORE_STATUS;
cpu_inject_stop(cpu);
- /* store will be performed in do_stop_interrup() */
+ /* store will be performed in do_stop_interrupt() */
break;
case S390_CPU_STATE_STOPPED:
/* already stopped, just store the status */
@@ -479,13 +479,17 @@ void do_stop_interrupt(CPUS390XState *env)
{
S390CPU *cpu = env_archcpu(env);
- if (s390_cpu_set_state(S390_CPU_STATE_STOPPED, cpu) == 0) {
- qemu_system_shutdown_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN);
- }
+ /*
+ * Complete the STOP operation before exposing the CPU as
+ * STOPPED to the system.
+ */
if (cpu->env.sigp_order == SIGP_STOP_STORE_STATUS) {
s390_store_status(cpu, S390_STORE_STATUS_DEF_ADDR, true);
}
env->sigp_order = 0;
+ if (s390_cpu_set_state(S390_CPU_STATE_STOPPED, cpu) == 0) {
+ qemu_system_shutdown_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN);
+ }
env->pending_int &= ~INTERRUPT_STOP;
}
--
2.27.0
next prev parent reply other threads:[~2022-01-19 9:07 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-19 8:32 [PULL 00/10] s390x patches (shift instructions, MAINTAINERS, ...) Thomas Huth
2022-01-19 8:32 ` [PULL 01/10] s390x/css: fix PMCW invalid mask Thomas Huth
2022-01-19 8:32 ` [PULL 02/10] target/s390x: Fix SLDA sign bit index Thomas Huth
2022-01-19 8:32 ` [PULL 03/10] target/s390x: Fix SRDA CC calculation Thomas Huth
2022-01-19 8:32 ` [PULL 04/10] target/s390x: Fix cc_calc_sla_64() missing overflows Thomas Huth
2022-01-19 8:32 ` [PULL 05/10] target/s390x: Fix shifting 32-bit values for more than 31 bits Thomas Huth
2022-01-19 8:32 ` [PULL 06/10] tests/tcg/s390x: Test shift instructions Thomas Huth
2022-01-19 8:32 ` [PULL 07/10] MAINTAINERS: split out s390x sections Thomas Huth
2022-01-19 8:32 ` [PULL 08/10] MAINTAINERS: Add myself to s390 I/O areas Thomas Huth
2022-01-19 8:32 ` [PULL 09/10] s390x/ipl: support extended kernel command line size Thomas Huth
2022-01-19 8:32 ` Thomas Huth [this message]
2022-01-19 18:46 ` [PULL 00/10] s390x patches (shift instructions, MAINTAINERS, ...) Peter Maydell
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=20220119083215.120911-11-thuth@redhat.com \
--to=thuth@redhat.com \
--cc=david@redhat.com \
--cc=farman@linux.ibm.com \
--cc=peter.maydell@linaro.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).