From nobody Mon Feb 9 07:55:30 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 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=1667492644; cv=none; d=zohomail.com; s=zohoarc; b=VPq1AVUc12bqYs/mdhUwHXkB8mSR9fnhoE+oJr61FZVlHi2sAol9Ae71Rqh69WaGfzV6mTW9/HQYFHf5MWjYV6MrPBzZKbOPopV+VXP0I+XjXcxLAqa6uPRCFVPhcOfRV4iOuJOmjoV7nF5LQOzKgVvsOH5Ye5cUqoqPJ5ZWPdc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1667492644; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ozQfv+rTMq2dxBRQ3F6vJ3GmmrCbLnJn0STT1xxmbXA=; b=FuN55390EqSAnKrHQn+v13Vg3k0hT20QRO7BwVuFhNB7RSo75orGrecexqJzLax4FKUBVrkeAkqsmnAVBfzdi1abE16IgU6DbPK7j6a6wieffSYAoI5LZez0UGtMHsV5mvLKUCONmj81GIOYxv53f94nWp72LMcY+rX85yjPf/Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1667492644592523.3763946026226; Thu, 3 Nov 2022 09:24:04 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-212-YNvDUPnyMd-dv_6rXN5R_A-1; Thu, 03 Nov 2022 12:22:35 -0400 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 0EA8D802536; Thu, 3 Nov 2022 16:22:20 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id 94717C2DF67; Thu, 3 Nov 2022 16:22:19 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 0B0A61946A7E; Thu, 3 Nov 2022 16:22:19 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id D4A8B1947062 for ; Thu, 3 Nov 2022 16:22:17 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id C5ADF1415139; Thu, 3 Nov 2022 16:22:17 +0000 (UTC) Received: from maggie.redhat.com (unknown [10.43.2.39]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6A9831415138 for ; Thu, 3 Nov 2022 16:22:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1667492643; 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: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=ozQfv+rTMq2dxBRQ3F6vJ3GmmrCbLnJn0STT1xxmbXA=; b=dcHl6nUidoywPSPUIKAuema6umsd3Z4/qw5ljc7pTIefUDJXM3uCxayel+G7PeYR02HOLD /nRbU2RzitZ5OoCbO7kJ6wfKOiA4Q6Rwhswv7IRjLvOHQa9LcfiYMf/BJO3yom1DF3UgOo DwaOpdRiwBHZ83u34tpA7Nbv2FXvMqs= X-MC-Unique: YNvDUPnyMd-dv_6rXN5R_A-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Michal Privoznik To: libvir-list@redhat.com Subject: [PATCH 04/15] qemu: Assume QEMU_CAPS_OBJECT_MEMORY_RAM Date: Thu, 3 Nov 2022 17:22:02 +0100 Message-Id: <7b5bb5181afedd2b3351f7e467ac0c580922dedd.1667490688.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.7 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 3.1 on 10.11.54.8 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1667492645438100001 Content-Type: text/plain; charset="utf-8"; x-default="true" Introduced in QEMU's commit of v2.1.0-rc0~41^2~104 the memory-backend-ram is going to be present for all QEMU versions we support (4.2.0, currently). Therefore, we can assume the capability is always set and thus doesn't need to be checked for. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- src/qemu/qemu_command.c | 27 +++++----------- src/qemu/qemu_validate.c | 34 --------------------- tests/qemuxml2argvdata/numatune-memnode.err | 2 +- tests/qemuxml2argvtest.c | 22 +++++-------- tests/qemuxml2xmltest.c | 5 ++- 5 files changed, 17 insertions(+), 73 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 372f088850..2a7146e6df 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -3478,12 +3478,6 @@ qemuBuildMemoryBackendProps(virJSONValue **backendPr= ops, _("this qemu doesn't support the " "memory-backend-file object")); return -1; - } else if (STREQ(backendType, "memory-backend-ram") && - !virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_OBJECT_MEMORY= _RAM)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("this qemu doesn't support the " - "memory-backend-ram object")); - return -1; } else if (STREQ(backendType, "memory-backend-memfd") && !virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_OBJECT_MEMORY= _MEMFD)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", @@ -7223,6 +7217,7 @@ qemuBuildNumaCommandLine(virQEMUDriverConfig *cfg, int ret =3D -1; size_t ncells =3D virDomainNumaGetNodeCount(def->numa); ssize_t masterInitiator =3D -1; + int rc; =20 if (!virDomainNumatuneNodesetIsAvailable(def->numa, priv->autoNodeset)) goto cleanup; @@ -7239,21 +7234,13 @@ qemuBuildNumaCommandLine(virQEMUDriverConfig *cfg, =20 nodeBackends =3D g_new0(virJSONValue *, ncells); =20 - /* using of -numa memdev=3D cannot be combined with -numa mem=3D, thus= we - * need to check which approach to use */ - if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_RAM) || - virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_FILE) || - virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_MEMFD)) { - int rc; + for (i =3D 0; i < ncells; i++) { + if ((rc =3D qemuBuildMemoryCellBackendProps(def, cfg, i, priv, + &nodeBackends[i])) < 0) + goto cleanup; =20 - for (i =3D 0; i < ncells; i++) { - if ((rc =3D qemuBuildMemoryCellBackendProps(def, cfg, i, priv, - &nodeBackends[i])) <= 0) - goto cleanup; - - if (rc =3D=3D 0) - needBackend =3D true; - } + if (rc =3D=3D 0) + needBackend =3D true; } =20 if (!needBackend && diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c index 1456a69351..5963442397 100644 --- a/src/qemu/qemu_validate.c +++ b/src/qemu/qemu_validate.c @@ -969,17 +969,6 @@ qemuValidateDomainDefNuma(const virDomainDef *def, const long system_page_size =3D virGetSystemPageSizeKB(); size_t ncells =3D virDomainNumaGetNodeCount(def->numa); size_t i; - bool hasMemoryCap =3D virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY= _RAM) || - virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_F= ILE) || - virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_MEMORY_M= EMFD); - bool needBacking =3D false; - - if (virDomainNumatuneHasPerNodeBinding(def->numa) && !hasMemoryCap) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("Per-node memory binding is not supported " - "with this QEMU")); - return -1; - } =20 if (def->mem.nhugepages && def->mem.hugepages[0].size !=3D system_page_size && @@ -993,14 +982,6 @@ qemuValidateDomainDefNuma(const virDomainDef *def, for (i =3D 0; i < ncells; i++) { virBitmap *cpumask =3D virDomainNumaGetNodeCpumask(def->numa, i); =20 - if (!hasMemoryCap && - virDomainNumaGetNodeMemoryAccessMode(def->numa, i)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("Shared memory mapping is not supported " - "with this QEMU")); - return -1; - } - if (cpumask) { g_autofree char * cpumaskStr =3D NULL; if (!(cpumaskStr =3D virBitmapFormat(cpumask))) @@ -1016,15 +997,7 @@ qemuValidateDomainDefNuma(const virDomainDef *def, } } =20 - if (!virQEMUCapsGetMachineNumaMemSupported(qemuCaps, - def->virtType, - def->os.machine)) { - needBacking =3D true; - } - if (virDomainNumaHasHMAT(def->numa)) { - needBacking =3D true; - if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_NUMA_HMAT)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("HMAT is not supported with this QEMU")); @@ -1032,13 +1005,6 @@ qemuValidateDomainDefNuma(const virDomainDef *def, } } =20 - if (needBacking && !hasMemoryCap) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("NUMA without specified memory backing is not " - "supported with this QEMU binary")); - return -1; - } - return 0; } =20 diff --git a/tests/qemuxml2argvdata/numatune-memnode.err b/tests/qemuxml2ar= gvdata/numatune-memnode.err index 1d5e57f996..ff4b1cce2e 100644 --- a/tests/qemuxml2argvdata/numatune-memnode.err +++ b/tests/qemuxml2argvdata/numatune-memnode.err @@ -1 +1 @@ -unsupported configuration: Per-node memory binding is not supported with t= his QEMU +unsupported configuration: disjoint NUMA cpu ranges are not supported with= this QEMU diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 148d6b439e..4d02b0f97c 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1235,7 +1235,6 @@ mymain(void) DO_TEST_CAPS_LATEST("hugepages-memaccess"); DO_TEST_CAPS_LATEST("hugepages-memaccess2"); DO_TEST_PARSE_ERROR("hugepages-memaccess3", - QEMU_CAPS_OBJECT_MEMORY_RAM, QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST_CAPS_LATEST("hugepages-memaccess3"); DO_TEST_CAPS_LATEST("hugepages-nvdimm"); @@ -1869,7 +1868,6 @@ mymain(void) ARG_MIGRATE_FD, 7, ARG_QEMU_CAPS, QEMU_CAPS_NUMA, - QEMU_CAPS_OBJECT_MEMORY_RAM, QEMU_CAPS_LAST, ARG_END); =20 @@ -1909,7 +1907,7 @@ mymain(void) DO_TEST_PARSE_ERROR_NOCAPS("cpu-numa3"); DO_TEST_PARSE_ERROR_NOCAPS("cpu-numa-disjoint"); DO_TEST("cpu-numa-disjoint", QEMU_CAPS_NUMA); - DO_TEST_FAILURE("cpu-numa-memshared", QEMU_CAPS_OBJECT_MEMORY_RAM); + DO_TEST_FAILURE_NOCAPS("cpu-numa-memshared"); DO_TEST("cpu-numa-memshared", QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST("cpu-host-model", QEMU_CAPS_DEVICE_PCI_BRIDGE, @@ -1968,7 +1966,6 @@ mymain(void) DO_TEST("cputune-numatune", QEMU_CAPS_KVM, QEMU_CAPS_OBJECT_IOTHREAD, - QEMU_CAPS_OBJECT_MEMORY_RAM, QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST("vcpu-placement-static", QEMU_CAPS_KVM, @@ -1978,8 +1975,7 @@ mymain(void) DO_TEST_NOCAPS("numatune-memory"); DO_TEST_PARSE_ERROR_NOCAPS("numatune-memory-invalid-nodeset"); DO_TEST("numatune-memnode", - QEMU_CAPS_NUMA, - QEMU_CAPS_OBJECT_MEMORY_RAM); + QEMU_CAPS_NUMA); DO_TEST_PARSE_ERROR_NOCAPS("numatune-memnode"); DO_TEST_CAPS_VER("numatune-memnode", "5.2.0"); DO_TEST_CAPS_LATEST("numatune-memnode"); @@ -1988,19 +1984,16 @@ mymain(void) DO_TEST_CAPS_LATEST("numatune-system-memory"); =20 DO_TEST("numatune-memnode-no-memory", - QEMU_CAPS_NUMA, - QEMU_CAPS_OBJECT_MEMORY_RAM); - DO_TEST_PARSE_ERROR_NOCAPS("numatune-memnode-no-memory"); + QEMU_CAPS_NUMA); =20 DO_TEST("numatune-distances", QEMU_CAPS_NUMA); DO_TEST_NOCAPS("numatune-no-vcpu"); DO_TEST_CAPS_LATEST("numatune-hmat"); =20 DO_TEST_NOCAPS("numatune-auto-nodeset-invalid"); - DO_TEST("numatune-auto-prefer", QEMU_CAPS_OBJECT_MEMORY_RAM, + DO_TEST("numatune-auto-prefer", QEMU_CAPS_OBJECT_MEMORY_FILE); - DO_TEST_FAILURE("numatune-static-nodeset-exceed-hostnode", - QEMU_CAPS_OBJECT_MEMORY_RAM); + DO_TEST_FAILURE_NOCAPS("numatune-static-nodeset-exceed-hostnode"); DO_TEST_PARSE_ERROR_NOCAPS("numatune-memnode-nocpu"); DO_TEST_PARSE_ERROR_NOCAPS("numatune-memnodes-problematic"); DO_TEST_NOCAPS("numad"); @@ -2645,17 +2638,16 @@ mymain(void) DO_TEST_NOCAPS("memory-hotplug"); 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, - QEMU_CAPS_OBJECT_MEMORY_RAM, QEMU_CAPS_OBJECT_MEMORY_FILE); + QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST_CAPS_LATEST("memory-hotplug-dimm-addr"); DO_TEST("memory-hotplug-ppc64-nonuma", QEMU_CAPS_KVM, QEMU_CAPS_DEVICE= _PC_DIMM, QEMU_CAPS_NUMA, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, - QEMU_CAPS_OBJECT_MEMORY_RAM, QEMU_CAPS_OBJECT_MEMORY_FILE); + QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST_FULL("memory-hotplug-ppc64-nonuma-abi-update", "", ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE, ARG_QEMU_CAPS, QEMU_CAPS_KVM, QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_NUMA, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, - QEMU_CAPS_OBJECT_MEMORY_RAM, QEMU_CAPS_OBJECT_MEMORY_FILE, QEMU_CAPS_LAST, ARG_END); diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 966496604d..7c2f525c68 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -933,7 +933,7 @@ mymain(void) DO_TEST("numatune-memnode-no-memory", QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST("numatune-distances", QEMU_CAPS_NUMA); DO_TEST("numatune-no-vcpu", QEMU_CAPS_NUMA); - DO_TEST("numatune-hmat", QEMU_CAPS_NUMA_HMAT, QEMU_CAPS_OBJECT_MEMORY_= RAM); + DO_TEST("numatune-hmat", QEMU_CAPS_NUMA_HMAT); DO_TEST_CAPS_LATEST("numatune-memnode-restrictive-mode"); =20 DO_TEST_NOCAPS("firmware-manual-bios"); @@ -1026,13 +1026,12 @@ mymain(void) =20 DO_TEST("memory-hotplug-ppc64-nonuma", QEMU_CAPS_KVM, QEMU_CAPS_DEVICE= _PC_DIMM, QEMU_CAPS_NUMA, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, - QEMU_CAPS_OBJECT_MEMORY_RAM, QEMU_CAPS_OBJECT_MEMORY_FILE); + QEMU_CAPS_OBJECT_MEMORY_FILE); DO_TEST_FULL("memory-hotplug-ppc64-nonuma-abi-update", "", WHEN_BOTH, ARG_PARSEFLAGS, VIR_DOMAIN_DEF_PARSE_ABI_UPDATE, ARG_QEMU_CAPS, QEMU_CAPS_KVM, QEMU_CAPS_DEVICE_PC_DIMM, QEMU_CAPS_NUMA, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE, - QEMU_CAPS_OBJECT_MEMORY_RAM, QEMU_CAPS_OBJECT_MEMORY_FILE, QEMU_CAPS_LAST, ARG_END); DO_TEST_NOCAPS("memory-hotplug"); DO_TEST("memory-hotplug-dimm", QEMU_CAPS_DEVICE_PC_DIMM); --=20 2.37.4