From patchwork Thu Apr 10 15:09:31 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: 14046668 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 9E511C3601E for ; Thu, 10 Apr 2025 15:11:34 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u2tXu-0000xW-OC; Thu, 10 Apr 2025 11:10:26 -0400 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 1u2tXs-0000xC-Pu; Thu, 10 Apr 2025 11:10:24 -0400 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 1u2tXq-0003bl-AE; Thu, 10 Apr 2025 11:10:24 -0400 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 53AEEDHh003370; Thu, 10 Apr 2025 15:10:20 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=MABboR6Rm7+B7kBVq ed5pRCFnpozhi3cWwJyGEU8hcA=; b=gkxO9az66ETHkOVz88Mm8KShFGmahCodo qAlH19n1kIPbZRY8nFCHWL6oQKGvRNJwfkNdKsCRfv3i4+Rf+4Dy+k4JpJjXQOJ1 qVK3I+5E920gaIyRz/6+/nJPL/7PH1P6IPyLoqO3oX7KqiRpWImBsiTZ5wVTZQqh EEhnLIIjjE6yFzlsUnmJIiZEAdC42NdiLnEBpBz33e/3V9RP3xJypoa8MQTVjxlO /mMwT/rD00L5Nppzo/qCgFbtL6l6pDHk2jML24wwaTaYKwTUSjQrg1R1Vl/C6J+B kVD0ZeRnVKMpJNJdcSzrkXl8jzn7MC4QT9oJOGPlVkPYpFbZV34QA== 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 45x0405dxr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 10 Apr 2025 15:10:20 +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 53ADke3u017447; Thu, 10 Apr 2025 15:10:19 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 45uh2kxcbh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 10 Apr 2025 15:10:19 +0000 Received: from smtpav05.fra02v.mail.ibm.com (smtpav05.fra02v.mail.ibm.com [10.20.54.104]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 53AFAFCF56230146 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 10 Apr 2025 15:10:15 GMT Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id BEF6320043; Thu, 10 Apr 2025 15:10:15 +0000 (GMT) Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 70A4B20040; Thu, 10 Apr 2025 15:10:15 +0000 (GMT) Received: from a46lp68.lnxne.boe (unknown [9.152.108.100]) by smtpav05.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 10 Apr 2025 15:10:15 +0000 (GMT) From: Shalini Chellathurai Saroja To: qemu-s390x mailing list , Thomas Huth , Daniel Berrange Cc: qemu-devel mailing list , Nina Schoetterl-Glausch , Hendrik Brueckner , Shalini Chellathurai Saroja Subject: [PATCH v4 1/4] hw/s390x: add SCLP event type CPI Date: Thu, 10 Apr 2025 17:09:31 +0200 Message-ID: <20250410150934.1331433-2-shalini@linux.ibm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250410150934.1331433-1-shalini@linux.ibm.com> References: <20250410150934.1331433-1-shalini@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: oCBI1N1qCenq0AbR6g0xexaspvZLYElj X-Proofpoint-GUID: oCBI1N1qCenq0AbR6g0xexaspvZLYElj X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-10_03,2025-04-10_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 lowpriorityscore=0 clxscore=1015 malwarescore=0 spamscore=0 bulkscore=0 impostorscore=0 priorityscore=1501 suspectscore=0 mlxlogscore=999 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502280000 definitions=main-2504100109 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_H5=0.001, RCVD_IN_MSPIKE_WL=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 Service-Call Logical Processor (SCLP) event type Control-Program Identification (CPI) in QEMU. This event is used to send CPI identifiers from the guest to the host. The CPI identifiers are: system type, system name, system level and sysplex name. System type: operating system of the guest (e.g. "LINUX"). System name: user configurable name of the guest (e.g. "TESTVM"). System level: distribution and kernel version, if the system type is Linux (e.g. 0x50e00). Sysplex name: name of the cluster which the guest belongs to (if any) (e.g. "PLEX"). Signed-off-by: Shalini Chellathurai Saroja Reviewed-by: Thomas Huth --- hw/s390x/event-facility.c | 2 + hw/s390x/meson.build | 1 + hw/s390x/s390-virtio-ccw.c | 14 +++++ hw/s390x/sclpcpi.c | 92 +++++++++++++++++++++++++++++++ include/hw/s390x/event-facility.h | 13 +++++ 5 files changed, 122 insertions(+) create mode 100644 hw/s390x/sclpcpi.c diff --git a/hw/s390x/event-facility.c b/hw/s390x/event-facility.c index 2b0332c20e..60237b8581 100644 --- a/hw/s390x/event-facility.c +++ b/hw/s390x/event-facility.c @@ -4,6 +4,7 @@ * handles SCLP event types * - Signal Quiesce - system power down * - ASCII Console Data - VT220 read and write + * - Control-Program Identification - Send OS data from guest to host * * Copyright IBM, Corp. 2012 * @@ -40,6 +41,7 @@ struct SCLPEventFacility { SysBusDevice parent_obj; SCLPEventsBus sbus; SCLPEvent quiesce, cpu_hotplug; + SCLPEventCPI cpi; /* guest's receive mask */ union { uint32_t receive_mask_pieces[2]; 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/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index 75b32182eb..7f28cbd1de 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -260,6 +260,17 @@ static void s390_create_sclpconsole(SCLPDevice *sclp, qdev_realize_and_unref(dev, ev_fac_bus, &error_fatal); } +static void s390_create_sclpcpi(SCLPDevice *sclp) +{ + SCLPEventFacility *ef = sclp->event_facility; + BusState *ev_fac_bus = sclp_get_event_facility_bus(ef); + DeviceState *dev; + + dev = qdev_new(TYPE_SCLP_EVENT_CPI); + object_property_add_child(OBJECT(ef), "sclpcpi", OBJECT(dev)); + qdev_realize_and_unref(dev, ev_fac_bus, &error_fatal); +} + static void ccw_init(MachineState *machine) { MachineClass *mc = MACHINE_GET_CLASS(machine); @@ -323,6 +334,9 @@ static void ccw_init(MachineState *machine) /* init the TOD clock */ s390_init_tod(); + + /* init SCLP event Control-Program Identification */ + s390_create_sclpcpi(ms->sclp); } static void s390_cpu_plug(HotplugHandler *hotplug_dev, diff --git a/hw/s390x/sclpcpi.c b/hw/s390x/sclpcpi.c new file mode 100644 index 0000000000..13589459b1 --- /dev/null +++ b/hw/s390x/sclpcpi.c @@ -0,0 +1,92 @@ + /* + * SPDX-License-Identifier: GPL-2.0-or-later + * + * SCLP event type 11 - Control-Program Identification (CPI): + * CPI is used to send program identifiers from the guest to the + * Service-Call Logical Processor (SCLP). It is not sent by the SCLP. + * Please refer S390ControlProgramId QOM-type description for details + * on the contents of the CPI. + * + * 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 "hw/s390x/event-facility.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_CTRL_PGM_ID; +} + +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_CTRL_PGM_ID; +} + +static int write_event_data(SCLPEvent *event, EventBufferHeader *evt_buf_hdr) +{ + ControlProgramIdMsg *cpim = container_of(evt_buf_hdr, ControlProgramIdMsg, + ebh); + + cpim->ebh.flags = SCLP_EVENT_BUFFER_ACCEPTED; + return SCLP_RC_NORMAL_COMPLETION; +} + +static void cpi_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(klass); + SCLPEventClass *k = SCLP_EVENT_CLASS(klass); + + dc->user_creatable = false; + + k->can_handle_event = can_handle_event; + k->get_send_mask = send_mask; + k->get_receive_mask = receive_mask; + k->write_event_data = write_event_data; +} + +static const TypeInfo sclp_cpi_info = { + .name = TYPE_SCLP_EVENT_CPI, + .parent = TYPE_SCLP_EVENT, + .instance_size = sizeof(SCLPEventCPI), + .class_init = cpi_class_init, +}; + +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..ef469e62ae 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_CTRL_PGM_ID 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_CTRL_PGM_ID SCLP_EVMASK(SCLP_EVENT_CTRL_PGM_ID) #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) @@ -191,6 +193,17 @@ struct SCLPEventClass { bool (*can_handle_event)(uint8_t type); }; +#define TYPE_SCLP_EVENT_CPI "sclpcpi" +typedef struct SCLPEventCPIClass SCLPEventCPIClass; +typedef struct SCLPEventCPI SCLPEventCPI; +OBJECT_DECLARE_TYPE(SCLPEventCPI, SCLPEventCPIClass, + SCLP_EVENT_CPI) + +struct SCLPEventCPI { + DeviceState qdev; + SCLPEvent event; +}; + #define TYPE_SCLP_EVENT_FACILITY "s390-sclp-event-facility" typedef struct SCLPEventFacility SCLPEventFacility; typedef struct SCLPEventFacilityClass SCLPEventFacilityClass; From patchwork Thu Apr 10 15:09:32 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: 14046667 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 5BF1CC3601E for ; Thu, 10 Apr 2025 15:11:23 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u2tYT-0000zw-8h; Thu, 10 Apr 2025 11:11:03 -0400 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 1u2tY0-0000ye-Pm; Thu, 10 Apr 2025 11:10:32 -0400 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 1u2tXy-0003cj-7t; Thu, 10 Apr 2025 11:10:32 -0400 Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 53AC2QqC025411; Thu, 10 Apr 2025 15:10:29 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=OS790P1GxEG2J+4R1 C5LH0MFBeD9dytgF4BBMqmC1Js=; b=eKu2b4Pk+Yo1uwfR/W+cYGSWctkvhH0YU +Z4Zqtq+pvlwIWg1a/RGh4P3HcMV3ALZ0GsJQbBhHi8JXm7LlAOVBCIZ1cOC45Pc hAuMCxcPI5GZa9jMo8vMX84Ot7YF2ItQ9BzQQCx0ZpumVCqLXbd2APw5XD2EAs5U sBIXl+WIHkIcqW8AbATAY/kBnlC15m+hvkcmopnbm6pswYOO+xC6eX2S73SrBE3S pErpTicSEkEjyqUd123iaL01yOoO4a1KvXyqGQv3jXpdivz3aT5H2Ckz3shSP2aJ d6zLjrZUrLnqvKD+ssjMv5ezI8oGiLuzRrnDOOjelN/Vb+Z55CPvg== 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 45ww2xeg9y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 10 Apr 2025 15:10:28 +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 53ADOKVY025522; Thu, 10 Apr 2025 15:10:23 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 45ugbm6gdn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 10 Apr 2025 15:10:23 +0000 Received: from smtpav05.fra02v.mail.ibm.com (smtpav05.fra02v.mail.ibm.com [10.20.54.104]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 53AFAJ9x34406956 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 10 Apr 2025 15:10:19 GMT Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2CF782004B; Thu, 10 Apr 2025 15:10:19 +0000 (GMT) Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DD08E20040; Thu, 10 Apr 2025 15:10:18 +0000 (GMT) Received: from a46lp68.lnxne.boe (unknown [9.152.108.100]) by smtpav05.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 10 Apr 2025 15:10:18 +0000 (GMT) From: Shalini Chellathurai Saroja To: qemu-s390x mailing list , Thomas Huth , Daniel Berrange Cc: qemu-devel mailing list , Nina Schoetterl-Glausch , Hendrik Brueckner , Shalini Chellathurai Saroja Subject: [PATCH v4 2/4] hw/s390x: add Control-Program Identification to QOM Date: Thu, 10 Apr 2025 17:09:32 +0200 Message-ID: <20250410150934.1331433-3-shalini@linux.ibm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250410150934.1331433-1-shalini@linux.ibm.com> References: <20250410150934.1331433-1-shalini@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: AA4waU8bezGuSfW3RAkBst7yQ0payhvR X-Proofpoint-ORIG-GUID: AA4waU8bezGuSfW3RAkBst7yQ0payhvR X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-10_03,2025-04-10_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=999 bulkscore=0 impostorscore=0 mlxscore=0 suspectscore=0 clxscore=1015 priorityscore=1501 spamscore=0 malwarescore=0 lowpriorityscore=0 adultscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502280000 definitions=main-2504100109 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_H5=0.001, RCVD_IN_MSPIKE_WL=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 data to the QEMU Object Model (QOM), along with the timestamp in which the data was received. Example: virsh # qemu-monitor-command vm --pretty '{ "execute": "qom-get", "arguments": { "path": "/machine/sclp/s390-sclp-event-facility/sclpcpi", "property": "control-program-id" }}' { "return": { "timestamp": 1742390410685762000, "system-level": 74872343805430528, "sysplex-name": "PLEX ", "system-name": "TESTVM ", "system-type": "LINUX " }, "id": "libvirt-15" } Signed-off-by: Shalini Chellathurai Saroja --- hw/s390x/sclpcpi.c | 39 +++++++++++++++++++++ include/hw/s390x/event-facility.h | 9 +++++ qapi/machine.json | 58 +++++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+) diff --git a/hw/s390x/sclpcpi.c b/hw/s390x/sclpcpi.c index 13589459b1..dcc8bd3245 100644 --- a/hw/s390x/sclpcpi.c +++ b/hw/s390x/sclpcpi.c @@ -18,7 +18,10 @@ */ #include "qemu/osdep.h" +#include "qemu/timer.h" #include "hw/s390x/event-facility.h" +#include "hw/s390x/ebcdic.h" +#include "qapi/qapi-visit-machine.h" typedef struct Data { uint8_t id_format; @@ -58,11 +61,39 @@ static int write_event_data(SCLPEvent *event, EventBufferHeader *evt_buf_hdr) { ControlProgramIdMsg *cpim = container_of(evt_buf_hdr, ControlProgramIdMsg, ebh); + SCLPEventCPI *e = SCLP_EVENT_CPI(event); + + ascii_put(e->cpi.system_type, (char *)cpim->data.system_type, 8); + ascii_put(e->cpi.system_name, (char *)cpim->data.system_name, 8); + ascii_put(e->cpi.sysplex_name, (char *)cpim->data.sysplex_name, 8); + e->cpi.system_level = ldq_be_p(&cpim->data.system_level); + e->cpi.timestamp = qemu_clock_get_ns(QEMU_CLOCK_HOST); cpim->ebh.flags = SCLP_EVENT_BUFFER_ACCEPTED; return SCLP_RC_NORMAL_COMPLETION; } +static void get_control_program_id(Object *obj, Visitor *v, + const char *name, void *opaque, + Error **errp) +{ + SCLPEventCPI *e = SCLP_EVENT_CPI(obj); + S390ControlProgramId *cpi; + + cpi = &(S390ControlProgramId){ + .system_type = g_strndup((char *) e->cpi.system_type, + sizeof(e->cpi.system_type)), + .system_name = g_strndup((char *) e->cpi.system_name, + sizeof(e->cpi.system_name)), + .system_level = e->cpi.system_level, + .sysplex_name = g_strndup((char *) e->cpi.sysplex_name, + sizeof(e->cpi.sysplex_name)), + .timestamp = e->cpi.timestamp + }; + + visit_type_S390ControlProgramId(v, name, &cpi, errp); +} + static void cpi_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); @@ -74,6 +105,14 @@ static void cpi_class_init(ObjectClass *klass, void *data) k->get_send_mask = send_mask; k->get_receive_mask = receive_mask; k->write_event_data = write_event_data; + + object_class_property_add(klass, "control-program-id", + "S390ControlProgramId", + get_control_program_id, + NULL, NULL, NULL); + object_class_property_set_description(klass, "control-program-id", + "Control-program identifiers provide data about the guest " + "operating system"); } static const TypeInfo sclp_cpi_info = { diff --git a/include/hw/s390x/event-facility.h b/include/hw/s390x/event-facility.h index ef469e62ae..123c4ac49c 100644 --- a/include/hw/s390x/event-facility.h +++ b/include/hw/s390x/event-facility.h @@ -199,9 +199,18 @@ typedef struct SCLPEventCPI SCLPEventCPI; OBJECT_DECLARE_TYPE(SCLPEventCPI, SCLPEventCPIClass, SCLP_EVENT_CPI) +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; +} ControlProgramId; + struct SCLPEventCPI { DeviceState qdev; SCLPEvent event; + ControlProgramId cpi; }; #define TYPE_SCLP_EVENT_FACILITY "s390-sclp-event-facility" diff --git a/qapi/machine.json b/qapi/machine.json index a6b8795b09..cd2bcd2d13 100644 --- a/qapi/machine.json +++ b/qapi/machine.json @@ -1898,3 +1898,61 @@ { 'command': 'x-query-interrupt-controllers', 'returns': 'HumanReadableText', 'features': [ 'unstable' ]} + +## +# @S390ControlProgramId: +# +# Control-program identifiers provide data about the guest operating system. +# The control-program identifiers are: system type, system name, system level +# and sysplex name. +# +# In Linux, all the control-program identifiers are user configurable. The +# system type, system name, and sysplex name use EBCDIC characters from +# this set: capital A-Z, 0-9, $, @, #, and blank. In Linux, the system type, +# system name and sysplex name are arbitrary free-form texts. +# +# In Linux, the 8-byte hexadecimal system-level has the format +# 0x
, where: +# : is one hexadecimal byte, its most significant bit indicates hypervisor +# use +# : is one digit that represents Linux distributions as follows +# 0: generic Linux +# 1: Red Hat Enterprise Linux +# 2: SUSE Linux Enterprise Server +# 3: Canonical Ubuntu +# 4: Fedora +# 5: openSUSE Leap +# 6: Debian GNU/Linux +# 7: Red Hat Enterprise Linux CoreOS +# : are two digits for a distribution-specific encoding of the major version +# of the distribution +#
: are two digits for a distribution-specific encoding of the minor version +# of the distribution +# : are four digits for the patch level of the distribution +# : are two digits for the major version of the kernel +# : are two digits for the minor version of the kernel +# : are two digits for the stable version of the kernel +# (e.g. 74872343805430528, when converted to hex is 0x010a000000060b00). On +# machines prior to z16, some of the values are not available to display. +# +# Sysplex refers to a cluster of logical partitions that communicates and +# co-operates with each other. +# +# @system-type: operating system (e.g. "LINUX ") +# +# @system-name: user configurable name of the VM (e.g. "TESTVM ") +# +# @system-level: distribution and kernel version in Linux +# +# @sysplex-name: sysplex which the VM belongs to, if any (e.g. "PLEX ") +# +# @timestamp: latest update of CPI data in nanoseconds since the UNIX EPOCH +# +# Since: 10.0 +## +{ 'struct': 'S390ControlProgramId', 'data': { + 'system-type': 'str', + 'system-name': 'str', + 'system-level': 'uint64', + 'sysplex-name': 'str', + 'timestamp': 'uint64' } } From patchwork Thu Apr 10 15:09:33 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: 14046670 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 C2394C3601E for ; Thu, 10 Apr 2025 15:11:59 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u2tYZ-00015q-UH; Thu, 10 Apr 2025 11:11:08 -0400 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 1u2tY5-0000zn-Oi; Thu, 10 Apr 2025 11:10:38 -0400 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 1u2tY2-0003d4-AD; Thu, 10 Apr 2025 11:10:35 -0400 Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 53A93Dfw025400; Thu, 10 Apr 2025 15:10:33 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=5FlK7MqLPTJ0LDsCf 65cbXQpd2OO7f0eFbvo8qIrnHE=; b=G67ZZKfNF9loRL+LVq0alVjzAx/FZqSZR ERkjwoeFThtMMZDsu09IiAA6Af01XQhWf6l4YwGTua77CYIM0UFl/HjCCYJL5JR8 gusMQhuw3FGVU8pr1gZpwZjeWB99GsRZQ1Mgx00nrH+mmBRn9kwZMQMPlzapQsaS 4Gi/v4pqD42QE5Pvg9XMGr6ZO6RyKiUlJtWXdeKBhSCxtB11l8DZrK5HCnoh+PWA yuyRc2aCoefGn1fhs4J+k37XZJPYJuGoOR+pLAadNbpgYVHyVRMiwIBQl+iC55ql 4uqwYmwYGPwuQ4QH+9bkHu7NNFqmExLvzKaoEqz+jmA7QsaiPou2g== Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 45ww2xegar-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 10 Apr 2025 15:10:32 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 53ADJq0h014473; Thu, 10 Apr 2025 15:10:26 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 45ufunxh5f-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 10 Apr 2025 15:10:26 +0000 Received: from smtpav05.fra02v.mail.ibm.com (smtpav05.fra02v.mail.ibm.com [10.20.54.104]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 53AFAMl244892518 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 10 Apr 2025 15:10:22 GMT Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id ACE5F20043; Thu, 10 Apr 2025 15:10:22 +0000 (GMT) Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6890920040; Thu, 10 Apr 2025 15:10:22 +0000 (GMT) Received: from a46lp68.lnxne.boe (unknown [9.152.108.100]) by smtpav05.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 10 Apr 2025 15:10:22 +0000 (GMT) From: Shalini Chellathurai Saroja To: qemu-s390x mailing list , Thomas Huth , Daniel Berrange Cc: qemu-devel mailing list , Nina Schoetterl-Glausch , Hendrik Brueckner , Shalini Chellathurai Saroja Subject: [PATCH v4 3/4] hw/s390x: support migration of CPI data Date: Thu, 10 Apr 2025 17:09:33 +0200 Message-ID: <20250410150934.1331433-4-shalini@linux.ibm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250410150934.1331433-1-shalini@linux.ibm.com> References: <20250410150934.1331433-1-shalini@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: ib1Ig4f1OG3dHNvqTk-I_ATFJgkWEtZP X-Proofpoint-ORIG-GUID: ib1Ig4f1OG3dHNvqTk-I_ATFJgkWEtZP X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-10_03,2025-04-10_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=999 bulkscore=0 impostorscore=0 mlxscore=0 suspectscore=0 clxscore=1015 priorityscore=1501 spamscore=0 malwarescore=0 lowpriorityscore=0 adultscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502280000 definitions=main-2504100109 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_H5=0.001, RCVD_IN_MSPIKE_WL=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/sclpcpi.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/hw/s390x/sclpcpi.c b/hw/s390x/sclpcpi.c index dcc8bd3245..40a74c16b5 100644 --- a/hw/s390x/sclpcpi.c +++ b/hw/s390x/sclpcpi.c @@ -22,6 +22,7 @@ #include "hw/s390x/event-facility.h" #include "hw/s390x/ebcdic.h" #include "qapi/qapi-visit-machine.h" +#include "migration/vmstate.h" typedef struct Data { uint8_t id_format; @@ -94,12 +95,36 @@ static void get_control_program_id(Object *obj, Visitor *v, visit_type_S390ControlProgramId(v, name, &cpi, errp); } +static const VMStateDescription vmstate_control_program_id = { + .name = "s390_control_program_id", + .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 const VMStateDescription vmstate_sclpcpi = { + .name = "s390_sclpcpi", + .version_id = 0, + .fields = (const VMStateField[]) { + VMSTATE_STRUCT(cpi, SCLPEventCPI, 0, vmstate_control_program_id, + ControlProgramId), + VMSTATE_END_OF_LIST() + } +}; + static void cpi_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); SCLPEventClass *k = SCLP_EVENT_CLASS(klass); dc->user_creatable = false; + dc->vmsd = &vmstate_sclpcpi; k->can_handle_event = can_handle_event; k->get_send_mask = send_mask; From patchwork Thu Apr 10 15:09:34 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: 14046669 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 2D1C1C3601E for ; Thu, 10 Apr 2025 15:11:56 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u2tYZ-00015p-Sq; Thu, 10 Apr 2025 11:11:07 -0400 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 1u2tY2-0000yo-59; Thu, 10 Apr 2025 11:10:35 -0400 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 1u2tY0-0003cp-0I; Thu, 10 Apr 2025 11:10:33 -0400 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 53AEF65j004599; Thu, 10 Apr 2025 15:10: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=OAjlTTTIYckzRFuMI zTrCd/gqQY/83SjC51iXpdijFg=; b=cw/ToCWE8bcgqYnxClMu8O1A+slD7WV33 R8PKZv4zEpG5cya7qjsxt0mY3Bj0baJHZnXUWtcaKuhEFWQXIhPxWpeJcDHBfO7s guk5BeyEEmg5FKotp50pUAb8kRaPV6M0+sC9HXX4qll9bfz+8gwS7H3lEy5xx+AA mxdgLTSrwFJB1NK6UKFm2IsmYFs0GtHfKZ1hChzfCUQmix9pQgOqz2WtjNppRiBP 7w4qYbNoFb1LI73hSVTFVRpufY5A2dDy6MjZ7ZIIOM5awszyBWV5B6ywRrC0Fgc4 R/yJ9OWu/W+d+XtJn4hOfKbz4ntRq6FuSYqwzTWii3LCpupieN6Sg== 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 45x0405e0c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 10 Apr 2025 15:10: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 53ADQMNr025562; Thu, 10 Apr 2025 15:10:29 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 45ugbm6ge6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 10 Apr 2025 15:10:29 +0000 Received: from smtpav05.fra02v.mail.ibm.com (smtpav05.fra02v.mail.ibm.com [10.20.54.104]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 53AFAP4L51511796 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 10 Apr 2025 15:10:25 GMT Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 23A5F20043; Thu, 10 Apr 2025 15:10:25 +0000 (GMT) Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id D34452004B; Thu, 10 Apr 2025 15:10:24 +0000 (GMT) Received: from a46lp68.lnxne.boe (unknown [9.152.108.100]) by smtpav05.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 10 Apr 2025 15:10:24 +0000 (GMT) From: Shalini Chellathurai Saroja To: qemu-s390x mailing list , Thomas Huth , Daniel Berrange Cc: qemu-devel mailing list , Nina Schoetterl-Glausch , Hendrik Brueckner , Shalini Chellathurai Saroja Subject: [PATCH v4 4/4] hw/s390x: compat handling for backward migration Date: Thu, 10 Apr 2025 17:09:34 +0200 Message-ID: <20250410150934.1331433-5-shalini@linux.ibm.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250410150934.1331433-1-shalini@linux.ibm.com> References: <20250410150934.1331433-1-shalini@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: WKcF0U7rFBEAYZbIGDuS-CTZnc79FUpB X-Proofpoint-GUID: WKcF0U7rFBEAYZbIGDuS-CTZnc79FUpB X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1095,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-04-10_03,2025-04-10_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 lowpriorityscore=0 clxscore=1015 malwarescore=0 spamscore=0 bulkscore=0 impostorscore=0 priorityscore=1501 suspectscore=0 mlxlogscore=999 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2502280000 definitions=main-2504100109 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_H5=0.001, RCVD_IN_MSPIKE_WL=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) device to QOM only when the virtual machine supports CPI. CPI is supported from "s390-ccw-virtio-10.0" machine and higher. Signed-off-by: Shalini Chellathurai Saroja --- hw/s390x/s390-virtio-ccw.c | 10 +++++++++- include/hw/s390x/s390-virtio-ccw.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index 7f28cbd1de..81832ee638 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -274,6 +274,7 @@ static void s390_create_sclpcpi(SCLPDevice *sclp) static void ccw_init(MachineState *machine) { MachineClass *mc = MACHINE_GET_CLASS(machine); + S390CcwMachineClass *s390mc = S390_CCW_MACHINE_CLASS(mc); S390CcwMachineState *ms = S390_CCW_MACHINE(machine); int ret; VirtualCssBus *css_bus; @@ -336,7 +337,10 @@ static void ccw_init(MachineState *machine) s390_init_tod(); /* init SCLP event Control-Program Identification */ - s390_create_sclpcpi(ms->sclp); + if (s390mc->use_cpi) { + s390_create_sclpcpi(ms->sclp); + } + } static void s390_cpu_plug(HotplugHandler *hotplug_dev, @@ -827,6 +831,7 @@ static void ccw_machine_class_init(ObjectClass *oc, void *data) s390mc->hpage_1m_allowed = true; s390mc->max_threads = 1; + s390mc->use_cpi = true; mc->reset = s390_machine_reset; mc->block_default_type = IF_VIRTIO; mc->no_cdrom = 1; @@ -955,6 +960,9 @@ static void ccw_machine_9_2_class_options(MachineClass *mc) { TYPE_S390_PCI_DEVICE, "relaxed-translation", "off", }, }; + S390CcwMachineClass *s390mc = S390_CCW_MACHINE_CLASS(mc); + s390mc->use_cpi = false; + ccw_machine_10_0_class_options(mc); compat_props_add(mc->compat_props, hw_compat_9_2, hw_compat_9_2_len); compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat)); diff --git a/include/hw/s390x/s390-virtio-ccw.h b/include/hw/s390x/s390-virtio-ccw.h index 686d9497d2..fc4112fbf5 100644 --- a/include/hw/s390x/s390-virtio-ccw.h +++ b/include/hw/s390x/s390-virtio-ccw.h @@ -55,6 +55,7 @@ struct S390CcwMachineClass { /*< public >*/ bool hpage_1m_allowed; int max_threads; + bool use_cpi; }; /* 1M huge page mappings allowed by the machine */