From nobody Mon May 6 09:45:50 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) client-ip=205.139.110.61; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-1.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1598881487; cv=none; d=zohomail.com; s=zohoarc; b=YdtwXeUvTs4nyreir+xJdGijeRFUia9bwoyNX1r9G/QcjQGnapm/vaKm4edzgBH+8VxkrHXGVpxjKd0EKt0nwxFPn5wYsEkWSpazuHEnksx6pir+lFfWjCR39rMQJepnkOCDFOofLIJvA12tKk9rMO4HOd5aMhA9sgKXNWBphsc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1598881487; h=Content-Type:Content-Transfer-Encoding:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=VtrtXD7KWIhDDuW3R4aKcLlwgR/2Un6r15ctJaAnEgE=; b=P1R/2yWY1pCYppH6QFWwMT4mXvVn65fXrQCIx3OHMqKNAmmXdY0EgZj4yiP1uE8WY5KjugdFbCp7iHvw7WcS72qiV7ZjEZKXNKk2m5tZf4D3/fqt7pPSZ1E2kXdjLvNJM3hnRrJLFwiyT0QngJXAVfpGlTuDhSCGH76GuG423TM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 205.139.110.61 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) by mx.zohomail.com with SMTPS id 1598881487631564.5814034033452; Mon, 31 Aug 2020 06:44:47 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-280-evjJbPr3Pya7cQVMPDjYTw-1; Mon, 31 Aug 2020 09:44:44 -0400 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 35A1118BA2AD; Mon, 31 Aug 2020 13:44:38 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id A1A6E7DA26; Mon, 31 Aug 2020 13:44:37 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 7B8FE18A0B64; Mon, 31 Aug 2020 13:44:35 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 07VDiYq9027423 for ; Mon, 31 Aug 2020 09:44:34 -0400 Received: by smtp.corp.redhat.com (Postfix) id 5165981195; Mon, 31 Aug 2020 13:44:34 +0000 (UTC) Received: from localhost.localdomain (unknown [10.40.192.144]) by smtp.corp.redhat.com (Postfix) with ESMTP id C3F2981186 for ; Mon, 31 Aug 2020 13:44:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1598881486; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=VtrtXD7KWIhDDuW3R4aKcLlwgR/2Un6r15ctJaAnEgE=; b=ceblfEcY5XEgltvfmfnK1C8abGLVkihc0HlUsRm50W1xFTaGuWPX80O3Isvpg00C/3jn69 tcQQcKBLw51dqvEU9FuFA6YjWvlLMiYVlVGZ+QGFSk9JTFg29L5lAyMU5WuYWTK0RFm6tT AJhALHUd6fC4xSxi+h3/u0cRXWlE98c= X-MC-Unique: evjJbPr3Pya7cQVMPDjYTw-1 From: Michal Privoznik To: libvir-list@redhat.com Subject: [PATCH] qemu: Validate memory hotplug in domainValidateCallback instead of cmd line generator Date: Mon, 31 Aug 2020 15:44:22 +0200 Message-Id: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-loop: libvir-list@redhat.com X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0.001 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" When editing a domain with hotplug enabled, I removed the only NUMA node it had and got no error. I got the error later though, when starting the domain. This is not as user friendly as it can be. Move the validation call out from command line generator and into domain validator (which is called prior to starting cmd line generation anyway). When doing this, I had to remove memory-hotplug-nonuma xml2xml test case because there is no way the test case can succeed, obviously. Signed-off-by: Michal Privoznik Reviewed-by: Daniel Henrique Barboza --- src/qemu/qemu_command.c | 3 -- src/qemu/qemu_domain.c | 2 ++ src/qemu/qemu_validate.c | 3 ++ tests/qemuxml2argvtest.c | 2 +- .../memory-hotplug-nonuma.xml | 28 ------------------- tests/qemuxml2xmltest.c | 14 ++++++---- 6 files changed, 14 insertions(+), 38 deletions(-) delete mode 100644 tests/qemuxml2xmloutdata/memory-hotplug-nonuma.xml diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 6798febf8d..bd98b0a97c 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -7123,9 +7123,6 @@ qemuBuildMemCommandLine(virCommandPtr cmd, virQEMUCapsPtr qemuCaps, qemuDomainObjPrivatePtr priv) { - if (qemuDomainDefValidateMemoryHotplug(def, qemuCaps, NULL) < 0) - return -1; - virCommandAddArg(cmd, "-m"); =20 if (virDomainDefHasMemoryHotplug(def)) { diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 21f24fceed..aa0f5c1a2d 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -8468,6 +8468,8 @@ qemuCheckMemoryDimmConflict(const virDomainDef *def, =20 return false; } + + static int qemuDomainDefValidateMemoryHotplugDevice(const virDomainMemoryDef *mem, const virDomainDef *def) diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index c4b86326ad..6f3fee5427 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -916,6 +916,9 @@ qemuValidateDomainDef(const virDomainDef *def, } } =20 + if (qemuDomainDefValidateMemoryHotplug(def, qemuCaps, NULL) < 0) + return -1; + if (qemuValidateDomainDefClockTimers(def, qemuCaps) < 0) return -1; =20 diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 01839cb88c..e93948e3fc 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -2931,7 +2931,7 @@ mymain(void) DO_TEST("cpu-host-passthrough-features", QEMU_CAPS_KVM); =20 DO_TEST_FAILURE("memory-align-fail", NONE); - DO_TEST_FAILURE("memory-hotplug-nonuma", QEMU_CAPS_DEVICE_PC_DIMM); + DO_TEST_PARSE_ERROR("memory-hotplug-nonuma", QEMU_CAPS_DEVICE_PC_DIMM); DO_TEST("memory-hotplug", NONE); DO_TEST("memory-hotplug", QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_NUMA); DO_TEST("memory-hotplug-dimm", QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_NUM= A, diff --git a/tests/qemuxml2xmloutdata/memory-hotplug-nonuma.xml b/tests/qem= uxml2xmloutdata/memory-hotplug-nonuma.xml deleted file mode 100644 index 7c277f01a3..0000000000 --- a/tests/qemuxml2xmloutdata/memory-hotplug-nonuma.xml +++ /dev/null @@ -1,28 +0,0 @@ - - QEMUGuest1 - c7a5fdbd-edaf-9455-926a-d65c16db1809 - 1233456789 - 219136 - 219136 - 1 - - hvm - - - - destroy - restart - destroy - - /usr/bin/qemu-system-i386 - -
- - - - - -
- - - diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index a07e2b7553..6eb008c8d2 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -303,18 +303,21 @@ mymain(void) =20 DO_TEST("pages-discard", NONE); DO_TEST("pages-discard-hugepages", QEMU_CAPS_OBJECT_MEMORY_FILE); - DO_TEST("pages-dimm-discard", NONE); + DO_TEST("pages-dimm-discard", QEMU_CAPS_DEVICE_PC_DIMM); DO_TEST("hugepages-default", QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST("hugepages-default-2M", QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST("hugepages-default-system-size", QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST("hugepages-nodeset", QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST("hugepages-numa-default-2M", QEMU_CAPS_OBJECT_MEMORY_FILE); - DO_TEST("hugepages-numa-default-dimm", QEMU_CAPS_OBJECT_MEMORY_FILE); + DO_TEST("hugepages-numa-default-dimm", QEMU_CAPS_DEVICE_PC_DIMM, + QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST("hugepages-numa-nodeset", QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST("hugepages-numa-nodeset-part", QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST("hugepages-shared", QEMU_CAPS_OBJECT_MEMORY_FILE); - DO_TEST("hugepages-memaccess", QEMU_CAPS_OBJECT_MEMORY_FILE); - DO_TEST("hugepages-memaccess2", QEMU_CAPS_OBJECT_MEMORY_FILE); + DO_TEST("hugepages-memaccess", QEMU_CAPS_DEVICE_PC_DIMM, + QEMU_CAPS_OBJECT_MEMORY_FILE); + DO_TEST("hugepages-memaccess2", QEMU_CAPS_DEVICE_PC_DIMM, + QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST("hugepages-nvdimm", QEMU_CAPS_DEVICE_NVDIMM, QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST("nosharepages", NONE); @@ -1260,8 +1263,7 @@ mymain(void) DO_TEST_CAPS_ARCH_LATEST("aarch64-features-sve", "aarch64"); =20 DO_TEST("memory-hotplug", NONE); - DO_TEST("memory-hotplug-nonuma", NONE); - DO_TEST("memory-hotplug-dimm", NONE); + DO_TEST("memory-hotplug-dimm", QEMU_CAPS_DEVICE_PC_DIMM); DO_TEST("memory-hotplug-nvdimm", QEMU_CAPS_DEVICE_NVDIMM); DO_TEST("memory-hotplug-nvdimm-access", QEMU_CAPS_DEVICE_NVDIMM); DO_TEST("memory-hotplug-nvdimm-label", QEMU_CAPS_DEVICE_NVDIMM); --=20 2.26.2