From nobody Fri Dec 12 14:05:56 2025 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=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1764768786; cv=none; d=zohomail.com; s=zohoarc; b=Fl7wntetkhtjCiPU8Az6uN3xzTg5pmnnnyzknpBuugVgV6YOHcjvgTBZAz6XjIDhwhGGbHkREhj8pp8L0lhL0Hc4GXK9bUkfKvOlCxh+wPqs1elcYapZsJ0Oolwd7i2GkARp90k2TVNWVDLqU55IEuSeOTS8NfufXoRc0wJZCcE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1764768786; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=lcVfUq1a3XRLvpkADZFBScuoieN6RMb1ihLebXv0GoM=; b=XJwtZ3aDh1EkPYpZs1JJLerdCh29yI5N1NEe99k858e7Wq8vWYVK0tM2QRqS0q2ImhZlXWupPIuGYeeC+AIh5s+df3jStM6aP3ERqWS3QTS2PBWsxLqD3NyIaq4mHX3LuKIcbEG4ZRFw8am/iL/pQXihcA9u+vh7iww/USCsRfg= ARC-Authentication-Results: i=1; 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=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1764768786712637.5847357873055; Wed, 3 Dec 2025 05:33:06 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id EA36B4412D; Wed, 3 Dec 2025 08:33:04 -0500 (EST) Received: from [172.19.199.74] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 507CC44880; Wed, 3 Dec 2025 08:29:41 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id C77BF44446; Wed, 3 Dec 2025 08:29:14 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 2FEE044531 for ; Wed, 3 Dec 2025 08:29:14 -0500 (EST) Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-453-4i-izx0cMw6G_v_GrSKvmQ-1; Wed, 03 Dec 2025 08:28:56 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (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 mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 26EF71956071 for ; Wed, 3 Dec 2025 13:28:52 +0000 (UTC) Received: from moe (unknown [10.43.3.236]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 6541130001A2 for ; Wed, 3 Dec 2025 13:28:51 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_SBL_CSS, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=no autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1764768553; h=from:from: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; bh=lcVfUq1a3XRLvpkADZFBScuoieN6RMb1ihLebXv0GoM=; b=ZbHCHqUpeHxDwMe/U14EkLQKz6gEAVhfJgXBN3vir6ylN7zCIrFpqhyBtAg7fQNGr+T8mt EIbLO9zEgXRzvl0LNLlm3f6EBMPtH5F7QOt3CK+j+UsrLTj6sVqZZdFrvjEZLTiRSmFJZN u4NOP7yX064RaJ3qozNg/47iHYm5E/c= X-MC-Unique: 4i-izx0cMw6G_v_GrSKvmQ-1 X-Mimecast-MFC-AGG-ID: 4i-izx0cMw6G_v_GrSKvmQ_1764768535 To: devel@lists.libvirt.org Subject: [PATCH 2/2] qemu: Treat memory device source nodemask as strict NUMA policy Date: Wed, 3 Dec 2025 14:28:46 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 1i36a9FGQOh7nKC25O2K7yZ_tO5ibxUY9JT78P7__pw_1764768535 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: QAXPXHIAHCKS3D2V35W6WSADM2KCPC7M X-Message-ID-Hash: QAXPXHIAHCKS3D2V35W6WSADM2KCPC7M X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Michal Privoznik via Devel Reply-To: Michal Privoznik X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1764768787512019201 Content-Type: text/plain; charset="utf-8"; x-default="true" From: Michal Privoznik A memory device can have which specifies which host NUMA nodes the memory should be allocated from (currently supported for dimm, virtio-mem and sgx-epc models). But when generating corresponding command line for the device, the NUMA policy is taken from the guest NUMA node that corresponds to the memory device (as defined by target/node) or overall domain NUMA policy (as defined by ). This may lead to memory being allocated from unexpected NUMA node. For instance, if the memory device has 0 and domain has then the cmd line for the memory device also has just "policy":"preferred". Treat as mode=3D'strict'. But I agree that this is kind of nonsense configuration. Why would somebody want to prefer one NUMA node but then configure memory device to allocate NUMA from the other? Resolves: https://issues.redhat.com/browse/RHEL-114415 Signed-off-by: Michal Privoznik --- src/qemu/qemu_command.c | 6 ++++++ .../memory-hotplug-numa-preferred.x86_64-latest.args | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index b69fe23236..3736c1bafc 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -3497,6 +3497,12 @@ qemuBuildMemoryBackendProps(virJSONValue **backendPr= ops, if (!virNumaNodesetIsAvailable(nodemask)) return -1; =20 + /* Treat source nodes as strict mode, regardless of the target gue= st + * NUMA node mode. */ + if (hasSourceNodes) { + mode =3D VIR_DOMAIN_NUMATUNE_MEM_STRICT; + } + /* If mode is "restrictive", we should only use cgroups setting al= lowed memory * nodes, and skip passing the host-nodes and policy parameters to= QEMU command * line which means we will use system default memory policy. */ diff --git a/tests/qemuxmlconfdata/memory-hotplug-numa-preferred.x86_64-lat= est.args b/tests/qemuxmlconfdata/memory-hotplug-numa-preferred.x86_64-lates= t.args index 23a5f76af2..cc318977b3 100644 --- a/tests/qemuxmlconfdata/memory-hotplug-numa-preferred.x86_64-latest.args +++ b/tests/qemuxmlconfdata/memory-hotplug-numa-preferred.x86_64-latest.args @@ -34,7 +34,7 @@ XDG_CONFIG_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGue= st1/.config \ -device '{"driver":"pcie-root-port","port":10,"chassis":3,"id":"pci.3","bu= s":"pcie.0","addr":"0x1.0x2"}' \ -device '{"driver":"qemu-xhci","id":"usb","bus":"pci.1","addr":"0x0"}' \ -object '{"qom-type":"thread-context","id":"tc-memdimm0","node-affinity":[= 0]}' \ --object '{"qom-type":"memory-backend-file","id":"memdimm0","mem-path":"/de= v/hugepages1G/libvirt/qemu/-1-QEMUGuest1","prealloc":true,"size":1073741824= ,"host-nodes":[0],"policy":"preferred","prealloc-context":"tc-memdimm0"}' \ +-object '{"qom-type":"memory-backend-file","id":"memdimm0","mem-path":"/de= v/hugepages1G/libvirt/qemu/-1-QEMUGuest1","prealloc":true,"size":1073741824= ,"host-nodes":[0],"policy":"bind","prealloc-context":"tc-memdimm0"}' \ -device '{"driver":"pc-dimm","node":0,"memdev":"memdimm0","id":"dimm0","sl= ot":0}' \ -audiodev '{"id":"audio1","driver":"none"}' \ -global ICH9-LPC.noreboot=3Doff \ --=20 2.51.2