{"id":814997,"url":"http://patchwork.ozlabs.org/api/covers/814997/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/cover/20170918160012.4317-1-david@redhat.com/","project":{"id":14,"url":"http://patchwork.ozlabs.org/api/projects/14/?format=json","name":"QEMU Development","link_name":"qemu-devel","list_id":"qemu-devel.nongnu.org","list_email":"qemu-devel@nongnu.org","web_url":"","scm_url":"","webscm_url":"","list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20170918160012.4317-1-david@redhat.com>","list_archive_url":null,"date":"2017-09-18T15:59:45","name":"[v1,00/27] s390x: SMP for TCG (+ cleanups)","submitter":{"id":70402,"url":"http://patchwork.ozlabs.org/api/people/70402/?format=json","name":"David Hildenbrand","email":"david@redhat.com"},"mbox":"http://patchwork.ozlabs.org/project/qemu-devel/cover/20170918160012.4317-1-david@redhat.com/mbox/","series":[{"id":3672,"url":"http://patchwork.ozlabs.org/api/series/3672/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/list/?series=3672","date":"2017-09-18T15:59:45","name":"s390x: SMP for TCG (+ cleanups)","version":1,"mbox":"http://patchwork.ozlabs.org/series/3672/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/covers/814997/comments/","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ext-mx03.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com","ext-mx03.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=david@redhat.com"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xwrPW2dFmz9s78\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 19 Sep 2017 02:02:38 +1000 (AEST)","from localhost ([::1]:37532 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dtyVH-0007Xg-MN\n\tfor incoming@patchwork.ozlabs.org; Mon, 18 Sep 2017 12:02:35 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:37054)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <david@redhat.com>) id 1dtyTK-0006Si-Em\n\tfor qemu-devel@nongnu.org; Mon, 18 Sep 2017 12:00:35 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <david@redhat.com>) id 1dtyTH-0007aT-SG\n\tfor qemu-devel@nongnu.org; Mon, 18 Sep 2017 12:00:34 -0400","from mx1.redhat.com ([209.132.183.28]:45290)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <david@redhat.com>) id 1dtyTH-0007a4-J6\n\tfor qemu-devel@nongnu.org; Mon, 18 Sep 2017 12:00:31 -0400","from smtp.corp.redhat.com\n\t(int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id 4977B7E455;\n\tMon, 18 Sep 2017 16:00:30 +0000 (UTC)","from t460s.redhat.com (unknown [10.36.118.72])\n\tby smtp.corp.redhat.com (Postfix) with ESMTP id 62B735EDE2;\n\tMon, 18 Sep 2017 16:00:13 +0000 (UTC)"],"DMARC-Filter":"OpenDMARC Filter v1.3.2 mx1.redhat.com 4977B7E455","From":"David Hildenbrand <david@redhat.com>","To":"qemu-devel@nongnu.org","Date":"Mon, 18 Sep 2017 17:59:45 +0200","Message-Id":"<20170918160012.4317-1-david@redhat.com>","X-Scanned-By":"MIMEDefang 2.79 on 10.5.11.15","X-Greylist":"Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.27]);\n\tMon, 18 Sep 2017 16:00:30 +0000 (UTC)","X-detected-operating-system":"by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]","X-Received-From":"209.132.183.28","Subject":"[Qemu-devel] [PATCH v1 00/27] s390x: SMP for TCG (+ cleanups)","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"Matthew Rosato <mjrosato@linux.vnet.ibm.com>, thuth@redhat.com,\n\tdavid@redhat.com, cohuck@redhat.com, Richard Henderson\n\t<richard.henderson@linaro.org>, Alexander Graf <agraf@suse.de>,\n\tborntraeger@de.ibm.com, \tIgor Mammedov <imammedo@redhat.com>,\n\t=?utf-8?q?Alex_Benn=C3=A9e?= <alex.bennee@linaro.org>,\n\tAurelien Jarno <aurelien@aurel32.net>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"},"content":"This series contains:\n- properly implement local external interrupts for TCG\n- factor out KVM SIGP handling code into common code\n- implement missing SIGP orders for TCG handled by the kernel for KVM\n  (including STOP and RESTART interrupts)\n- make TCG use the new SIGP code - experimental SMP support for s390x TCG\n- refactor STFL(E) implementation for TCG\n- bunch of cleanups\n\nBasically all SIGP instructions are fully supported.\n\nThanks to Aurelien Jarno for the initital prototype and showcasing that\nsupporting experimental SMP code can be implemented quite easily.\n\nTCG SMP on s390x - what works?\n- \"-smp X,maxcpus=X\" with both, single and multi threaded TCG\n- \"-smp ... -device qemu-s390-cpu,id=cpuX,core-id=X\"\n- system_powerdown, system_reset, shutdown, reboot, NMI\n- online/offline of CPUs from inside the guest\n\nTCG SMP on s390x - what does not work?\n- Floating interrupts all target CPU 0. Don't offline it.\n- CPU hotplug after the machine/main loop has been fully setup\n-- the new CPU comes up, answers and sends emergency signals, but suddenly\n   the VM gets stuck. This is strange, as ordinary online/offline works\n   just fine.\n-- can be triggered by \"cpu-add 1\" + \"system_reset\". The system will hang\n   when trying to online CPUs. (note: in Linux code they are fully up and\n   running and already executed code)\n-- also if hotplugging with \"-S\", before anything has run. This is strange,\n   as \"-device qemu-s390-cpu\" works just fine.\n-- does not seem to be related to CPU setup/reset code, I checked that\n-- seems to be related to some TCG internals (as broken for single and\n   multi threaded TCG).\n-- common code seems to be somehow broken, not sure if this is even\n   expected to work (e.g. for single threaded TCG, hotplugged CPUs will\n   never get set \"cpu->created = true\". But doesn't seem to be related to\n   this)\n\n\nBased on: https://github.com/cohuck/qemu.git s390-next\nAvailable on: git@github.com:davidhildenbrand/qemu.git s390x-queue\n\n\nDavid Hildenbrand (27):\n  s390x: raise CPU hotplug irq after really hotplugged\n  s390x/cpumodel: fix max STFL(E) bit number\n  target/s390x: get rid of next_core_id\n  s390x: introduce and use S390_MAX_CPUS\n  s390/tcg: turn INTERRUPT_EXT into a mask\n  s390x/tcg: injection of emergency signals and extarnal calls\n  s390x/tcg: STOPPED cpus can never wake up\n  s390x/tcg: a CPU cannot switch state due to an interrupt\n  target/s390x: factor out handling of WAIT PSW into handle_wait()\n  s390x/kvm: pass ipb directly into handle_sigp()\n  s390x/kvm: generalize SIGP stop and restart interrupt injection\n  s390x/kvm: factor out storing of CPU status\n  target/s390x: proper cpu->be convertion in s390_store_status()\n  s390x/kvm: factor out storing of adtl CPU status\n  s390x/kvm: drop two debug prints\n  s390x/kvm: factor out SIGP code into sigp.c\n  s390x/kvm: factor out actual handling of STOP interrupts\n  s390x/tcg: implement SIGP SENSE RUNNING STATUS\n  s390x/tcg: implement SIGP SENSE\n  s390x/tcg: implement SIGP EXTERNAL CALL\n  s390x/tcg: implement SIGP EMERGENCY SIGNAL\n  s390x/tcg: implement SIGP CONDITIONAL EMERGENCY SIGNAL\n  s390x/tcg: implement STOP and RESET interrupts for TCG\n  s390x/tcg: flush the tlb on SIGP SET PREFIX\n  s390x/tcg: switch to new SIGP handling code\n  s390x/tcg: unlock NMI\n  s390x/tcg: refactor stfl(e) to use s390_get_feat_block()\n\n hw/s390x/s390-virtio-ccw.c  |  17 +-\n target/s390x/Makefile.objs  |   1 +\n target/s390x/cpu-qom.h      |   2 -\n target/s390x/cpu.c          |  40 ++--\n target/s390x/cpu.h          |  36 +++-\n target/s390x/cpu_features.c |   2 +-\n target/s390x/cpu_models.c   |   2 +\n target/s390x/excp_helper.c  |  98 ++++++---\n target/s390x/helper.c       | 115 ++++++++--\n target/s390x/helper.h       |   4 +-\n target/s390x/internal.h     |  15 ++\n target/s390x/interrupt.c    |  70 +++++-\n target/s390x/kvm-stub.c     |  13 +-\n target/s390x/kvm.c          | 470 +++--------------------------------------\n target/s390x/kvm_s390x.h    |   3 +-\n target/s390x/misc_helper.c  | 114 ++++------\n target/s390x/sigp.c         | 504 ++++++++++++++++++++++++++++++++++++++++++++\n target/s390x/trace-events   |   4 +-\n target/s390x/translate.c    |   6 +-\n 19 files changed, 896 insertions(+), 620 deletions(-)\n create mode 100644 target/s390x/sigp.c"}