From nobody Sat May 11 22:54:40 2024 Delivered-To: importer@patchew.org Received-SPF: none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; spf=none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1701770493654114.39872488296578; Tue, 5 Dec 2023 02:01:33 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id 85F731875; Tue, 5 Dec 2023 05:01:32 -0500 (EST) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 9D0B618B7; Tue, 5 Dec 2023 04:58:33 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id C105C1876; Tue, 5 Dec 2023 04:58:20 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 5CF0B1862 for ; Tue, 5 Dec 2023 04:58:02 -0500 (EST) Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-527-NqzUOz1SPqqOFWos5hA-RQ-1; Tue, 05 Dec 2023 04:57:55 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 2EF372825BAB for ; Tue, 5 Dec 2023 09:57:55 +0000 (UTC) Received: from maggie.brq.redhat.com (unknown [10.43.3.102]) by smtp.corp.redhat.com (Postfix) with ESMTP id CE6453C25 for ; Tue, 5 Dec 2023 09:57:54 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.4 X-MC-Unique: NqzUOz1SPqqOFWos5hA-RQ-1 From: Michal Privoznik To: devel@lists.libvirt.org Subject: [PATCH 1/2] qemu: Move memory device coldplug into a separate function Date: Tue, 5 Dec 2023 10:57:51 +0100 Message-ID: <07e70b0488695a6e3853352e504225acc56edbf2.1701770259.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.1 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Message-ID-Hash: DOKG5WBOKLJ4CR6OMGKXZQNI6J3CAP5C X-Message-ID-Hash: DOKG5WBOKLJ4CR6OMGKXZQNI6J3CAP5C X-MailFrom: mprivozn@redhat.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 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: Content-Type: text/plain; charset="utf-8"; x-default="true" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1701770494861100001 The code that handles coldplug of a memory device is pretty trivial and such could continue to live in the huge switch() where other devices are handled. But the code is about to get more complicated. To help with code readability, move it into a separate function. And while at it, make the function accept a double pointer to the memory device definition to make the ownership transfer obvious (the device is part of the domain on successful run). Signed-off-by: Michal Privoznik Reviewed-by: Martin Kletzander --- src/qemu/qemu_driver.c | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index d00d2a27c6..cad52b7150 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -6627,6 +6627,26 @@ qemuCheckDiskConfigAgainstDomain(const virDomainDef = *def, } =20 =20 +static int +qemuDomainAttachMemoryConfig(virDomainDef *vmdef, + virDomainMemoryDef **mem) +{ + if (vmdef->nmems =3D=3D vmdef->mem.memory_slots) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("no free memory device slot available")); + return -1; + } + + vmdef->mem.cur_balloon +=3D (*mem)->size; + + if (virDomainMemoryInsert(vmdef, *mem) < 0) + return -1; + + *mem =3D NULL; + return 0; +} + + static int qemuDomainAttachDeviceConfig(virDomainDef *vmdef, virDomainDeviceDef *dev, @@ -6747,17 +6767,8 @@ qemuDomainAttachDeviceConfig(virDomainDef *vmdef, break; =20 case VIR_DOMAIN_DEVICE_MEMORY: - if (vmdef->nmems =3D=3D vmdef->mem.memory_slots) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("no free memory device slot available")); + if (qemuDomainAttachMemoryConfig(vmdef, &dev->data.memory) < 0) return -1; - } - - vmdef->mem.cur_balloon +=3D dev->data.memory->size; - - if (virDomainMemoryInsert(vmdef, dev->data.memory) < 0) - return -1; - dev->data.memory =3D NULL; break; =20 case VIR_DOMAIN_DEVICE_REDIRDEV: --=20 2.41.0 _______________________________________________ Devel mailing list -- devel@lists.libvirt.org To unsubscribe send an email to devel-leave@lists.libvirt.org From nobody Sat May 11 22:54:40 2024 Delivered-To: importer@patchew.org Received-SPF: none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; spf=none (zohomail.com: 8.43.85.245 is neither permitted nor denied by domain of lists.libvirt.org) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1701770421892488.84097093977516; Tue, 5 Dec 2023 02:00:21 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id 9D2EE17DA; Tue, 5 Dec 2023 05:00:20 -0500 (EST) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 3CF0E180D; Tue, 5 Dec 2023 04:58:08 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id 3D15717DD; Tue, 5 Dec 2023 04:57:58 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (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 C93AA179C for ; Tue, 5 Dec 2023 04:57:57 -0500 (EST) Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-632-cpL4e6fSPfihO5mYa6Swew-1; Tue, 05 Dec 2023 04:57:56 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id B63343812587 for ; Tue, 5 Dec 2023 09:57:55 +0000 (UTC) Received: from maggie.brq.redhat.com (unknown [10.43.3.102]) by smtp.corp.redhat.com (Postfix) with ESMTP id 61FCC3C25 for ; Tue, 5 Dec 2023 09:57:55 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.4 X-MC-Unique: cpL4e6fSPfihO5mYa6Swew-1 From: Michal Privoznik To: devel@lists.libvirt.org Subject: [PATCH 2/2] qemu: Relax check for memory device coldplug Date: Tue, 5 Dec 2023 10:57:52 +0100 Message-ID: <0f914ffcabd6ad9a003581370d3f660befcc356b.1701770259.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.1 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Message-ID-Hash: UNOGZNVVLLCKDHC7WU7DOUX27SBZ743E X-Message-ID-Hash: UNOGZNVVLLCKDHC7WU7DOUX27SBZ743E X-MailFrom: mprivozn@redhat.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 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: Content-Type: text/plain; charset="utf-8"; x-default="true" Content-Transfer-Encoding: quoted-printable X-ZM-MESSAGEID: 1701770423379100001 When cold plugging a memory device we check whether there's enough free memory slots to accommodate new module. Well, this checks makes sense only for those memory devices that are plugged into DIMM slots (DIMM and NVDIMM models). Other memory device models, like VIRTIO_MEM, VIRTIO_PMEM or SGX_EPC are attached into PCI bus, or no bus at all. Resolves: https://issues.redhat.com/browse/RHEL-15480 Signed-off-by: Michal Privoznik Reviewed-by: Martin Kletzander --- src/qemu/qemu_driver.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index cad52b7150..64afae6450 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -6631,9 +6631,23 @@ static int qemuDomainAttachMemoryConfig(virDomainDef *vmdef, virDomainMemoryDef **mem) { - if (vmdef->nmems =3D=3D vmdef->mem.memory_slots) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("no free memory device slot available")); + switch ((*mem)->model) { + case VIR_DOMAIN_MEMORY_MODEL_DIMM: + case VIR_DOMAIN_MEMORY_MODEL_NVDIMM: + if (vmdef->nmems =3D=3D vmdef->mem.memory_slots) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("no free memory device slot available")); + return -1; + } + break; + + case VIR_DOMAIN_MEMORY_MODEL_VIRTIO_PMEM: + case VIR_DOMAIN_MEMORY_MODEL_VIRTIO_MEM: + case VIR_DOMAIN_MEMORY_MODEL_SGX_EPC: + break; + case VIR_DOMAIN_MEMORY_MODEL_NONE: + case VIR_DOMAIN_MEMORY_MODEL_LAST: + virReportEnumRangeError(virDomainMemoryModel, (*mem)->model); return -1; } =20 --=20 2.41.0 _______________________________________________ Devel mailing list -- devel@lists.libvirt.org To unsubscribe send an email to devel-leave@lists.libvirt.org