qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: David Hildenbrand <david@redhat.com>
To: Christian Borntraeger <borntraeger@de.ibm.com>, qemu-devel@nongnu.org
Cc: "Richard Henderson" <richard.henderson@linaro.org>,
	thuth@redhat.com, cohuck@redhat.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: Re: [Qemu-devel] [PATCH v1 00/27] s390x: SMP for TCG (+ cleanups)
Date: Mon, 18 Sep 2017 20:28:09 +0200	[thread overview]
Message-ID: <0947e406-e38d-a8ad-9ff5-bdca998fa3f9@redhat.com> (raw)
In-Reply-To: <5c6f8432-84ec-e06a-22fe-9ddc24998adf@de.ibm.com>

On 18.09.2017 19:31, Christian Borntraeger wrote:
> David,
> 
> can you outline how much you tested KVM after these changes?  I assume we should
> review/test the whole series properly?

Related to my tests:

I did the usual shutdown/reboot/system_reset/online-offline test with
KVM. I remember also playing with CPU hotplug again. However, no
kvm-unit-tests so far (also not in my pipeline).


Related to the patches:

I tried to modify as little KVM code as possible. Most stuff really is
just moving code around. But still, subtle errors can happen.

E.g. for all new SIGP instructions, I keep existing behavior for KVM by
checking for tcg/kvm directly at the start at the handlers. So most
s390x/tcg patches should have no influence.

So reviewing all s390x/kvm patches and !tcg patches would be great. I
will certainly not complain if some IBM folks would also review the TCG
patches ;)

Special care should need:
- "target/s390x: proper cpu->be convertion in s390_store_status()"
-- to make sure I haven't done any stupid mistakes while converting
   (just realized s/convertion/conversion/ :) )
- "s390x/kvm: factor out SIGP code into sigp.c"
-- to make sure the new kvm_s390_handle_sigp() and handle_sigp() do the
   same thing as handle_sigp() did before.

"s390x/tcg: STOPPED cpus can never wake up" and
"s390x/tcg: implement STOP and RESET interrupts for TCG" modify a
function called also for kvm (s390_cpu_has_work()). It is expected to
return always "false" for kvm. This behavior should still be that way.

Thanks!

> 
> On 09/18/2017 05:59 PM, David Hildenbrand wrote:
>> 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
>>
> 


-- 

Thanks,

David

  reply	other threads:[~2017-09-18 18:28 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]
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=0947e406-e38d-a8ad-9ff5-bdca998fa3f9@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).