From patchwork Mon Feb 24 12:04:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shalini Chellathurai Saroja X-Patchwork-Id: 13987951 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 85247C021A4 for ; Mon, 24 Feb 2025 12:06:52 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tmXDI-00066B-ET; Mon, 24 Feb 2025 07:05:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tmXDD-00064k-Tl; Mon, 24 Feb 2025 07:05:28 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tmXDA-000309-3f; Mon, 24 Feb 2025 07:05:26 -0500 Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51O2D9lA020157; Mon, 24 Feb 2025 12:05:18 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:message-id:mime-version :subject:to; s=pp1; bh=V973l+jL/IeCkEmsxHvsA0NfAna1vje/9/kbNpJsd gw=; b=ozBPZD+8FVLzT+fgypfo/L+1A59Sq+31ozRS851a82Cf39cU82ze5tb0M IxqmlfvVugAGrRE1yCuCBqKbEMQHPVy0YFQpfJQR5dRbIBV8zYNVAntNAJk31yK9 x1TCKLfDSQ4T5WJqeHO4Y8nFLlikLeEUh/DSzKoEv+o5Wkcun+E3L58Gl5XY7BLq e9p2dSfpe96bD1SubK+a5rDZB+ZJFoxYCQS2vWkty05xMSCeuCmd/GnD9KiLY2uX F1eX3BDe80WGsM0zGZK/7wANBGvkdpivCY+7mZaXuRfb2XbYBq80tCod/KW0DzCB SCyzvErHCG5DgKTXEMgF1Kp0GoJVA== Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 450cta2sty-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 24 Feb 2025 12:05:17 +0000 (GMT) Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 51O9YljI002588; Mon, 24 Feb 2025 12:05:17 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 44yu4jepss-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 24 Feb 2025 12:05:16 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 51OC5DX619727082 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 24 Feb 2025 12:05:13 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 7F26520049; Mon, 24 Feb 2025 12:05:13 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5F49820040; Mon, 24 Feb 2025 12:05:13 +0000 (GMT) Received: from a46lp68.lnxne.boe (unknown [9.152.108.100]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 24 Feb 2025 12:05:13 +0000 (GMT) From: Shalini Chellathurai Saroja To: qemu-s390x mailing list , Thomas Huth Cc: qemu-devel mailing list , Nina Schoetterl-Glausch , Hendrik Brueckner , Shalini Chellathurai Saroja Subject: [PATCH qemu v2 1/3] hw/s390x: add CPI identifiers to QOM Date: Mon, 24 Feb 2025 13:04:47 +0100 Message-ID: <20250224120449.1764114-1-shalini@linux.ibm.com> X-Mailer: git-send-email 2.47.0 MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: gDdrKPdj9zwJA0OsSTOWzUvCbj9rP5o7 X-Proofpoint-ORIG-GUID: gDdrKPdj9zwJA0OsSTOWzUvCbj9rP5o7 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-24_05,2025-02-24_02,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 mlxlogscore=999 lowpriorityscore=0 mlxscore=0 impostorscore=0 suspectscore=0 adultscore=0 spamscore=0 priorityscore=1501 clxscore=1011 phishscore=0 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2502240088 Received-SPF: pass client-ip=148.163.156.1; envelope-from=shalini@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Add Control-Program Identification (CPI) to the QEMU Object Model (QOM). The CPI identifiers provide information about the guest operating system. The CPI identifiers are: system type, system name, system level and sysplex name. The system type provides the OS type of the guest (e.g. LINUX). The system name provides the name of the guest (e.g. TESTVM). The system level provides the distribution and kernel version of the guest OS (e.g. 0x50e00). The sysplex name provides the sysplex name of the guest (e.g. SYSPLEX). Signed-off-by: Shalini Chellathurai Saroja --- hw/s390x/s390-virtio-ccw.c | 29 +++++++++++++++++++++++++++++ include/hw/s390x/s390-virtio-ccw.h | 8 ++++++++ qapi/machine.json | 24 ++++++++++++++++++++++++ 3 files changed, 61 insertions(+) diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index 51ae0c133d..13ea8db1b0 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -50,6 +50,7 @@ #include "hw/s390x/virtio-ccw-md.h" #include "system/replay.h" #include CONFIG_DEVICES +#include "qapi/qapi-visit-machine.h" static Error *pv_mig_blocker; @@ -803,6 +804,26 @@ static void machine_set_loadparm(Object *obj, Visitor *v, s390_ipl_fmt_loadparm(ms->loadparm, val, errp); } +static void machine_get_control_program_id(Object *obj, Visitor *v, + const char *name, void *opaque, + Error **errp) +{ + S390CcwMachineState *ms = S390_CCW_MACHINE(obj); + S390ControlProgramId *cpi; + cpi = &(S390ControlProgramId){ + .system_type = g_strndup((char *) ms->cpi.system_type, + sizeof(ms->cpi.system_type)), + .system_name = g_strndup((char *) ms->cpi.system_name, + sizeof(ms->cpi.system_name)), + .system_level = g_strdup_printf("0x%lx", ms->cpi.system_level), + .sysplex_name = g_strndup((char *) ms->cpi.sysplex_name, + sizeof(ms->cpi.sysplex_name)), + .timestamp = ms->cpi.timestamp + }; + + visit_type_S390ControlProgramId(v, name, &cpi, &error_abort); +} + static void ccw_machine_class_init(ObjectClass *oc, void *data) { MachineClass *mc = MACHINE_CLASS(oc); @@ -854,6 +875,14 @@ static void ccw_machine_class_init(ObjectClass *oc, void *data) "Up to 8 chars in set of [A-Za-z0-9. ] (lower case chars converted" " to upper case) to pass to machine loader, boot manager," " and guest kernel"); + object_class_property_add(oc, "s390-control-program-id", + "S390ControlProgramId", + machine_get_control_program_id, + NULL, NULL, NULL); + object_class_property_set_description(oc, "s390-control-program-id", + "Control-progam identifiers provide data about the guest " + "operating system"); + } static inline void s390_machine_initfn(Object *obj) diff --git a/include/hw/s390x/s390-virtio-ccw.h b/include/hw/s390x/s390-virtio-ccw.h index 686d9497d2..6872f7a176 100644 --- a/include/hw/s390x/s390-virtio-ccw.h +++ b/include/hw/s390x/s390-virtio-ccw.h @@ -19,6 +19,13 @@ OBJECT_DECLARE_TYPE(S390CcwMachineState, S390CcwMachineClass, S390_CCW_MACHINE) +typedef struct ControlProgramId { + uint8_t system_type[8]; + uint8_t system_name[8]; + uint64_t system_level; + uint8_t sysplex_name[8]; + uint64_t timestamp; +} QEMU_PACKED ControlProgramId; struct S390CcwMachineState { /*< private >*/ @@ -33,6 +40,7 @@ struct S390CcwMachineState { uint64_t max_pagesize; SCLPDevice *sclp; + ControlProgramId cpi; }; static inline uint64_t s390_get_memory_limit(S390CcwMachineState *s390ms) diff --git a/qapi/machine.json b/qapi/machine.json index a6b8795b09..c6cbad87e1 100644 --- a/qapi/machine.json +++ b/qapi/machine.json @@ -1898,3 +1898,27 @@ { 'command': 'x-query-interrupt-controllers', 'returns': 'HumanReadableText', 'features': [ 'unstable' ]} + +## +# @S390ControlProgramId: +# +# Control-program identifiers provide data about Linux instance. +# +# @system-type: operating system of Linux instance +# +# @system-name: system name of Linux instance +# +# @system-level: distribution and kernel version of Linux instance +# +# @sysplex-name: sysplex name of Linux instance +# +# @timestamp: latest update of CPI data +# +# Since: 9.2 +## +{ 'struct': 'S390ControlProgramId', 'data': { + 'system-type': 'str', + 'system-name': 'str', + 'system-level': 'str', + 'sysplex-name': 'str', + 'timestamp': 'uint64' } } From patchwork Mon Feb 24 12:04:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shalini Chellathurai Saroja X-Patchwork-Id: 13987950 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 8D07AC021B5 for ; Mon, 24 Feb 2025 12:06:52 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tmXDI-00066R-IR; Mon, 24 Feb 2025 07:05:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tmXDF-000655-4P; Mon, 24 Feb 2025 07:05:29 -0500 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tmXDA-00030e-7L; Mon, 24 Feb 2025 07:05:28 -0500 Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51O2DYmo013713; Mon, 24 Feb 2025 12:05:22 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=IZ9m4h+k3Y0KIvsL+ srVOnlsrghDUcpGtkD4CFcD8j8=; b=O605mz4IqDI5GplQnGGnPfK/5PyUScLkV IQrNgfVG7OivKCDzhdERwmnZ9z9SlIffF9A6EQUZXaev08xUKbmkV0cuyJQ0sfKq 34Em5/e5tDZa8y1Eoc5ei6J3xGZMF3epOL8ZIveGpM93AMxz6FhK/I/I8qIqzNjT bKxUHf4RucL2Y2HGC4ZtfWbdcumx/JIl5e9tZ7A4Hf7JRK+GfsmlKYH4TyyXTOA5 CDfsWaRV/Ag/OT87MOqSkq8amFQDNTpfO73wdlgfEs01TvepP5N74jWZd7ImJfMZ lIPyuXIwdYsob2OMpuE5XfpaPR+O8x6/ONZT3hoArbMlBrjMRVWpQ== Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 450fm026np-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 24 Feb 2025 12:05:22 +0000 (GMT) Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 51O9UFuS002578; Mon, 24 Feb 2025 12:05:21 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 44yu4jept7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 24 Feb 2025 12:05:21 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 51OC5IWQ18416008 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 24 Feb 2025 12:05:18 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 47C3A2004B; Mon, 24 Feb 2025 12:05:18 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 1F93920049; Mon, 24 Feb 2025 12:05:18 +0000 (GMT) Received: from a46lp68.lnxne.boe (unknown [9.152.108.100]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 24 Feb 2025 12:05:18 +0000 (GMT) From: Shalini Chellathurai Saroja To: qemu-s390x mailing list , Thomas Huth Cc: qemu-devel mailing list , Nina Schoetterl-Glausch , Hendrik Brueckner , Shalini Chellathurai Saroja Subject: [PATCH qemu v2 2/3] hw/s390x: add SCLP event type CPI Date: Mon, 24 Feb 2025 13:04:48 +0100 Message-ID: <20250224120449.1764114-2-shalini@linux.ibm.com> X-Mailer: git-send-email 2.47.0 In-Reply-To: <20250224120449.1764114-1-shalini@linux.ibm.com> References: <20250224120449.1764114-1-shalini@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: c8Zll3K7-vK73nDrKSexj6nrLiCpAEUr X-Proofpoint-GUID: c8Zll3K7-vK73nDrKSexj6nrLiCpAEUr X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-24_05,2025-02-24_02,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 adultscore=0 lowpriorityscore=0 suspectscore=0 spamscore=0 priorityscore=1501 mlxlogscore=999 impostorscore=0 malwarescore=0 bulkscore=0 clxscore=1011 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2502240088 Received-SPF: pass client-ip=148.163.158.5; envelope-from=shalini@linux.ibm.com; helo=mx0b-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Implement the SCLP event type Control-Program Identification (CPI) in QEMU. This event is used to send CPI identifiers, which provide information about the guest OS to the host. Save the information obtained from the SCLP CPI event to the QOM along with the timestamp in which the data was received. Example: virsh # qemu-monitor-command vm --pretty '{ "execute":"qom-get","arguments": { "path": "/machine", "property": "s390-control-program_id"}}' { "return": { "timestamp": 1711620874948254000, "system-level": "0x50e00", "sysplex-name": "SYSPLEX ", "system-name": "TESTVM ", "system-type": "LINUX " }, "id": "libvirt-15" } Signed-off-by: Shalini Chellathurai Saroja Reviewed-by: Nina Schoetterl-Glausch --- hw/s390x/event-facility.c | 12 +++- hw/s390x/meson.build | 1 + hw/s390x/sclpcpi.c | 105 ++++++++++++++++++++++++++++++ include/hw/s390x/event-facility.h | 3 + 4 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 hw/s390x/sclpcpi.c diff --git a/hw/s390x/event-facility.c b/hw/s390x/event-facility.c index 2b0332c20e..c0fb6e098c 100644 --- a/hw/s390x/event-facility.c +++ b/hw/s390x/event-facility.c @@ -39,7 +39,7 @@ typedef struct SCLPEventsBus { struct SCLPEventFacility { SysBusDevice parent_obj; SCLPEventsBus sbus; - SCLPEvent quiesce, cpu_hotplug; + SCLPEvent quiesce, cpu_hotplug, cpi; /* guest's receive mask */ union { uint32_t receive_mask_pieces[2]; @@ -436,6 +436,10 @@ static void init_event_facility(Object *obj) object_initialize_child(obj, TYPE_SCLP_CPU_HOTPLUG, &event_facility->cpu_hotplug, TYPE_SCLP_CPU_HOTPLUG); + + object_initialize_child(obj, TYPE_SCLP_CPI, + &event_facility->cpi, + TYPE_SCLP_CPI); } static void realize_event_facility(DeviceState *dev, Error **errp) @@ -451,6 +455,12 @@ static void realize_event_facility(DeviceState *dev, Error **errp) qdev_unrealize(DEVICE(&event_facility->quiesce)); return; } + if (!qdev_realize(DEVICE(&event_facility->cpi), + BUS(&event_facility->sbus), errp)) { + qdev_unrealize(DEVICE(&event_facility->quiesce)); + qdev_unrealize(DEVICE(&event_facility->cpu_hotplug)); + return; + } } static void reset_event_facility(DeviceState *dev) diff --git a/hw/s390x/meson.build b/hw/s390x/meson.build index 3bbebfd817..eb7950489c 100644 --- a/hw/s390x/meson.build +++ b/hw/s390x/meson.build @@ -13,6 +13,7 @@ s390x_ss.add(files( 's390-skeys.c', 's390-stattrib.c', 'sclp.c', + 'sclpcpi.c', 'sclpcpu.c', 'sclpquiesce.c', 'tod.c', diff --git a/hw/s390x/sclpcpi.c b/hw/s390x/sclpcpi.c new file mode 100644 index 0000000000..f2830d2d57 --- /dev/null +++ b/hw/s390x/sclpcpi.c @@ -0,0 +1,105 @@ +/* + * SCLP event type 11 - Control-Program Identification(CPI): + * CPI is used to send program identifiers from the control-program to the + * SCLP. The program identifiers provide data about the guest instance. It + * is not sent by the SCLP. + * + * The program identifiers are system type, system name, sysplex name and + * system level. The system type, system name, and sysplex name use EBCDIC + * ucharacters from this set: capital A-Z, 0-9, $, @, #, and blank. The + * system level is a hex value. + * + * Copyright IBM, Corp. 2024 + * + * Authors: + * Shalini Chellathurai Saroja + * + * This work is licensed under the terms of the GNU GPL, version 2 or (at your + * option) any later version. See the COPYING file in the top-level directory. + * + */ + +#include "qemu/osdep.h" +#include "qemu/timer.h" +#include "hw/s390x/sclp.h" +#include "hw/s390x/event-facility.h" +#include "hw/s390x/ebcdic.h" +#include "hw/s390x/s390-virtio-ccw.h" + +typedef struct Data { + uint8_t id_format; + uint8_t reserved0; + uint8_t system_type[8]; + uint64_t reserved1; + uint8_t system_name[8]; + uint64_t reserved2; + uint64_t system_level; + uint64_t reserved3; + uint8_t sysplex_name[8]; + uint8_t reserved4[16]; +} QEMU_PACKED Data; + +typedef struct ControlProgramIdMsg { + EventBufferHeader ebh; + Data data; +} QEMU_PACKED ControlProgramIdMsg; + +static bool can_handle_event(uint8_t type) +{ + return type == SCLP_EVENT_CPI; +} + +static sccb_mask_t send_mask(void) +{ + return 0; +} + +/* Enable SCLP to accept buffers of event type CPI from the control-program. */ +static sccb_mask_t receive_mask(void) +{ + return SCLP_EVENT_MASK_CPI; +} + +static int write_event_data(SCLPEvent *event, EventBufferHeader *evt_buf_hdr) +{ + ControlProgramIdMsg *cpi = container_of(evt_buf_hdr, ControlProgramIdMsg, + ebh); + S390CcwMachineState *ms = S390_CCW_MACHINE(qdev_get_machine()); + + ascii_put(ms->cpi.system_type, (char *)cpi->data.system_type, 8); + ascii_put(ms->cpi.system_name, (char *)cpi->data.system_name, 8); + ascii_put(ms->cpi.sysplex_name, (char *)cpi->data.sysplex_name, 8); + ms->cpi.system_level = be64_to_cpu(cpi->data.system_level); + ms->cpi.timestamp = qemu_clock_get_ns(QEMU_CLOCK_HOST); + + cpi->ebh.flags = SCLP_EVENT_BUFFER_ACCEPTED; + return SCLP_RC_NORMAL_COMPLETION; +} + +static void cpi_class_init(ObjectClass *klass, void *data) +{ + SCLPEventClass *sclp_cpi = SCLP_EVENT_CLASS(klass); + DeviceClass *dc = DEVICE_CLASS(klass); + + sclp_cpi->can_handle_event = can_handle_event; + sclp_cpi->get_send_mask = send_mask; + sclp_cpi->get_receive_mask = receive_mask; + sclp_cpi->write_event_data = write_event_data; + dc->user_creatable = false; +} + +static const TypeInfo sclp_cpi_info = { + .name = TYPE_SCLP_CPI, + .parent = TYPE_SCLP_EVENT, + .instance_size = sizeof(SCLPEvent), + .class_init = cpi_class_init, + .class_size = sizeof(SCLPEventClass), +}; + +static void sclp_cpi_register_types(void) +{ + type_register_static(&sclp_cpi_info); +} + +type_init(sclp_cpi_register_types) + diff --git a/include/hw/s390x/event-facility.h b/include/hw/s390x/event-facility.h index ff874e792d..f445d2f9f5 100644 --- a/include/hw/s390x/event-facility.h +++ b/include/hw/s390x/event-facility.h @@ -25,6 +25,7 @@ #define SCLP_EVENT_MESSAGE 0x02 #define SCLP_EVENT_CONFIG_MGT_DATA 0x04 #define SCLP_EVENT_PMSGCMD 0x09 +#define SCLP_EVENT_CPI 0x0b #define SCLP_EVENT_ASCII_CONSOLE_DATA 0x1a #define SCLP_EVENT_SIGNAL_QUIESCE 0x1d @@ -35,6 +36,7 @@ #define SCLP_EVENT_MASK_MSG SCLP_EVMASK(SCLP_EVENT_MESSAGE) #define SCLP_EVENT_MASK_CONFIG_MGT_DATA SCLP_EVMASK(SCLP_EVENT_CONFIG_MGT_DATA) #define SCLP_EVENT_MASK_PMSGCMD SCLP_EVMASK(SCLP_EVENT_PMSGCMD) +#define SCLP_EVENT_MASK_CPI SCLP_EVMASK(SCLP_EVENT_CPI) #define SCLP_EVENT_MASK_MSG_ASCII SCLP_EVMASK(SCLP_EVENT_ASCII_CONSOLE_DATA) #define SCLP_EVENT_MASK_SIGNAL_QUIESCE SCLP_EVMASK(SCLP_EVENT_SIGNAL_QUIESCE) @@ -46,6 +48,7 @@ OBJECT_DECLARE_TYPE(SCLPEvent, SCLPEventClass, SCLP_EVENT) #define TYPE_SCLP_CPU_HOTPLUG "sclp-cpu-hotplug" +#define TYPE_SCLP_CPI "sclpcpi" #define TYPE_SCLP_QUIESCE "sclpquiesce" #define SCLP_EVENT_MASK_LEN_MAX 1021 From patchwork Mon Feb 24 12:04:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shalini Chellathurai Saroja X-Patchwork-Id: 13987949 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 901F2C021BB for ; Mon, 24 Feb 2025 12:06:52 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tmXDM-00066y-Qi; Mon, 24 Feb 2025 07:05:36 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tmXDL-00066i-0m; Mon, 24 Feb 2025 07:05:35 -0500 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tmXDJ-00031p-2S; Mon, 24 Feb 2025 07:05:34 -0500 Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 51O2Ddvb025484; Mon, 24 Feb 2025 12:05:30 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=4DAamYja86au9HknG VwAnm2wevDXyikwInE3oBV18ko=; b=kQCsH3Ha0b5roOy5OYZjMPGQAgLGjl3eK XEjWVFOMLTzF85cbuYCtBJVVUvUwNoqlw4Xj1INXRC1ktbrQqd7ywacqbrSqYLyx /0T3Nv1mUuM41TDlCWaKaHd6fPGNUImpNXZk3cjxcn82XR/es9Okl8bow+6076GA orlgPClnxTuHg6ufV2lwrHT8LBMzaCTfZp1tchfTGOfVSdq+CPQm46mQJV9isUAX or3gn4+55RAhH+t3dL/qOXkZ8FJXnpFlJZBa5VgKKZ3OO7ZJM/qu7WtP9qQZnQB9 2t7G2R1cJ9PBQfaNnWGRlkcdCYpmmwp1Z90w8dmAVx7hxafDuEbDw== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 450eu9td8y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 24 Feb 2025 12:05:30 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 51O9AJfd026990; Mon, 24 Feb 2025 12:05:29 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 44ytdk6vnc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 24 Feb 2025 12:05:28 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 51OC5PXd9306516 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 24 Feb 2025 12:05:25 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0F8DE20049; Mon, 24 Feb 2025 12:05:25 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E511E20040; Mon, 24 Feb 2025 12:05:24 +0000 (GMT) Received: from a46lp68.lnxne.boe (unknown [9.152.108.100]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 24 Feb 2025 12:05:24 +0000 (GMT) From: Shalini Chellathurai Saroja To: qemu-s390x mailing list , Thomas Huth Cc: qemu-devel mailing list , Nina Schoetterl-Glausch , Hendrik Brueckner , Shalini Chellathurai Saroja Subject: [PATCH qemu v2 3/3] hw/s390x: support migration of CPI values Date: Mon, 24 Feb 2025 13:04:49 +0100 Message-ID: <20250224120449.1764114-3-shalini@linux.ibm.com> X-Mailer: git-send-email 2.47.0 In-Reply-To: <20250224120449.1764114-1-shalini@linux.ibm.com> References: <20250224120449.1764114-1-shalini@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: QkbaVZETOTr28D2f7f8Vz8dWanYJ4AE9 X-Proofpoint-ORIG-GUID: QkbaVZETOTr28D2f7f8Vz8dWanYJ4AE9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1057,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-02-24_05,2025-02-24_02,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 mlxscore=0 suspectscore=0 bulkscore=0 clxscore=1011 phishscore=0 spamscore=0 malwarescore=0 impostorscore=0 lowpriorityscore=0 mlxlogscore=855 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502100000 definitions=main-2502240088 Received-SPF: pass client-ip=148.163.156.1; envelope-from=shalini@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Register Control-Program Identification data with the live migration infrastructure. Signed-off-by: Shalini Chellathurai Saroja Reviewed-by: Nina Schoetterl-Glausch --- hw/s390x/s390-virtio-ccw.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index 13ea8db1b0..4d0838d037 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -260,6 +260,20 @@ static void s390_create_sclpconsole(SCLPDevice *sclp, qdev_realize_and_unref(dev, ev_fac_bus, &error_fatal); } +static const VMStateDescription vmstate_control_program_id = { + .name = "s390_control_program_id", + .version_id = 0, + .minimum_version_id = 0, + .fields = (const VMStateField[]) { + VMSTATE_UINT8_ARRAY(system_type, ControlProgramId, 8), + VMSTATE_UINT8_ARRAY(system_name, ControlProgramId, 8), + VMSTATE_UINT64(system_level, ControlProgramId), + VMSTATE_UINT8_ARRAY(sysplex_name, ControlProgramId, 8), + VMSTATE_UINT64(timestamp, ControlProgramId), + VMSTATE_END_OF_LIST() + } +}; + static void ccw_init(MachineState *machine) { MachineClass *mc = MACHINE_GET_CLASS(machine); @@ -308,6 +322,9 @@ static void ccw_init(MachineState *machine) ret = css_create_css_image(VIRTUAL_CSSID, true); assert(ret == 0); + /* register CPI values */ + vmstate_register_any(NULL, &vmstate_control_program_id, &ms->cpi); + css_register_vmstate(); /* Create VirtIO network adapters */