From nobody Mon Feb 9 15:32:45 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=reject dis=none) header.from=linux.ibm.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1738689327703827.5538801375135; Tue, 4 Feb 2025 09:15:27 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id AB6291D0C; Tue, 4 Feb 2025 12:15:26 -0500 (EST) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id A45541DAF; Tue, 4 Feb 2025 12:12:09 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id 23B861B57; Tue, 4 Feb 2025 12:11:51 -0500 (EST) Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 7463A1B9C for ; Tue, 4 Feb 2025 12:11:50 -0500 (EST) 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 514GF2D6023992 for ; Tue, 4 Feb 2025 17:11:49 GMT 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 44kn62gpmt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 04 Feb 2025 17:11:49 +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 514FvYWx024540 for ; Tue, 4 Feb 2025 17:11:48 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 44hxxn4jb3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 04 Feb 2025 17:11:47 +0000 Received: from smtpav04.fra02v.mail.ibm.com (smtpav04.fra02v.mail.ibm.com [10.20.54.103]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 514HBipX50397640 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 4 Feb 2025 17:11:44 GMT Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 36878200B9; Tue, 4 Feb 2025 17:11:44 +0000 (GMT) Received: from smtpav04.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 245EF200BA; Tue, 4 Feb 2025 17:11:44 +0000 (GMT) Received: from fiuczyvm.. (unknown [9.152.222.247]) by smtpav04.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 4 Feb 2025 17:11:44 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-1.4 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 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=aVLQ0F0ugSwWMfJqs VaXFG+Fg8T5W6srtSRn5z+9DIU=; b=fenh2JHep1aEcemj3XvJ0Dct/qIPLAh+u RgPYxkrJtmY2h/Seae5/yu46kpVrUN3vxw3Pzg9Zi+3vtAlm+XucaHTK9WfEGjvE Ontpea1C5EG72qNKQPaWo+DgMTYbaDjk14gV70UrZmV+t8e4x3FK/U04rHxe1Vcr lGZgf8xJicm307kCoa7cQ2+vRghCyKI5a0YgIiDD9wCVwAx57vsrkT4WisAOfMzm T0rmahuk4C1ImGdgeF4yjGQMtT8Q6Ru8gA8SMQsetXMh4LTqLF70HImhG39c51zO 9T4NRQPpBDKnqvnF/cxjgIR2K1g3oAiUonCf9LAiw6kflFtfHCB5Q== From: Boris Fiuczynski To: devel@lists.libvirt.org Subject: [PATCH 2/8] nodedev: refactor CCW device address Date: Tue, 4 Feb 2025 18:11:37 +0100 Message-ID: <20250204171143.93141-3-fiuczy@linux.ibm.com> X-Mailer: git-send-email 2.48.0 In-Reply-To: <20250204171143.93141-1-fiuczy@linux.ibm.com> References: <20250204171143.93141-1-fiuczy@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: wzc0kCGYLPrRqw-kfjggjS1KP9VgraY3 X-Proofpoint-ORIG-GUID: wzc0kCGYLPrRqw-kfjggjS1KP9VgraY3 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-04_08,2025-02-04_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 clxscore=1015 priorityscore=1501 suspectscore=0 impostorscore=0 bulkscore=0 mlxlogscore=803 spamscore=0 lowpriorityscore=0 phishscore=0 mlxscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2501170000 definitions=main-2502040131 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: TXXBQII7NAQW5H3BJVFK72U4KFTSILPU X-Message-ID-Hash: TXXBQII7NAQW5H3BJVFK72U4KFTSILPU X-MailFrom: fiuczy@linux.ibm.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: Boris Fiuczynski X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1738689329939019100 Content-Type: text/plain; charset="utf-8" Replace cssid, ssid and devno elements with virCCWDeviceAddress. Reviewed-by: Marc Hartmayer Signed-off-by: Boris Fiuczynski --- src/conf/node_device_conf.c | 16 ++++++---------- src/conf/node_device_conf.h | 4 +--- src/node_device/node_device_driver.c | 11 ++--------- src/node_device/node_device_udev.c | 9 ++++++--- tests/nodedevmdevctltest.c | 7 ++++--- 5 files changed, 19 insertions(+), 28 deletions(-) diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c index 9711594994..85effb7d78 100644 --- a/src/conf/node_device_conf.c +++ b/src/conf/node_device_conf.c @@ -640,12 +640,7 @@ static void virNodeDeviceCapCCWDefFormat(virBuffer *buf, const virNodeDevCapData *data) { - virBufferAsprintf(buf, "0x%x\n", - data->ccw_dev.cssid); - virBufferAsprintf(buf, "0x%x\n", - data->ccw_dev.ssid); - virBufferAsprintf(buf, "0x%04x\n", - data->ccw_dev.devno); + virCCWDeviceAddressFormat(buf, data->ccw_dev.dev_addr); } =20 =20 @@ -1231,9 +1226,7 @@ virNodeDevCapCCWParseXML(xmlXPathContextPtr ctxt, if (virNodeDevCCWDeviceAddressParseXML(ctxt, node, def->name, ccw_addr= ) < 0) return -1; =20 - ccw_dev->cssid =3D ccw_addr->cssid; - ccw_dev->ssid =3D ccw_addr->ssid; - ccw_dev->devno =3D ccw_addr->devno; + ccw_dev->dev_addr =3D g_steal_pointer(&ccw_addr); =20 return 0; } @@ -2621,6 +2614,7 @@ virNodeDevCapsDefFree(virNodeDevCapsDef *caps) g_free(data->mdev.parent_addr); break; case VIR_NODE_DEV_CAP_CSS_DEV: + g_free(data->ccw_dev.dev_addr); for (i =3D 0; i < data->ccw_dev.nmdev_types; i++) virMediatedDeviceTypeFree(data->ccw_dev.mdev_types[i]); g_free(data->ccw_dev.mdev_types); @@ -2638,10 +2632,12 @@ virNodeDevCapsDefFree(virNodeDevCapsDef *caps) g_free(data->mdev_parent.mdev_types); g_free(data->mdev_parent.address); break; + case VIR_NODE_DEV_CAP_CCW_DEV: + g_free(data->ccw_dev.dev_addr); + break; case VIR_NODE_DEV_CAP_DRM: case VIR_NODE_DEV_CAP_FC_HOST: case VIR_NODE_DEV_CAP_VPORTS: - case VIR_NODE_DEV_CAP_CCW_DEV: case VIR_NODE_DEV_CAP_VDPA: case VIR_NODE_DEV_CAP_AP_CARD: case VIR_NODE_DEV_CAP_AP_QUEUE: diff --git a/src/conf/node_device_conf.h b/src/conf/node_device_conf.h index 25666a333e..ad2258e90d 100644 --- a/src/conf/node_device_conf.h +++ b/src/conf/node_device_conf.h @@ -281,9 +281,7 @@ struct _virNodeDevCapDRM { =20 typedef struct _virNodeDevCapCCW virNodeDevCapCCW; struct _virNodeDevCapCCW { - unsigned int cssid; - unsigned int ssid; - unsigned int devno; + virCCWDeviceAddress *dev_addr; unsigned int flags; /* enum virNodeDevCCWCapFlags */ virMediatedDeviceType **mdev_types; size_t nmdev_types; diff --git a/src/node_device/node_device_driver.c b/src/node_device/node_de= vice_driver.c index fa5db0d5d5..9898b1914a 100644 --- a/src/node_device/node_device_driver.c +++ b/src/node_device/node_device_driver.c @@ -683,16 +683,9 @@ nodeDeviceObjFormatAddress(virNodeDeviceObj *obj) break; } =20 - case VIR_NODE_DEV_CAP_CSS_DEV: { - virCCWDeviceAddress ccw_addr =3D { - .cssid =3D caps->data.ccw_dev.cssid, - .ssid =3D caps->data.ccw_dev.ssid, - .devno =3D caps->data.ccw_dev.devno - }; - - addr =3D virCCWDeviceAddressAsString(&ccw_addr); + case VIR_NODE_DEV_CAP_CSS_DEV: + addr =3D virCCWDeviceAddressAsString(caps->data.ccw_dev.dev_ad= dr); break; - } =20 case VIR_NODE_DEV_CAP_AP_MATRIX: addr =3D g_strdup(caps->data.ap_matrix.addr); diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_devi= ce_udev.c index 1d8486f623..97fbe95ac7 100644 --- a/src/node_device/node_device_udev.c +++ b/src/node_device/node_device_udev.c @@ -1184,18 +1184,21 @@ udevGetCCWAddress(const char *sysfs_path, virNodeDevCapData *data) { char *p; + g_autofree virCCWDeviceAddress *ccw_addr =3D g_new0(virCCWDeviceAddres= s, 1); =20 if ((p =3D strrchr(sysfs_path, '/')) =3D=3D NULL || virCCWDeviceAddressParseFromString(p + 1, - &data->ccw_dev.cssid, - &data->ccw_dev.ssid, - &data->ccw_dev.devno) < 0) { + &ccw_addr->cssid, + &ccw_addr->ssid, + &ccw_addr->devno) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("failed to parse the CCW address from sysfs path:= '%1$s'"), sysfs_path); return -1; } =20 + data->ccw_dev.dev_addr =3D g_steal_pointer(&ccw_addr); + return 0; } =20 diff --git a/tests/nodedevmdevctltest.c b/tests/nodedevmdevctltest.c index 93b0efcb1c..c7e6836edb 100644 --- a/tests/nodedevmdevctltest.c +++ b/tests/nodedevmdevctltest.c @@ -435,9 +435,10 @@ fakeCSSDevice(void) =20 def->caps->data.type =3D VIR_NODE_DEV_CAP_CSS_DEV; css_dev =3D &def->caps->data.ccw_dev; - css_dev->cssid =3D 0; - css_dev->ssid =3D 0; - css_dev->devno =3D 82; + css_dev->dev_addr =3D g_new0(virCCWDeviceAddress, 1); + css_dev->dev_addr->cssid =3D 0; + css_dev->dev_addr->ssid =3D 0; + css_dev->dev_addr->devno =3D 82; =20 return def; } --=20 2.47.0