From nobody Wed Nov 5 08:11:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1504540089678650.3584437016312; Mon, 4 Sep 2017 08:48:09 -0700 (PDT) Received: from localhost ([::1]:54513 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotbb-0007w6-AW for importer@patchew.org; Mon, 04 Sep 2017 11:48:07 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37384) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotX8-0004F7-11 for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dotX3-0000qy-Ed for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:30 -0400 Received: from mx1.redhat.com ([209.132.183.28]:58352) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dotX3-0000qW-5q for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:25 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 352DB72F16; Mon, 4 Sep 2017 15:43:24 +0000 (UTC) Received: from t460s.redhat.com (ovpn-116-139.ams2.redhat.com [10.36.116.139]) by smtp.corp.redhat.com (Postfix) with ESMTP id 15376C14C4; Mon, 4 Sep 2017 15:43:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 352DB72F16 Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=david@redhat.com From: David Hildenbrand To: qemu-devel@nongnu.org Date: Mon, 4 Sep 2017 17:42:58 +0200 Message-Id: <20170904154316.4148-2-david@redhat.com> In-Reply-To: <20170904154316.4148-1-david@redhat.com> References: <20170904154316.4148-1-david@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Mon, 04 Sep 2017 15:43:24 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 01/19] exec, dump, i386, ppc, s390x: don't include exec/cpu-all.h explicitly X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, Eduardo Habkost , david@redhat.com, cohuck@redhat.com, Richard Henderson , Alexander Graf , borntraeger@de.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" All but a handfull of filles include exec/cpu-all.h via cpu.h only. As these files already include cpu.h, let's just drop the additional include. Signed-off-by: David Hildenbrand Reviewed-by: Thomas Huth --- dump.c | 1 - exec.c | 2 -- target/i386/arch_dump.c | 1 - target/i386/arch_memory_mapping.c | 1 - target/i386/svm_helper.c | 1 - target/ppc/arch_dump.c | 1 - target/s390x/arch_dump.c | 1 - 7 files changed, 8 deletions(-) diff --git a/dump.c b/dump.c index a79773d0f7..2ef6a678e8 100644 --- a/dump.c +++ b/dump.c @@ -15,7 +15,6 @@ #include "qemu/cutils.h" #include "elf.h" #include "cpu.h" -#include "exec/cpu-all.h" #include "exec/hwaddr.h" #include "monitor/monitor.h" #include "sysemu/kvm.h" diff --git a/exec.c b/exec.c index d20c34ca83..d109de2014 100644 --- a/exec.c +++ b/exec.c @@ -23,7 +23,6 @@ =20 #include "qemu/cutils.h" #include "cpu.h" -#include "exec/exec-all.h" #include "exec/target_page.h" #include "tcg.h" #include "hw/qdev-core.h" @@ -56,7 +55,6 @@ #endif =20 #endif -#include "exec/cpu-all.h" #include "qemu/rcu_queue.h" #include "qemu/main-loop.h" #include "translate-all.h" diff --git a/target/i386/arch_dump.c b/target/i386/arch_dump.c index e682904052..35b55fc200 100644 --- a/target/i386/arch_dump.c +++ b/target/i386/arch_dump.c @@ -13,7 +13,6 @@ =20 #include "qemu/osdep.h" #include "cpu.h" -#include "exec/cpu-all.h" #include "sysemu/dump.h" #include "elf.h" #include "sysemu/memory_mapping.h" diff --git a/target/i386/arch_memory_mapping.c b/target/i386/arch_memory_ma= pping.c index 647cff2829..271cb5e41b 100644 --- a/target/i386/arch_memory_mapping.c +++ b/target/i386/arch_memory_mapping.c @@ -13,7 +13,6 @@ =20 #include "qemu/osdep.h" #include "cpu.h" -#include "exec/cpu-all.h" #include "sysemu/memory_mapping.h" =20 /* PAE Paging or IA-32e Paging */ diff --git a/target/i386/svm_helper.c b/target/i386/svm_helper.c index 59e8b5091c..f479239875 100644 --- a/target/i386/svm_helper.c +++ b/target/i386/svm_helper.c @@ -19,7 +19,6 @@ =20 #include "qemu/osdep.h" #include "cpu.h" -#include "exec/cpu-all.h" #include "exec/helper-proto.h" #include "exec/exec-all.h" #include "exec/cpu_ldst.h" diff --git a/target/ppc/arch_dump.c b/target/ppc/arch_dump.c index 8e9397aa58..beb7268e57 100644 --- a/target/ppc/arch_dump.c +++ b/target/ppc/arch_dump.c @@ -15,7 +15,6 @@ #include "qemu/osdep.h" #include "cpu.h" #include "elf.h" -#include "exec/cpu-all.h" #include "sysemu/dump.h" #include "sysemu/kvm.h" =20 diff --git a/target/s390x/arch_dump.c b/target/s390x/arch_dump.c index 9b0bf92698..6f61ff95af 100644 --- a/target/s390x/arch_dump.c +++ b/target/s390x/arch_dump.c @@ -15,7 +15,6 @@ #include "cpu.h" #include "internal.h" #include "elf.h" -#include "exec/cpu-all.h" #include "sysemu/dump.h" =20 =20 --=20 2.13.5 From nobody Wed Nov 5 08:11:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 150453993943798.51664762321309; Mon, 4 Sep 2017 08:45:39 -0700 (PDT) Received: from localhost ([::1]:54506 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotZC-0005iW-Dl for importer@patchew.org; Mon, 04 Sep 2017 11:45:38 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37401) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotXA-0004FM-Cy for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dotX5-0000sK-LO for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:32 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39506) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dotX5-0000rw-F1 for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:27 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 77E02C05A1BC; Mon, 4 Sep 2017 15:43:26 +0000 (UTC) Received: from t460s.redhat.com (ovpn-116-139.ams2.redhat.com [10.36.116.139]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8AE82BF672; Mon, 4 Sep 2017 15:43:24 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 77E02C05A1BC Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=david@redhat.com From: David Hildenbrand To: qemu-devel@nongnu.org Date: Mon, 4 Sep 2017 17:42:59 +0200 Message-Id: <20170904154316.4148-3-david@redhat.com> In-Reply-To: <20170904154316.4148-1-david@redhat.com> References: <20170904154316.4148-1-david@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Mon, 04 Sep 2017 15:43:26 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 02/19] cpu: drop old comments describing members X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, Eduardo Habkost , david@redhat.com, cohuck@redhat.com, Richard Henderson , Alexander Graf , borntraeger@de.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" These comments are obviously stale. Acked-by: Cornelia Huck Signed-off-by: David Hildenbrand --- include/qom/cpu.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/qom/cpu.h b/include/qom/cpu.h index b7ac9491c8..386ab0af40 100644 --- a/include/qom/cpu.h +++ b/include/qom/cpu.h @@ -378,10 +378,10 @@ struct CPUState { DECLARE_BITMAP(trace_dstate, CPU_TRACE_DSTATE_MAX_EVENTS); =20 /* TODO Move common fields from CPUArchState here. */ - int cpu_index; /* used by alpha TCG */ - uint32_t halted; /* used by alpha, cris, ppc TCG */ + int cpu_index; + uint32_t halted; uint32_t can_do_io; - int32_t exception_index; /* used by m68k TCG */ + int32_t exception_index; =20 /* shared by kvm, hax and hvf */ bool vcpu_dirty; --=20 2.13.5 From nobody Wed Nov 5 08:11:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 150454002913251.70173505983928; Mon, 4 Sep 2017 08:47:09 -0700 (PDT) Received: from localhost ([::1]:54510 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotad-00074B-VU for importer@patchew.org; Mon, 04 Sep 2017 11:47:08 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37450) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotXD-0004IF-Cm for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dotX7-0000tJ-Um for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:35 -0400 Received: from mx1.redhat.com ([209.132.183.28]:47584) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dotX7-0000t1-M7 for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:29 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B52212CE91A; Mon, 4 Sep 2017 15:43:28 +0000 (UTC) Received: from t460s.redhat.com (ovpn-116-139.ams2.redhat.com [10.36.116.139]) by smtp.corp.redhat.com (Postfix) with ESMTP id C7496BF672; Mon, 4 Sep 2017 15:43:26 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com B52212CE91A Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=david@redhat.com From: David Hildenbrand To: qemu-devel@nongnu.org Date: Mon, 4 Sep 2017 17:43:00 +0200 Message-Id: <20170904154316.4148-4-david@redhat.com> In-Reply-To: <20170904154316.4148-1-david@redhat.com> References: <20170904154316.4148-1-david@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Mon, 04 Sep 2017 15:43:28 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 03/19] s390x: get rid of s390-virtio.c X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, Eduardo Habkost , david@redhat.com, cohuck@redhat.com, Richard Henderson , Alexander Graf , borntraeger@de.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" It is a leftover from the days where we had still the !ccw virtio machine. As this one is long gone, let's move everything to s390-virtio-ccw.c. Suggested-by: Cornelia Huck Reviewed-by: Thomas Huth Acked-by: Christian Borntraeger Signed-off-by: David Hildenbrand --- hw/s390x/Makefile.objs | 1 - hw/s390x/s390-virtio-ccw.c | 157 +++++++++++++++++++++++++++++++++++++++++= +++- hw/s390x/s390-virtio.c | 37 ----------- hw/s390x/s390-virtio.h | 15 ----- 4 files changed, 156 insertions(+), 54 deletions(-) diff --git a/hw/s390x/Makefile.objs b/hw/s390x/Makefile.objs index 7ee19d3abc..dc704b57d6 100644 --- a/hw/s390x/Makefile.objs +++ b/hw/s390x/Makefile.objs @@ -1,4 +1,3 @@ -obj-y +=3D s390-virtio.o obj-y +=3D s390-virtio-hcall.o obj-y +=3D sclp.o obj-y +=3D event-facility.o diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index dd504dd5ae..4c3a3e177b 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -2,6 +2,7 @@ * virtio ccw machine * * Copyright 2012 IBM Corp. + * Copyright (c) 2009 Alexander Graf * Author(s): Cornelia Huck * * This work is licensed under the terms of the GNU GPL, version 2 or (at @@ -31,6 +32,46 @@ #include "hw/s390x/css-bridge.h" #include "migration/register.h" #include "cpu_models.h" +#include "qapi/qmp/qerror.h" +#include "hw/nmi.h" + +static S390CPU **cpu_states; + +S390CPU *s390_cpu_addr2state(uint16_t cpu_addr) +{ + if (cpu_addr >=3D max_cpus) { + return NULL; + } + + /* Fast lookup via CPU ID */ + return cpu_states[cpu_addr]; +} + +static void s390_init_cpus(MachineState *machine) +{ + int i; + gchar *name; + + if (machine->cpu_model =3D=3D NULL) { + machine->cpu_model =3D s390_default_cpu_model_name(); + } + + cpu_states =3D g_new0(S390CPU *, max_cpus); + + for (i =3D 0; i < max_cpus; i++) { + name =3D g_strdup_printf("cpu[%i]", i); + object_property_add_link(OBJECT(machine), name, TYPE_S390_CPU, + (Object **) &cpu_states[i], + object_property_allow_set_link, + OBJ_PROP_LINK_UNREF_ON_RELEASE, + &error_abort); + g_free(name); + } + + for (i =3D 0; i < smp_cpus; i++) { + s390x_new_cpu(machine->cpu_model, i, &error_fatal); + } +} =20 static const char *const reset_dev_types[] =3D { TYPE_VIRTUAL_CSS_BRIDGE, @@ -94,7 +135,7 @@ static void virtio_ccw_register_hcalls(void) virtio_ccw_hcall_early_printk); } =20 -void s390_memory_init(ram_addr_t mem_size) +static void s390_memory_init(ram_addr_t mem_size) { MemoryRegion *sysmem =3D get_system_memory(); MemoryRegion *ram =3D g_new(MemoryRegion, 1); @@ -109,11 +150,103 @@ void s390_memory_init(ram_addr_t mem_size) s390_stattrib_init(); } =20 +#define S390_TOD_CLOCK_VALUE_MISSING 0x00 +#define S390_TOD_CLOCK_VALUE_PRESENT 0x01 + +static void gtod_save(QEMUFile *f, void *opaque) +{ + uint64_t tod_low; + uint8_t tod_high; + int r; + + r =3D s390_get_clock(&tod_high, &tod_low); + if (r) { + fprintf(stderr, "WARNING: Unable to get guest clock for migration.= " + "Error code %d. Guest clock will not be migrated " + "which could cause the guest to hang.\n", r); + qemu_put_byte(f, S390_TOD_CLOCK_VALUE_MISSING); + return; + } + + qemu_put_byte(f, S390_TOD_CLOCK_VALUE_PRESENT); + qemu_put_byte(f, tod_high); + qemu_put_be64(f, tod_low); +} + +static int gtod_load(QEMUFile *f, void *opaque, int version_id) +{ + uint64_t tod_low; + uint8_t tod_high; + int r; + + if (qemu_get_byte(f) =3D=3D S390_TOD_CLOCK_VALUE_MISSING) { + fprintf(stderr, "WARNING: Guest clock was not migrated. This could= " + "cause the guest to hang.\n"); + return 0; + } + + tod_high =3D qemu_get_byte(f); + tod_low =3D qemu_get_be64(f); + + r =3D s390_set_clock(&tod_high, &tod_low); + if (r) { + fprintf(stderr, "WARNING: Unable to set guest clock value. " + "s390_get_clock returned error %d. This could caus= e " + "the guest to hang.\n", r); + } + + return 0; +} + static SaveVMHandlers savevm_gtod =3D { .save_state =3D gtod_save, .load_state =3D gtod_load, }; =20 +static void s390_init_ipl_dev(const char *kernel_filename, + const char *kernel_cmdline, + const char *initrd_filename, const char *fir= mware, + const char *netboot_fw, bool enforce_bios) +{ + Object *new =3D object_new(TYPE_S390_IPL); + DeviceState *dev =3D DEVICE(new); + + if (kernel_filename) { + qdev_prop_set_string(dev, "kernel", kernel_filename); + } + if (initrd_filename) { + qdev_prop_set_string(dev, "initrd", initrd_filename); + } + qdev_prop_set_string(dev, "cmdline", kernel_cmdline); + qdev_prop_set_string(dev, "firmware", firmware); + qdev_prop_set_string(dev, "netboot_fw", netboot_fw); + qdev_prop_set_bit(dev, "enforce_bios", enforce_bios); + object_property_add_child(qdev_get_machine(), TYPE_S390_IPL, + new, NULL); + object_unref(new); + qdev_init_nofail(dev); +} + +static void s390_create_virtio_net(BusState *bus, const char *name) +{ + int i; + + for (i =3D 0; i < nb_nics; i++) { + NICInfo *nd =3D &nd_table[i]; + DeviceState *dev; + + if (!nd->model) { + nd->model =3D g_strdup("virtio"); + } + + qemu_check_nic_model(nd, "virtio"); + + dev =3D qdev_create(bus, name); + qdev_set_nic_properties(dev, nd); + qdev_init_nofail(dev); + } +} + static void ccw_init(MachineState *machine) { int ret; @@ -177,6 +310,19 @@ static void s390_cpu_plug(HotplugHandler *hotplug_dev, g_free(name); } =20 +static void s390_machine_reset(void) +{ + S390CPU *ipl_cpu =3D S390_CPU(qemu_get_cpu(0)); + + s390_cmma_reset(); + qemu_devices_reset(); + s390_crypto_reset(); + + /* all cpus are stopped - configure and start the ipl cpu only */ + s390_ipl_prepare_cpu(ipl_cpu); + s390_cpu_set_state(CPU_STATE_OPERATING, ipl_cpu); +} + static void s390_machine_device_plug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { @@ -201,6 +347,15 @@ static void s390_hot_add_cpu(const int64_t id, Error *= *errp) s390x_new_cpu(machine->cpu_model, id, errp); } =20 +static void s390_nmi(NMIState *n, int cpu_index, Error **errp) +{ + CPUState *cs =3D qemu_get_cpu(cpu_index); + + if (s390_cpu_restart(S390_CPU(cs))) { + error_setg(errp, QERR_UNSUPPORTED); + } +} + static void ccw_machine_class_init(ObjectClass *oc, void *data) { MachineClass *mc =3D MACHINE_CLASS(oc); diff --git a/hw/s390x/s390-virtio.c b/hw/s390x/s390-virtio.c index da3f49e80e..9316be1cfc 100644 --- a/hw/s390x/s390-virtio.c +++ b/hw/s390x/s390-virtio.c @@ -48,17 +48,6 @@ #define S390_TOD_CLOCK_VALUE_MISSING 0x00 #define S390_TOD_CLOCK_VALUE_PRESENT 0x01 =20 -static S390CPU **cpu_states; - -S390CPU *s390_cpu_addr2state(uint16_t cpu_addr) -{ - if (cpu_addr >=3D max_cpus) { - return NULL; - } - - /* Fast lookup via CPU ID */ - return cpu_states[cpu_addr]; -} =20 void s390_init_ipl_dev(const char *kernel_filename, const char *kernel_cmdline, @@ -86,32 +75,6 @@ void s390_init_ipl_dev(const char *kernel_filename, qdev_init_nofail(dev); } =20 -void s390_init_cpus(MachineState *machine) -{ - int i; - gchar *name; - - if (machine->cpu_model =3D=3D NULL) { - machine->cpu_model =3D s390_default_cpu_model_name(); - } - - cpu_states =3D g_new0(S390CPU *, max_cpus); - - for (i =3D 0; i < max_cpus; i++) { - name =3D g_strdup_printf("cpu[%i]", i); - object_property_add_link(OBJECT(machine), name, TYPE_S390_CPU, - (Object **) &cpu_states[i], - object_property_allow_set_link, - OBJ_PROP_LINK_UNREF_ON_RELEASE, - &error_abort); - g_free(name); - } - - for (i =3D 0; i < smp_cpus; i++) { - s390x_new_cpu(machine->cpu_model, i, &error_fatal); - } -} - =20 void s390_create_virtio_net(BusState *bus, const char *name) { diff --git a/hw/s390x/s390-virtio.h b/hw/s390x/s390-virtio.h index ca97fd6814..d984cd4115 100644 --- a/hw/s390x/s390-virtio.h +++ b/hw/s390x/s390-virtio.h @@ -12,24 +12,9 @@ #ifndef HW_S390_VIRTIO_H #define HW_S390_VIRTIO_H =20 -#include "hw/nmi.h" #include "standard-headers/asm-s390/kvm_virtio.h" #include "standard-headers/asm-s390/virtio-ccw.h" =20 typedef int (*s390_virtio_fn)(const uint64_t *args); void s390_register_virtio_hypercall(uint64_t code, s390_virtio_fn fn); - -void s390_init_cpus(MachineState *machine); -void s390_init_ipl_dev(const char *kernel_filename, - const char *kernel_cmdline, - const char *initrd_filename, - const char *firmware, - const char *netboot_fw, - bool enforce_bios); -void s390_create_virtio_net(BusState *bus, const char *name); -void s390_nmi(NMIState *n, int cpu_index, Error **errp); -void s390_machine_reset(void); -void s390_memory_init(ram_addr_t mem_size); -void gtod_save(QEMUFile *f, void *opaque); -int gtod_load(QEMUFile *f, void *opaque, int version_id); #endif --=20 2.13.5 From nobody Wed Nov 5 08:11:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 15045401048561006.3567046130202; Mon, 4 Sep 2017 08:48:24 -0700 (PDT) Received: from localhost ([::1]:54514 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotbr-00086h-R8 for importer@patchew.org; Mon, 04 Sep 2017 11:48:23 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37469) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotXE-0004Jm-PM for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dotXA-0000tx-4d for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:36 -0400 Received: from mx1.redhat.com ([209.132.183.28]:53794) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dotX9-0000td-Uv for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:32 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 04FE18B120; Mon, 4 Sep 2017 15:43:31 +0000 (UTC) Received: from t460s.redhat.com (ovpn-116-139.ams2.redhat.com [10.36.116.139]) by smtp.corp.redhat.com (Postfix) with ESMTP id 173F911CC32; Mon, 4 Sep 2017 15:43:28 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 04FE18B120 Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=david@redhat.com From: David Hildenbrand To: qemu-devel@nongnu.org Date: Mon, 4 Sep 2017 17:43:01 +0200 Message-Id: <20170904154316.4148-5-david@redhat.com> In-Reply-To: <20170904154316.4148-1-david@redhat.com> References: <20170904154316.4148-1-david@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Mon, 04 Sep 2017 15:43:31 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 04/19] s390x: rename s390-virtio.h to s390-virtio-hcall.h X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, Eduardo Habkost , david@redhat.com, cohuck@redhat.com, Richard Henderson , Alexander Graf , borntraeger@de.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The only interface left, so let's properly rename it. Reviewed-by: Thomas Huth Signed-off-by: David Hildenbrand Acked-by: Christian Borntraeger --- hw/s390x/s390-virtio-ccw.c | 2 +- hw/s390x/s390-virtio-hcall.c | 2 +- hw/s390x/{s390-virtio.h =3D> s390-virtio-hcall.h} | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) rename hw/s390x/{s390-virtio.h =3D> s390-virtio-hcall.h} (77%) diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index 4c3a3e177b..f67b4b5d58 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -16,7 +16,7 @@ #include "cpu.h" #include "hw/boards.h" #include "exec/address-spaces.h" -#include "s390-virtio.h" +#include "hw/s390x/s390-virtio-hcall.h" #include "hw/s390x/sclp.h" #include "hw/s390x/s390_flic.h" #include "hw/s390x/ioinst.h" diff --git a/hw/s390x/s390-virtio-hcall.c b/hw/s390x/s390-virtio-hcall.c index 23d67d6170..ec7cf8beb3 100644 --- a/hw/s390x/s390-virtio-hcall.c +++ b/hw/s390x/s390-virtio-hcall.c @@ -11,7 +11,7 @@ =20 #include "qemu/osdep.h" #include "cpu.h" -#include "hw/s390x/s390-virtio.h" +#include "hw/s390x/s390-virtio-hcall.h" =20 #define MAX_DIAG_SUBCODES 255 =20 diff --git a/hw/s390x/s390-virtio.h b/hw/s390x/s390-virtio-hcall.h similarity index 77% rename from hw/s390x/s390-virtio.h rename to hw/s390x/s390-virtio-hcall.h index d984cd4115..59fcba3a06 100644 --- a/hw/s390x/s390-virtio.h +++ b/hw/s390x/s390-virtio-hcall.h @@ -1,5 +1,5 @@ /* - * Virtio interfaces for s390 + * Support for virtio hypercalls on s390x * * Copyright 2012 IBM Corp. * Author(s): Cornelia Huck @@ -9,12 +9,12 @@ * directory. */ =20 -#ifndef HW_S390_VIRTIO_H -#define HW_S390_VIRTIO_H +#ifndef HW_S390_VIRTIO_HCALL_H +#define HW_S390_VIRTIO_HCALL_H =20 #include "standard-headers/asm-s390/kvm_virtio.h" #include "standard-headers/asm-s390/virtio-ccw.h" =20 typedef int (*s390_virtio_fn)(const uint64_t *args); void s390_register_virtio_hypercall(uint64_t code, s390_virtio_fn fn); -#endif +#endif /* HW_S390_VIRTIO_HCALL_H */ --=20 2.13.5 From nobody Wed Nov 5 08:11:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1504540229946614.161626383114; Mon, 4 Sep 2017 08:50:29 -0700 (PDT) Received: from localhost ([::1]:54522 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotds-0001R0-OA for importer@patchew.org; Mon, 04 Sep 2017 11:50:28 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37495) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotXH-0004M6-2U for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dotXC-0000v9-E7 for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:39 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39590) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dotXC-0000ug-7Z for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:34 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 3E061C05A1BC; Mon, 4 Sep 2017 15:43:33 +0000 (UTC) Received: from t460s.redhat.com (ovpn-116-139.ams2.redhat.com [10.36.116.139]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5A0CB11CC32; Mon, 4 Sep 2017 15:43:31 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 3E061C05A1BC Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=david@redhat.com From: David Hildenbrand To: qemu-devel@nongnu.org Date: Mon, 4 Sep 2017 17:43:02 +0200 Message-Id: <20170904154316.4148-6-david@redhat.com> In-Reply-To: <20170904154316.4148-1-david@redhat.com> References: <20170904154316.4148-1-david@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Mon, 04 Sep 2017 15:43:33 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 05/19] target/s390x: move typedef of S390CPU to its definition X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, Eduardo Habkost , david@redhat.com, cohuck@redhat.com, Richard Henderson , Alexander Graf , borntraeger@de.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Let's move it to the palce where struct S390CPU is defined. Suggested-by: Thomas Huth Signed-off-by: David Hildenbrand Tested-by: Thomas Huth --- target/s390x/cpu-qom.h | 2 -- target/s390x/cpu.h | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/target/s390x/cpu-qom.h b/target/s390x/cpu-qom.h index 4e936e7788..c8fbf8ae03 100644 --- a/target/s390x/cpu-qom.h +++ b/target/s390x/cpu-qom.h @@ -61,6 +61,4 @@ typedef struct S390CPUClass { void (*initial_cpu_reset)(CPUState *cpu); } S390CPUClass; =20 -typedef struct S390CPU S390CPU; - #endif diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h index 0bd97a5670..a7426ef6e2 100644 --- a/target/s390x/cpu.h +++ b/target/s390x/cpu.h @@ -187,7 +187,7 @@ static inline CPU_DoubleU *get_freg(CPUS390XState *cs, = int nr) * * An S/390 CPU. */ -struct S390CPU { +typedef struct S390CPU { /*< private >*/ CPUState parent_obj; /*< public >*/ @@ -198,7 +198,7 @@ struct S390CPU { /* needed for live migration */ void *irqstate; uint32_t irqstate_saved_size; -}; +} S390CPU; =20 static inline S390CPU *s390_env_get_cpu(CPUS390XState *env) { --=20 2.13.5 From nobody Wed Nov 5 08:11:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 150454023048289.36691532511122; Mon, 4 Sep 2017 08:50:30 -0700 (PDT) Received: from localhost ([::1]:54523 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotdt-0001R2-E8 for importer@patchew.org; Mon, 04 Sep 2017 11:50:29 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37531) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotXJ-0004ON-8f for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dotXE-0000xT-ME for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:41 -0400 Received: from mx1.redhat.com ([209.132.183.28]:53878) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dotXE-0000ww-GC for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:36 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7E630F80E; Mon, 4 Sep 2017 15:43:35 +0000 (UTC) Received: from t460s.redhat.com (ovpn-116-139.ams2.redhat.com [10.36.116.139]) by smtp.corp.redhat.com (Postfix) with ESMTP id 918B1BF672; Mon, 4 Sep 2017 15:43:33 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 7E630F80E Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=david@redhat.com From: David Hildenbrand To: qemu-devel@nongnu.org Date: Mon, 4 Sep 2017 17:43:03 +0200 Message-Id: <20170904154316.4148-7-david@redhat.com> In-Reply-To: <20170904154316.4148-1-david@redhat.com> References: <20170904154316.4148-1-david@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Mon, 04 Sep 2017 15:43:35 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 06/19] s390x: move s390_virtio_hypercall() to s390-virtio-hcall.h X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, Eduardo Habkost , david@redhat.com, cohuck@redhat.com, Richard Henderson , Alexander Graf , borntraeger@de.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Implemented in hw/s390x/s390-virtio-hcall.c, so let's move it to the right header file. Signed-off-by: David Hildenbrand Reviewed-by: Thomas Huth --- hw/s390x/s390-virtio-hcall.h | 1 + target/s390x/cpu.h | 1 - target/s390x/kvm.c | 1 + target/s390x/misc_helper.c | 1 + 4 files changed, 3 insertions(+), 1 deletion(-) diff --git a/hw/s390x/s390-virtio-hcall.h b/hw/s390x/s390-virtio-hcall.h index 59fcba3a06..cbc270eef3 100644 --- a/hw/s390x/s390-virtio-hcall.h +++ b/hw/s390x/s390-virtio-hcall.h @@ -17,4 +17,5 @@ =20 typedef int (*s390_virtio_fn)(const uint64_t *args); void s390_register_virtio_hypercall(uint64_t code, s390_virtio_fn fn); +int s390_virtio_hypercall(CPUS390XState *env); #endif /* HW_S390_VIRTIO_HCALL_H */ diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h index a7426ef6e2..2343f2f1f7 100644 --- a/target/s390x/cpu.h +++ b/target/s390x/cpu.h @@ -723,6 +723,5 @@ int s390_cpu_virt_mem_rw(S390CPU *cpu, vaddr laddr, uin= t8_t ar, void *hostbuf, S390CPU *s390_cpu_addr2state(uint16_t cpu_addr); extern void subsystem_reset(void); int sclp_service_call(CPUS390XState *env, uint64_t sccb, uint32_t code); -int s390_virtio_hypercall(CPUS390XState *env); =20 #endif diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c index d07763ff2c..ed59896423 100644 --- a/target/s390x/kvm.c +++ b/target/s390x/kvm.c @@ -48,6 +48,7 @@ #include "hw/s390x/ebcdic.h" #include "exec/memattrs.h" #include "hw/s390x/s390-virtio-ccw.h" +#include "hw/s390x/s390-virtio-hcall.h" =20 #ifndef DEBUG_KVM #define DEBUG_KVM 0 diff --git a/target/s390x/misc_helper.c b/target/s390x/misc_helper.c index 50cc046ca2..b142db71c6 100644 --- a/target/s390x/misc_helper.c +++ b/target/s390x/misc_helper.c @@ -34,6 +34,7 @@ #include "sysemu/cpus.h" #include "sysemu/sysemu.h" #include "hw/s390x/ebcdic.h" +#include "hw/s390x/s390-virtio-hcall.h" #endif =20 /* #define DEBUG_HELPER */ --=20 2.13.5 From nobody Wed Nov 5 08:11:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1504540363485313.2630004187215; Mon, 4 Sep 2017 08:52:43 -0700 (PDT) Received: from localhost ([::1]:54534 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotg2-0003Da-D3 for importer@patchew.org; Mon, 04 Sep 2017 11:52:42 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37589) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotXN-0004TJ-Mr for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dotXJ-00010D-2N for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:45 -0400 Received: from mx1.redhat.com ([209.132.183.28]:54088) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dotXI-0000zU-Sg for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:40 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E1B87404304; Mon, 4 Sep 2017 15:43:39 +0000 (UTC) Received: from t460s.redhat.com (ovpn-116-139.ams2.redhat.com [10.36.116.139]) by smtp.corp.redhat.com (Postfix) with ESMTP id D64BFBF672; Mon, 4 Sep 2017 15:43:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com E1B87404304 Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=david@redhat.com From: David Hildenbrand To: qemu-devel@nongnu.org Date: Mon, 4 Sep 2017 17:43:04 +0200 Message-Id: <20170904154316.4148-8-david@redhat.com> In-Reply-To: <20170904154316.4148-1-david@redhat.com> References: <20170904154316.4148-1-david@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Mon, 04 Sep 2017 15:43:40 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 07/19] s390x: move two function declarations to s390-virtio-ccw.h X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, Eduardo Habkost , david@redhat.com, cohuck@redhat.com, Richard Henderson , Alexander Graf , borntraeger@de.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" We can also drop the extern. Fix up includes. Signed-off-by: David Hildenbrand --- include/hw/s390x/s390-virtio-ccw.h | 3 +++ target/s390x/cpu.h | 2 -- target/s390x/diag.c | 1 + target/s390x/interrupt.c | 3 +++ 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/include/hw/s390x/s390-virtio-ccw.h b/include/hw/s390x/s390-vir= tio-ccw.h index 41a9d2862b..42f2ccdb43 100644 --- a/include/hw/s390x/s390-virtio-ccw.h +++ b/include/hw/s390x/s390-virtio-ccw.h @@ -56,4 +56,7 @@ bool gs_allowed(void); */ bool css_migration_enabled(void); =20 +S390CPU *s390_cpu_addr2state(uint16_t cpu_addr); +void subsystem_reset(void); + #endif diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h index 2343f2f1f7..6c0abb9894 100644 --- a/target/s390x/cpu.h +++ b/target/s390x/cpu.h @@ -720,8 +720,6 @@ int s390_cpu_virt_mem_rw(S390CPU *cpu, vaddr laddr, uin= t8_t ar, void *hostbuf, =20 =20 /* outside of target/s390x/ */ -S390CPU *s390_cpu_addr2state(uint16_t cpu_addr); -extern void subsystem_reset(void); int sclp_service_call(CPUS390XState *env, uint64_t sccb, uint32_t code); =20 #endif diff --git a/target/s390x/diag.c b/target/s390x/diag.c index e6b5e6de37..82a623948d 100644 --- a/target/s390x/diag.c +++ b/target/s390x/diag.c @@ -20,6 +20,7 @@ #include "hw/watchdog/wdt_diag288.h" #include "sysemu/cpus.h" #include "hw/s390x/ipl.h" +#include "hw/s390x/s390-virtio-ccw.h" =20 static int modified_clear_reset(S390CPU *cpu) { diff --git a/target/s390x/interrupt.c b/target/s390x/interrupt.c index 058e219fe5..9aa6b89301 100644 --- a/target/s390x/interrupt.c +++ b/target/s390x/interrupt.c @@ -15,6 +15,9 @@ #include "exec/exec-all.h" #include "sysemu/kvm.h" #include "hw/s390x/ioinst.h" +#if !defined(CONFIG_USER_ONLY) +#include "hw/s390x/s390-virtio-ccw.h" +#endif =20 /* Ensure to exit the TB after this call! */ void trigger_pgm_exception(CPUS390XState *env, uint32_t code, uint32_t ile= n) --=20 2.13.5 From nobody Wed Nov 5 08:11:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 150454048380578.36916573840642; Mon, 4 Sep 2017 08:54:43 -0700 (PDT) Received: from localhost ([::1]:54542 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dothy-0004l9-PB for importer@patchew.org; Mon, 04 Sep 2017 11:54:42 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37643) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotXQ-0004WT-Tc for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dotXL-00011j-Ec for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:48 -0400 Received: from mx1.redhat.com ([209.132.183.28]:36410) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dotXL-00011N-63 for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:43 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 435C051455; Mon, 4 Sep 2017 15:43:42 +0000 (UTC) Received: from t460s.redhat.com (ovpn-116-139.ams2.redhat.com [10.36.116.139]) by smtp.corp.redhat.com (Postfix) with ESMTP id 43D3611CC32; Mon, 4 Sep 2017 15:43:40 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 435C051455 Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=david@redhat.com From: David Hildenbrand To: qemu-devel@nongnu.org Date: Mon, 4 Sep 2017 17:43:05 +0200 Message-Id: <20170904154316.4148-9-david@redhat.com> In-Reply-To: <20170904154316.4148-1-david@redhat.com> References: <20170904154316.4148-1-david@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Mon, 04 Sep 2017 15:43:42 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 08/19] s390x: move sclp_service_call() to interrupt.c X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, Eduardo Habkost , david@redhat.com, cohuck@redhat.com, Richard Henderson , Alexander Graf , borntraeger@de.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Fix up includes and rename it to s390x_*. cpu.h is now free of externally implemented functions. Signed-off-by: David Hildenbrand --- hw/s390x/sclp.c | 51 +-----------------------------------------= ---- include/hw/s390x/sclp.h | 1 + target/s390x/cpu.h | 5 +---- target/s390x/interrupt.c | 49 ++++++++++++++++++++++++++++++++++++++++++= ++ target/s390x/kvm.c | 2 +- target/s390x/misc_helper.c | 2 +- 6 files changed, 54 insertions(+), 56 deletions(-) diff --git a/hw/s390x/sclp.c b/hw/s390x/sclp.c index fd097262c7..9618dfac0a 100644 --- a/hw/s390x/sclp.c +++ b/hw/s390x/sclp.c @@ -24,7 +24,7 @@ #include "hw/s390x/s390-pci-bus.h" #include "hw/s390x/ipl.h" =20 -static inline SCLPDevice *get_sclp_device(void) +SCLPDevice *get_sclp_device(void) { static SCLPDevice *sclp; =20 @@ -424,55 +424,6 @@ static void sclp_execute(SCLPDevice *sclp, SCCB *sccb,= uint32_t code) } } =20 -int sclp_service_call(CPUS390XState *env, uint64_t sccb, uint32_t code) -{ - SCLPDevice *sclp =3D get_sclp_device(); - SCLPDeviceClass *sclp_c =3D SCLP_GET_CLASS(sclp); - int r =3D 0; - SCCB work_sccb; - - hwaddr sccb_len =3D sizeof(SCCB); - - /* first some basic checks on program checks */ - if (env->psw.mask & PSW_MASK_PSTATE) { - r =3D -PGM_PRIVILEGED; - goto out; - } - if (cpu_physical_memory_is_io(sccb)) { - r =3D -PGM_ADDRESSING; - goto out; - } - if ((sccb & ~0x1fffUL) =3D=3D 0 || (sccb & ~0x1fffUL) =3D=3D env->psa - || (sccb & ~0x7ffffff8UL) !=3D 0) { - r =3D -PGM_SPECIFICATION; - goto out; - } - - /* - * we want to work on a private copy of the sccb, to prevent guests - * from playing dirty tricks by modifying the memory content after - * the host has checked the values - */ - cpu_physical_memory_read(sccb, &work_sccb, sccb_len); - - /* Valid sccb sizes */ - if (be16_to_cpu(work_sccb.h.length) < sizeof(SCCBHeader) || - be16_to_cpu(work_sccb.h.length) > SCCB_SIZE) { - r =3D -PGM_SPECIFICATION; - goto out; - } - - sclp_c->execute(sclp, &work_sccb, code); - - cpu_physical_memory_write(sccb, &work_sccb, - be16_to_cpu(work_sccb.h.length)); - - sclp_c->service_interrupt(sclp, sccb); - -out: - return r; -} - static void service_interrupt(SCLPDevice *sclp, uint32_t sccb) { SCLPEventFacility *ef =3D sclp->event_facility; diff --git a/include/hw/s390x/sclp.h b/include/hw/s390x/sclp.h index a72d096081..1cc233d01f 100644 --- a/include/hw/s390x/sclp.h +++ b/include/hw/s390x/sclp.h @@ -237,6 +237,7 @@ static inline int sccb_data_len(SCCB *sccb) } =20 =20 +SCLPDevice *get_sclp_device(void); void s390_sclp_init(void); sclpMemoryHotplugDev *init_sclp_memory_hotplug_dev(void); sclpMemoryHotplugDev *get_sclp_memory_hotplug_dev(void); diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h index 6c0abb9894..147aceba28 100644 --- a/target/s390x/cpu.h +++ b/target/s390x/cpu.h @@ -698,6 +698,7 @@ int cpu_s390x_signal_handler(int host_signum, void *pin= fo, void *puc); =20 =20 /* interrupt.c */ +int s390x_sclp_service_call(CPUS390XState *env, uint64_t sccb, uint32_t co= de); void s390_crw_mchk(void); void s390_io_interrupt(uint16_t subchannel_id, uint16_t subchannel_nr, uint32_t io_int_parm, uint32_t io_int_word); @@ -718,8 +719,4 @@ int s390_cpu_virt_mem_rw(S390CPU *cpu, vaddr laddr, uin= t8_t ar, void *hostbuf, #define s390_cpu_virt_mem_check_write(cpu, laddr, ar, len) \ s390_cpu_virt_mem_rw(cpu, laddr, ar, NULL, len, true) =20 - -/* outside of target/s390x/ */ -int sclp_service_call(CPUS390XState *env, uint64_t sccb, uint32_t code); - #endif diff --git a/target/s390x/interrupt.c b/target/s390x/interrupt.c index 9aa6b89301..a3b627dd40 100644 --- a/target/s390x/interrupt.c +++ b/target/s390x/interrupt.c @@ -17,6 +17,7 @@ #include "hw/s390x/ioinst.h" #if !defined(CONFIG_USER_ONLY) #include "hw/s390x/s390-virtio-ccw.h" +#include "hw/s390x/sclp.h" #endif =20 /* Ensure to exit the TB after this call! */ @@ -161,4 +162,52 @@ void s390_crw_mchk(void) } } =20 +int s390x_sclp_service_call(CPUS390XState *env, uint64_t sccb, uint32_t co= de) +{ + SCLPDevice *sclp =3D get_sclp_device(); + SCLPDeviceClass *sclp_c =3D SCLP_GET_CLASS(sclp); + int r =3D 0; + SCCB work_sccb; + + hwaddr sccb_len =3D sizeof(SCCB); + + /* first some basic checks on program checks */ + if (env->psw.mask & PSW_MASK_PSTATE) { + r =3D -PGM_PRIVILEGED; + goto out; + } + if (cpu_physical_memory_is_io(sccb)) { + r =3D -PGM_ADDRESSING; + goto out; + } + if ((sccb & ~0x1fffUL) =3D=3D 0 || (sccb & ~0x1fffUL) =3D=3D env->psa + || (sccb & ~0x7ffffff8UL) !=3D 0) { + r =3D -PGM_SPECIFICATION; + goto out; + } + + /* + * we want to work on a private copy of the sccb, to prevent guests + * from playing dirty tricks by modifying the memory content after + * the host has checked the values + */ + cpu_physical_memory_read(sccb, &work_sccb, sccb_len); + + /* Valid sccb sizes */ + if (be16_to_cpu(work_sccb.h.length) < sizeof(SCCBHeader) || + be16_to_cpu(work_sccb.h.length) > SCCB_SIZE) { + r =3D -PGM_SPECIFICATION; + goto out; + } + + sclp_c->execute(sclp, &work_sccb, code); + + cpu_physical_memory_write(sccb, &work_sccb, + be16_to_cpu(work_sccb.h.length)); + + sclp_c->service_interrupt(sclp, sccb); + +out: + return r; +} #endif diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c index ed59896423..c36e4efdec 100644 --- a/target/s390x/kvm.c +++ b/target/s390x/kvm.c @@ -1069,7 +1069,7 @@ static int kvm_sclp_service_call(S390CPU *cpu, struct= kvm_run *run, sccb =3D env->regs[ipbh0 & 0xf]; code =3D env->regs[(ipbh0 & 0xf0) >> 4]; =20 - r =3D sclp_service_call(env, sccb, code); + r =3D s390x_sclp_service_call(env, sccb, code); if (r < 0) { kvm_s390_program_interrupt(cpu, -r); } else { diff --git a/target/s390x/misc_helper.c b/target/s390x/misc_helper.c index b142db71c6..57c02ddf1b 100644 --- a/target/s390x/misc_helper.c +++ b/target/s390x/misc_helper.c @@ -76,7 +76,7 @@ void HELPER(exception)(CPUS390XState *env, uint32_t excp) uint32_t HELPER(servc)(CPUS390XState *env, uint64_t r1, uint64_t r2) { qemu_mutex_lock_iothread(); - int r =3D sclp_service_call(env, r1, r2); + int r =3D s390x_sclp_service_call(env, r1, r2); if (r < 0) { program_interrupt(env, -r, 4); r =3D 0; --=20 2.13.5 From nobody Wed Nov 5 08:11:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1504540362605244.02829937263198; Mon, 4 Sep 2017 08:52:42 -0700 (PDT) Received: from localhost ([::1]:54533 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotg0-0003Ch-PT for importer@patchew.org; Mon, 04 Sep 2017 11:52:40 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37657) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotXS-0004Xl-6x for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dotXN-00012w-Ln for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:50 -0400 Received: from mx1.redhat.com ([209.132.183.28]:42002) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dotXN-00012i-G6 for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:45 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 887BCC04F2D7; Mon, 4 Sep 2017 15:43:44 +0000 (UTC) Received: from t460s.redhat.com (ovpn-116-139.ams2.redhat.com [10.36.116.139]) by smtp.corp.redhat.com (Postfix) with ESMTP id 97DDBBF672; Mon, 4 Sep 2017 15:43:42 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 887BCC04F2D7 Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=david@redhat.com From: David Hildenbrand To: qemu-devel@nongnu.org Date: Mon, 4 Sep 2017 17:43:06 +0200 Message-Id: <20170904154316.4148-10-david@redhat.com> In-Reply-To: <20170904154316.4148-1-david@redhat.com> References: <20170904154316.4148-1-david@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Mon, 04 Sep 2017 15:43:44 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 09/19] target/s390x: use trigger_pgm_exception() in s390_cpu_handle_mmu_fault() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, Eduardo Habkost , david@redhat.com, cohuck@redhat.com, Richard Henderson , Alexander Graf , borntraeger@de.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This looks cleaner. linux-user will not use the ilen field, so setting it doesn't do any harm. Signed-off-by: David Hildenbrand Reviewed-by: Thomas Huth --- target/s390x/excp_helper.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/target/s390x/excp_helper.c b/target/s390x/excp_helper.c index 361f970db3..14d3160e92 100644 --- a/target/s390x/excp_helper.c +++ b/target/s390x/excp_helper.c @@ -59,8 +59,7 @@ int s390_cpu_handle_mmu_fault(CPUState *cs, vaddr address, { S390CPU *cpu =3D S390_CPU(cs); =20 - cs->exception_index =3D EXCP_PGM; - cpu->env.int_pgm_code =3D PGM_ADDRESSING; + trigger_pgm_exception(&cpu->env, PGM_ADDRESSING, ILEN_AUTO); /* On real machines this value is dropped into LowMem. Since this is userland, simply put this someplace that cpu_loop can find it. = */ cpu->env.__excp_addr =3D address; --=20 2.13.5 From nobody Wed Nov 5 08:11:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1504540482248292.5005333408625; Mon, 4 Sep 2017 08:54:42 -0700 (PDT) Received: from localhost ([::1]:54541 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dothx-0004jq-3N for importer@patchew.org; Mon, 04 Sep 2017 11:54:41 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37687) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotXU-0004a2-LF for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dotXQ-00014b-31 for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:52 -0400 Received: from mx1.redhat.com ([209.132.183.28]:51344) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dotXP-00013z-TJ for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:48 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id ED38378EC6; Mon, 4 Sep 2017 15:43:46 +0000 (UTC) Received: from t460s.redhat.com (ovpn-116-139.ams2.redhat.com [10.36.116.139]) by smtp.corp.redhat.com (Postfix) with ESMTP id E262FBF672; Mon, 4 Sep 2017 15:43:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com ED38378EC6 Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=david@redhat.com From: David Hildenbrand To: qemu-devel@nongnu.org Date: Mon, 4 Sep 2017 17:43:07 +0200 Message-Id: <20170904154316.4148-11-david@redhat.com> In-Reply-To: <20170904154316.4148-1-david@redhat.com> References: <20170904154316.4148-1-david@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Mon, 04 Sep 2017 15:43:47 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 10/19] target/s390x: use program_interrupt() in per_check_exception() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, Eduardo Habkost , david@redhat.com, cohuck@redhat.com, Richard Henderson , Alexander Graf , borntraeger@de.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Clean it up by reusing program_interrupt(). Add a concern regarding ilen. Signed-off-by: David Hildenbrand --- target/s390x/misc_helper.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/target/s390x/misc_helper.c b/target/s390x/misc_helper.c index 57c02ddf1b..5096286157 100644 --- a/target/s390x/misc_helper.c +++ b/target/s390x/misc_helper.c @@ -446,14 +446,17 @@ void HELPER(chsc)(CPUS390XState *env, uint64_t inst) #ifndef CONFIG_USER_ONLY void HELPER(per_check_exception)(CPUS390XState *env) { - CPUState *cs =3D CPU(s390_env_get_cpu(env)); + uint32_t ilen; =20 if (env->per_perc_atmid) { - env->int_pgm_code =3D PGM_PER; - env->int_pgm_ilen =3D get_ilen(cpu_ldub_code(env, env->per_address= )); - - cs->exception_index =3D EXCP_PGM; - cpu_loop_exit(cs); + /* + * FIXME: ILEN_AUTO is most probably the right thing to use. ilen + * always has to match the instruction referenced in the PSW. E.g. + * if a PER interrupt is triggered via EXECUTE, we have to use ilen + * of EXECUTE, while per_address contains the target of EXECUTE. + */ + ilen =3D get_ilen(cpu_ldub_code(env, env->per_address)); + program_interrupt(env, PGM_PER, ilen); } } =20 --=20 2.13.5 From nobody Wed Nov 5 08:11:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1504540241162966.6984568557087; Mon, 4 Sep 2017 08:50:41 -0700 (PDT) Received: from localhost ([::1]:54528 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dote4-0001ei-4Z for importer@patchew.org; Mon, 04 Sep 2017 11:50:40 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37725) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotXW-0004c6-UJ for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dotXS-00015g-CP for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:55 -0400 Received: from mx1.redhat.com ([209.132.183.28]:53086) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dotXS-00015P-6a for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:50 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 38D54771; Mon, 4 Sep 2017 15:43:49 +0000 (UTC) Received: from t460s.redhat.com (ovpn-116-139.ams2.redhat.com [10.36.116.139]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4B6C811CC33; Mon, 4 Sep 2017 15:43:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 38D54771 Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=david@redhat.com From: David Hildenbrand To: qemu-devel@nongnu.org Date: Mon, 4 Sep 2017 17:43:08 +0200 Message-Id: <20170904154316.4148-12-david@redhat.com> In-Reply-To: <20170904154316.4148-1-david@redhat.com> References: <20170904154316.4148-1-david@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Mon, 04 Sep 2017 15:43:49 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 11/19] s390x: allow only 1 CPU with TCG X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, Eduardo Habkost , david@redhat.com, cohuck@redhat.com, Richard Henderson , Alexander Graf , borntraeger@de.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Specifying more than 1 CPU (e.g. -smp 5) leads to SIGP errors (the guest tries to bring these CPUs up but fails), because we don't support multiple CPUs on s390x under TCG. Let's bail out if more than 1 is specified, so we don't raise people's hope. Make it a define, so we can easily bump it up later. Signed-off-by: David Hildenbrand Tested-by: Matthew Rosato --- hw/s390x/s390-virtio-ccw.c | 7 +++++++ target/s390x/cpu.h | 2 ++ 2 files changed, 9 insertions(+) diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index f67b4b5d58..f7ca20d77a 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -23,6 +23,7 @@ #include "hw/s390x/css.h" #include "virtio-ccw.h" #include "qemu/config-file.h" +#include "qemu/error-report.h" #include "s390-pci-bus.h" #include "hw/s390x/storage-keys.h" #include "hw/s390x/storage-attributes.h" @@ -55,6 +56,12 @@ static void s390_init_cpus(MachineState *machine) if (machine->cpu_model =3D=3D NULL) { machine->cpu_model =3D s390_default_cpu_model_name(); } + if (tcg_enabled() && max_cpus > S390_TCG_MAX_CPUS) { + error_report("Number of SMP CPUs requested (%d) exceeds max CPUs " + "supported by TCG (%d) on s390x", max_cpus, + S390_TCG_MAX_CPUS); + exit(1); + } =20 cpu_states =3D g_new0(S390CPU *, max_cpus); =20 diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h index 147aceba28..dca6aa9aae 100644 --- a/target/s390x/cpu.h +++ b/target/s390x/cpu.h @@ -209,6 +209,8 @@ static inline S390CPU *s390_env_get_cpu(CPUS390XState *= env) =20 #define ENV_OFFSET offsetof(S390CPU, env) =20 +#define S390_TCG_MAX_CPUS 1 + #ifndef CONFIG_USER_ONLY extern const struct VMStateDescription vmstate_s390_cpu; #endif --=20 2.13.5 From nobody Wed Nov 5 08:11:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1504540588815534.1907077393316; Mon, 4 Sep 2017 08:56:28 -0700 (PDT) Received: from localhost ([::1]:54552 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotjf-0006Cj-RW for importer@patchew.org; Mon, 04 Sep 2017 11:56:27 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37753) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotXa-0004hO-Oa for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:44:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dotXW-00019U-6u for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:58 -0400 Received: from mx1.redhat.com ([209.132.183.28]:35744) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dotXW-00018b-0Y for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:54 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 0555772F1A; Mon, 4 Sep 2017 15:43:53 +0000 (UTC) Received: from t460s.redhat.com (ovpn-116-139.ams2.redhat.com [10.36.116.139]) by smtp.corp.redhat.com (Postfix) with ESMTP id 899BF11CC33; Mon, 4 Sep 2017 15:43:49 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 0555772F1A Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=david@redhat.com From: David Hildenbrand To: qemu-devel@nongnu.org Date: Mon, 4 Sep 2017 17:43:09 +0200 Message-Id: <20170904154316.4148-13-david@redhat.com> In-Reply-To: <20170904154316.4148-1-david@redhat.com> References: <20170904154316.4148-1-david@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Mon, 04 Sep 2017 15:43:53 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 12/19] target/s390x: set cpu->id for linux user when realizing X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, Eduardo Habkost , david@redhat.com, cohuck@redhat.com, Richard Henderson , Alexander Graf , borntraeger@de.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" scc->next_cpu_id is updated when realizing. Setting it just before that point looks cleaner. Signed-off-by: David Hildenbrand Reviewed-by: Matthew Rosato --- target/s390x/cpu.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c index 74b3e4fd0d..5f9315fb16 100644 --- a/target/s390x/cpu.c +++ b/target/s390x/cpu.c @@ -194,7 +194,11 @@ static void s390_cpu_realizefn(DeviceState *dev, Error= **errp) ", max allowed: %d", cpu->id, max_cpus - 1); goto out; } +#else + /* implicitly set for linux-user only */ + cpu->id =3D scc->next_cpu_id; #endif + if (cpu_exists(cpu->id)) { error_setg(&err, "Unable to add CPU: %" PRIi64 ", it already exists", cpu->id); @@ -306,13 +310,6 @@ static void s390_cpu_initfn(Object *obj) inited =3D true; s390x_translate_init(); } - -#if defined(CONFIG_USER_ONLY) - { - S390CPUClass *scc =3D S390_CPU_GET_CLASS(obj); - cpu->id =3D scc->next_cpu_id; - } -#endif } =20 static void s390_cpu_finalize(Object *obj) --=20 2.13.5 From nobody Wed Nov 5 08:11:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1504540691242839.4813847704212; Mon, 4 Sep 2017 08:58:11 -0700 (PDT) Received: from localhost ([::1]:54556 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotlK-0007ML-5z for importer@patchew.org; Mon, 04 Sep 2017 11:58:10 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37815) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotXg-0004l3-RX for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:44:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dotXb-0001DY-9h for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:44:04 -0400 Received: from mx1.redhat.com ([209.132.183.28]:52392) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dotXa-0001CM-VN for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:43:59 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id ED39490E4F; Mon, 4 Sep 2017 15:43:57 +0000 (UTC) Received: from t460s.redhat.com (ovpn-116-139.ams2.redhat.com [10.36.116.139]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5E3A0C14C4; Mon, 4 Sep 2017 15:43:53 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com ED39490E4F Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=david@redhat.com From: David Hildenbrand To: qemu-devel@nongnu.org Date: Mon, 4 Sep 2017 17:43:10 +0200 Message-Id: <20170904154316.4148-14-david@redhat.com> In-Reply-To: <20170904154316.4148-1-david@redhat.com> References: <20170904154316.4148-1-david@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Mon, 04 Sep 2017 15:43:58 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 13/19] target/s390x: use "core-id" for cpu number/address/id handling X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, Eduardo Habkost , david@redhat.com, cohuck@redhat.com, Richard Henderson , Alexander Graf , borntraeger@de.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Some time ago we discussed that using "id" as property name is not the right thing to do, as it is a reserved property for other devices and will not work with device_add. Switch to the term "core-id" instead, and use it as an equivalent to "CPU address" mentioned in the PoP. There is no such thing as cpu number, so rename env.cpu_num to env.core_id. We use "core-id" as this is the common term to use for device_add later on (x86 and ppc). We can get rid of cpu->id now. Keep cpu_index and env->core_id in sync. cpu_index was already implicitly used by e.g. cpu_exists(), so keeping both in sync seems to be the right thing to do. cpu_index will now no longer automatically get set via cpu_exec_realizefn(). For now, we were lucky that both implicitly stayed in sync. Our new cpu property "core-id" can be a static property. Range checks can be avoided by using the correct type and the "setting after realized" check is done implicitly. device_add will later need the reserved "id" property. Hotplugging a CPU on s390x will then be: "device_add host-s390-cpu,id=3Dcpu2,core-id=3D2". Signed-off-by: David Hildenbrand Reviewed-by: Matthew Rosato --- hw/s390x/s390-virtio-ccw.c | 2 +- target/s390x/cpu.c | 71 +++++++++++++-----------------------------= ---- target/s390x/cpu.h | 5 ++-- target/s390x/cpu_models.c | 2 +- target/s390x/excp_helper.c | 2 +- target/s390x/helper.c | 4 +-- target/s390x/misc_helper.c | 4 +-- target/s390x/translate.c | 5 +--- 8 files changed, 29 insertions(+), 66 deletions(-) diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index f7ca20d77a..22a8a1b45d 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -311,7 +311,7 @@ static void s390_cpu_plug(HotplugHandler *hotplug_dev, S390CPU *cpu =3D S390_CPU(dev); CPUState *cs =3D CPU(dev); =20 - name =3D g_strdup_printf("cpu[%i]", cpu->env.cpu_num); + name =3D g_strdup_printf("cpu[%i]", cpu->env.core_id); object_property_set_link(OBJECT(hotplug_dev), OBJECT(cs), name, errp); g_free(name); diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c index 5f9315fb16..a2570bbc6b 100644 --- a/target/s390x/cpu.c +++ b/target/s390x/cpu.c @@ -36,6 +36,7 @@ #include "trace.h" #include "qapi/visitor.h" #include "exec/exec-all.h" +#include "hw/qdev-properties.h" #ifndef CONFIG_USER_ONLY #include "hw/hw.h" #include "sysemu/arch_init.h" @@ -189,28 +190,30 @@ static void s390_cpu_realizefn(DeviceState *dev, Erro= r **errp) } =20 #if !defined(CONFIG_USER_ONLY) - if (cpu->id >=3D max_cpus) { - error_setg(&err, "Unable to add CPU: %" PRIi64 - ", max allowed: %d", cpu->id, max_cpus - 1); + if (cpu->env.core_id >=3D max_cpus) { + error_setg(&err, "Unable to add CPU: %" PRIu32 ", max allowed: %d", + cpu->env.core_id, max_cpus - 1); goto out; } #else /* implicitly set for linux-user only */ - cpu->id =3D scc->next_cpu_id; + cpu->env.core_id =3D scc->next_cpu_id; #endif =20 - if (cpu_exists(cpu->id)) { - error_setg(&err, "Unable to add CPU: %" PRIi64 - ", it already exists", cpu->id); + if (cpu_exists(cpu->env.core_id)) { + error_setg(&err, "Unable to add CPU: %" PRIu32 ", it already exist= s", + cpu->env.core_id); goto out; } - if (cpu->id !=3D scc->next_cpu_id) { - error_setg(&err, "Unable to add CPU: %" PRIi64 - ", The next available id is %" PRIi64, cpu->id, + if (cpu->env.core_id !=3D scc->next_cpu_id) { + error_setg(&err, "Unable to add CPU: %" PRIu32 + ", the next available nr is %" PRIi64, cpu->env.core_id, scc->next_cpu_id); goto out; } =20 + /* sync cs->cpu_index and env->core_id. The latter is needed for TCG. = */ + cs->cpu_index =3D env->core_id; cpu_exec_realizefn(cs, &err); if (err !=3D NULL) { goto out; @@ -220,7 +223,6 @@ static void s390_cpu_realizefn(DeviceState *dev, Error = **errp) #if !defined(CONFIG_USER_ONLY) qemu_register_reset(s390_cpu_machine_reset_cb, cpu); #endif - env->cpu_num =3D cpu->id; s390_cpu_gdb_init(cs); qemu_init_vcpu(cs); #if !defined(CONFIG_USER_ONLY) @@ -241,45 +243,6 @@ out: error_propagate(errp, err); } =20 -static void s390x_cpu_get_id(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - S390CPU *cpu =3D S390_CPU(obj); - int64_t value =3D cpu->id; - - visit_type_int(v, name, &value, errp); -} - -static void s390x_cpu_set_id(Object *obj, Visitor *v, const char *name, - void *opaque, Error **errp) -{ - S390CPU *cpu =3D S390_CPU(obj); - DeviceState *dev =3D DEVICE(obj); - const int64_t min =3D 0; - const int64_t max =3D UINT32_MAX; - Error *err =3D NULL; - int64_t value; - - if (dev->realized) { - error_setg(errp, "Attempt to set property '%s' on '%s' after " - "it was realized", name, object_get_typename(obj)); - return; - } - - visit_type_int(v, name, &value, &err); - if (err) { - error_propagate(errp, err); - return; - } - if (value < min || value > max) { - error_setg(errp, "Property %s.%s doesn't take value %" PRId64 - " (minimum: %" PRId64 ", maximum: %" PRId64 ")" , - object_get_typename(obj), name, value, min, max); - return; - } - cpu->id =3D value; -} - static void s390_cpu_initfn(Object *obj) { CPUState *cs =3D CPU(obj); @@ -293,8 +256,6 @@ static void s390_cpu_initfn(Object *obj) cs->env_ptr =3D env; cs->halted =3D 1; cs->exception_index =3D EXCP_HLT; - object_property_add(OBJECT(cpu), "id", "int64_t", s390x_cpu_get_id, - s390x_cpu_set_id, NULL, NULL, NULL); s390_cpu_model_register_props(obj); #if !defined(CONFIG_USER_ONLY) qemu_get_timedate(&tm, 0); @@ -491,6 +452,11 @@ static gchar *s390_gdb_arch_name(CPUState *cs) return g_strdup("s390:64-bit"); } =20 +static Property s390x_cpu_properties[] =3D { + DEFINE_PROP_UINT32("core-id", S390CPU, env.core_id, 0), + DEFINE_PROP_END_OF_LIST() +}; + static void s390_cpu_class_init(ObjectClass *oc, void *data) { S390CPUClass *scc =3D S390_CPU_CLASS(oc); @@ -500,6 +466,7 @@ static void s390_cpu_class_init(ObjectClass *oc, void *= data) scc->next_cpu_id =3D 0; scc->parent_realize =3D dc->realize; dc->realize =3D s390_cpu_realizefn; + dc->props =3D s390x_cpu_properties; =20 scc->parent_reset =3D cc->reset; #if !defined(CONFIG_USER_ONLY) diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h index dca6aa9aae..878b6cc83e 100644 --- a/target/s390x/cpu.h +++ b/target/s390x/cpu.h @@ -149,7 +149,7 @@ typedef struct CPUS390XState { =20 CPU_COMMON =20 - uint32_t cpu_num; + uint32_t core_id; /* PoP "CPU address", same as cpu_index */ uint64_t cpuid; =20 uint64_t tod_offset; @@ -193,7 +193,6 @@ typedef struct S390CPU { /*< public >*/ =20 CPUS390XState env; - int64_t id; S390CPUModel *model; /* needed for live migration */ void *irqstate; @@ -691,7 +690,7 @@ const char *s390_default_cpu_model_name(void); =20 /* helper.c */ #define cpu_init(cpu_model) cpu_generic_init(TYPE_S390_CPU, cpu_model) -S390CPU *s390x_new_cpu(const char *cpu_model, int64_t id, Error **errp); +S390CPU *s390x_new_cpu(const char *cpu_model, uint32_t core_id, Error **er= rp); /* you can call this signal handler from your SIGBUS and SIGSEGV signal handlers to inform the virtual CPU of exceptions. non zero is returned if the signal was handled by the virtual CPU. */ diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c index 18cbf91d9c..8e20e7637b 100644 --- a/target/s390x/cpu_models.c +++ b/target/s390x/cpu_models.c @@ -915,7 +915,7 @@ void s390_realize_cpu_model(CPUState *cs, Error **errp) cpu->env.cpuid =3D s390_cpuid_from_cpu_model(cpu->model); if (tcg_enabled()) { /* basic mode, write the cpu address into the first 4 bit of the I= D */ - cpu->env.cpuid =3D deposit64(cpu->env.cpuid, 54, 4, cpu->env.cpu_n= um); + cpu->env.cpuid =3D deposit64(cpu->env.cpuid, 54, 4, cpu->env.core_= id); } } =20 diff --git a/target/s390x/excp_helper.c b/target/s390x/excp_helper.c index 14d3160e92..470cf8f5bc 100644 --- a/target/s390x/excp_helper.c +++ b/target/s390x/excp_helper.c @@ -250,7 +250,7 @@ static void do_ext_interrupt(CPUS390XState *env) lowcore->ext_params2 =3D cpu_to_be64(q->param64); lowcore->external_old_psw.mask =3D cpu_to_be64(get_psw_mask(env)); lowcore->external_old_psw.addr =3D cpu_to_be64(env->psw.addr); - lowcore->cpu_addr =3D cpu_to_be16(env->cpu_num | VIRTIO_SUBCODE_64); + lowcore->cpu_addr =3D cpu_to_be16(env->core_id | VIRTIO_SUBCODE_64); mask =3D be64_to_cpu(lowcore->external_new_psw.mask); addr =3D be64_to_cpu(lowcore->external_new_psw.addr); =20 diff --git a/target/s390x/helper.c b/target/s390x/helper.c index ba29504476..dfb24ef5b2 100644 --- a/target/s390x/helper.c +++ b/target/s390x/helper.c @@ -104,7 +104,7 @@ S390CPU *cpu_s390x_create(const char *cpu_model, Error = **errp) return S390_CPU(CPU(object_new(typename))); } =20 -S390CPU *s390x_new_cpu(const char *cpu_model, int64_t id, Error **errp) +S390CPU *s390x_new_cpu(const char *cpu_model, uint32_t core_id, Error **er= rp) { S390CPU *cpu; Error *err =3D NULL; @@ -114,7 +114,7 @@ S390CPU *s390x_new_cpu(const char *cpu_model, int64_t i= d, Error **errp) goto out; } =20 - object_property_set_int(OBJECT(cpu), id, "id", &err); + object_property_set_int(OBJECT(cpu), core_id, "core-id", &err); if (err !=3D NULL) { goto out; } diff --git a/target/s390x/misc_helper.c b/target/s390x/misc_helper.c index 5096286157..a3785a9c8d 100644 --- a/target/s390x/misc_helper.c +++ b/target/s390x/misc_helper.c @@ -231,7 +231,7 @@ uint32_t HELPER(stsi)(CPUS390XState *env, uint64_t a0, /* XXX make different for different CPUs? */ ebcdic_put(sysib.sequence, "QEMUQEMUQEMUQEMU", 16); ebcdic_put(sysib.plant, "QEMU", 4); - stw_p(&sysib.cpu_addr, env->cpu_num); + stw_p(&sysib.cpu_addr, env->core_id); cpu_physical_memory_write(a0, &sysib, sizeof(sysib)); } else if ((sel1 =3D=3D 2) && (sel2 =3D=3D 2)) { /* Basic Machine CPUs */ @@ -259,7 +259,7 @@ uint32_t HELPER(stsi)(CPUS390XState *env, uint64_t a0, /* XXX make different for different CPUs? */ ebcdic_put(sysib.sequence, "QEMUQEMUQEMUQEMU", 16); ebcdic_put(sysib.plant, "QEMU", 4); - stw_p(&sysib.cpu_addr, env->cpu_num); + stw_p(&sysib.cpu_addr, env->core_id); stw_p(&sysib.cpu_id, 0); cpu_physical_memory_write(a0, &sysib, sizeof(sysib)); } else if ((sel1 =3D=3D 2) && (sel2 =3D=3D 2)) { diff --git a/target/s390x/translate.c b/target/s390x/translate.c index 4b0db7b7bd..b8963f2fe2 100644 --- a/target/s390x/translate.c +++ b/target/s390x/translate.c @@ -3822,10 +3822,7 @@ static ExitStatus op_ssm(DisasContext *s, DisasOps *= o) static ExitStatus op_stap(DisasContext *s, DisasOps *o) { check_privileged(s); - /* ??? Surely cpu address !=3D cpu number. In any case the previous - version of this stored more than the required half-word, so it - is unlikely this has ever been tested. */ - tcg_gen_ld32u_i64(o->out, cpu_env, offsetof(CPUS390XState, cpu_num)); + tcg_gen_ld32u_i64(o->out, cpu_env, offsetof(CPUS390XState, core_id)); return NO_EXIT; } =20 --=20 2.13.5 From nobody Wed Nov 5 08:11:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1504540690437800.5012951190024; Mon, 4 Sep 2017 08:58:10 -0700 (PDT) Received: from localhost ([::1]:54555 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotlI-0007L6-J5 for importer@patchew.org; Mon, 04 Sep 2017 11:58:08 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37828) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotXi-0004mN-1j for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:44:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dotXd-0001G7-E8 for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:44:06 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40202) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dotXd-0001FB-7z for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:44:01 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 4B811C29B5F4; Mon, 4 Sep 2017 15:44:00 +0000 (UTC) Received: from t460s.redhat.com (ovpn-116-139.ams2.redhat.com [10.36.116.139]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4CE66C14C4; Mon, 4 Sep 2017 15:43:58 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 4B811C29B5F4 Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=david@redhat.com From: David Hildenbrand To: qemu-devel@nongnu.org Date: Mon, 4 Sep 2017 17:43:11 +0200 Message-Id: <20170904154316.4148-15-david@redhat.com> In-Reply-To: <20170904154316.4148-1-david@redhat.com> References: <20170904154316.4148-1-david@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Mon, 04 Sep 2017 15:44:00 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 14/19] target/s390x: rename next_cpu_id to next_core_id X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, Eduardo Habkost , david@redhat.com, cohuck@redhat.com, Richard Henderson , Alexander Graf , borntraeger@de.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Adapt to the new term "core_id". While at it, fix the type and drop the initialization to 0 (which is superfluous). Signed-off-by: David Hildenbrand Reviewed-by: Matthew Rosato --- target/s390x/cpu-qom.h | 2 +- target/s390x/cpu.c | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/target/s390x/cpu-qom.h b/target/s390x/cpu-qom.h index c8fbf8ae03..21ea15e642 100644 --- a/target/s390x/cpu-qom.h +++ b/target/s390x/cpu-qom.h @@ -52,7 +52,7 @@ typedef struct S390CPUClass { bool is_migration_safe; const char *desc; =20 - int64_t next_cpu_id; + uint32_t next_core_id; =20 DeviceRealize parent_realize; void (*parent_reset)(CPUState *cpu); diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c index a2570bbc6b..105ff13034 100644 --- a/target/s390x/cpu.c +++ b/target/s390x/cpu.c @@ -197,7 +197,7 @@ static void s390_cpu_realizefn(DeviceState *dev, Error = **errp) } #else /* implicitly set for linux-user only */ - cpu->env.core_id =3D scc->next_cpu_id; + cpu->env.core_id =3D scc->next_core_id; #endif =20 if (cpu_exists(cpu->env.core_id)) { @@ -205,10 +205,10 @@ static void s390_cpu_realizefn(DeviceState *dev, Erro= r **errp) cpu->env.core_id); goto out; } - if (cpu->env.core_id !=3D scc->next_cpu_id) { + if (cpu->env.core_id !=3D scc->next_core_id) { error_setg(&err, "Unable to add CPU: %" PRIu32 - ", the next available nr is %" PRIi64, cpu->env.core_id, - scc->next_cpu_id); + ", the next available id is %" PRIu32, cpu->env.core_id, + scc->next_core_id); goto out; } =20 @@ -218,7 +218,7 @@ static void s390_cpu_realizefn(DeviceState *dev, Error = **errp) if (err !=3D NULL) { goto out; } - scc->next_cpu_id++; + scc->next_core_id++; =20 #if !defined(CONFIG_USER_ONLY) qemu_register_reset(s390_cpu_machine_reset_cb, cpu); @@ -463,7 +463,6 @@ static void s390_cpu_class_init(ObjectClass *oc, void *= data) CPUClass *cc =3D CPU_CLASS(scc); DeviceClass *dc =3D DEVICE_CLASS(oc); =20 - scc->next_cpu_id =3D 0; scc->parent_realize =3D dc->realize; dc->realize =3D s390_cpu_realizefn; dc->props =3D s390x_cpu_properties; --=20 2.13.5 From nobody Wed Nov 5 08:11:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 150454080914164.73474592525372; Mon, 4 Sep 2017 09:00:09 -0700 (PDT) Received: from localhost ([::1]:54561 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotnD-0000GX-Uk for importer@patchew.org; Mon, 04 Sep 2017 12:00:08 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37851) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotXk-0004n0-FH for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:44:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dotXf-0001JJ-Nk for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:44:08 -0400 Received: from mx1.redhat.com ([209.132.183.28]:11054) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dotXf-0001Hs-GA for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:44:03 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 81C32432CB; Mon, 4 Sep 2017 15:44:02 +0000 (UTC) Received: from t460s.redhat.com (ovpn-116-139.ams2.redhat.com [10.36.116.139]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9D882121E24; Mon, 4 Sep 2017 15:44:00 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 81C32432CB Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=david@redhat.com From: David Hildenbrand To: qemu-devel@nongnu.org Date: Mon, 4 Sep 2017 17:43:12 +0200 Message-Id: <20170904154316.4148-16-david@redhat.com> In-Reply-To: <20170904154316.4148-1-david@redhat.com> References: <20170904154316.4148-1-david@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Mon, 04 Sep 2017 15:44:02 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 15/19] s390x: print CPU definitions in sorted order X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, Eduardo Habkost , david@redhat.com, cohuck@redhat.com, Richard Henderson , Alexander Graf , borntraeger@de.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Other architectures provide nicely sorted lists, let's do it similarly on s390x. While at it, clean up the code we have to touch either way. Signed-off-by: David Hildenbrand --- target/s390x/cpu_models.c | 63 ++++++++++++++++++++++++++++++-------------= ---- 1 file changed, 41 insertions(+), 22 deletions(-) diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c index 8e20e7637b..092db34258 100644 --- a/target/s390x/cpu_models.c +++ b/target/s390x/cpu_models.c @@ -270,41 +270,60 @@ const S390CPUDef *s390_find_cpu_def(uint16_t type, ui= nt8_t gen, uint8_t ec_ga, return last_compatible; } =20 -struct S390PrintCpuListInfo { - FILE *f; - fprintf_function print; -}; - -static void print_cpu_model_list(ObjectClass *klass, void *opaque) +static void s390_print_cpu_model_list_entry(gpointer data, gpointer user_d= ata) { - struct S390PrintCpuListInfo *info =3D opaque; - S390CPUClass *scc =3D S390_CPU_CLASS(klass); - char *name =3D g_strdup(object_class_get_name(klass)); - const char *details =3D ""; - - if (scc->is_static) { - details =3D "(static, migration-safe)"; - } else if (scc->is_migration_safe) { - details =3D "(migration-safe)"; - } + CPUListState *s =3D user_data; + const S390CPUClass *scc =3D S390_CPU_CLASS((ObjectClass *)data); + char *name =3D g_strdup(object_class_get_name((ObjectClass *)data)); =20 /* strip off the -s390-cpu */ g_strrstr(name, "-" TYPE_S390_CPU)[0] =3D 0; - (*info->print)(info->f, "s390 %-15s %-35s %s\n", name, scc->desc, - details); + (*s->cpu_fprintf)(s->file, "s390 %-15s %-35s (%smigration-safe)\n", na= me, + scc->desc, scc->is_static ? "static, " : ""); g_free(name); } =20 +static gint s390_cpu_list_compare(gconstpointer a, gconstpointer b) +{ + const S390CPUClass *cc_a =3D S390_CPU_CLASS((ObjectClass *)a); + const S390CPUClass *cc_b =3D S390_CPU_CLASS((ObjectClass *)b); + const char *name_a =3D object_class_get_name((ObjectClass *)a); + const char *name_b =3D object_class_get_name((ObjectClass *)b); + + /* move qemu and host to the top of the list, qemu first, host second = */ + if (name_a[0] =3D=3D 'q') { + return -1; + } else if (name_b[0] =3D=3D 'q') { + return 1; + } else if (name_a[0] =3D=3D 'h') { + return -1; + } else if (name_b[0] =3D=3D 'h') { + return 1; + } + + /* keep the same order we have in our table (sorted by release date) */ + if (cc_a->cpu_def !=3D cc_b->cpu_def) { + return cc_a->cpu_def - cc_b->cpu_def; + } + + /* exact same definition - list base model first */ + return cc_a->is_static ? -1 : 1; +} + void s390_cpu_list(FILE *f, fprintf_function print) { - struct S390PrintCpuListInfo info =3D { - .f =3D f, - .print =3D print, + CPUListState s =3D { + .file =3D f, + .cpu_fprintf =3D print, }; S390FeatGroup group; S390Feat feat; + GSList *list; =20 - object_class_foreach(print_cpu_model_list, TYPE_S390_CPU, false, &info= ); + list =3D object_class_get_list(TYPE_S390_CPU, false); + list =3D g_slist_sort(list, s390_cpu_list_compare); + g_slist_foreach(list, s390_print_cpu_model_list_entry, &s); + g_slist_free(list); =20 (*print)(f, "\nRecognized feature flags:\n"); for (feat =3D 0; feat < S390_FEAT_MAX; feat++) { --=20 2.13.5 From nobody Wed Nov 5 08:11:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1504540379959511.065236876982; Mon, 4 Sep 2017 08:52:59 -0700 (PDT) Received: from localhost ([::1]:54535 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotgI-0003Mr-W3 for importer@patchew.org; Mon, 04 Sep 2017 11:52:59 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37892) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotXo-0004qW-AR for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:44:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dotXj-0001NF-N6 for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:44:12 -0400 Received: from mx1.redhat.com ([209.132.183.28]:52608) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dotXj-0001Md-Gn for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:44:07 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7978E90E4D; Mon, 4 Sep 2017 15:44:06 +0000 (UTC) Received: from t460s.redhat.com (ovpn-116-139.ams2.redhat.com [10.36.116.139]) by smtp.corp.redhat.com (Postfix) with ESMTP id D665EBF672; Mon, 4 Sep 2017 15:44:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 7978E90E4D Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=david@redhat.com From: David Hildenbrand To: qemu-devel@nongnu.org Date: Mon, 4 Sep 2017 17:43:13 +0200 Message-Id: <20170904154316.4148-17-david@redhat.com> In-Reply-To: <20170904154316.4148-1-david@redhat.com> References: <20170904154316.4148-1-david@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Mon, 04 Sep 2017 15:44:06 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 16/19] s390x: allow cpu hotplug via device_add X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, Eduardo Habkost , david@redhat.com, cohuck@redhat.com, Richard Henderson , Alexander Graf , borntraeger@de.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" E.g. the following now works: device_add host-s390-cpu,id=3Dcpu1,core-id=3D1 The system will perform the same checks as when using cpu_add: - If the core_id is already in use - If the next sequential core_id isn't used - If core-id >=3D max_cpu is specified In addition, mixed CPU models are checked. E.g. if starting with -cpu host and trying to hotplug "qemu-s390-cpu": "Mixed CPU models are not supported on s390x." Signed-off-by: David Hildenbrand Reviewed-by: Matthew Rosato --- target/s390x/cpu.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c index 105ff13034..be20c2fb0f 100644 --- a/target/s390x/cpu.c +++ b/target/s390x/cpu.c @@ -466,6 +466,7 @@ static void s390_cpu_class_init(ObjectClass *oc, void *= data) scc->parent_realize =3D dc->realize; dc->realize =3D s390_cpu_realizefn; dc->props =3D s390x_cpu_properties; + dc->user_creatable =3D true; =20 scc->parent_reset =3D cc->reset; #if !defined(CONFIG_USER_ONLY) --=20 2.13.5 From nobody Wed Nov 5 08:11:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1504540805494630.4699035912748; Mon, 4 Sep 2017 09:00:05 -0700 (PDT) Received: from localhost ([::1]:54560 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotnA-0000E5-8c for importer@patchew.org; Mon, 04 Sep 2017 12:00:04 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37908) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotXq-0004qo-Jt for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:44:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dotXm-0001OX-4R for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:44:14 -0400 Received: from mx1.redhat.com ([209.132.183.28]:64372) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dotXl-0001OB-VV for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:44:10 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 0464170D9D; Mon, 4 Sep 2017 15:44:09 +0000 (UTC) Received: from t460s.redhat.com (ovpn-116-139.ams2.redhat.com [10.36.116.139]) by smtp.corp.redhat.com (Postfix) with ESMTP id D090611CC32; Mon, 4 Sep 2017 15:44:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 0464170D9D Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=david@redhat.com From: David Hildenbrand To: qemu-devel@nongnu.org Date: Mon, 4 Sep 2017 17:43:14 +0200 Message-Id: <20170904154316.4148-18-david@redhat.com> In-Reply-To: <20170904154316.4148-1-david@redhat.com> References: <20170904154316.4148-1-david@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Mon, 04 Sep 2017 15:44:09 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 17/19] s390x: CPU hot unplug via device_del cannot work X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, Eduardo Habkost , david@redhat.com, cohuck@redhat.com, Richard Henderson , Alexander Graf , borntraeger@de.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" device_del on a CPU will currently do nothing. Let's emmit an error telling that this is will never work (there is no architecture support on s390x). Error message copied from ppc. (qemu) device_del cpu1 device_del cpu1 CPU hot unplug not supported on this machine Signed-off-by: David Hildenbrand Reviewed-by: Matthew Rosato --- hw/s390x/s390-virtio-ccw.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index 22a8a1b45d..dd149567bb 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -338,6 +338,15 @@ static void s390_machine_device_plug(HotplugHandler *h= otplug_dev, } } =20 +static void s390_machine_device_unplug_request(HotplugHandler *hotplug_dev, + DeviceState *dev, Error **e= rrp) +{ + if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { + error_setg(errp, "CPU hot unplug not supported on this machine"); + return; + } +} + static HotplugHandler *s390_get_hotplug_handler(MachineState *machine, DeviceState *dev) { @@ -387,6 +396,7 @@ static void ccw_machine_class_init(ObjectClass *oc, voi= d *data) mc->max_cpus =3D 248; mc->get_hotplug_handler =3D s390_get_hotplug_handler; hc->plug =3D s390_machine_device_plug; + hc->unplug_request =3D s390_machine_device_unplug_request; nc->nmi_monitor_handler =3D s390_nmi; } =20 --=20 2.13.5 From nobody Wed Nov 5 08:11:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1504540976326259.9002436813274; Mon, 4 Sep 2017 09:02:56 -0700 (PDT) Received: from localhost ([::1]:54596 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotpu-0002nQ-Q3 for importer@patchew.org; Mon, 04 Sep 2017 12:02:54 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37949) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotXt-0004tT-Ey for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:44:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dotXo-0001Pr-IX for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:44:17 -0400 Received: from mx1.redhat.com ([209.132.183.28]:37106) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dotXo-0001PR-AD for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:44:12 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 58F124D4C6; Mon, 4 Sep 2017 15:44:11 +0000 (UTC) Received: from t460s.redhat.com (ovpn-116-139.ams2.redhat.com [10.36.116.139]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5B89E11CC32; Mon, 4 Sep 2017 15:44:09 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 58F124D4C6 Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=david@redhat.com From: David Hildenbrand To: qemu-devel@nongnu.org Date: Mon, 4 Sep 2017 17:43:15 +0200 Message-Id: <20170904154316.4148-19-david@redhat.com> In-Reply-To: <20170904154316.4148-1-david@redhat.com> References: <20170904154316.4148-1-david@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Mon, 04 Sep 2017 15:44:11 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 18/19] s390x: implement query-hotpluggable-cpus X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, Eduardo Habkost , david@redhat.com, cohuck@redhat.com, Richard Henderson , Alexander Graf , borntraeger@de.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" CPU hotplug is only possible on a per core basis on s390x. As we now have ms->possible_cpus, we can get rid of the global variable cpu_states. Signed-off-by: David Hildenbrand --- hw/s390x/s390-virtio-ccw.c | 90 +++++++++++++++++++++++++++++++++---------= ---- qapi-schema.json | 16 +++++++++ 2 files changed, 81 insertions(+), 25 deletions(-) diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index dd149567bb..458615252c 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -36,22 +36,40 @@ #include "qapi/qmp/qerror.h" #include "hw/nmi.h" =20 -static S390CPU **cpu_states; +static CPUArchId *s390_find_cpu_slot(MachineState *ms, uint32_t core_id, + int *idx) +{ + if (core_id >=3D ms->possible_cpus->len) { + return NULL; + } + /* core_id corresponds to the index */ + if (idx) { + *idx =3D core_id; + } + return &ms->possible_cpus->cpus[core_id]; +} =20 S390CPU *s390_cpu_addr2state(uint16_t cpu_addr) { - if (cpu_addr >=3D max_cpus) { - return NULL; + static MachineState *ms; + CPUArchId *found; + + if (!ms) { + ms =3D MACHINE(qdev_get_machine()); } =20 - /* Fast lookup via CPU ID */ - return cpu_states[cpu_addr]; + /* CPU address corresponds to core_id */ + found =3D s390_find_cpu_slot(ms, cpu_addr, NULL); + if (!found) { + return NULL; + } + return S390_CPU(found->cpu); } =20 static void s390_init_cpus(MachineState *machine) { + MachineClass *mc =3D MACHINE_GET_CLASS(machine); int i; - gchar *name; =20 if (machine->cpu_model =3D=3D NULL) { machine->cpu_model =3D s390_default_cpu_model_name(); @@ -63,17 +81,8 @@ static void s390_init_cpus(MachineState *machine) exit(1); } =20 - cpu_states =3D g_new0(S390CPU *, max_cpus); - - for (i =3D 0; i < max_cpus; i++) { - name =3D g_strdup_printf("cpu[%i]", i); - object_property_add_link(OBJECT(machine), name, TYPE_S390_CPU, - (Object **) &cpu_states[i], - object_property_allow_set_link, - OBJ_PROP_LINK_UNREF_ON_RELEASE, - &error_abort); - g_free(name); - } + /* initialize possible_cpus */ + mc->possible_cpu_arch_ids(machine); =20 for (i =3D 0; i < smp_cpus; i++) { s390x_new_cpu(machine->cpu_model, i, &error_fatal); @@ -304,17 +313,14 @@ static void ccw_init(MachineState *machine) register_savevm_live(NULL, "todclock", 0, 1, &savevm_gtod, NULL); } =20 -static void s390_cpu_plug(HotplugHandler *hotplug_dev, - DeviceState *dev, Error **errp) +static void s390_cpu_plug(HotplugHandler *hotplug_dev, DeviceState *dev, + Error **errp) { - gchar *name; + MachineState *ms =3D MACHINE(hotplug_dev); S390CPU *cpu =3D S390_CPU(dev); - CPUState *cs =3D CPU(dev); =20 - name =3D g_strdup_printf("cpu[%i]", cpu->env.core_id); - object_property_set_link(OBJECT(hotplug_dev), OBJECT(cs), name, - errp); - g_free(name); + g_assert(!ms->possible_cpus->cpus[cpu->env.core_id].cpu); + ms->possible_cpus->cpus[cpu->env.core_id].cpu =3D OBJECT(dev); } =20 static void s390_machine_reset(void) @@ -347,6 +353,37 @@ static void s390_machine_device_unplug_request(Hotplug= Handler *hotplug_dev, } } =20 +static CpuInstanceProperties s390_cpu_index_to_props(MachineState *machine, + unsigned cpu_index) +{ + CPUArchId *slot =3D s390_find_cpu_slot(machine, cpu_index, NULL); + + assert(slot); + return slot->props; +} + +static const CPUArchIdList *s390_possible_cpu_arch_ids(MachineState *ms) +{ + int i; + + if (ms->possible_cpus) { + g_assert(ms->possible_cpus && ms->possible_cpus->len =3D=3D max_cp= us); + return ms->possible_cpus; + } + + ms->possible_cpus =3D g_malloc0(sizeof(CPUArchIdList) + + sizeof(CPUArchId) * max_cpus); + ms->possible_cpus->len =3D max_cpus; + for (i =3D 0; i < ms->possible_cpus->len; i++) { + ms->possible_cpus->cpus[i].vcpus_count =3D 1; + ms->possible_cpus->cpus[i].arch_id =3D i; + ms->possible_cpus->cpus[i].props.has_core_id =3D true; + ms->possible_cpus->cpus[i].props.core_id =3D i; + } + + return ms->possible_cpus; +} + static HotplugHandler *s390_get_hotplug_handler(MachineState *machine, DeviceState *dev) { @@ -394,7 +431,10 @@ static void ccw_machine_class_init(ObjectClass *oc, vo= id *data) mc->no_sdcard =3D 1; mc->use_sclp =3D 1; mc->max_cpus =3D 248; + mc->has_hotpluggable_cpus =3D true; mc->get_hotplug_handler =3D s390_get_hotplug_handler; + mc->cpu_index_to_instance_props =3D s390_cpu_index_to_props; + mc->possible_cpu_arch_ids =3D s390_possible_cpu_arch_ids; hc->plug =3D s390_machine_device_plug; hc->unplug_request =3D s390_machine_device_unplug_request; nc->nmi_monitor_handler =3D s390_nmi; diff --git a/qapi-schema.json b/qapi-schema.json index f3af2cb851..79e9f85404 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -3121,6 +3121,22 @@ # } # ]} # +# For s390x-virtio-ccw machine type started with -smp 1,maxcpus=3D2 -cpu q= emu +# (Since: 2.11): +# +# -> { "execute": "query-hotpluggable-cpus" } +# <- {"return": [ +# { +# "type": "qemu-s390-cpu", "vcpus-count": 1, +# "props": { "core-id": 1 } +# }, +# { +# "qom-path": "/machine/unattached/device[0]", +# "type": "qemu-s390-cpu", "vcpus-count": 1, +# "props": { "core-id": 0 } +# } +# ]} +# ## { 'command': 'query-hotpluggable-cpus', 'returns': ['HotpluggableCPU'] } =20 --=20 2.13.5 From nobody Wed Nov 5 08:11:14 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1504539982802784.3872189884573; Mon, 4 Sep 2017 08:46:22 -0700 (PDT) Received: from localhost ([::1]:54507 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotZt-0006OY-Ir for importer@patchew.org; Mon, 04 Sep 2017 11:46:21 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37991) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dotXx-0004xg-RT for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:44:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dotXs-0001Sp-VQ for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:44:21 -0400 Received: from mx1.redhat.com ([209.132.183.28]:54698) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dotXs-0001S5-Nj for qemu-devel@nongnu.org; Mon, 04 Sep 2017 11:44:16 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B829BB0AA7; Mon, 4 Sep 2017 15:44:15 +0000 (UTC) Received: from t460s.redhat.com (ovpn-116-139.ams2.redhat.com [10.36.116.139]) by smtp.corp.redhat.com (Postfix) with ESMTP id ACC8FBF672; Mon, 4 Sep 2017 15:44:11 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com B829BB0AA7 Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=david@redhat.com From: David Hildenbrand To: qemu-devel@nongnu.org Date: Mon, 4 Sep 2017 17:43:16 +0200 Message-Id: <20170904154316.4148-20-david@redhat.com> In-Reply-To: <20170904154316.4148-1-david@redhat.com> References: <20170904154316.4148-1-david@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Mon, 04 Sep 2017 15:44:15 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 19/19] s390x: get rid of cpu_s390x_create() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thuth@redhat.com, Eduardo Habkost , david@redhat.com, cohuck@redhat.com, Richard Henderson , Alexander Graf , borntraeger@de.ibm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Now that there is only one user of cpu_s390x_create() left, make cpu creation looks like on x86. - Perform the model/properties split and checks in s390_init_cpus() - Parse features only once without having to remember if already parsed - Pass only the typename to s390x_new_cpu() - Use the typename of an existing CPU for hotplug via cpu-add Signed-off-by: David Hildenbrand --- hw/s390x/s390-virtio-ccw.c | 29 +++++++++++++++++++++++++++-- target/s390x/cpu.h | 2 +- target/s390x/helper.c | 45 ++----------------------------------------= --- target/s390x/internal.h | 1 - 4 files changed, 30 insertions(+), 47 deletions(-) diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index 458615252c..8bd063377c 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -69,6 +69,10 @@ S390CPU *s390_cpu_addr2state(uint16_t cpu_addr) static void s390_init_cpus(MachineState *machine) { MachineClass *mc =3D MACHINE_GET_CLASS(machine); + const char *typename; + gchar **model_pieces; + ObjectClass *oc; + CPUClass *cc; int i; =20 if (machine->cpu_model =3D=3D NULL) { @@ -84,8 +88,25 @@ static void s390_init_cpus(MachineState *machine) /* initialize possible_cpus */ mc->possible_cpu_arch_ids(machine); =20 + model_pieces =3D g_strsplit(machine->cpu_model, ",", 2); + if (!model_pieces[0]) { + error_report("Invalid/empty CPU model name"); + exit(1); + } + + oc =3D cpu_class_by_name(TYPE_S390_CPU, model_pieces[0]); + if (!oc) { + error_report("Unable to find CPU definition: %s", model_pieces[0]); + exit(1); + } + typename =3D object_class_get_name(oc); + cc =3D CPU_CLASS(oc); + /* after parsing, properties will be applied to all *typename* instanc= es */ + cc->parse_features(typename, model_pieces[1], &error_fatal); + g_strfreev(model_pieces); + for (i =3D 0; i < smp_cpus; i++) { - s390x_new_cpu(machine->cpu_model, i, &error_fatal); + s390x_new_cpu(typename, i, &error_fatal); } } =20 @@ -396,8 +417,12 @@ static HotplugHandler *s390_get_hotplug_handler(Machin= eState *machine, static void s390_hot_add_cpu(const int64_t id, Error **errp) { MachineState *machine =3D MACHINE(qdev_get_machine()); + ObjectClass *oc; + + g_assert(machine->possible_cpus->cpus[0].cpu); + oc =3D OBJECT_CLASS(CPU_GET_CLASS(machine->possible_cpus->cpus[0].cpu)= ); =20 - s390x_new_cpu(machine->cpu_model, id, errp); + s390x_new_cpu(object_class_get_name(oc), id, errp); } =20 static void s390_nmi(NMIState *n, int cpu_index, Error **errp) diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h index 878b6cc83e..4c639240de 100644 --- a/target/s390x/cpu.h +++ b/target/s390x/cpu.h @@ -690,7 +690,7 @@ const char *s390_default_cpu_model_name(void); =20 /* helper.c */ #define cpu_init(cpu_model) cpu_generic_init(TYPE_S390_CPU, cpu_model) -S390CPU *s390x_new_cpu(const char *cpu_model, uint32_t core_id, Error **er= rp); +S390CPU *s390x_new_cpu(const char *typename, uint32_t core_id, Error **err= p); /* you can call this signal handler from your SIGBUS and SIGSEGV signal handlers to inform the virtual CPU of exceptions. non zero is returned if the signal was handled by the virtual CPU. */ diff --git a/target/s390x/helper.c b/target/s390x/helper.c index dfb24ef5b2..97adbcc86d 100644 --- a/target/s390x/helper.c +++ b/target/s390x/helper.c @@ -68,52 +68,11 @@ void s390x_cpu_timer(void *opaque) } #endif =20 -S390CPU *cpu_s390x_create(const char *cpu_model, Error **errp) +S390CPU *s390x_new_cpu(const char *typename, uint32_t core_id, Error **err= p) { - static bool features_parsed; - char *name, *features; - const char *typename; - ObjectClass *oc; - CPUClass *cc; - - name =3D g_strdup(cpu_model); - features =3D strchr(name, ','); - if (features) { - features[0] =3D 0; - features++; - } - - oc =3D cpu_class_by_name(TYPE_S390_CPU, name); - if (!oc) { - error_setg(errp, "Unknown CPU definition \'%s\'", name); - g_free(name); - return NULL; - } - typename =3D object_class_get_name(oc); - - if (!features_parsed) { - features_parsed =3D true; - cc =3D CPU_CLASS(oc); - cc->parse_features(typename, features, errp); - } - g_free(name); - - if (*errp) { - return NULL; - } - return S390_CPU(CPU(object_new(typename))); -} - -S390CPU *s390x_new_cpu(const char *cpu_model, uint32_t core_id, Error **er= rp) -{ - S390CPU *cpu; + S390CPU *cpu =3D S390_CPU(object_new(typename)); Error *err =3D NULL; =20 - cpu =3D cpu_s390x_create(cpu_model, &err); - if (err !=3D NULL) { - goto out; - } - object_property_set_int(OBJECT(cpu), core_id, "core-id", &err); if (err !=3D NULL) { goto out; diff --git a/target/s390x/internal.h b/target/s390x/internal.h index b4d3583b24..bc8f83129a 100644 --- a/target/s390x/internal.h +++ b/target/s390x/internal.h @@ -337,7 +337,6 @@ uint64_t get_psw_mask(CPUS390XState *env); void s390_cpu_recompute_watchpoints(CPUState *cs); void s390x_tod_timer(void *opaque); void s390x_cpu_timer(void *opaque); -S390CPU *cpu_s390x_create(const char *cpu_model, Error **errp); void do_restart_interrupt(CPUS390XState *env); #ifndef CONFIG_USER_ONLY LowCore *cpu_map_lowcore(CPUS390XState *env); --=20 2.13.5