From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 48F32CCA470 for ; Tue, 7 Oct 2025 13:58:26 +0000 (UTC) Received: from boromir.ozlabs.org (localhost [127.0.0.1]) by lists.ozlabs.org (Postfix) with ESMTP id 4cgyQm2RFSz30Qk; Wed, 8 Oct 2025 00:58:24 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; arc=none smtp.remote-ip="2607:f8b0:4864:20::54a" ARC-Seal: i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1759845504; cv=none; b=HEG1oDw/CgcMH4fxkey7yeaXICrN+qcTMu/Xo2LGa/HkQjCZ5MDJVKIJLHHS04+wHgm7KWz0acQE7Qg8h38oB3TZ+qrlWAHWfAQ4Ob/dZ9OfC0MHiY7Qeis4LCkAXsuET9AYkqR40MuANZoDSPOV06VmqFHksINr4i7AOQ3HUC+T0eNgtZvT+fwkgcyttSVfuDcS+/7hgOzcvjzcX7pyPUBax4+XkpyPz2h/asY94rg57H8d2VPH+IyDlup2S/bw58Abrv3iZRpXtQB8SYTU+Ru9xM4MsYvSc13YsJpnTM1Bs1j+F3D3nQHX19t2MbwuZwpBsyCxTQV0vjVYumdpPQ== ARC-Message-Signature: i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1759845504; c=relaxed/relaxed; bh=4rlYUY99rqPM8GfD927WUvhieIqn1G/yd0+acs0pn14=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=B8AnF53bPd3jRptzvP0OE2voSnLdvVSbBdZ9DG6XNyp/IJ+JNR3Xa1Xd+EjGZjDQIU9dNiNdge5045pgUjbHVfmEbFk7CFbkiyYYazaOaySnVNQ3iFZXUv8QUxh6eryt/N/kKrEmujZ6pWvKDFXKvQTxjUk2/ROnCDj1gJMGTeDBGgtDYmfW4AqBS75SE5ADz9L0SaAyw+YL67YkzgtFmGTsZM5m1E9THT2C2u9fTX4CMMC8SIULezmnBQ0dwJk92+nM/VGQdVGMtm06MBfFk1i8+C9nBhOhpa7Bi4c97RHYHg+1naU5g/87KCOEZ46mY4cSAzz/h02J/o7YjngAYg== ARC-Authentication-Results: i=1; lists.ozlabs.org; dmarc=pass (p=reject dis=none) header.from=google.com; dkim=pass (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.a=rsa-sha256 header.s=20230601 header.b=m6ixHGLU; dkim-atps=neutral; spf=pass (client-ip=2607:f8b0:4864:20::54a; helo=mail-pg1-x54a.google.com; envelope-from=3exzlaaykdjyi40d926ee6b4.2ecb8dknff2-34lb8iji.epb01i.eh6@flex--seanjc.bounces.google.com; receiver=lists.ozlabs.org) smtp.mailfrom=flex--seanjc.bounces.google.com Authentication-Results: lists.ozlabs.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.a=rsa-sha256 header.s=20230601 header.b=m6ixHGLU; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=flex--seanjc.bounces.google.com (client-ip=2607:f8b0:4864:20::54a; helo=mail-pg1-x54a.google.com; envelope-from=3exzlaaykdjyi40d926ee6b4.2ecb8dknff2-34lb8iji.epb01i.eh6@flex--seanjc.bounces.google.com; receiver=lists.ozlabs.org) Received: from mail-pg1-x54a.google.com (mail-pg1-x54a.google.com [IPv6:2607:f8b0:4864:20::54a]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4cgyQl0m1Jz2xgp for ; Wed, 8 Oct 2025 00:58:22 +1100 (AEDT) Received: by mail-pg1-x54a.google.com with SMTP id 41be03b00d2f7-b5535902495so4392955a12.0 for ; Tue, 07 Oct 2025 06:58:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1759845500; x=1760450300; darn=lists.ozlabs.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=4rlYUY99rqPM8GfD927WUvhieIqn1G/yd0+acs0pn14=; b=m6ixHGLU9kT2z8a4ugwzPlHRkxvpNGMzp3yxZSOIp1iVkvA6hh7Jaguq7iD6KYDu0+ 4SF4BZSvR8cIaNETHaJZp88TzSapdh2D51czOxMaZ5roI0J5dimUQxXeBDnxlqc2PdzH MTGJgmm8cYMUqN9yzulXPY4BmGetJ7aru9aZ/7XmFMEmdXu51zTp5prrZELpxeqF0o10 8n/4HmDKOxdHrfA1TKxwBwQ5sP2phpBZ2DE48/s20LQrrtaja+CZCLxZuM+athBYCWF5 kYODLjGdX7yub/3WVf+6PAEizaJHlN1A0g6zvCx9ROduSTwd/0Ll1eQyOmGv2SWq6OKC WHNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759845500; x=1760450300; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=4rlYUY99rqPM8GfD927WUvhieIqn1G/yd0+acs0pn14=; b=jGTjQWCOmCek0bOllx23kjosqFujkKtA6RP+KseukM66Jo7A72Er9AeG5fJxOfET13 T46OgD/NJfjhHQ9uquIOT4ZYwZuyn/3ECObWokPxxFv4yCKuQfWHqUGrKS5jVa+CauJp uW5zoVBR8Q2FGTB4wfUCr+6BiwhZwWb9CZBUwshqoXbXb/Cb3VCt65ZX1vCN6oImFL11 rwhQiXcX9/bsjoTEm7iBliq+17Ja+P23SE1AzEQPo2ik8WMRNX1YecFyoO0UmbCGw58n eCpGfWerZdaobvl956xXaXpeKkwm7bogXEjNoBufec3iQF/TIB/hn3EPhaBVLJnlTXYl tzcg== X-Forwarded-Encrypted: i=1; AJvYcCW2rJ1k1K/oX8LR23iyZcBvrc1bAA8l2jraaaPqZFhjFB1FTBt0EaFZ1Rl2peUyFGUWRxpWdWq8Ex9XA4g=@lists.ozlabs.org X-Gm-Message-State: AOJu0Yzxgk5FhhpbIb4/XQw8CbbsOVlSsCZw1oSgvEkKiGy//yEPgf6m NFbtnyHadBVa2xYMcO8dpbqKKLboNYFSWrbfk1kBmlARrlEPk/pysjh3tbYuLh1jP7fgJRaqi89 2AsgXtA== X-Google-Smtp-Source: AGHT+IH44LYFtR2Z9aj26aSM38dj+lWGcrky74kzzSLe1xZuZzZCEhZOyIjquiME0rIkS/AaVEe3J4tloO4= X-Received: from pjbmw12.prod.google.com ([2002:a17:90b:4d0c:b0:329:b272:45a7]) (user=seanjc job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:1c05:b0:335:2823:3686 with SMTP id 98e67ed59e1d1-339c274089dmr20831446a91.2.1759845499915; Tue, 07 Oct 2025 06:58:19 -0700 (PDT) Date: Tue, 7 Oct 2025 06:58:18 -0700 In-Reply-To: X-Mailing-List: linuxppc-dev@lists.ozlabs.org List-Id: List-Help: List-Owner: List-Post: List-Archive: , List-Subscribe: , , List-Unsubscribe: Precedence: list Mime-Version: 1.0 References: <20231105163040.14904-1-pbonzini@redhat.com> <20231105163040.14904-16-pbonzini@redhat.com> Message-ID: Subject: Re: [PATCH 15/34] KVM: Add KVM_CREATE_GUEST_MEMFD ioctl() for guest-specific backing memory From: Sean Christopherson To: Nikita Kalyazin Cc: Paolo Bonzini , Marc Zyngier , Oliver Upton , Huacai Chen , Michael Ellerman , Anup Patel , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexander Viro , Christian Brauner , "Matthew Wilcox (Oracle)" , Andrew Morton , kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, linux-mips@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Xiaoyao Li , Xu Yilun , Chao Peng , Fuad Tabba , Jarkko Sakkinen , Anish Moorthy , David Matlack , Yu Zhang , Isaku Yamahata , "=?utf-8?Q?Micka=C3=ABl_Sala=C3=BCn?=" , Vlastimil Babka , Vishal Annapurve , Ackerley Tng , Maciej Szmigiero , David Hildenbrand , Quentin Perret , Michael Roth , Wang , Liam Merwick , Isaku Yamahata , "Kirill A. Shutemov" Content-Type: text/plain; charset="us-ascii" On Fri, Oct 03, 2025, Nikita Kalyazin wrote: > On 05/11/2023 16:30, Paolo Bonzini wrote: > > From: Sean Christopherson > > > > Introduce an ioctl(), KVM_CREATE_GUEST_MEMFD, to allow creating file-based > > memory that is tied to a specific KVM virtual machine and whose primary > > purpose is to serve guest memory. > > ... > > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c > > index f1a575d39b3b..8f46d757a2c5 100644 > > --- a/virt/kvm/kvm_main.c > > +++ b/virt/kvm/kvm_main.c > > ... > > > -static int check_memory_region_flags(const struct kvm_userspace_memory_region2 *mem) > > +static int check_memory_region_flags(struct kvm *kvm, > > + const struct kvm_userspace_memory_region2 *mem) > > { > > u32 valid_flags = KVM_MEM_LOG_DIRTY_PAGES; > > + if (kvm_arch_has_private_mem(kvm)) > > + valid_flags |= KVM_MEM_GUEST_MEMFD; > > + > > + /* Dirty logging private memory is not currently supported. */ > > + if (mem->flags & KVM_MEM_GUEST_MEMFD) > > + valid_flags &= ~KVM_MEM_LOG_DIRTY_PAGES; > > I was wondering whether this restriction is still required at this stage or > can be lifted in cases where the guest memory is accessible by the host. Off the top of my head, I can't think of any reason why dirty logging wouldn't work with guest_memfd for non-CoCo VMs. We'd likely need to explicitly enumerate support to userspace, and there might be some assumptions lurking in KVM, but fundamentally it should Just Work (TM). > Specifically, it would be useful to support differential memory snapshots > based on dirty page tracking in Firecracker [1] or in live migration. As an > experiment, I removed the check and was able to produce a diff snapshot and > restore a Firecracker VM from it. > > [1] https://github.com/firecracker-microvm/firecracker/blob/main/docs/snapshotting/snapshot-support.md#creating-diff-snapshots > > > + > > #ifdef __KVM_HAVE_READONLY_MEM > > valid_flags |= KVM_MEM_READONLY; > > #endif > > @@ -2018,7 +2029,7 @@ int __kvm_set_memory_region(struct kvm *kvm, > > int as_id, id; > > int r; > > - r = check_memory_region_flags(mem); > > + r = check_memory_region_flags(kvm, mem); > > if (r) > > return r;