From: David Hildenbrand <david@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Richard Henderson" <richard.henderson@linaro.org>,
thuth@redhat.com, cohuck@redhat.com, david@redhat.com,
borntraeger@de.ibm.com, "Alexander Graf" <agraf@suse.de>,
"Igor Mammedov" <imammedo@redhat.com>,
"Aurelien Jarno" <aurelien@aurel32.net>,
"Matthew Rosato" <mjrosato@linux.vnet.ibm.com>,
"Alex Bennée" <alex.bennee@linaro.org>
Subject: [Qemu-devel] [PATCH v1 00/27] s390x: SMP for TCG (+ cleanups)
Date: Mon, 18 Sep 2017 17:59:45 +0200 [thread overview]
Message-ID: <20170918160012.4317-1-david@redhat.com> (raw)
This series contains:
- properly implement local external interrupts for TCG
- factor out KVM SIGP handling code into common code
- implement missing SIGP orders for TCG handled by the kernel for KVM
(including STOP and RESTART interrupts)
- make TCG use the new SIGP code - experimental SMP support for s390x TCG
- refactor STFL(E) implementation for TCG
- bunch of cleanups
Basically all SIGP instructions are fully supported.
Thanks to Aurelien Jarno for the initital prototype and showcasing that
supporting experimental SMP code can be implemented quite easily.
TCG SMP on s390x - what works?
- "-smp X,maxcpus=X" with both, single and multi threaded TCG
- "-smp ... -device qemu-s390-cpu,id=cpuX,core-id=X"
- system_powerdown, system_reset, shutdown, reboot, NMI
- online/offline of CPUs from inside the guest
TCG SMP on s390x - what does not work?
- Floating interrupts all target CPU 0. Don't offline it.
- CPU hotplug after the machine/main loop has been fully setup
-- the new CPU comes up, answers and sends emergency signals, but suddenly
the VM gets stuck. This is strange, as ordinary online/offline works
just fine.
-- can be triggered by "cpu-add 1" + "system_reset". The system will hang
when trying to online CPUs. (note: in Linux code they are fully up and
running and already executed code)
-- also if hotplugging with "-S", before anything has run. This is strange,
as "-device qemu-s390-cpu" works just fine.
-- does not seem to be related to CPU setup/reset code, I checked that
-- seems to be related to some TCG internals (as broken for single and
multi threaded TCG).
-- common code seems to be somehow broken, not sure if this is even
expected to work (e.g. for single threaded TCG, hotplugged CPUs will
never get set "cpu->created = true". But doesn't seem to be related to
this)
Based on: https://github.com/cohuck/qemu.git s390-next
Available on: git@github.com:davidhildenbrand/qemu.git s390x-queue
David Hildenbrand (27):
s390x: raise CPU hotplug irq after really hotplugged
s390x/cpumodel: fix max STFL(E) bit number
target/s390x: get rid of next_core_id
s390x: introduce and use S390_MAX_CPUS
s390/tcg: turn INTERRUPT_EXT into a mask
s390x/tcg: injection of emergency signals and extarnal calls
s390x/tcg: STOPPED cpus can never wake up
s390x/tcg: a CPU cannot switch state due to an interrupt
target/s390x: factor out handling of WAIT PSW into handle_wait()
s390x/kvm: pass ipb directly into handle_sigp()
s390x/kvm: generalize SIGP stop and restart interrupt injection
s390x/kvm: factor out storing of CPU status
target/s390x: proper cpu->be convertion in s390_store_status()
s390x/kvm: factor out storing of adtl CPU status
s390x/kvm: drop two debug prints
s390x/kvm: factor out SIGP code into sigp.c
s390x/kvm: factor out actual handling of STOP interrupts
s390x/tcg: implement SIGP SENSE RUNNING STATUS
s390x/tcg: implement SIGP SENSE
s390x/tcg: implement SIGP EXTERNAL CALL
s390x/tcg: implement SIGP EMERGENCY SIGNAL
s390x/tcg: implement SIGP CONDITIONAL EMERGENCY SIGNAL
s390x/tcg: implement STOP and RESET interrupts for TCG
s390x/tcg: flush the tlb on SIGP SET PREFIX
s390x/tcg: switch to new SIGP handling code
s390x/tcg: unlock NMI
s390x/tcg: refactor stfl(e) to use s390_get_feat_block()
hw/s390x/s390-virtio-ccw.c | 17 +-
target/s390x/Makefile.objs | 1 +
target/s390x/cpu-qom.h | 2 -
target/s390x/cpu.c | 40 ++--
target/s390x/cpu.h | 36 +++-
target/s390x/cpu_features.c | 2 +-
target/s390x/cpu_models.c | 2 +
target/s390x/excp_helper.c | 98 ++++++---
target/s390x/helper.c | 115 ++++++++--
target/s390x/helper.h | 4 +-
target/s390x/internal.h | 15 ++
target/s390x/interrupt.c | 70 +++++-
target/s390x/kvm-stub.c | 13 +-
target/s390x/kvm.c | 470 +++--------------------------------------
target/s390x/kvm_s390x.h | 3 +-
target/s390x/misc_helper.c | 114 ++++------
target/s390x/sigp.c | 504 ++++++++++++++++++++++++++++++++++++++++++++
target/s390x/trace-events | 4 +-
target/s390x/translate.c | 6 +-
19 files changed, 896 insertions(+), 620 deletions(-)
create mode 100644 target/s390x/sigp.c
--
2.13.5
next reply other threads:[~2017-09-18 16:00 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-18 15:59 David Hildenbrand [this message]
2017-09-18 15:59 ` [Qemu-devel] [PATCH v1 01/27] s390x: raise CPU hotplug irq after really hotplugged David Hildenbrand
2017-09-25 7:18 ` Christian Borntraeger
2017-09-25 23:10 ` Richard Henderson
2017-09-18 15:59 ` [Qemu-devel] [PATCH v1 02/27] s390x/cpumodel: fix max STFL(E) bit number David Hildenbrand
2017-09-25 8:14 ` Christian Borntraeger
2017-09-25 9:18 ` Thomas Huth
2017-09-18 15:59 ` [Qemu-devel] [PATCH v1 03/27] target/s390x: get rid of next_core_id David Hildenbrand
2017-09-21 13:28 ` Igor Mammedov
2017-09-25 23:14 ` Richard Henderson
2017-09-26 8:49 ` Igor Mammedov
2017-09-26 12:40 ` David Hildenbrand
2017-09-18 15:59 ` [Qemu-devel] [PATCH v1 04/27] s390x: introduce and use S390_MAX_CPUS David Hildenbrand
2017-09-25 10:08 ` Thomas Huth
2017-09-25 23:14 ` Richard Henderson
2017-09-18 15:59 ` [Qemu-devel] [PATCH v1 05/27] s390/tcg: turn INTERRUPT_EXT into a mask David Hildenbrand
2017-09-25 23:18 ` Richard Henderson
2017-09-28 19:08 ` David Hildenbrand
2017-09-18 15:59 ` [Qemu-devel] [PATCH v1 06/27] s390x/tcg: injection of emergency signals and extarnal calls David Hildenbrand
2017-09-25 13:16 ` David Hildenbrand
2017-09-18 15:59 ` [Qemu-devel] [PATCH v1 07/27] s390x/tcg: STOPPED cpus can never wake up David Hildenbrand
2017-09-25 23:20 ` Richard Henderson
2017-09-18 15:59 ` [Qemu-devel] [PATCH v1 08/27] s390x/tcg: a CPU cannot switch state due to an interrupt David Hildenbrand
2017-09-25 23:20 ` Richard Henderson
2017-09-18 15:59 ` [Qemu-devel] [PATCH v1 09/27] target/s390x: factor out handling of WAIT PSW into handle_wait() David Hildenbrand
2017-09-25 10:22 ` Thomas Huth
2017-09-26 13:04 ` David Hildenbrand
2017-09-25 23:23 ` Richard Henderson
2017-09-18 15:59 ` [Qemu-devel] [PATCH v1 10/27] s390x/kvm: pass ipb directly into handle_sigp() David Hildenbrand
2017-09-25 10:27 ` Thomas Huth
2017-09-25 23:24 ` Richard Henderson
2017-09-18 15:59 ` [Qemu-devel] [PATCH v1 11/27] s390x/kvm: generalize SIGP stop and restart interrupt injection David Hildenbrand
2017-09-25 23:29 ` Richard Henderson
2017-09-18 15:59 ` [Qemu-devel] [PATCH v1 12/27] s390x/kvm: factor out storing of CPU status David Hildenbrand
2017-09-18 15:59 ` [Qemu-devel] [PATCH v1 13/27] target/s390x: proper cpu->be convertion in s390_store_status() David Hildenbrand
2017-09-18 15:59 ` [Qemu-devel] [PATCH v1 14/27] s390x/kvm: factor out storing of adtl CPU status David Hildenbrand
2017-09-25 23:31 ` Richard Henderson
2017-09-25 23:41 ` Richard Henderson
2017-09-18 16:00 ` [Qemu-devel] [PATCH v1 15/27] s390x/kvm: drop two debug prints David Hildenbrand
2017-09-25 10:32 ` Thomas Huth
2017-09-25 23:41 ` Richard Henderson
2017-09-18 16:00 ` [Qemu-devel] [PATCH v1 16/27] s390x/kvm: factor out SIGP code into sigp.c David Hildenbrand
2017-09-18 17:25 ` Christian Borntraeger
2017-09-18 18:14 ` David Hildenbrand
2017-09-25 23:49 ` Richard Henderson
2017-09-18 16:00 ` [Qemu-devel] [PATCH v1 17/27] s390x/kvm: factor out actual handling of STOP interrupts David Hildenbrand
2017-09-18 16:00 ` [Qemu-devel] [PATCH v1 18/27] s390x/tcg: implement SIGP SENSE RUNNING STATUS David Hildenbrand
2017-09-25 12:47 ` Thomas Huth
2017-09-25 12:51 ` David Hildenbrand
2017-09-18 16:00 ` [Qemu-devel] [PATCH v1 19/27] s390x/tcg: implement SIGP SENSE David Hildenbrand
2017-09-18 16:00 ` [Qemu-devel] [PATCH v1 20/27] s390x/tcg: implement SIGP EXTERNAL CALL David Hildenbrand
2017-09-18 16:00 ` [Qemu-devel] [PATCH v1 21/27] s390x/tcg: implement SIGP EMERGENCY SIGNAL David Hildenbrand
2017-09-18 16:00 ` [Qemu-devel] [PATCH v1 22/27] s390x/tcg: implement SIGP CONDITIONAL " David Hildenbrand
2017-09-18 16:00 ` [Qemu-devel] [PATCH v1 23/27] s390x/tcg: implement STOP and RESET interrupts for TCG David Hildenbrand
2017-09-18 20:00 ` David Hildenbrand
2017-09-18 20:21 ` David Hildenbrand
2017-09-18 16:00 ` [Qemu-devel] [PATCH v1 24/27] s390x/tcg: flush the tlb on SIGP SET PREFIX David Hildenbrand
2017-09-18 16:00 ` [Qemu-devel] [PATCH v1 25/27] s390x/tcg: switch to new SIGP handling code David Hildenbrand
2017-09-18 16:00 ` [Qemu-devel] [PATCH v1 26/27] s390x/tcg: unlock NMI David Hildenbrand
2017-09-18 16:00 ` [Qemu-devel] [PATCH v1 27/27] s390x/tcg: refactor stfl(e) to use s390_get_feat_block() David Hildenbrand
2017-09-18 17:31 ` [Qemu-devel] [PATCH v1 00/27] s390x: SMP for TCG (+ cleanups) Christian Borntraeger
2017-09-18 18:28 ` David Hildenbrand
2017-09-21 13:07 ` David Hildenbrand
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=20170918160012.4317-1-david@redhat.com \
--to=david@redhat.com \
--cc=agraf@suse.de \
--cc=alex.bennee@linaro.org \
--cc=aurelien@aurel32.net \
--cc=borntraeger@de.ibm.com \
--cc=cohuck@redhat.com \
--cc=imammedo@redhat.com \
--cc=mjrosato@linux.vnet.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=thuth@redhat.com \
/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).