qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v1 00/27] s390x: SMP for TCG (+ cleanups)
@ 2017-09-18 15:59 David Hildenbrand
  2017-09-18 15:59 ` [Qemu-devel] [PATCH v1 01/27] s390x: raise CPU hotplug irq after really hotplugged David Hildenbrand
                   ` (28 more replies)
  0 siblings, 29 replies; 63+ messages in thread
From: David Hildenbrand @ 2017-09-18 15:59 UTC (permalink / raw)
  To: qemu-devel
  Cc: Richard Henderson, thuth, cohuck, david, borntraeger,
	Alexander Graf, Igor Mammedov, Aurelien Jarno, Matthew Rosato,
	Alex Bennée

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

^ permalink raw reply	[flat|nested] 63+ messages in thread

end of thread, other threads:[~2017-09-28 19:09 UTC | newest]

Thread overview: 63+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-09-18 15:59 [Qemu-devel] [PATCH v1 00/27] s390x: SMP for TCG (+ cleanups) David Hildenbrand
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

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).