From nobody Thu Nov 20 12:28:20 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1763573450; cv=none; d=zohomail.com; s=zohoarc; b=hAbMkhckZBOCEejPeDa3jsUH8/y88v/6w1h+10H/ZR9YLEENI+3NsZK5ElreGrNhrDr3ADaqT+gjiSxrcCMfCILj6ZgsoZQkJDCqoRsR0IVQTm2L6jggZiUeLLhAbBTw9xTYaQJoemyuRUWh5/EZh75iCBOPkSNRPL7SGUt+jZI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1763573450; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tl+z1WmVvwbjP9MF6m9chbVRsv74+2tGN5jEc9dOxpg=; b=Ze4h3VJrnZJQ2MKD/nyEmc2flFxA5/oXaY+DpUIOlX4Dk4+3vSVHsI15ou8Wo6I0ldgYEe0hPWUfyL3YrigBIcg/cGP+VBw94CqtizM8LcvkF+pHunmV7lhd4Mq9Usb9o5+b/w5c9XFcHAKOBs2YkeelzYjNEpGayhRcl+zptYE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17635734502031009.682037726597; Wed, 19 Nov 2025 09:30:50 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vLlzx-00033g-Lq; Wed, 19 Nov 2025 12:29:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vLlzh-000311-Oe for qemu-devel@nongnu.org; Wed, 19 Nov 2025 12:29:31 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vLlzd-0004NQ-UE for qemu-devel@nongnu.org; Wed, 19 Nov 2025 12:29:25 -0500 Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-665-s-yznHTSNd-QEVUdNhtlzQ-1; Wed, 19 Nov 2025 12:29:19 -0500 Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-8b2657cfcdaso878253985a.3 for ; Wed, 19 Nov 2025 09:29:19 -0800 (PST) Received: from x1.com ([142.188.210.156]) by smtp.gmail.com with ESMTPSA id af79cd13be357-8b2af042c9csm1444759485a.46.2025.11.19.09.29.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Nov 2025 09:29:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1763573360; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tl+z1WmVvwbjP9MF6m9chbVRsv74+2tGN5jEc9dOxpg=; b=QOfb7itdCPiQpLbHnEQXPVhd674lVCvyKyn3myoTDk2DtjtSG0Zv2v27IT8UrUKFjPYAjd PdHjp4yK7u4VoHOWP0aYuD5TzEqjvexhMXqInXlh927Mb1Xc1ZYCINjK29tFpHo7Oz9qaY pEQTecWwmwRO+j3mQtUOEwvEjqi1bMo= X-MC-Unique: s-yznHTSNd-QEVUdNhtlzQ-1 X-Mimecast-MFC-AGG-ID: s-yznHTSNd-QEVUdNhtlzQ_1763573358 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1763573358; x=1764178158; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tl+z1WmVvwbjP9MF6m9chbVRsv74+2tGN5jEc9dOxpg=; b=jIg1ghQBiihTF8izzEd0Kjy4YXTRd+vTpuFNearEoyxuF5w4W/GmocZZZb4F9nU8XU W+U1P4h9WQ+SnEFQxUUEDFkEZy/UtnmNJ6ozzxMQU4fC8MOwAiXNygFFVYz5GBle+8iI 8xr6vyIl4zEE59mBIUPZ622SVMyaIim0tPW9ZxzHmS2U5orKqaXfo3EFfEkyF2iR0HwI mDlsDTZCXHdWs+2B5mZBGLKXfdqRVS3P48zbyuWfk90fxUpfHz/yPDyaQvaBb0bbrIyr L7W89HZ2FEF8p2UiHZhYHGb2ugTa31drBPZkvN6MDGEyx1VYQXRbCunBj66VUFBI9eZp e0qQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763573358; x=1764178158; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=tl+z1WmVvwbjP9MF6m9chbVRsv74+2tGN5jEc9dOxpg=; b=nwxfm1Ed0vrrRPU9Umx2ynXWncrjCQ4wMIrxrQax3GkFjHvqDUUAUEVX4iTD5PJPl6 15gHYSJNEwBzW0GBqm7OXlr6E1AA0etUHoO7bLM1wmQcv6GWULLQQXYet607//x2o6zb Qn0PJrtOSAw+MTASFlpjS7U936GnJhpdLe0l+MoSjHr69x7Ctb8X24hGNj0wWkhHPUvr tajk8xaE0ZN6JG04kAznMli57rztqkHq/KqvsvKe5ydm4ngpXW96ZTaTkEhjImjst3Q+ OePWFtHg4KyQWAIQ+yplFiP2RWTsrP16BawxRHQadv6hZowzMZ8ZD5ZSJ+lUNNa8jzKJ blcw== X-Gm-Message-State: AOJu0YyijVHpXI4EWf4YSCj8F+n6QCc+Cmv+jUUCLhZzjbDumk6377Re 1CZObgNCp//nZUWTCxN8ftrtXESwhnH2hXoJEihUcccmQrFgIUYtqmvjAXdvXI5whnIbcUXzGkp DEGXF9d6CAZBNLl1S50e8wGRHysYAeFDDYObKmJSlb2ygPV6h0NmfjojvWKMmd+SHw/aJ0IJSIF wmABQ9uF1xUmN8GW16Q42+eH/v7Aiculessuh83Q== X-Gm-Gg: ASbGncttts7yi532kR376+7fW6FndQIUhtXWtfGWiECAbxNvlW+vaFgCv/swlo3sUER 86RQy7lwL7Jq8oqHWY8fiZh0HTrEvf0zC9DF6dkbn0vzpGO+ytlfFPiROaEUJmd+SldMM6ZqINJ vx8D4KZzcP917xEmteWOgI0WcB+DvWf2uEROx3KKwqKojtSQx8BszyLsYcBCUYGxDTKmxE5+mHi gaT0qjmW4lVVW9qXe0SGU22LLVrHIV8D1R9tRfvNX+dSD9V5CnuXq6AQysFDLNKHfM/CSYAORrB wGMHmc6pKdELLkm5u4mWfJkkpwhvFOEfqGUwuO/2S2SHD5pvbC76H5ib0BHmCY+GM6Osr/SpfG/ c X-Received: by 2002:a05:620a:471e:b0:84e:2544:6be7 with SMTP id af79cd13be357-8b3274877d7mr20979785a.65.1763573357886; Wed, 19 Nov 2025 09:29:17 -0800 (PST) X-Google-Smtp-Source: AGHT+IF0dCicOW7ZH0EJiH5b+RgwwToqHtj/BVHiLjetambiYT5JhkX1gSIIyRSfLzhDViP4ubU54A== X-Received: by 2002:a05:620a:471e:b0:84e:2544:6be7 with SMTP id af79cd13be357-8b3274877d7mr20974585a.65.1763573357212; Wed, 19 Nov 2025 09:29:17 -0800 (PST) From: Peter Xu To: qemu-devel@nongnu.org Cc: Paolo Bonzini , David Hildenbrand , Alexey Kardashevskiy , peterx@redhat.com, Chenyi Qiang , Juraj Marcin , Li Xiaoyao , Fabiano Rosas Subject: [PATCH v2 1/9] kvm: Decouple memory attribute check from kvm_guest_memfd_supported Date: Wed, 19 Nov 2025 12:29:05 -0500 Message-ID: <20251119172913.577392-2-peterx@redhat.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20251119172913.577392-1-peterx@redhat.com> References: <20251119172913.577392-1-peterx@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=peterx@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1763573450978018900 Content-Type: text/plain; charset="utf-8" From: Xiaoyao Li With the mmap support of guest memfd, KVM allows usersapce to create guest memfd serving as normal non-private memory for X86 DEFEAULT VM. However, KVM doesn't support private memory attriute for X86 DEFAULT VM. Make kvm_guest_memfd_supported not rely on KVM_MEMORY_ATTRIBUTE_PRIVATE and check KVM_MEMORY_ATTRIBUTE_PRIVATE separately when the machine requires guest_memfd to serve as private memory. This allows QMEU to create guest memfd with mmap to serve as the memory backend for X86 DEFAULT VM. Signed-off-by: Xiaoyao Li Signed-off-by: Peter Xu --- include/system/kvm.h | 1 + accel/kvm/kvm-all.c | 8 ++++++-- accel/stubs/kvm-stub.c | 5 +++++ system/physmem.c | 8 ++++++++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/include/system/kvm.h b/include/system/kvm.h index 8f9eecf044..b5811c90f1 100644 --- a/include/system/kvm.h +++ b/include/system/kvm.h @@ -561,6 +561,7 @@ int kvm_create_guest_memfd(uint64_t size, uint64_t flag= s, Error **errp); =20 int kvm_set_memory_attributes_private(hwaddr start, uint64_t size); int kvm_set_memory_attributes_shared(hwaddr start, uint64_t size); +bool kvm_private_memory_attribute_supported(void); =20 int kvm_convert_memory(hwaddr start, hwaddr size, bool to_private); =20 diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index f9254ae654..96c194ce54 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -1501,6 +1501,11 @@ int kvm_set_memory_attributes_shared(hwaddr start, u= int64_t size) return kvm_set_memory_attributes(start, size, 0); } =20 +bool kvm_private_memory_attribute_supported(void) +{ + return !!(kvm_supported_memory_attributes & KVM_MEMORY_ATTRIBUTE_PRIVA= TE); +} + /* Called with KVMMemoryListener.slots_lock held */ static void kvm_set_phys_mem(KVMMemoryListener *kml, MemoryRegionSection *section, bool add) @@ -2781,8 +2786,7 @@ static int kvm_init(AccelState *as, MachineState *ms) kvm_supported_memory_attributes =3D kvm_vm_check_extension(s, KVM_CAP_= MEMORY_ATTRIBUTES); kvm_guest_memfd_supported =3D kvm_vm_check_extension(s, KVM_CAP_GUEST_MEMFD) && - kvm_vm_check_extension(s, KVM_CAP_USER_MEMORY2) && - (kvm_supported_memory_attributes & KVM_MEMORY_ATTRIBUTE_PRIVATE); + kvm_vm_check_extension(s, KVM_CAP_USER_MEMORY2); kvm_pre_fault_memory_supported =3D kvm_vm_check_extension(s, KVM_CAP_P= RE_FAULT_MEMORY); =20 if (s->kernel_irqchip_split =3D=3D ON_OFF_AUTO_AUTO) { diff --git a/accel/stubs/kvm-stub.c b/accel/stubs/kvm-stub.c index 68cd33ba97..73f04eb589 100644 --- a/accel/stubs/kvm-stub.c +++ b/accel/stubs/kvm-stub.c @@ -125,3 +125,8 @@ int kvm_create_guest_memfd(uint64_t size, uint64_t flag= s, Error **errp) { return -ENOSYS; } + +bool kvm_private_memory_attribute_supported(void) +{ + return false; +} diff --git a/system/physmem.c b/system/physmem.c index c9869e4049..3555d2f6f7 100644 --- a/system/physmem.c +++ b/system/physmem.c @@ -2211,6 +2211,14 @@ static void ram_block_add(RAMBlock *new_block, Error= **errp) object_get_typename(OBJECT(current_machine->cgs))); goto out_free; } + + if (!kvm_private_memory_attribute_supported()) { + error_setg(errp, "cannot set up private guest memory for %s: " + " KVM does not support private memory attribute", + object_get_typename(OBJECT(current_machine->cgs))); + goto out_free; + } + assert(new_block->guest_memfd < 0); =20 ret =3D ram_block_coordinated_discard_require(true); --=20 2.50.1 From nobody Thu Nov 20 12:28:20 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1763573465; cv=none; d=zohomail.com; s=zohoarc; b=MFuhFM4yPLmAGQI6EJ8ADUkxgNEx6/I3RKU78fswJJ5tYnUjG93lt7euC6+36CL+oCbe6UvVKRNr3tisEKztZSqALD8F1yr4ii9ymdUwb2CyLZRZ45grIEh43GZXOsOr75ZljUE/TG+Svegt5QlKXF96Ho0YFi5DY+dUaKS/IeE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1763573465; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=z/qhRlrhL2hHAQxy9Ba9VBELeFSbko3iP9NyeeHVbJY=; b=VEnqzIDxPJXFjuynog30RHBH98pBX/xHCj7wEg1fuZAYQUBMXKYvURJgUO6ws00fjgZR1B1vyB32yGWuwYSuaFOt03a8yNVKYubQXHnx1WETvkmCdZVCHpDhzvwus9CeX6ZqX2mxNKchAyaxWbHNjmFIJ/cqITr2Z3nocjxWhQk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1763573465950672.9131121747024; Wed, 19 Nov 2025 09:31:05 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vLm03-00039q-3X; Wed, 19 Nov 2025 12:29:47 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vLlzi-000314-NR for qemu-devel@nongnu.org; Wed, 19 Nov 2025 12:29:32 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vLlzg-0004Nn-7K for qemu-devel@nongnu.org; Wed, 19 Nov 2025 12:29:26 -0500 Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-326-7kpSR_5VO6qrTFbNrR6weg-1; Wed, 19 Nov 2025 12:29:20 -0500 Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-8b26bc4984bso1317388085a.1 for ; Wed, 19 Nov 2025 09:29:20 -0800 (PST) Received: from x1.com ([142.188.210.156]) by smtp.gmail.com with ESMTPSA id af79cd13be357-8b2af042c9csm1444759485a.46.2025.11.19.09.29.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Nov 2025 09:29:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1763573361; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=z/qhRlrhL2hHAQxy9Ba9VBELeFSbko3iP9NyeeHVbJY=; b=OStvHX41ML+1xD5TBEzL9CC3DUNj/LMp2d7Zq+2/VjGQZa8gbVJET71wJ8+OTei8sI0IHv eC3XPeTnUG5piRTeZE5nHk64NXTeYDLxl7dEXkp9J/2q/AKUHawbxwTNudRoyEYCE1HkYb 0ZOZLptX741EaLUFHcnHTUe3aQL9kB8= X-MC-Unique: 7kpSR_5VO6qrTFbNrR6weg-1 X-Mimecast-MFC-AGG-ID: 7kpSR_5VO6qrTFbNrR6weg_1763573359 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1763573359; x=1764178159; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=z/qhRlrhL2hHAQxy9Ba9VBELeFSbko3iP9NyeeHVbJY=; b=gJeENwYj48a27/q4DmsE0Jcbu+kr+Nync3v9eQo/LD8mcrM6HXr4BAiuE/40/tvGAh 1ZdmkpjmIEHKwt1i9dRTxTPZ5lem19km8IG8obLOfxPm8FhZxsWtTklf39f64LvJCWK0 T3UIKyCkroAHEv3+nDyVFKcKFeqB+xcAjOx78vwm37FWMakOEaCGJTqV/N7eaZbQumad 0VEoPbFrcEJYiLCzLlB5DpK5iloKw4ekaAizTII0rzVPQ0PNb6a26IEB5n+uiYctdifP r1QWANIOkcGgFYiSy+Tg1okGdvBXN66xsfZEGddL7fc5TJ+K6XuKdagaYXq6lXC1hEpJ JhSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763573359; x=1764178159; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=z/qhRlrhL2hHAQxy9Ba9VBELeFSbko3iP9NyeeHVbJY=; b=ueyMQgh1yB0sKdzEbGo74UUlyxICHjGf9sZwaIf5KsmE2Hql90LUrUNgYeOQoPmPkr l/lRndB2bvIT4YNAcWmVWzPEVa5g+aKmT/X6s3QIp2rf7/1GnjlCOwIxNohD1BjG0eRU RrIjJLoOZ5ET7254F0tZBzATtDXHBhtBomBUx+MMRtQrgyWvelmAf33RtXbKs8hYAkqB J5nhyFMx8f2dkB7P3+hYpVRfP6v54P/8Q14JOFpa8fl2gIn98zzsjg0hg5Q47PB02FhF PSiPYYulKIKWd9edSNTot8/f2y+LeZwxs/L07Z0xUuux0rvDjnqEx+v+eotKLZ7TlsKR oNfw== X-Gm-Message-State: AOJu0YxziUVGCw1iAuI0kh9NCVmo73+v0fjnDOgobELO8fdA/6bHzgi0 yQ1Z2m7qSkboH30U1C4ccmXFnOgcas+IkpIm3/NPaMGBR9hHHM7YS8DSez9iG5NwL7ro2EroCrq grKXJlZJ6G0gRxoIia6ChNMXk4d9A6uXBZp9h+APvUdN0FDPKHLJ7cqiP5FYfIg1twuy8VnqBWj zQw8MThNehmYwDm0c654LBFxz8EllaD5bwxuaiWw== X-Gm-Gg: ASbGncs8ggWL4HR3GKmGIXN7VEhVGzT2BJPoJC2GwcwGAkKrbSLnkg5mPeJFRYUZcF4 3BZFv5viapU4zgHKdlbbWHXQv7S4yFfxnvAdvWsbbpADaTDmndzk22nrPrI6qqxH0y9ZvueFTkz 3BiInknsjrLfGOQ7vJAWhgkOHRwBQ1KhSdvXaLmoAT5vCfUTWwg+xmHHSkk425qd2XR/WKzZ3B8 kGKbV6/D9h8DYg0meZOaZCcQdaTLAYewSOkvRa4RnGQ+OgUrprBLVkfN+ht9e5asYndNdEM2eQc 6s3Axym9Hr9wuUgMq+sxKoWsmrr9HDd4YXiUnLS7j0N85Mi/r34xTW2tK7CAxAmH3Dmb/C8D5xt l X-Received: by 2002:a05:620a:4443:b0:8b2:dfda:66c4 with SMTP id af79cd13be357-8b3271f3baemr23463085a.8.1763573358969; Wed, 19 Nov 2025 09:29:18 -0800 (PST) X-Google-Smtp-Source: AGHT+IFszdwXgXqadTURmKX6GrLjwtuOtx0zhOyJIsiSrNwIISrL//Z08/sOMWieOqZzvOGd2aXZRg== X-Received: by 2002:a05:620a:4443:b0:8b2:dfda:66c4 with SMTP id af79cd13be357-8b3271f3baemr23458285a.8.1763573358441; Wed, 19 Nov 2025 09:29:18 -0800 (PST) From: Peter Xu To: qemu-devel@nongnu.org Cc: Paolo Bonzini , David Hildenbrand , Alexey Kardashevskiy , peterx@redhat.com, Chenyi Qiang , Juraj Marcin , Li Xiaoyao , Fabiano Rosas Subject: [PATCH v2 2/9] kvm: Detect guest-memfd flags supported Date: Wed, 19 Nov 2025 12:29:06 -0500 Message-ID: <20251119172913.577392-3-peterx@redhat.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20251119172913.577392-1-peterx@redhat.com> References: <20251119172913.577392-1-peterx@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=peterx@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1763573467078018900 Content-Type: text/plain; charset="utf-8" Detect supported guest-memfd flags by the current kernel, and reject creations of guest-memfd using invalid flags. When the cap isn't available, then no flag is supported. Signed-off-by: Peter Xu --- accel/kvm/kvm-all.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 96c194ce54..f477014126 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -108,6 +108,7 @@ static int kvm_sstep_flags; static bool kvm_immediate_exit; static uint64_t kvm_supported_memory_attributes; static bool kvm_guest_memfd_supported; +static uint64_t kvm_guest_memfd_flags_supported; static hwaddr kvm_max_slot_size =3D ~0; =20 static const KVMCapabilityInfo kvm_required_capabilites[] =3D { @@ -2787,6 +2788,10 @@ static int kvm_init(AccelState *as, MachineState *ms) kvm_guest_memfd_supported =3D kvm_vm_check_extension(s, KVM_CAP_GUEST_MEMFD) && kvm_vm_check_extension(s, KVM_CAP_USER_MEMORY2); + + ret =3D kvm_vm_check_extension(s, KVM_CAP_GUEST_MEMFD_FLAGS); + kvm_guest_memfd_flags_supported =3D ret > 0 ? ret : 0; + kvm_pre_fault_memory_supported =3D kvm_vm_check_extension(s, KVM_CAP_P= RE_FAULT_MEMORY); =20 if (s->kernel_irqchip_split =3D=3D ON_OFF_AUTO_AUTO) { @@ -4492,6 +4497,12 @@ int kvm_create_guest_memfd(uint64_t size, uint64_t f= lags, Error **errp) return -1; } =20 + if (flags & ~kvm_guest_memfd_flags_supported) { + error_setg(errp, "KVM does not support guest-memfd flag: 0x%"PRIx6= 4, + flags & ~kvm_guest_memfd_flags_supported); + return -1; + } + fd =3D kvm_vm_ioctl(kvm_state, KVM_CREATE_GUEST_MEMFD, &guest_memfd); if (fd < 0) { error_setg_errno(errp, errno, "Error creating KVM guest_memfd"); --=20 2.50.1 From nobody Thu Nov 20 12:28:20 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1763573402; cv=none; d=zohomail.com; s=zohoarc; b=UyKe/0HNZpgcREwHdQdEq4y4jvyQMJyiXdALcYZ8j8iZeAB8Qx+n4zlxjcwAsxLOAUiaHAtYIfheNjgX9uvrvScVbg5V4HdjVGyM9N/7CyOFaP6wPG6fJzTpoXAhSk8/XqRdOtEShXxR95lKFRLUZ2TMwwPq5wlddRFIxPPoogA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1763573402; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=HNARWf89ihHfn0pXKvgHsMcLrLRhDxLETxm9ccvA2f8=; b=J0fOyEYRnWUuNMGJPVKh8WU3HbOc9aPtplkTtuS2BWI9soR80eJlK7NpniyXiXUC0YZCJcoEfyoNwTsW55Q/qubdDJNa0WqkT/L6odeAp4QqDBuir/Ef9BuKd4l9FOwh4zOuPieoSHj0/P3CmvyzzMfftvQk54edoqvdzDPxcas= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1763573402309696.1181240288743; Wed, 19 Nov 2025 09:30:02 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vLm00-000351-JL; Wed, 19 Nov 2025 12:29:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vLlzk-00031D-7E for qemu-devel@nongnu.org; Wed, 19 Nov 2025 12:29:32 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vLlzg-0004OC-QF for qemu-devel@nongnu.org; Wed, 19 Nov 2025 12:29:26 -0500 Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-593-trbXc8JvMVKlPe486S_b8w-1; Wed, 19 Nov 2025 12:29:21 -0500 Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-8b2ef6c8340so345370285a.0 for ; Wed, 19 Nov 2025 09:29:21 -0800 (PST) Received: from x1.com ([142.188.210.156]) by smtp.gmail.com with ESMTPSA id af79cd13be357-8b2af042c9csm1444759485a.46.2025.11.19.09.29.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Nov 2025 09:29:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1763573363; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=HNARWf89ihHfn0pXKvgHsMcLrLRhDxLETxm9ccvA2f8=; b=bSjpPR76QrorcKYtbuZ/z+gSu42J4dZXFB/uyJAM3eTBqTFWbOQPtgTZL+ZXQ6h+fz+/uC f6+S2v2EmsPQnoXUu+GgMGcU/dxuPI5aMVb3DtGLpbn4OP8QKoGEaQSkAoPzm4z+rnHo6p 9nuPDkyy3/mGwWKWLg1spPh0Ajkkv6g= X-MC-Unique: trbXc8JvMVKlPe486S_b8w-1 X-Mimecast-MFC-AGG-ID: trbXc8JvMVKlPe486S_b8w_1763573360 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1763573360; x=1764178160; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=HNARWf89ihHfn0pXKvgHsMcLrLRhDxLETxm9ccvA2f8=; b=jSsS9x+HFHiyp8RJfX7yUBS2UE2AB3TYg9EsmZeWDpb8vezD43T8QHr5FJ+P7b8bR2 AK9dtTLIGDv7DwhgrYGxDqPsZEAanIQszZNzqUWsSbl2xGjw/2QaztN0yRw+oRrM5v8y 0YCy4Vtf9+l9ajsDfpbQWbL1kYtQ70ATEZ0q2MYBaDKMaEpudMdf+MzMQ1wHFhCdTZ+f SrY62Tm/vMuru7ps0utlDd4MNtsOh//95AUg+KbkVqO5fT54pv7O8Oh/EfJKbZF+AdIs 6wYbynC8FsbcPJkmcLYllYEFJQbde0FGN8Z45xLsID+bKKc/v5z+w7xjo0+ZrSiVY8g4 yhyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763573360; x=1764178160; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=HNARWf89ihHfn0pXKvgHsMcLrLRhDxLETxm9ccvA2f8=; b=L1EAiNWvK/6nDUoCDv2PrtNaBO9SCsOmjBobgftF/TmL/wgT48QrlYzNa02DEG9Tsi mdVI+U0jpe82K2gYdojQPS400VStzR87beKDofXsi452KgWgWISCjkCD6wEeZXOCBfcQ Slb/HTSjaPsNdsxCDyrPoOKv9JaylnWueYBGt7lCo4cnf+j69R6bh2BagxDrCoPxo9u3 gLTyKIz6uScxrFOXmAhV6JxwLBVdnbbUZu20PsvF7HNmRpJ4xstmBcM39aaAKvk+U3tx 8KZlmIL/UfBQW66lDSdMamr1ByGzhBbi+3YGn9K8/9giGisv/qTKacUY04pnO8akeuCH E8NA== X-Gm-Message-State: AOJu0YxPP5Ia1fCZKuVW11zqsiaoWzmUqFNUCu+LoaNK4OZ7abPiR2iQ CjsGtQ4BJqrl9IWdlDhGxIaaW5Ag3ZxuRJRHVl2gJ+rCCQycI56w9HzUshpLFWEEgZRvXRX0wee Zj/+mLmtNdGCtVr8CVfd8z2MFgQIbe6KGlAmMgZX0RpU8qRZwhsOMfhy9B+3vkudLYcKG2R2Bjd 4QTbCzn9dKf5L2/kpSMLFS1Z070GoPpGrLBoJY3g== X-Gm-Gg: ASbGncsfRieg/qWPuQN55ITaTe7ra/M1ICxq0SQ+dw5d2o3RlH+63CRS8fMiY7RZ9EM nUOX5Mp3Y4PLf5Mt/TLSMbsbAJUNBB45RkNQ59L4XLNK4pvWi4yWsQoECvmzsNSCAhBrf0HpMKb gVjAe9abli8oViFiiuAG9FWHj7UkIhbwZGB/S5WQZfbV6N/eYyux1i3x1v63Dmq7OE7fGX/FbM8 Gk10yfVoKsRFBnGxIqVdNdCsut+PoBnQvR251Yrtcn9I2dWJBxkTE7tdSImF7yOHdC2D++fi+7G Ubt0O66OFusL65Lw6yIjDQb8+rzStvEeBgLAsY159q9vb4ZG14mI86pF6N+buG+A8YbQUcUc4bK h X-Received: by 2002:a05:620a:4490:b0:89f:5057:9753 with SMTP id af79cd13be357-8b317e25ff9mr412229685a.41.1763573360036; Wed, 19 Nov 2025 09:29:20 -0800 (PST) X-Google-Smtp-Source: AGHT+IEwciC3La2UKxhS4mc6AQGSAJHYYTOEmB/aHjSPZ+MKdLq5uAqAtb0KbOVQW/799Sj7XrgitQ== X-Received: by 2002:a05:620a:4490:b0:89f:5057:9753 with SMTP id af79cd13be357-8b317e25ff9mr412225085a.41.1763573359404; Wed, 19 Nov 2025 09:29:19 -0800 (PST) From: Peter Xu To: qemu-devel@nongnu.org Cc: Paolo Bonzini , David Hildenbrand , Alexey Kardashevskiy , peterx@redhat.com, Chenyi Qiang , Juraj Marcin , Li Xiaoyao , Fabiano Rosas Subject: [PATCH v2 3/9] memory: Rename RAM_GUEST_MEMFD to RAM_GUEST_MEMFD_PRIVATE Date: Wed, 19 Nov 2025 12:29:07 -0500 Message-ID: <20251119172913.577392-4-peterx@redhat.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20251119172913.577392-1-peterx@redhat.com> References: <20251119172913.577392-1-peterx@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=peterx@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1763573402869018900 Content-Type: text/plain; charset="utf-8" This name is too generic, and can conflict with in-place guest-memfd support. Add a _PRIVATE suffix to show what it really means: it is always silently using an internal guest-memfd to back a shared host backend, rather than used in-place. This paves way for in-place guest-memfd, which means we can have a ramblock that allocates pages completely from guest-memfd (private or shared). Signed-off-by: Peter Xu --- include/system/memory.h | 8 ++++---- include/system/ram_addr.h | 2 +- backends/hostmem-file.c | 2 +- backends/hostmem-memfd.c | 2 +- backends/hostmem-ram.c | 2 +- backends/hostmem-shm.c | 2 +- system/memory.c | 3 ++- system/physmem.c | 8 ++++---- 8 files changed, 15 insertions(+), 14 deletions(-) diff --git a/include/system/memory.h b/include/system/memory.h index 3bd5ffa5e0..2c1a5e06b4 100644 --- a/include/system/memory.h +++ b/include/system/memory.h @@ -263,7 +263,7 @@ typedef struct IOMMUTLBEvent { #define RAM_READONLY_FD (1 << 11) =20 /* RAM can be private that has kvm guest memfd backend */ -#define RAM_GUEST_MEMFD (1 << 12) +#define RAM_GUEST_MEMFD_PRIVATE (1 << 12) =20 /* * In RAMBlock creation functions, if MAP_SHARED is 0 in the flags paramet= er, @@ -1401,7 +1401,7 @@ bool memory_region_init_ram_nomigrate(MemoryRegion *m= r, * must be unique within any device * @size: size of the region. * @ram_flags: RamBlock flags. Supported flags: RAM_SHARED, RAM_NORESERVE, - * RAM_GUEST_MEMFD. + * RAM_GUEST_MEMFD_PRIVATE. * @errp: pointer to Error*, to store an error if it happens. * * Note that this function does not do anything to cause the data in the @@ -1463,7 +1463,7 @@ bool memory_region_init_resizeable_ram(MemoryRegion *= mr, * (getpagesize()) will be used. * @ram_flags: RamBlock flags. Supported flags: RAM_SHARED, RAM_PMEM, * RAM_NORESERVE, RAM_PROTECTED, RAM_NAMED_FILE, RAM_READONLY, - * RAM_READONLY_FD, RAM_GUEST_MEMFD + * RAM_READONLY_FD, RAM_GUEST_MEMFD_PRIVATE * @path: the path in which to allocate the RAM. * @offset: offset within the file referenced by path * @errp: pointer to Error*, to store an error if it happens. @@ -1493,7 +1493,7 @@ bool memory_region_init_ram_from_file(MemoryRegion *m= r, * @size: size of the region. * @ram_flags: RamBlock flags. Supported flags: RAM_SHARED, RAM_PMEM, * RAM_NORESERVE, RAM_PROTECTED, RAM_NAMED_FILE, RAM_READONLY, - * RAM_READONLY_FD, RAM_GUEST_MEMFD + * RAM_READONLY_FD, RAM_GUEST_MEMFD_PRIVATE * @fd: the fd to mmap. * @offset: offset within the file referenced by fd * @errp: pointer to Error*, to store an error if it happens. diff --git a/include/system/ram_addr.h b/include/system/ram_addr.h index 683485980c..930d3824d7 100644 --- a/include/system/ram_addr.h +++ b/include/system/ram_addr.h @@ -92,7 +92,7 @@ static inline unsigned long int ramblock_recv_bitmap_offs= et(void *host_addr, * @resized: callback after calls to qemu_ram_resize * @ram_flags: RamBlock flags. Supported flags: RAM_SHARED, RAM_PMEM, * RAM_NORESERVE, RAM_PROTECTED, RAM_NAMED_FILE, RAM_READONLY, - * RAM_READONLY_FD, RAM_GUEST_MEMFD + * RAM_READONLY_FD, RAM_GUEST_MEMFD_PRIVATE * @mem_path or @fd: specify the backing file or device * @offset: Offset into target file * @grow: extend file if necessary (but an empty file is always extended). diff --git a/backends/hostmem-file.c b/backends/hostmem-file.c index 8e3219c061..1f20cd8fd6 100644 --- a/backends/hostmem-file.c +++ b/backends/hostmem-file.c @@ -86,7 +86,7 @@ file_backend_memory_alloc(HostMemoryBackend *backend, Err= or **errp) ram_flags |=3D fb->readonly ? RAM_READONLY_FD : 0; ram_flags |=3D fb->rom =3D=3D ON_OFF_AUTO_ON ? RAM_READONLY : 0; ram_flags |=3D backend->reserve ? 0 : RAM_NORESERVE; - ram_flags |=3D backend->guest_memfd ? RAM_GUEST_MEMFD : 0; + ram_flags |=3D backend->guest_memfd ? RAM_GUEST_MEMFD_PRIVATE : 0; ram_flags |=3D fb->is_pmem ? RAM_PMEM : 0; ram_flags |=3D RAM_NAMED_FILE; return memory_region_init_ram_from_file(&backend->mr, OBJECT(backend),= name, diff --git a/backends/hostmem-memfd.c b/backends/hostmem-memfd.c index 923239f9cf..3f3e485709 100644 --- a/backends/hostmem-memfd.c +++ b/backends/hostmem-memfd.c @@ -60,7 +60,7 @@ have_fd: backend->aligned =3D true; ram_flags =3D backend->share ? RAM_SHARED : RAM_PRIVATE; ram_flags |=3D backend->reserve ? 0 : RAM_NORESERVE; - ram_flags |=3D backend->guest_memfd ? RAM_GUEST_MEMFD : 0; + ram_flags |=3D backend->guest_memfd ? RAM_GUEST_MEMFD_PRIVATE : 0; return memory_region_init_ram_from_fd(&backend->mr, OBJECT(backend), n= ame, backend->size, ram_flags, fd, 0,= errp); } diff --git a/backends/hostmem-ram.c b/backends/hostmem-ram.c index 062b1abb11..96ad29112d 100644 --- a/backends/hostmem-ram.c +++ b/backends/hostmem-ram.c @@ -30,7 +30,7 @@ ram_backend_memory_alloc(HostMemoryBackend *backend, Erro= r **errp) name =3D host_memory_backend_get_name(backend); ram_flags =3D backend->share ? RAM_SHARED : RAM_PRIVATE; ram_flags |=3D backend->reserve ? 0 : RAM_NORESERVE; - ram_flags |=3D backend->guest_memfd ? RAM_GUEST_MEMFD : 0; + ram_flags |=3D backend->guest_memfd ? RAM_GUEST_MEMFD_PRIVATE : 0; return memory_region_init_ram_flags_nomigrate(&backend->mr, OBJECT(bac= kend), name, backend->size, ram_flags, errp); diff --git a/backends/hostmem-shm.c b/backends/hostmem-shm.c index 806e2670e0..e86fb2e0aa 100644 --- a/backends/hostmem-shm.c +++ b/backends/hostmem-shm.c @@ -54,7 +54,7 @@ have_fd: /* Let's do the same as memory-backend-ram,share=3Don would do. */ ram_flags =3D RAM_SHARED; ram_flags |=3D backend->reserve ? 0 : RAM_NORESERVE; - ram_flags |=3D backend->guest_memfd ? RAM_GUEST_MEMFD : 0; + ram_flags |=3D backend->guest_memfd ? RAM_GUEST_MEMFD_PRIVATE : 0; =20 return memory_region_init_ram_from_fd(&backend->mr, OBJECT(backend), backend_name, backend->size, diff --git a/system/memory.c b/system/memory.c index 8b84661ae3..81b7bff42d 100644 --- a/system/memory.c +++ b/system/memory.c @@ -3755,7 +3755,8 @@ bool memory_region_init_ram_guest_memfd(MemoryRegion = *mr, DeviceState *owner_dev; =20 if (!memory_region_init_ram_flags_nomigrate(mr, owner, name, size, - RAM_GUEST_MEMFD, errp)) { + RAM_GUEST_MEMFD_PRIVATE, + errp)) { return false; } /* This will assert if owner is neither NULL nor a DeviceState. diff --git a/system/physmem.c b/system/physmem.c index 3555d2f6f7..25c800c9d3 100644 --- a/system/physmem.c +++ b/system/physmem.c @@ -2203,7 +2203,7 @@ static void ram_block_add(RAMBlock *new_block, Error = **errp) } } =20 - if (new_block->flags & RAM_GUEST_MEMFD) { + if (new_block->flags & RAM_GUEST_MEMFD_PRIVATE) { int ret; =20 if (!kvm_enabled()) { @@ -2341,7 +2341,7 @@ RAMBlock *qemu_ram_alloc_from_fd(ram_addr_t size, ram= _addr_t max_size, /* Just support these ram flags by now. */ assert((ram_flags & ~(RAM_SHARED | RAM_PMEM | RAM_NORESERVE | RAM_PROTECTED | RAM_NAMED_FILE | RAM_READONLY | - RAM_READONLY_FD | RAM_GUEST_MEMFD | + RAM_READONLY_FD | RAM_GUEST_MEMFD_PRIVATE | RAM_RESIZEABLE)) =3D=3D 0); assert(max_size >=3D size); =20 @@ -2498,7 +2498,7 @@ RAMBlock *qemu_ram_alloc_internal(ram_addr_t size, ra= m_addr_t max_size, ram_flags &=3D ~RAM_PRIVATE; =20 assert((ram_flags & ~(RAM_SHARED | RAM_RESIZEABLE | RAM_PREALLOC | - RAM_NORESERVE | RAM_GUEST_MEMFD)) =3D=3D 0); + RAM_NORESERVE | RAM_GUEST_MEMFD_PRIVATE)) =3D=3D= 0); assert(!host ^ (ram_flags & RAM_PREALLOC)); assert(max_size >=3D size); =20 @@ -2581,7 +2581,7 @@ RAMBlock *qemu_ram_alloc_from_ptr(ram_addr_t size, vo= id *host, RAMBlock *qemu_ram_alloc(ram_addr_t size, uint32_t ram_flags, MemoryRegion *mr, Error **errp) { - assert((ram_flags & ~(RAM_SHARED | RAM_NORESERVE | RAM_GUEST_MEMFD | + assert((ram_flags & ~(RAM_SHARED | RAM_NORESERVE | RAM_GUEST_MEMFD_PRI= VATE | RAM_PRIVATE)) =3D=3D 0); return qemu_ram_alloc_internal(size, size, NULL, NULL, ram_flags, mr, = errp); } --=20 2.50.1 From nobody Thu Nov 20 12:28:20 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1763573433; cv=none; d=zohomail.com; s=zohoarc; b=iFYNLVJ8BrQVx9cfsVPPyb3GrcM+yuKqOXRch1/XCk58hjPF7tapn0ggDezbky755AQSl9ZCLgULedTcK0hCdpQJtuX5qDb6prI0Vdqben/SU7SGxiDsUT5oE4G8EMTe4JlKRIDNqoG2iHKWKzFEKFL0B4GkTWjA3y4DlLw7UYE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1763573433; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=woCcmK5foYk7Lz5yBYA0XL2QOL9NnX0jkIYkMd3rgxE=; b=DBkr5Gya3NGExI3gNyr+dCUopzwEASuBZo6eMb7pxN/+Um6307YSmTN8H500eWjSg4kWyV/aM2W2fmCWcvKcGu7dG/XYrd9oTROPum3i81f181MKtXEq50y9Qd1mtx2nucqJFW+qU0J3NKA00e35IG+kIDFCyByUTRkIr4xUPo0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1763573433208465.70936380716284; Wed, 19 Nov 2025 09:30:33 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vLm01-00035V-Bn; Wed, 19 Nov 2025 12:29:45 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vLlzk-000317-0u for qemu-devel@nongnu.org; Wed, 19 Nov 2025 12:29:32 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vLlzg-0004O8-8h for qemu-devel@nongnu.org; Wed, 19 Nov 2025 12:29:26 -0500 Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-693-y8KNzaneMF2xiv24g9vY3A-1; Wed, 19 Nov 2025 12:29:22 -0500 Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-8b24a25cff5so1968055085a.2 for ; Wed, 19 Nov 2025 09:29:22 -0800 (PST) Received: from x1.com ([142.188.210.156]) by smtp.gmail.com with ESMTPSA id af79cd13be357-8b2af042c9csm1444759485a.46.2025.11.19.09.29.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Nov 2025 09:29:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1763573363; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=woCcmK5foYk7Lz5yBYA0XL2QOL9NnX0jkIYkMd3rgxE=; b=ZOH5+ZlbxzOy+Mbm9CytcOTsA6cUZxZ5Qqan+BruvwrcBAUQU0oOaoOqe+32Vh24mlB/rx 1owTeqOb8s59v01C1sF3jnak/JL89FQLVy7EgxKkRjekH3OAYRV36sLYmHB/KyWNrE9Ixj 7gAU+ukOIDtqi884pKWFGbJuHWFMrBc= X-MC-Unique: y8KNzaneMF2xiv24g9vY3A-1 X-Mimecast-MFC-AGG-ID: y8KNzaneMF2xiv24g9vY3A_1763573361 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1763573361; x=1764178161; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=woCcmK5foYk7Lz5yBYA0XL2QOL9NnX0jkIYkMd3rgxE=; b=LTCnxZIjmKLpx1N5XzKqS+EHnx8k8MOPbQ00itQwibDJV2pR0diZSMd7KvgTALw9dX GdhAxBFfDYsqDyocfSshTVWET5Sa6cZLZFqxVJb0z0RubQs5od82PGlq2KLx9SHtxXv/ iZ2k2t3Ggn2+kcz4J0cRRmexXIGk54C5G0esri6fGxf6wJTpymZsz0kigfjXkdK4yRIs DUvjfYAI//rN0IPEYoOeaYG1999pIxQTYv8Gh7Mw4vdLfwZ3mfUdtRlUcufKlZ+hRXFf eNUywzN992MOpiTI6nafMnNeilfjWesvsuHCE4WoptQksbIJsrB3H0Uz+DUeB2t1O4wn zTaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763573361; x=1764178161; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=woCcmK5foYk7Lz5yBYA0XL2QOL9NnX0jkIYkMd3rgxE=; b=k84lUizQBXSB8mMta8iD5S1bsmw2IPS+hW7T6H/MbncEXKvXBlCCFcdgKUocVyHMeK IC302WoOayWCXobLhdHyK93ooSmCtbjkiOPX5R8d+CgJRFx6rKdNg1P1x+y8oQo4GJUS 2PG/6fIlOtB0klXoWgFcL7VTOwMRCUqwAWKwtmFOxyFzSFfZeVIY07Thdw1/tGDLJE++ hcbI77wTMFtiqMrfl6hxtOzTWB5zgFfKlM/R6xgLO6w/AzLaVITDmvM2aqM6hKbxYiHj 5p/0fKns+DpP3dlhDAvVLNTCHuFIC3Bi6PwVWOjIzTPuFneEodWNoOeOaXdOOVJhZPYL sqSQ== X-Gm-Message-State: AOJu0YyPEfj+XMHZLsj82iHMa7EZL+R5x66Jx4PYd0jH84Ti+g5sPj1Q BwF2z2OwjX8LctSH5ziM2i8zYcOJWAxq1WakmqZOimhtvUonCn01qz/SFSIt0ZqJksOu3Vu/u3Y XsNkwp1Zy5mjV3GfOjoTZU5tt9uLLbWhug2+XYOdYn7QW/HOVJPvseTH2qf1G6bWFe7pBENn53J coShYWGOH0itbiGKOKWSpgWyxm4e4295dKmDkuGw== X-Gm-Gg: ASbGncuEUYrLxlWWRqJYNJcX43daybH2o0zGoBgygsXc+r94PGNkOQms092u9Cv2lZ5 U37Zq5CFZ7ZQA+gEB0vehdsait7vBGQkp1+DVRKebqNP5RQ2gkMN2VixSWBnaI1KynIxsX4hduy TCa9Ns+CwEE4dFG33bd7MJSGGbaL11nU73ONtwFEy3v4cxbjPhO5aLMSAoZZmSjzSCmthAfmUd3 aA5Xen6oFqe1H1CAVsK/38u/70x99J/XzlLHDqUSqohIGPqeAJoOit+5bBHHWVTLWO/7cEj9cyL gwfAqvioT78Yk4Wly2MH4dYdTqAsG778N6oZQoFkmAyfD725AFyw9Rlb+bWsPzGMq8Bu6+YBYzO N X-Received: by 2002:a05:620a:444a:b0:8b2:7679:4d2d with SMTP id af79cd13be357-8b32749fd9fmr19639385a.63.1763573360966; Wed, 19 Nov 2025 09:29:20 -0800 (PST) X-Google-Smtp-Source: AGHT+IGzTPICTCv+VqEihJpe2V98/7Wrln/9b6c1IqXOfd1Zwu4qLJuFYpkhAQABO1aG9oA1m4Iyig== X-Received: by 2002:a05:620a:444a:b0:8b2:7679:4d2d with SMTP id af79cd13be357-8b32749fd9fmr19635485a.63.1763573360452; Wed, 19 Nov 2025 09:29:20 -0800 (PST) From: Peter Xu To: qemu-devel@nongnu.org Cc: Paolo Bonzini , David Hildenbrand , Alexey Kardashevskiy , peterx@redhat.com, Chenyi Qiang , Juraj Marcin , Li Xiaoyao , Fabiano Rosas Subject: [PATCH v2 4/9] memory: Rename memory_region_has_guest_memfd() to *_private() Date: Wed, 19 Nov 2025 12:29:08 -0500 Message-ID: <20251119172913.577392-5-peterx@redhat.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20251119172913.577392-1-peterx@redhat.com> References: <20251119172913.577392-1-peterx@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=peterx@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1763573434934018900 Content-Type: text/plain; charset="utf-8" Rename the function with "_private" suffix, to show that it returns true only if it has an internal guest-memfd to back private pages (rather than in-place guest-memfd). Signed-off-by: Peter Xu --- include/system/memory.h | 6 +++--- accel/kvm/kvm-all.c | 6 +++--- system/memory.c | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/include/system/memory.h b/include/system/memory.h index 2c1a5e06b4..4428701a9f 100644 --- a/include/system/memory.h +++ b/include/system/memory.h @@ -1823,14 +1823,14 @@ static inline bool memory_region_is_romd(MemoryRegi= on *mr) bool memory_region_is_protected(MemoryRegion *mr); =20 /** - * memory_region_has_guest_memfd: check whether a memory region has guest_= memfd - * associated + * memory_region_has_guest_memfd_private: check whether a memory region has + * guest_memfd associated * * Returns %true if a memory region's ram_block has valid guest_memfd assi= gned. * * @mr: the memory region being queried */ -bool memory_region_has_guest_memfd(MemoryRegion *mr); +bool memory_region_has_guest_memfd_private(MemoryRegion *mr); =20 /** * memory_region_get_iommu: check whether a memory region is an iommu diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index f477014126..320315f50c 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -666,7 +666,7 @@ static int kvm_mem_flags(MemoryRegion *mr) if (readonly && kvm_readonly_mem_allowed) { flags |=3D KVM_MEM_READONLY; } - if (memory_region_has_guest_memfd(mr)) { + if (memory_region_has_guest_memfd_private(mr)) { assert(kvm_guest_memfd_supported); flags |=3D KVM_MEM_GUEST_MEMFD; } @@ -1615,7 +1615,7 @@ static void kvm_set_phys_mem(KVMMemoryListener *kml, abort(); } =20 - if (memory_region_has_guest_memfd(mr)) { + if (memory_region_has_guest_memfd_private(mr)) { err =3D kvm_set_memory_attributes_private(start_addr, slot_siz= e); if (err) { error_report("%s: failed to set memory attribute private: = %s", @@ -3101,7 +3101,7 @@ int kvm_convert_memory(hwaddr start, hwaddr size, boo= l to_private) return ret; } =20 - if (!memory_region_has_guest_memfd(mr)) { + if (!memory_region_has_guest_memfd_private(mr)) { /* * Because vMMIO region must be shared, guest TD may convert vMMIO * region to shared explicitly. Don't complain such case. See diff --git a/system/memory.c b/system/memory.c index 81b7bff42d..15964160ee 100644 --- a/system/memory.c +++ b/system/memory.c @@ -1897,7 +1897,7 @@ bool memory_region_is_protected(MemoryRegion *mr) return mr->ram && (mr->ram_block->flags & RAM_PROTECTED); } =20 -bool memory_region_has_guest_memfd(MemoryRegion *mr) +bool memory_region_has_guest_memfd_private(MemoryRegion *mr) { return mr->ram_block && mr->ram_block->guest_memfd >=3D 0; } --=20 2.50.1 From nobody Thu Nov 20 12:28:20 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1763573402; cv=none; d=zohomail.com; s=zohoarc; b=kiHEqgX018JH7RWV8DOrZcItJFMiPfbW1BQKiso2jJSfX3fCHErUAz7ktrz9iJerCfdMNlhMFvGXZ0qM5C4yv8xKxbEgqXthLMSDzQHY8ngK5rQ2JsmufexiKhBYo+ef2VAIJfqTkJ1vnISENCxuOU2cdUHpofTWeIXJs/yIoRM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1763573402; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=j8wT+S8nNje4ograkIKse+eEBwmrSCJXCGJeynh6HAo=; b=lNiPVuODfQm9hRoTUY/5ZPJji3Hx5lVC35w7fnf6idDWte/eO4TRXm+piOz8wrB4PY25H2H5qUHBfOKqHg++3xyDBGujV3dSCcEjGc2lZSEcgvG5Zt8JKlSbVUNbeh9n6I9oJSoRf83+hD/DUcQoN+Ly5ObJzsUD+cEHXr3Ms8U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1763573402908216.49289073091336; Wed, 19 Nov 2025 09:30:02 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vLm02-000391-E1; Wed, 19 Nov 2025 12:29:46 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vLlzk-000318-1H for qemu-devel@nongnu.org; Wed, 19 Nov 2025 12:29:32 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vLlzh-0004OT-Fx for qemu-devel@nongnu.org; Wed, 19 Nov 2025 12:29:26 -0500 Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-52-g-NWF_NhO8KdgNQ3v584KA-1; Wed, 19 Nov 2025 12:29:23 -0500 Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-8b2657cfcdaso878259885a.3 for ; Wed, 19 Nov 2025 09:29:23 -0800 (PST) Received: from x1.com ([142.188.210.156]) by smtp.gmail.com with ESMTPSA id af79cd13be357-8b2af042c9csm1444759485a.46.2025.11.19.09.29.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Nov 2025 09:29:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1763573364; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=j8wT+S8nNje4ograkIKse+eEBwmrSCJXCGJeynh6HAo=; b=Y0g4uSsZsHixbrfLNomhx0oOJ6efKgjXjjH03BRHD6QcwoCS2KNYWWRPY7z/4P3bUGXTU8 wxfDACelZMtOz8wrgUx043ksq8bXjnqEfrwC+dmYu7KOPAV+0V3RJMbMdzAqY4w6GzdX86 zgdVifowSM4lLLgeGrerVBbvqYObSx8= X-MC-Unique: g-NWF_NhO8KdgNQ3v584KA-1 X-Mimecast-MFC-AGG-ID: g-NWF_NhO8KdgNQ3v584KA_1763573363 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1763573362; x=1764178162; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=j8wT+S8nNje4ograkIKse+eEBwmrSCJXCGJeynh6HAo=; b=e7r6I0M56QlAWUFQt+OKXiL2xFXSUccHq3l5S2YGoWEq03CGbXcysqh+/qcjKPo2en YFWGoCUqTrfye5OMwSQYTRkDJa3PLGnABTzf/0JXqMqHDR+eM3PyWKWllbH8XLT5fBSo UYPkQUBjHEV/Tayd0EZ3aY8QXAYf4cpfu1ODXFt8xG6bSL1p6z+UuonDU6FMVQje8YsM KjRucDKLy0/qPcusU8+vph92IDFQU0yaPXDbK+wD+Ia9S983Qz3JKNVOK10K3E/gixgm 8zhb1w96sYFq+fdL1ae5UGQ8vx+AGGr9gIkrUMkjSv+FSfvPKJdlO5Lc2lL8oFNpEp3A LsWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763573362; x=1764178162; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=j8wT+S8nNje4ograkIKse+eEBwmrSCJXCGJeynh6HAo=; b=rHpqIU+NEvJEmyV/d6ngtReAWwM7gi6PVDQMUntnlS+iEhQLzRWrJgEaDIjokxijTT 9+htT3f/9VMT9rEImyGZLQQyz5OwCjeIAm/15jZ7D3sOS7W2FGdcyYWCPYXVDqqr+i/L xYKr8SgEPheGrEsahHd6yR6XF4wWdObQQdvl6A4OHZ+oG3czIabr7bPFitGATHj+W/c/ 0ReMqgky2rPstxzXUsWK2u6qCzki6KcDEPnX9ydu/3sTHszh2QG4K2JXkQ54cUdZjqzM +Ut3gObeHsuEg9/JHgSxMxIjG/edgMOshWKwUxBZhxpmGn/svXUl6q6DCy2DSmcqktgR iqYA== X-Gm-Message-State: AOJu0YzKMNDEYVE8LM4fLqR1X6Ssu5swiXfBGZevy/KY9Lf2IjDPGZwT nF9AvuFc+DOfOKfwCFHGq9I5oHeT9mJv/S/zBaTxbARfsswgDq7Qe5olAkxF4qI8S4nTq7tcRPL k6kfmKgI2bqbLxMCHguqZdwXIcubOZdb4rZxrE0VZ7M8rVutOdMi+Gz8Co3O2WF0XWEZ7dEdm7c k43SM2lSH+P2fP7plfsex/4wYxSb891g60v+phQA== X-Gm-Gg: ASbGncu2/GkQF0mZn8a182WYpz5Lt3R+nlk96qx2jetlNqNpaG9oSBB9TNA1CfIsB8A lKxA0aQXzg+OOqHa+7gyQKkcJgE9ONmo1suHE1syM8S9u3y6X6zkmCEewU/482mYLqKphA6rIQm O10IZfgu3w9cT4hwsJcyu4HhLRsXx4SAIaLqEFEoEaH4ys3iUuHl6IGEtFgVik8ixXrxewosfU8 X0lChdwneQ5VATJmUXYU5HlXq3GfHQS66TJKbAsKgIP1tR5gQ237WN2kCIisEpDp5EViL8Fsx5R t9qt6gY7HkDjcREKsvYoGoMxQVDllPpaSGWT1Mw5qKxiAJQzSl7FKZHrx8g5n0TO6qFc0sHdfLU e X-Received: by 2002:a05:620a:170f:b0:8b2:e633:67cc with SMTP id af79cd13be357-8b327310fb4mr22280185a.28.1763573362167; Wed, 19 Nov 2025 09:29:22 -0800 (PST) X-Google-Smtp-Source: AGHT+IEtKxdAkK8ZAjyhlSaewl9gbzAltKBy4mCMp6A3zsstnA1sdm0ucFABtX9ze9r+TstN4Hidww== X-Received: by 2002:a05:620a:170f:b0:8b2:e633:67cc with SMTP id af79cd13be357-8b327310fb4mr22274785a.28.1763573361511; Wed, 19 Nov 2025 09:29:21 -0800 (PST) From: Peter Xu To: qemu-devel@nongnu.org Cc: Paolo Bonzini , David Hildenbrand , Alexey Kardashevskiy , peterx@redhat.com, Chenyi Qiang , Juraj Marcin , Li Xiaoyao , Fabiano Rosas Subject: [PATCH v2 5/9] ramblock: Rename guest_memfd to guest_memfd_private Date: Wed, 19 Nov 2025 12:29:09 -0500 Message-ID: <20251119172913.577392-6-peterx@redhat.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20251119172913.577392-1-peterx@redhat.com> References: <20251119172913.577392-1-peterx@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=peterx@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1763573404500019100 Content-Type: text/plain; charset="utf-8" Rename the field to reflect the fact that the guest_memfd in this case only backs private portion of the ramblock rather than all of it. Signed-off-by: Peter Xu --- include/system/memory.h | 3 ++- include/system/ramblock.h | 7 ++++++- accel/kvm/kvm-all.c | 2 +- system/memory.c | 2 +- system/physmem.c | 21 +++++++++++---------- 5 files changed, 21 insertions(+), 14 deletions(-) diff --git a/include/system/memory.h b/include/system/memory.h index 4428701a9f..0aca241360 100644 --- a/include/system/memory.h +++ b/include/system/memory.h @@ -1826,7 +1826,8 @@ bool memory_region_is_protected(MemoryRegion *mr); * memory_region_has_guest_memfd_private: check whether a memory region has * guest_memfd associated * - * Returns %true if a memory region's ram_block has valid guest_memfd assi= gned. + * Returns %true if a memory region's ram_block has guest_memfd_private + * assigned. * * @mr: the memory region being queried */ diff --git a/include/system/ramblock.h b/include/system/ramblock.h index 76694fe1b5..9ecf7f970c 100644 --- a/include/system/ramblock.h +++ b/include/system/ramblock.h @@ -40,7 +40,12 @@ struct RAMBlock { Error *cpr_blocker; int fd; uint64_t fd_offset; - int guest_memfd; + /* + * When RAM_GUEST_MEMFD_PRIVATE flag is set, this ramblock can have + * private pages backed by guest_memfd_private specified, while shared + * pages are backed by the ramblock on its own. + */ + int guest_memfd_private; RamBlockAttributes *attributes; size_t page_size; /* dirty bitmap used during migration */ diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 320315f50c..5942e17f7e 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -1603,7 +1603,7 @@ static void kvm_set_phys_mem(KVMMemoryListener *kml, mem->ram_start_offset =3D ram_start_offset; mem->ram =3D ram; mem->flags =3D kvm_mem_flags(mr); - mem->guest_memfd =3D mr->ram_block->guest_memfd; + mem->guest_memfd =3D mr->ram_block->guest_memfd_private; mem->guest_memfd_offset =3D mem->guest_memfd >=3D 0 ? (uint8_t*)ram - mr->ram_block->host : 0; =20 diff --git a/system/memory.c b/system/memory.c index 15964160ee..d70968c966 100644 --- a/system/memory.c +++ b/system/memory.c @@ -1899,7 +1899,7 @@ bool memory_region_is_protected(MemoryRegion *mr) =20 bool memory_region_has_guest_memfd_private(MemoryRegion *mr) { - return mr->ram_block && mr->ram_block->guest_memfd >=3D 0; + return mr->ram_block && mr->ram_block->guest_memfd_private >=3D 0; } =20 uint8_t memory_region_get_dirty_log_mask(MemoryRegion *mr) diff --git a/system/physmem.c b/system/physmem.c index 25c800c9d3..d30fd690d1 100644 --- a/system/physmem.c +++ b/system/physmem.c @@ -2219,7 +2219,7 @@ static void ram_block_add(RAMBlock *new_block, Error = **errp) goto out_free; } =20 - assert(new_block->guest_memfd < 0); + assert(new_block->guest_memfd_private < 0); =20 ret =3D ram_block_coordinated_discard_require(true); if (ret < 0) { @@ -2229,9 +2229,9 @@ static void ram_block_add(RAMBlock *new_block, Error = **errp) goto out_free; } =20 - new_block->guest_memfd =3D kvm_create_guest_memfd(new_block->max_l= ength, - 0, errp); - if (new_block->guest_memfd < 0) { + new_block->guest_memfd_private =3D + kvm_create_guest_memfd(new_block->max_length, 0, errp); + if (new_block->guest_memfd_private < 0) { qemu_mutex_unlock_ramlist(); goto out_free; } @@ -2248,7 +2248,7 @@ static void ram_block_add(RAMBlock *new_block, Error = **errp) new_block->attributes =3D ram_block_attributes_create(new_block); if (!new_block->attributes) { error_setg(errp, "Failed to create ram block attribute"); - close(new_block->guest_memfd); + close(new_block->guest_memfd_private); ram_block_coordinated_discard_require(false); qemu_mutex_unlock_ramlist(); goto out_free; @@ -2385,7 +2385,7 @@ RAMBlock *qemu_ram_alloc_from_fd(ram_addr_t size, ram= _addr_t max_size, new_block->max_length =3D max_size; new_block->resized =3D resized; new_block->flags =3D ram_flags; - new_block->guest_memfd =3D -1; + new_block->guest_memfd_private =3D -1; new_block->host =3D file_ram_alloc(new_block, max_size, fd, file_size < offset + max_size, offset, errp); @@ -2558,7 +2558,7 @@ RAMBlock *qemu_ram_alloc_internal(ram_addr_t size, ra= m_addr_t max_size, new_block->used_length =3D size; new_block->max_length =3D max_size; new_block->fd =3D -1; - new_block->guest_memfd =3D -1; + new_block->guest_memfd_private =3D -1; new_block->page_size =3D qemu_real_host_page_size(); new_block->host =3D host; new_block->flags =3D ram_flags; @@ -2609,9 +2609,9 @@ static void reclaim_ramblock(RAMBlock *block) qemu_anon_ram_free(block->host, block->max_length); } =20 - if (block->guest_memfd >=3D 0) { + if (block->guest_memfd_private >=3D 0) { ram_block_attributes_destroy(block->attributes); - close(block->guest_memfd); + close(block->guest_memfd_private); ram_block_coordinated_discard_require(false); } =20 @@ -4222,7 +4222,8 @@ int ram_block_discard_guest_memfd_range(RAMBlock *rb,= uint64_t offset, =20 #ifdef CONFIG_FALLOCATE_PUNCH_HOLE /* ignore fd_offset with guest_memfd */ - ret =3D fallocate(rb->guest_memfd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KE= EP_SIZE, + ret =3D fallocate(rb->guest_memfd_private, + FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, offset, length); =20 if (ret) { --=20 2.50.1 From nobody Thu Nov 20 12:28:20 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1763573433; cv=none; d=zohomail.com; s=zohoarc; b=ZQYEFaiTglJwHftPHUwuAh2yQeuHWBjBu5irSoZj8h49IpcIx2VGZHpUMHf6wzk45p1kOc212qk+6Wmlk7mSI6GOhN+PpL/gXIDaTrpcYn90syTjF4SLTszzaGU1wHgZKyNQQHHW+Gg03m9j8tKyjLIREZC4PFS87RcUfUDV150= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1763573433; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ZCO99HltQYka+mV4Zl2jwDQO4MyhCZa7p2lWRxsiyeA=; b=Nj2TqGyXcj5OVMQubwPcihKphcd4qwwqNaguJrb4uqPxtg5VJ4WTVRZ8gHc3AvK8fsxtUXZ9hCaLzDUU8dKycfprEhtWagjPwSgBIHbykTr0mEbhAwontlsPk56LEi05ub03upJ2dGppYlADIuLPtfKWwMfsBthzohH/SiyvXv0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176357343355891.18289771705611; Wed, 19 Nov 2025 09:30:33 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vLlzx-00033k-V1; Wed, 19 Nov 2025 12:29:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vLlzn-00031S-PE for qemu-devel@nongnu.org; Wed, 19 Nov 2025 12:29:34 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vLlzl-0004Pf-MK for qemu-devel@nongnu.org; Wed, 19 Nov 2025 12:29:30 -0500 Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-645-bs9vcGruNr208jAqxS782Q-1; Wed, 19 Nov 2025 12:29:27 -0500 Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-8b26bc4984bso1317420185a.1 for ; Wed, 19 Nov 2025 09:29:24 -0800 (PST) Received: from x1.com ([142.188.210.156]) by smtp.gmail.com with ESMTPSA id af79cd13be357-8b2af042c9csm1444759485a.46.2025.11.19.09.29.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Nov 2025 09:29:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1763573368; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ZCO99HltQYka+mV4Zl2jwDQO4MyhCZa7p2lWRxsiyeA=; b=dYgE3Pf76K/10qBKiWae9LGhSzcq1v4XeEyuXi9PmiCtVrELJCu6ahcJcv/gUPmbkrt+4t D1PeGlBHvtPbWW76XX5lk4g/c19d7TypIHbkBFzyjTJLqFhit59InQhBW3MVlalN3UhPXt l85pf0t9dUfrBGcX0BhxeWkCucwp2Pg= X-MC-Unique: bs9vcGruNr208jAqxS782Q-1 X-Mimecast-MFC-AGG-ID: bs9vcGruNr208jAqxS782Q_1763573364 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1763573363; x=1764178163; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ZCO99HltQYka+mV4Zl2jwDQO4MyhCZa7p2lWRxsiyeA=; b=Pq1bEFUDldCblrb2bb5DN7kpNxG0DpEgW9P3CIbBq27CsRh90/mD8Y4O+alxYXRljs KRfM59cWELSV3QovjEJx3UWbBwtseyoPZO4Qc5S4wnJgrURPFT7nH7fqpev+XS/yFihL rgZK5I6pLBc9VebNOZKazrgZwDVk6OZt6RTZg9sBMaVaUgVpXGVQ8c0b6cXUR+06HHBr 6Oi7Qni5A5mZe/gn0Al8OR+lwZGgXzU7qnJMyMF2yyYVdumSo14/+bTyU3cJQMpTm7w6 0NpNPnPuVtNFH2RICtZCwJmUGZXE0Q9o++zaOqbOVA3jA8JMjLiRMH1eGhUkmNpgwURO dg2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763573363; x=1764178163; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ZCO99HltQYka+mV4Zl2jwDQO4MyhCZa7p2lWRxsiyeA=; b=C27CKZa0p+zMeJt3x5Y6gSo8iEWtzQ2OiDXJ+o3rK2BBBmearbryrY/eQX13V664nc 1+kzKmHP1RIq1wFcBpcBoYz+1nN/blERrfEEI/SlvK8x4TP3t0NzoCC0zI9ZqbA9iOfZ i/fhonq+IdztJgTkyq0HwTd7ZqkMh55SWMlBdKYBXPfWugB/Cji8VdaZm51we/aeUD65 mbIoNpGdNmyHnSzLxIE1EMGxbT7lz81W2ETjjzWBDpkG2sq1T2nzhDWONcwZCaY5WQMQ BAEM2AmyYmyX3JRsBmZqdG4WOgT5k+D4tkYRrE1iTjjJFzWDcb42t4Ud4XhSR2wEN14j F/Yw== X-Gm-Message-State: AOJu0YxzdZxLGT0fRBJkCWRhWzxr9VZcsBmSTqHY8OiRZr7cRvzQca0R LOZUY+CpcdNMOWeH8ivSlzWyzU2F1G2UKspcihMRoGqdL+u5M/Wg7ET17sDwoF7HfsCvJiWPs98 0h3P3/HHSYKoU8x9ooSFiE30fHDvZVJdWIuqmtAWNn60P9sEnxE1Uf6YMt3yhLOdlrynVpa5FIP z2KdB3hMpXgvHlVJPBhUXglGXLutMW35PS0civHg== X-Gm-Gg: ASbGnctVjR5cSG7yN3jjSsA/yxGVGqsD6X6+rbOII9361WAqaNHkyR/QIAbvWb/7cSw ZZC7gZrf7vwHpelp2XWUXaJRaAFO9M2b7eN3OoDcqVwch+vmEBfFmHX2P28yl5FmIvfP2X3qGlE C+zcuf0l11YCyISWge3jm4SR3fzJuCjAScpZeuaH0k3cGhepvRVCxf6UkXl9+pw/Mrx7ePHue6+ TTCuV8A1ZOjEhI/JFOjpn0cFp/aCd5L2t9VQPO1fCFI3PwqQkNL5+FDXpnweDvB24++KdmAwlE1 ocA/uG2LQNEXwlxNPnW4tF/q98Oac3Hme0/DmKp4dvKIn9fVJRiCDGIdOJipHZiN4JcvCSOsR4j t X-Received: by 2002:a05:620a:191c:b0:8b2:6251:64f9 with SMTP id af79cd13be357-8b32737594emr22731985a.58.1763573363463; Wed, 19 Nov 2025 09:29:23 -0800 (PST) X-Google-Smtp-Source: AGHT+IHaLfiXPwF0B+4rN0sSmDRr8joTXvVQMV5x3HZejv2uLMsMQj1cWNvdnmWxsEd6YDXvOAa5ew== X-Received: by 2002:a05:620a:191c:b0:8b2:6251:64f9 with SMTP id af79cd13be357-8b32737594emr22725985a.58.1763573362757; Wed, 19 Nov 2025 09:29:22 -0800 (PST) From: Peter Xu To: qemu-devel@nongnu.org Cc: Paolo Bonzini , David Hildenbrand , Alexey Kardashevskiy , peterx@redhat.com, Chenyi Qiang , Juraj Marcin , Li Xiaoyao , Fabiano Rosas Subject: [PATCH v2 6/9] hostmem: Rename guest_memfd to guest_memfd_private Date: Wed, 19 Nov 2025 12:29:10 -0500 Message-ID: <20251119172913.577392-7-peterx@redhat.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20251119172913.577392-1-peterx@redhat.com> References: <20251119172913.577392-1-peterx@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=peterx@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1763573434978018900 Content-Type: text/plain; charset="utf-8" Rename the HostMemoryBackend.guest_memfd field to reflect what it really means, on whether it needs guest_memfd to back its private portion of mapping. This will help on clearance when we introduce in-place guest_memfd for hostmem. Signed-off-by: Peter Xu --- include/system/hostmem.h | 2 +- backends/hostmem-file.c | 2 +- backends/hostmem-memfd.c | 2 +- backends/hostmem-ram.c | 2 +- backends/hostmem-shm.c | 2 +- backends/hostmem.c | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/system/hostmem.h b/include/system/hostmem.h index 88fa791ac7..dcbf81aeae 100644 --- a/include/system/hostmem.h +++ b/include/system/hostmem.h @@ -76,7 +76,7 @@ struct HostMemoryBackend { uint64_t size; bool merge, dump, use_canonical_path; bool prealloc, is_mapped, share, reserve; - bool guest_memfd, aligned; + bool guest_memfd_private, aligned; uint32_t prealloc_threads; ThreadContext *prealloc_context; DECLARE_BITMAP(host_nodes, MAX_NODES + 1); diff --git a/backends/hostmem-file.c b/backends/hostmem-file.c index 1f20cd8fd6..0e4cfd6dc6 100644 --- a/backends/hostmem-file.c +++ b/backends/hostmem-file.c @@ -86,7 +86,7 @@ file_backend_memory_alloc(HostMemoryBackend *backend, Err= or **errp) ram_flags |=3D fb->readonly ? RAM_READONLY_FD : 0; ram_flags |=3D fb->rom =3D=3D ON_OFF_AUTO_ON ? RAM_READONLY : 0; ram_flags |=3D backend->reserve ? 0 : RAM_NORESERVE; - ram_flags |=3D backend->guest_memfd ? RAM_GUEST_MEMFD_PRIVATE : 0; + ram_flags |=3D backend->guest_memfd_private ? RAM_GUEST_MEMFD_PRIVATE = : 0; ram_flags |=3D fb->is_pmem ? RAM_PMEM : 0; ram_flags |=3D RAM_NAMED_FILE; return memory_region_init_ram_from_file(&backend->mr, OBJECT(backend),= name, diff --git a/backends/hostmem-memfd.c b/backends/hostmem-memfd.c index 3f3e485709..ea93f034e4 100644 --- a/backends/hostmem-memfd.c +++ b/backends/hostmem-memfd.c @@ -60,7 +60,7 @@ have_fd: backend->aligned =3D true; ram_flags =3D backend->share ? RAM_SHARED : RAM_PRIVATE; ram_flags |=3D backend->reserve ? 0 : RAM_NORESERVE; - ram_flags |=3D backend->guest_memfd ? RAM_GUEST_MEMFD_PRIVATE : 0; + ram_flags |=3D backend->guest_memfd_private ? RAM_GUEST_MEMFD_PRIVATE = : 0; return memory_region_init_ram_from_fd(&backend->mr, OBJECT(backend), n= ame, backend->size, ram_flags, fd, 0,= errp); } diff --git a/backends/hostmem-ram.c b/backends/hostmem-ram.c index 96ad29112d..6a507fad77 100644 --- a/backends/hostmem-ram.c +++ b/backends/hostmem-ram.c @@ -30,7 +30,7 @@ ram_backend_memory_alloc(HostMemoryBackend *backend, Erro= r **errp) name =3D host_memory_backend_get_name(backend); ram_flags =3D backend->share ? RAM_SHARED : RAM_PRIVATE; ram_flags |=3D backend->reserve ? 0 : RAM_NORESERVE; - ram_flags |=3D backend->guest_memfd ? RAM_GUEST_MEMFD_PRIVATE : 0; + ram_flags |=3D backend->guest_memfd_private ? RAM_GUEST_MEMFD_PRIVATE = : 0; return memory_region_init_ram_flags_nomigrate(&backend->mr, OBJECT(bac= kend), name, backend->size, ram_flags, errp); diff --git a/backends/hostmem-shm.c b/backends/hostmem-shm.c index e86fb2e0aa..4766db6aad 100644 --- a/backends/hostmem-shm.c +++ b/backends/hostmem-shm.c @@ -54,7 +54,7 @@ have_fd: /* Let's do the same as memory-backend-ram,share=3Don would do. */ ram_flags =3D RAM_SHARED; ram_flags |=3D backend->reserve ? 0 : RAM_NORESERVE; - ram_flags |=3D backend->guest_memfd ? RAM_GUEST_MEMFD_PRIVATE : 0; + ram_flags |=3D backend->guest_memfd_private ? RAM_GUEST_MEMFD_PRIVATE = : 0; =20 return memory_region_init_ram_from_fd(&backend->mr, OBJECT(backend), backend_name, backend->size, diff --git a/backends/hostmem.c b/backends/hostmem.c index 35734d6f4d..70450733db 100644 --- a/backends/hostmem.c +++ b/backends/hostmem.c @@ -288,7 +288,7 @@ static void host_memory_backend_init(Object *obj) /* TODO: convert access to globals to compat properties */ backend->merge =3D machine_mem_merge(machine); backend->dump =3D machine_dump_guest_core(machine); - backend->guest_memfd =3D machine_require_guest_memfd(machine); + backend->guest_memfd_private =3D machine_require_guest_memfd(machine); backend->reserve =3D true; backend->prealloc_threads =3D machine->smp.cpus; } --=20 2.50.1 From nobody Thu Nov 20 12:28:20 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1763573437; cv=none; d=zohomail.com; s=zohoarc; b=RNlugGW87oGUj/VcDFClBhPs+wmMrZqoc44VjlqqiTrq4bJK7EtzsGv9VuU4+/4nanrL31VA7RQiJEadvz5/q17NVr/YyUouLR5VbG4Cgn6LZIe48efHx0VvBNTv+rRClRGQPd0PVtuLe9Rdm3XUoilAvbSqpHrpQsAbyiKMOtA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1763573437; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1WZk9+lCKlczElZt5LYeArbAXZ8shM2UJ0/dTfEE7/g=; b=HjJs+UhXRZrcBTf+8xKdjuCcF/IokJ499RrNupSmz3lXaDK2saPT0H5V2oSFKGMagCpSeSkkE3RG7CFK0WWc154TAR/5B/6e0jYaYeh3zf2CZVxm/dbaFazO7FDLMQf5cVuu8THJKwnlWKA24ifAX87KnB5blRJp9QmUPT1BGx8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1763573437107626.4459504806819; Wed, 19 Nov 2025 09:30:37 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vLlzz-00034r-Ia; Wed, 19 Nov 2025 12:29:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vLlzn-00031R-OI for qemu-devel@nongnu.org; Wed, 19 Nov 2025 12:29:34 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vLlzk-0004PR-HT for qemu-devel@nongnu.org; Wed, 19 Nov 2025 12:29:30 -0500 Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-278-_fmf5LbXMOeyxNIRfFexWA-1; Wed, 19 Nov 2025 12:29:26 -0500 Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-8a5b03118f4so349456885a.1 for ; Wed, 19 Nov 2025 09:29:26 -0800 (PST) Received: from x1.com ([142.188.210.156]) by smtp.gmail.com with ESMTPSA id af79cd13be357-8b2af042c9csm1444759485a.46.2025.11.19.09.29.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Nov 2025 09:29:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1763573367; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=1WZk9+lCKlczElZt5LYeArbAXZ8shM2UJ0/dTfEE7/g=; b=HZiyw44rvUcFi6EoRui+bvHF/B+n5McKLdcetf1N4Ms2/QKuGDYYtCYFoi1y1pAtbee7Gc dBmfPwSDBsmO/DdCS5DJCgImcFdY8TvXrJKMfaD1c1pkNb4QMmOHbKg+si2gSuJM1zWbKw WAJsIxS9zra5HBXVK8+uwa5d12jcyfI= X-MC-Unique: _fmf5LbXMOeyxNIRfFexWA-1 X-Mimecast-MFC-AGG-ID: _fmf5LbXMOeyxNIRfFexWA_1763573366 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1763573365; x=1764178165; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1WZk9+lCKlczElZt5LYeArbAXZ8shM2UJ0/dTfEE7/g=; b=Bg5LdQmw94dIh2wk4JBRv1QOO6jsXCiBhdhi1JZMR3rGtls9uTfIrybQdVnqfRJAgl 45MRwybwvQz3hXOKOeXZ1S38lTIrskoBcIEyC9prtJOzik2+Mo9dgio2k3kRz06CimgA psTk2Eg21EDz9ysMTqXi95ap3DhJsRegD2Dboc/dh7H0VJV/CZDlf6OzmtaSsYllsCA/ lJhSejKquT1yBdc3sYyws5n+pXapeguGrw+PJwaM8GJBRKaUfu10SLgPBpxMs9eT3W0d B3tZSKFFnQ1HshE9xl3pt9AXE+ECxZvp6Fsw6PA5dIPt/oagXFRsL5+9nL2lGuwrWst/ zi+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763573365; x=1764178165; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=1WZk9+lCKlczElZt5LYeArbAXZ8shM2UJ0/dTfEE7/g=; b=sNJ1RjhUxx93Gs/i+Vmt3RKKfWwW6o8olsvzZtaaQo9HDhJvEifjgKZfRn23FiReY2 vwV+5ZyGdlVKYHFM3QkCLBG2aO2TLdiSprdqMUGV3i42LirFylLUkZsYWFqRttcE4eZP FYNn61WiKai7NASYijNagcDXDNuAAdo4TdD/f/NcYRxphHfVc/vH64/2Gif7Hd65N5eE 2609RoJVwh1dvAzkbJSaFaogrcVH66cOb6hpiYMw/UI+4HOyjNcxHcT/rkD2rdjF04sK AFhoJRsV95k3oFVt3AHUo6tPKGfU8GHwnbcDG3p3WcpQlXfeJXdbxkOpPL4ow8GRfzxf 2EPQ== X-Gm-Message-State: AOJu0YzN+8g4XWKjNnNs+VPDmPvu6nDfvdV1nmqx4PpLQbblEU0APhpq wsEekWtDtEOVtPr7/iMJdwupiQegqO+R3Ohs//mfiZu6g8H+w9RYgmRc5jRzYNqGd65/gs16vhw ctRwt6/ZdlDmP0eYxGmfXpQQzBovt9HxaagVMUVhS6kYZeoCL/gceBaR8P7aaRX9HF2ou6fIkXg xzUszPAboiXfTlUA6Ul94nQs5cKCQsmdbPCjwdyw== X-Gm-Gg: ASbGncuZckjsFHSOhRYd/WwQyicXmnFT2e1e9eTPYT98+ZnwJY26t5Sf49IJkIes7mM gSg2tmGN8cmzqGvcXoyvg6fBS5fcxLFI6bqd0iwFuiAFwqMVxGdfOxUQbBob8LopZlxhjqgmzu3 ks7EUhNCLrcPUMgXaXVhsMTIKjI1CmlyZHHhuoQkDp9OWXzV6FZGi+uqCrDCXjyZLMnpTPhXinJ 5b+ogajE9TlwRxidxdCeBHt9+AUmGOcjqzt1XX6uPPSE3LpjXrgv/SmDk1jY8c4CK0gmFSDEUw7 bB/kjTd32tGyx6QgbHbaTyA19sq0WyY9AOZms3UmFU4sUA5bD87QD+bKZ/XplyJRlnFGJPLbc91 F X-Received: by 2002:a05:620a:191b:b0:8a3:90cb:9224 with SMTP id af79cd13be357-8b317d92f5bmr498145585a.2.1763573365199; Wed, 19 Nov 2025 09:29:25 -0800 (PST) X-Google-Smtp-Source: AGHT+IGhgk3d+3020lnhD16jZy7knIrKKKoIFUZQH/w4oWA3KyBu8LLlvimHnmJYkz12Xk2sR+meYw== X-Received: by 2002:a05:620a:191b:b0:8a3:90cb:9224 with SMTP id af79cd13be357-8b317d92f5bmr498138385a.2.1763573364547; Wed, 19 Nov 2025 09:29:24 -0800 (PST) From: Peter Xu To: qemu-devel@nongnu.org Cc: Paolo Bonzini , David Hildenbrand , Alexey Kardashevskiy , peterx@redhat.com, Chenyi Qiang , Juraj Marcin , Li Xiaoyao , Fabiano Rosas Subject: [PATCH v2 7/9] hostmem: Support in-place guest memfd to back a VM Date: Wed, 19 Nov 2025 12:29:11 -0500 Message-ID: <20251119172913.577392-8-peterx@redhat.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20251119172913.577392-1-peterx@redhat.com> References: <20251119172913.577392-1-peterx@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=peterx@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1763573440982019100 Content-Type: text/plain; charset="utf-8" Host backends supports guest-memfd now by detecting whether it's a confidential VM. There's no way to choose it yet from the memory level to use it in-place. If we use guest-memfd, it so far always implies we need two layers of memory backends, while the guest-memfd only provides the private set of pages. This patch introduces a way so that QEMU can consume guest memfd as the only source of memory to back the object (aka, in place), rather than having another backend supporting the pages converted to shared. To use the in-place guest-memfd, one can add a memfd object with: -object memory-backend-memfd,guest-memfd=3Don,share=3Don Note that share=3Don is required with in-place guest_memfd. Signed-off-by: Peter Xu --- qapi/qom.json | 6 +++- backends/hostmem-memfd.c | 66 +++++++++++++++++++++++++++++++++++++--- 2 files changed, 67 insertions(+), 5 deletions(-) diff --git a/qapi/qom.json b/qapi/qom.json index 6f5c9de0f0..9ebf17bfc7 100644 --- a/qapi/qom.json +++ b/qapi/qom.json @@ -763,13 +763,17 @@ # @seal: if true, create a sealed-file, which will block further # resizing of the memory (default: true) # +# @guest-memfd: if true, use guest-memfd to back the memory region. +# (default: false, since: 11.0) +# # Since: 2.12 ## { 'struct': 'MemoryBackendMemfdProperties', 'base': 'MemoryBackendProperties', 'data': { '*hugetlb': 'bool', '*hugetlbsize': 'size', - '*seal': 'bool' }, + '*seal': 'bool', + '*guest-memfd': 'bool' }, 'if': 'CONFIG_LINUX' } =20 ## diff --git a/backends/hostmem-memfd.c b/backends/hostmem-memfd.c index ea93f034e4..1fa16c1e1d 100644 --- a/backends/hostmem-memfd.c +++ b/backends/hostmem-memfd.c @@ -18,6 +18,8 @@ #include "qapi/error.h" #include "qom/object.h" #include "migration/cpr.h" +#include "system/kvm.h" +#include =20 OBJECT_DECLARE_SIMPLE_TYPE(HostMemoryBackendMemfd, MEMORY_BACKEND_MEMFD) =20 @@ -28,6 +30,13 @@ struct HostMemoryBackendMemfd { bool hugetlb; uint64_t hugetlbsize; bool seal; + /* + * NOTE: this differs from HostMemoryBackend's guest_memfd_private, + * which represents a internally private guest-memfd that only backs + * private pages. Instead, this flag marks the memory backend will + * 100% use the guest-memfd pages in-place. + */ + bool guest_memfd; }; =20 static bool @@ -47,10 +56,40 @@ memfd_backend_memory_alloc(HostMemoryBackend *backend, = Error **errp) goto have_fd; } =20 - fd =3D qemu_memfd_create(TYPE_MEMORY_BACKEND_MEMFD, backend->size, - m->hugetlb, m->hugetlbsize, m->seal ? - F_SEAL_GROW | F_SEAL_SHRINK | F_SEAL_SEAL : 0, - errp); + if (m->guest_memfd) { + /* User choose to use in-place guest-memfd to back the VM.. */ + if (!backend->share) { + error_setg(errp, "In-place guest-memfd must be used with share= =3Don"); + return false; + } + + /* + * This is the request to have a guest-memfd to back private pages. + * In-place guest-memfd doesn't work like that. Disable it for now + * to make it simple, so that each memory backend can only have + * guest-memfd either as private, or fully shared. + */ + if (backend->guest_memfd_private) { + error_setg(errp, "In-place guest-memfd cannot be used with ano= ther " + "private guest-memfd"); + return false; + } + + /* TODO: add huge page support */ + fd =3D kvm_create_guest_memfd(backend->size, + GUEST_MEMFD_FLAG_MMAP | + GUEST_MEMFD_FLAG_INIT_SHARED, + errp); + if (fd < 0) { + return false; + } + } else { + fd =3D qemu_memfd_create(TYPE_MEMORY_BACKEND_MEMFD, backend->size, + m->hugetlb, m->hugetlbsize, m->seal ? + F_SEAL_GROW | F_SEAL_SHRINK | F_SEAL_SEAL := 0, + errp); + } + if (fd =3D=3D -1) { return false; } @@ -65,6 +104,18 @@ have_fd: backend->size, ram_flags, fd, 0,= errp); } =20 +static bool +memfd_backend_get_guest_memfd(Object *o, Error **errp) +{ + return MEMORY_BACKEND_MEMFD(o)->guest_memfd; +} + +static void +memfd_backend_set_guest_memfd(Object *o, bool value, Error **errp) +{ + MEMORY_BACKEND_MEMFD(o)->guest_memfd =3D value; +} + static bool memfd_backend_get_hugetlb(Object *o, Error **errp) { @@ -152,6 +203,13 @@ memfd_backend_class_init(ObjectClass *oc, const void *= data) object_class_property_set_description(oc, "hugetlbsize", "Huge pages size (ex: 2M, 1G= )"); } + + object_class_property_add_bool(oc, "guest-memfd", + memfd_backend_get_guest_memfd, + memfd_backend_set_guest_memfd); + object_class_property_set_description(oc, "guest-memfd", + "Use guest memfd"); + object_class_property_add_bool(oc, "seal", memfd_backend_get_seal, memfd_backend_set_seal); --=20 2.50.1 From nobody Thu Nov 20 12:28:20 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1763573398; cv=none; d=zohomail.com; s=zohoarc; b=oIlGDZQ5CF0aA+O8DO9bSusQ2iAASimZbll/DCMzDKtsykcA+JQN9k6iy4lL7EquByAfXv67fPnq9FlEa40KYaQz05O7H88kROpZgRnqT9/YGMXMXRDQ/DE89+mFtxEedHWplferaw96jsfCwd9oIktYw2t9G5zkWxGcRoPVzR8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1763573398; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=mT/ZTbTQ7j2oul5VXYz9qUwuJg/LSQ1GLNpf4vuAZng=; b=eJbfcn+87QMTLCLp/TIcVY52351rkS1wRDJZj4mgANmD8ns383jyR/lyqNktA5TA5R0iOhsvI9xaddAEdUjFXMTHYLoZsZZp87q9APxCiy7BCjucDnJr5AkZZdKY5onJAtt4RlGvvr3JCiRuW1S0ZlQSntFu/IYfPBTDmKumzT8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1763573398337496.3334200907775; Wed, 19 Nov 2025 09:29:58 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vLm02-00038b-2B; Wed, 19 Nov 2025 12:29:46 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vLlzq-00031c-IQ for qemu-devel@nongnu.org; Wed, 19 Nov 2025 12:29:36 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vLlzn-0004Pr-HS for qemu-devel@nongnu.org; Wed, 19 Nov 2025 12:29:33 -0500 Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-225-BrrmIwpyM2OsbWX0rHj46A-1; Wed, 19 Nov 2025 12:29:28 -0500 Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-8b233e206ddso1878450285a.3 for ; Wed, 19 Nov 2025 09:29:27 -0800 (PST) Received: from x1.com ([142.188.210.156]) by smtp.gmail.com with ESMTPSA id af79cd13be357-8b2af042c9csm1444759485a.46.2025.11.19.09.29.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Nov 2025 09:29:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1763573369; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=mT/ZTbTQ7j2oul5VXYz9qUwuJg/LSQ1GLNpf4vuAZng=; b=HVfWAERB+1fU93DK5c5rOgFn2qQWS4WqBu+50PXIs5rReQLDzoyBnHq4rou0mE2Uou3udI RYrbNQhGNQqNhYMub3r6JgvbWuN+gTnHaxAtcS8KBbwaj5G+VX+EYIDdjWnnx0tN8oABSE Qfm6yhTaDGPYCBL4AobAHIwgeoO+MTY= X-MC-Unique: BrrmIwpyM2OsbWX0rHj46A-1 X-Mimecast-MFC-AGG-ID: BrrmIwpyM2OsbWX0rHj46A_1763573367 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1763573366; x=1764178166; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=mT/ZTbTQ7j2oul5VXYz9qUwuJg/LSQ1GLNpf4vuAZng=; b=cfZe1wONhHXlD2sx/LKR5qF/wjFgMqohwCtjqSULpijFCoGF+cUTyegEqxsZ+UGwBD p2hKcVzoFx4cu3tPyu9sGFBgGTzHh9znHcM5mVqGgQgvzDt2smGHxgvprDNUG8lLJ+I3 3W1haR0HZnm+oASAI7Ha0FrOOC8LtKL3G8kTN6iJcGQapUqH5woymrccJSND8bryw9JE 3huF/Mf+y7wRG2xOmYLwKt816pOW0By+YsulWqD/pVVw2sPxVA/Q/LNJG5QYsLrQQ112 mMtxDoMUtCnzdy9Oh+963UIiVhSSutEpTWjifjYctGXNddrY+21wuFIiiRNtzP48cjKg NXQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763573366; x=1764178166; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=mT/ZTbTQ7j2oul5VXYz9qUwuJg/LSQ1GLNpf4vuAZng=; b=DffXNDbCC+06isqVLTDt1CLGRMIwQgOrM3Hi0UZkoKJdsTyXpxKChxHRvafpJlhcxH tBGSVQ6uifge1UnlQXlryMUUoeplFb6y+vYR20WX0lPPhk5TeZ9w/cbhBdLrm4Jt4Z/d rZQa8C51ZMn/sUQhWtzIGn8ItXt6Yhf6rHk/PMszOiAQpkeIVQU31811T7/XKlb1j7Vg z1pYvV3j65Ir6ko/Rr0XkwFndaLKzOe6jEKn+O+02LmxEgz3NKr7nqDxm9LGV4UDYegH XKzpOsC0X54XuyEaYoll7rXV7Jx4u3oV9Z8ai+sU9OXrUT5ipMkJGoMOnBtt+UweiiE5 wljw== X-Gm-Message-State: AOJu0Ywtb2RRaIOrjh2okG81FO1DiK/pqgOu2ADvRwhydsUiuSbhm6HC pjYN3rlf75IzAwelktaVKYCIkWzSCmn7imfdcUjGQzkjGh8RYTXwWf5FPiVifumVPTWBVOxuZxj Mqx8MLVnEtTPx/3OrCuqoDr7e5rBYAJgQ6NzE6CIT7vVaolt18j/XvjpUvm4wacgJQJfKHK63uW xLNsiRzBzUNaV5wJaVC54sHouPPFu0K2Wp9lMjoQ== X-Gm-Gg: ASbGncsub2l/FhNSqeFdPvD2oPijPRUTnRYnKarru/YdsaE6JR5qPHa6gCN/+/39DIf rlYEYdIjGXTtlmskACzSreM5dI0OExM+4klMA+vMOjJWjpEdfcTzxAq2s6OPy13mDlpJ0UQzBDK txurlYoOKJr1xcfQWeFJLOUH4nAj18qWNFeqDVUZhdZENMDVaf770O3lZRV+OvVWDVckeuX4/Rw pxYLlyCacrNkLhcLHjMJienkP+AgAj3GwWUHCp+gjMixfnQfaR9acHrgjkMSSwH/9MjvK1bDGDq gYNzw15Z/dsLk+z39Vwqgv0SCs7DNzt5LPSSM5bGhKDqnJ+7pXbEAOjbyRl3rTPoSaqPT/T4RVn p X-Received: by 2002:a05:620a:1724:b0:8b2:e1da:7532 with SMTP id af79cd13be357-8b327321202mr25676985a.34.1763573366362; Wed, 19 Nov 2025 09:29:26 -0800 (PST) X-Google-Smtp-Source: AGHT+IHdHSRxnSzvkY2AhBaph2YGKHOABMh41v1V1DQTAu5wWGg8/33DDdRSIXzXKE+omjl3bNwIQw== X-Received: by 2002:a05:620a:1724:b0:8b2:e1da:7532 with SMTP id af79cd13be357-8b327321202mr25672385a.34.1763573365774; Wed, 19 Nov 2025 09:29:25 -0800 (PST) From: Peter Xu To: qemu-devel@nongnu.org Cc: Paolo Bonzini , David Hildenbrand , Alexey Kardashevskiy , peterx@redhat.com, Chenyi Qiang , Juraj Marcin , Li Xiaoyao , Fabiano Rosas Subject: [PATCH v2 8/9] tests/migration-test: Support guest-memfd init shared mem type Date: Wed, 19 Nov 2025 12:29:12 -0500 Message-ID: <20251119172913.577392-9-peterx@redhat.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20251119172913.577392-1-peterx@redhat.com> References: <20251119172913.577392-1-peterx@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=peterx@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1763573400588019100 Content-Type: text/plain; charset="utf-8" Support the guest-memfd type when the fd has init share enabled. It means the gmemfd can be used similarly to memfd. Signed-off-by: Peter Xu --- tests/qtest/migration/framework.h | 4 +++ tests/qtest/migration/framework.c | 60 +++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/tests/qtest/migration/framework.h b/tests/qtest/migration/fram= ework.h index ed85ed502d..b4c5edcad3 100644 --- a/tests/qtest/migration/framework.h +++ b/tests/qtest/migration/framework.h @@ -34,6 +34,10 @@ typedef enum { * but only anonymously allocated. */ MEM_TYPE_MEMFD, + /* + * Use guest-memfd, shared mappings. + */ + MEM_TYPE_GUEST_MEMFD, MEM_TYPE_NUM, } MemType; =20 diff --git a/tests/qtest/migration/framework.c b/tests/qtest/migration/fram= ework.c index 81eae09c92..73536c8f29 100644 --- a/tests/qtest/migration/framework.c +++ b/tests/qtest/migration/framework.c @@ -26,6 +26,10 @@ #include "qemu/range.h" #include "qemu/sockets.h" =20 +#ifdef CONFIG_LINUX +#include +#include +#endif =20 #define QEMU_VM_FILE_MAGIC 0x5145564d #define QEMU_ENV_SRC "QTEST_QEMU_BINARY_SRC" @@ -279,6 +283,9 @@ static char *migrate_mem_type_get_opts(MemType type, co= nst char *memory_size) case MEM_TYPE_MEMFD: backend =3D g_strdup("-object memory-backend-memfd"); break; + case MEM_TYPE_GUEST_MEMFD: + backend =3D g_strdup("-object memory-backend-memfd,guest-memfd=3Do= n"); + break; case MEM_TYPE_ANON: backend =3D g_strdup("-object memory-backend-ram"); share =3D false; @@ -425,8 +432,55 @@ int migrate_args(char **from, char **to, const char *u= ri, MigrateStart *args) return 0; } =20 +static bool kvm_guest_memfd_init_shared_supported(const char **reason) +{ + assert(*reason =3D=3D NULL); + +#ifdef CONFIG_LINUX + int ret, fd =3D -1; + + if (!migration_get_env()->has_kvm) { + *reason =3D "KVM is not enabled in the current QEMU build"; + goto out; + } + + fd =3D open("/dev/kvm", O_RDWR); + if (fd < 0) { + *reason =3D "KVM module isn't available or missing permission"; + goto out; + } + + ret =3D ioctl(fd, KVM_CHECK_EXTENSION, KVM_CAP_GUEST_MEMFD); + if (!ret) { + *reason =3D "KVM module doesn't suport guest-memfd"; + goto out; + } + + ret =3D ioctl(fd, KVM_CHECK_EXTENSION, KVM_CAP_GUEST_MEMFD_FLAGS); + if (ret < 0) { + *reason =3D "KVM doesn't support KVM_CAP_GUEST_MEMFD_FLAGS"; + goto out; + } + + if (!(ret & GUEST_MEMFD_FLAG_INIT_SHARED)) { + *reason =3D "KVM doesn't support GUEST_MEMFD_FLAG_INIT_SHARED"; + goto out; + } +out: + if (fd >=3D 0) { + close(fd); + } +#else + *reason =3D "KVM not supported on non-Linux OS"; +#endif + + return !*reason; +} + static bool migrate_mem_type_prepare(MemType type) { + const char *reason =3D NULL; + switch (type) { case MEM_TYPE_SHMEM: if (!g_file_test("/dev/shm", G_FILE_TEST_IS_DIR)) { @@ -434,6 +488,12 @@ static bool migrate_mem_type_prepare(MemType type) return false; } break; + case MEM_TYPE_GUEST_MEMFD: + if (!kvm_guest_memfd_init_shared_supported(&reason)) { + g_test_skip(reason); + return false; + } + break; default: break; } --=20 2.50.1 From nobody Thu Nov 20 12:28:20 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1763573431; cv=none; d=zohomail.com; s=zohoarc; b=C0jnb8PXMa3bKIPl4QlQlWoSA2WjB1h7bWu7zYEK5TvZS7ON4qcogiBfneCp7/zOFb+9BcXMTVybXtb/2kpmLYiBVny/+ImmegrAI1CJDiZKhwbocqXDDMrlD4nhwMneAOXGCFqS1psishdue8BX72qtOwNSRu4Fas6DcphMPHY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1763573431; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=8LRdt+/CQiyd/RiqOaKeRjP93SY+POOdomSS9E7DfjY=; b=PtuENUeVQ4gelBE/8JEM8s5Rsb0v+8aQDSidM9AcCumY1naXvxFclzHo5oguU/R1YF086xqj0nnZdi++h1PPOBCcPRwT+e1IkuelltPI6MQ5p2hAZNVuaJPURBPbk10nA0Mx4W4qykDNQBUvOf+vZgnKuwDTlfD1vIyI2c7KVMs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1763573431283495.47936396665966; Wed, 19 Nov 2025 09:30:31 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vLm04-0003BM-9E; Wed, 19 Nov 2025 12:29:48 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vLlzp-00031a-9Q for qemu-devel@nongnu.org; Wed, 19 Nov 2025 12:29:34 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vLlzm-0004Pj-2H for qemu-devel@nongnu.org; Wed, 19 Nov 2025 12:29:32 -0500 Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-262-zosGknqNNA69M4f18179og-1; Wed, 19 Nov 2025 12:29:28 -0500 Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-8a5b03118f4so349463585a.1 for ; Wed, 19 Nov 2025 09:29:28 -0800 (PST) Received: from x1.com ([142.188.210.156]) by smtp.gmail.com with ESMTPSA id af79cd13be357-8b2af042c9csm1444759485a.46.2025.11.19.09.29.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Nov 2025 09:29:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1763573369; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=8LRdt+/CQiyd/RiqOaKeRjP93SY+POOdomSS9E7DfjY=; b=JAFrscHUPJDstiG5wtH4IV/+Q6SPQ8iMPFs40J+J8GQh+vNr6y3Ks9GNbp7nhiluAs71PR yEMwLItH/SRCyjZP8PthX4xdubRMjzfzO5uM3zSjyN+wktUhfQYNkTfdcQPsF/ZIUmVrQ1 6uPNDSOUjXCixpr8RLOJtCqdHixNz3s= X-MC-Unique: zosGknqNNA69M4f18179og-1 X-Mimecast-MFC-AGG-ID: zosGknqNNA69M4f18179og_1763573368 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1763573367; x=1764178167; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8LRdt+/CQiyd/RiqOaKeRjP93SY+POOdomSS9E7DfjY=; b=SCQYtY+sLY3bqgt5mNbeFuUUvDjjZk5bocXVKctHUZE8FldikfwH2RGK17hLBNEpnf 9vS62xozpfVhtdqGCNVfsV5oyMW/a3w0EhiPoY3rPr1780ImSlxjDbDZE+ztBnaA7fVV JxQ1sDuZHkoqueJskf3pWE5eXgFgNY/V9ZpunRvKvejdGtMqG6VX63KJpfrACa2vt7jC mpyh9qTh21H1KmlL+Im/mPiTuXIr13Bsc1lUgpgMLji27ho4vcSp3ikLxisZSDb5J84S M9MOFDlojtBHOmga0b1Q8MjRiiWAsD9zQNA5nlkOPhNlK01Af98Wh1Au2VQ/EUseVXVj fk1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763573367; x=1764178167; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=8LRdt+/CQiyd/RiqOaKeRjP93SY+POOdomSS9E7DfjY=; b=RZYDPcJaEH66c07DXj8uNiamix+J9gF1qrEFMWLc5mqkFWb/0070MzUIcrQla1bDpO sVQxSJaCIg2wLncyCi1tEnYTqtQmna0srtMvAuefPcKNh9N9a7y9jXoF5p7/vJ3dfIIH h8sUASs3AnAzFspWY7s65YxnZAPxmTI7twogiP9WzCxg8AygOOSNZEwvrXcKW7u+/xkd hFFTqSe4xxg/Ep4CGo2tZ7tCaU2wXU/Czt3NoIipLRm7bW2DfyQWZKQG6gPDyo0LW7iX w5SB28UERGdYIjWk2F5unhTLNqE5S9U0Avlj4+byas7MeizGUEXwL7PvcQFioYmOogAy +cHw== X-Gm-Message-State: AOJu0YzgeBue73gfK6FOpZ+TmcGMzwXCj1vCB5/C2Rv2WXU7epnVwk/h ubXKl/9NCx6pC6dLoTbqJGNz2zLKs7kLuulJspBKuNVb6xM3XVPTt/e7SiT1GZVFd137iniw+nS TRES1mGSJCmzsJ68rd0aAKIyNOxxHqhqonfI4B2DbdQcBq2+Nk7VdBt7lrZBZ/1qE2t+tNMGXMC 6a11Ta8RmnGEU7cuNzGflGPkMQBfrnG4TrMseB6A== X-Gm-Gg: ASbGncuOmZHLPDUoD9T+sw2mXUEehe8SZ/5PPGChhwj0tsnFWEgDT9vIF7JVV93pD9u 9iVWpc8VFEz0H5nO1mWsa4DWu2glKuL+Dt6qUZLIri0TNZH0Z/F8S0eM4UTIjaDvgTBvkiZkz46 AgBsuOJnrK5ei8n2vJuLVtvjzqw860/yrGA+biAE9LguOdJZM7X4wijIApFIF26waMdP6MqEeeO sObUhIAah1UNbKOtuF6pW0fIR561rj0CjIbFlIZwkmjJpmTHxx6xsIynE9B/QKmyZ8SnW3RUd10 1hCdMlbLRwDB+LAQOnmfE+7kY2UN9TGnMdw+kXjPo10+PrPrUMafXgw9Go7sr/w5Rg2aTmOPhE7 a X-Received: by 2002:a05:620a:19a1:b0:8b2:eebc:64bc with SMTP id af79cd13be357-8b31824d52dmr502022185a.35.1763573367398; Wed, 19 Nov 2025 09:29:27 -0800 (PST) X-Google-Smtp-Source: AGHT+IGXVEBdcFMR3WZ1/JVFaDBaTSGWRg4nE21vY8bbvEdpxJpddHaeEZcul5FdnviirK7Efb5iyg== X-Received: by 2002:a05:620a:19a1:b0:8b2:eebc:64bc with SMTP id af79cd13be357-8b31824d52dmr502017185a.35.1763573366801; Wed, 19 Nov 2025 09:29:26 -0800 (PST) From: Peter Xu To: qemu-devel@nongnu.org Cc: Paolo Bonzini , David Hildenbrand , Alexey Kardashevskiy , peterx@redhat.com, Chenyi Qiang , Juraj Marcin , Li Xiaoyao , Fabiano Rosas Subject: [PATCH v2 9/9] tests/migration-test: Add a precopy test for guest-memfd Date: Wed, 19 Nov 2025 12:29:13 -0500 Message-ID: <20251119172913.577392-10-peterx@redhat.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20251119172913.577392-1-peterx@redhat.com> References: <20251119172913.577392-1-peterx@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=peterx@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1763573432695019100 Content-Type: text/plain; charset="utf-8" Add a plain tcp test for guest-memfd. Note that the test will be automatically skipped whenever not supported (e.g. qemu compiled without KVM, or host kernel doesn't support kvm, or old kernels, etc.). Signed-off-by: Peter Xu --- tests/qtest/migration/precopy-tests.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/qtest/migration/precopy-tests.c b/tests/qtest/migration/= precopy-tests.c index 57ca623de5..88d2627efd 100644 --- a/tests/qtest/migration/precopy-tests.c +++ b/tests/qtest/migration/precopy-tests.c @@ -215,6 +215,16 @@ static void test_precopy_tcp_plain(void) test_precopy_common(&args); } =20 +static void test_precopy_tcp_plain_gmemfd(void) +{ + MigrateCommon args =3D { + .listen_uri =3D "tcp:127.0.0.1:0", + .start.mem_type =3D MEM_TYPE_GUEST_MEMFD, + }; + + test_precopy_common(&args); +} + static void test_precopy_tcp_switchover_ack(void) { MigrateCommon args =3D { @@ -1276,6 +1286,8 @@ void migration_test_add_precopy(MigrationTestEnv *env) return; } =20 + migration_test_add("/migration/precopy/tcp/plain/guest-memfd", + test_precopy_tcp_plain_gmemfd); migration_test_add("/migration/precopy/tcp/plain/switchover-ack", test_precopy_tcp_switchover_ack); =20 --=20 2.50.1