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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id B9685C36014 for ; Fri, 4 Apr 2025 06:44:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C079F6B000C; Fri, 4 Apr 2025 02:44:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B90356B0024; Fri, 4 Apr 2025 02:44:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A2F156B0025; Fri, 4 Apr 2025 02:44:57 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 80DF76B000C for ; Fri, 4 Apr 2025 02:44:57 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 8B5C91CE093 for ; Fri, 4 Apr 2025 06:44:57 +0000 (UTC) X-FDA: 83295423834.16.1B87A50 Received: from mail-qt1-f173.google.com (mail-qt1-f173.google.com [209.85.160.173]) by imf22.hostedemail.com (Postfix) with ESMTP id BA772C0003 for ; Fri, 4 Apr 2025 06:44:55 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=gP2VKo9n; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf22.hostedemail.com: domain of tabba@google.com designates 209.85.160.173 as permitted sender) smtp.mailfrom=tabba@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1743749095; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=UprUIafD3wiWxLv/pdXt+iE4g9xi36y1H1+pdGpOCTA=; b=BRhaROf9wK78nBLuARowXy4n6ZU5hheOErRhH0HmJ9yIqngyO0qAo235Kv7cVhNYbSua8x oiD3NRlD6dBIOiS7Yuq4mt3mI1cno2jpKVHgqUcuF4AGdVnf4R7V60MDxG7rudulpU3aZ2 rWDE3qLS+r5nIJG91cOB8fRGFSLvIkg= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=gP2VKo9n; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf22.hostedemail.com: domain of tabba@google.com designates 209.85.160.173 as permitted sender) smtp.mailfrom=tabba@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1743749095; a=rsa-sha256; cv=none; b=rbGq0Z5EDYkBtnz4xbk4xSac0QFHVsf0boXiL5/X3YAqKi48U7gqUmBWd0GALq4MamK85b 1mcG5OHzLsdfyesLinIP3+yUcVBNw8fNTPS+PklOMpOTQgudULA2iQ+mG7Q2yUHkXS8Mfv mU3mMUkGFHqJRYSG95qCCVf9y/Kr9T4= Received: by mail-qt1-f173.google.com with SMTP id d75a77b69052e-4769e30af66so163451cf.1 for ; Thu, 03 Apr 2025 23:44:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1743749095; x=1744353895; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=UprUIafD3wiWxLv/pdXt+iE4g9xi36y1H1+pdGpOCTA=; b=gP2VKo9nEO32nUgVm79eAa4RQonrhn2+il/eeYWD/plUZ+38Zb2p6uc7egn28GSsGB +Gk338pjwSlGuEkCInKTCgRU9adJZL/8bAfLfCB2o4UKUezNdrUiJz4EhqI+MuyAuy0u InyEngHCdRh5AUyZprd/vt7T1Awea2J+cjxRR4xShPpQavsDkPxZkwc2+xo9vtUaSGZ5 FY0wMQtPQT7maIxWbJNuFg9xUxgwR38nn4OwduUmJPhoycdGh8tfoaP/Ig8sGWV/yjDK CcIJV7Fcy9cs8HOjmuV7r47usb2CH+m59ZEIc1l++vCcbMCyJH4mrQRvQQoWUNcitGj0 rn+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743749095; x=1744353895; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=UprUIafD3wiWxLv/pdXt+iE4g9xi36y1H1+pdGpOCTA=; b=TnXFZWU5r5ll6Jb5XcQFX5gAL2p2+QGydFIxf39deFQ67g7yZYZN7dD5rOFkP1YBXN HlWfRNAXQQCI1mppyJpa58H+1pYluy/+NBAZjOY4vZgDYZzoCcle3L2i8RbbeXjMNI6H xzveHt/GgqrF5Hg0sQ1r0q+XYq/tikSlnCOcWTNYsrPYT/zau6vpAE7ujaXXyiFWrW5O gwTDS6y0RBvMs7EoEKLiZ14Tn4InZCguHO63MTTeFKw1xhztNUtw1OOmc4MVKqn9RNJq hV2nRGu0CgaxlPrnqyBh86MOoPsPceSSqbsIc1AJ5MXbqokIVimCkwnZkJmb5Mjo3zw3 Bi0A== X-Forwarded-Encrypted: i=1; AJvYcCWDh+0OExQ8sNIoEsa30YKDrp6+ZowAgcxWhqqtz17rzDpMWWyhdI+IuvEF6IjqEFm25avKKzfzFQ==@kvack.org X-Gm-Message-State: AOJu0YznVtEkCqU3uIV+EKKtSePOCje/nCvyH9E+J+Fh+kJuCA/sUAHa u95uYj4Wxozmhncn8kQHRNvJueIuWOZUGmL6d0Vs39hWICkfJnnfl75kSzbyfpxGSlPDr/rYmb/ LGpdXpsmxemfGlA92KYN3g4tzhYpM6i8D26Ln X-Gm-Gg: ASbGncsl0uyeiaeS2ULJSHHEFvKZ0iiXORIme/uFiNpA5SFvSSEC+sff4+QIkTk0Db4 /QrpKTPwlLx6XFhCo2a5IMxK9FutbW8viOHIGdS8v7bmVmnEDL388RVy+xfMXsF+ujYERJBQ+Wx WDK4Btv/VehuA/mjh9RHhjHkVRlg== X-Google-Smtp-Source: AGHT+IE8PTeOdWkNrufM9LP4Mni7kBx8OJpn1b+3SBBF4LelDvTRzrbc2ORNEfG/yRoYwRJ62/ZGLtOHR9udESeJWHY= X-Received: by 2002:a05:622a:1315:b0:472:8ac:7d3d with SMTP id d75a77b69052e-479266c0b39mr1950321cf.29.1743749094713; Thu, 03 Apr 2025 23:44:54 -0700 (PDT) MIME-Version: 1.0 References: <20250328153133.3504118-1-tabba@google.com> <20250328153133.3504118-5-tabba@google.com> In-Reply-To: From: Fuad Tabba Date: Fri, 4 Apr 2025 07:44:16 +0100 X-Gm-Features: ATxdqUFjnLSZfub677jgEicHZmUFnkiOD7zKCzw0f_-1HOehmGaCbohxHSlNcyQ Message-ID: Subject: Re: [PATCH v7 4/7] KVM: guest_memfd: Folio sharing states and functions that manage their transition To: Sean Christopherson Cc: kvm@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-mm@kvack.org, pbonzini@redhat.com, chenhuacai@kernel.org, mpe@ellerman.id.au, anup@brainfault.org, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, viro@zeniv.linux.org.uk, brauner@kernel.org, willy@infradead.org, akpm@linux-foundation.org, xiaoyao.li@intel.com, yilun.xu@intel.com, chao.p.peng@linux.intel.com, jarkko@kernel.org, amoorthy@google.com, dmatlack@google.com, isaku.yamahata@intel.com, mic@digikod.net, vbabka@suse.cz, vannapurve@google.com, ackerleytng@google.com, mail@maciej.szmigiero.name, david@redhat.com, michael.roth@amd.com, wei.w.wang@intel.com, liam.merwick@oracle.com, isaku.yamahata@gmail.com, kirill.shutemov@linux.intel.com, suzuki.poulose@arm.com, steven.price@arm.com, quic_eberman@quicinc.com, quic_mnalajal@quicinc.com, quic_tsoni@quicinc.com, quic_svaddagi@quicinc.com, quic_cvanscha@quicinc.com, quic_pderrin@quicinc.com, quic_pheragu@quicinc.com, catalin.marinas@arm.com, james.morse@arm.com, yuzenghui@huawei.com, oliver.upton@linux.dev, maz@kernel.org, will@kernel.org, qperret@google.com, keirf@google.com, roypat@amazon.co.uk, shuah@kernel.org, hch@infradead.org, jgg@nvidia.com, rientjes@google.com, jhubbard@nvidia.com, fvdl@google.com, hughd@google.com, jthoughton@google.com, peterx@redhat.com, pankaj.gupta@amd.com Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: BA772C0003 X-Stat-Signature: gujkd9631u6e1ggik9744ttk5qtratb4 X-Rspam-User: X-HE-Tag: 1743749095-403552 X-HE-Meta: U2FsdGVkX1/+fYeNa6qqbqBKwdxh1Q4bVLfDU0vL0iuqbDCIq9N4oLeBYSHy97nRFxW1ORCODx7A8XxuLm8VGA5fT07Tx7DmMuwArfP5LOsNuDDQtK9l0vg5Bllu0rwtiG26aBjFEZa5m7sU2kdZc8itL7vUYxKic8QoCHnbeTIEOt6YFxZFum0NvRFLIqIgMZc7euTrby4P2yvfAsTj6unvAffFKOpTwKuLHYXojR/dqeflRcaMmqSTlU9OCpYBDCtWWa6/eQnqv4w74SAwfZGlgGwGdeZzv8KuMipm7eTSXBPR4zDrIJ/+sGHz2mTKEglmAscax1L8EwovyuPttlRpaW6ct1X5utweFhN/C6JdNygTkLUAN108aoKvI4iwxU4wyidbPiZA1x8eF6NaFzXXdo8CSF+dYOMwRaCEpIgzEpTQCrf0jQ6SOtCTikDqKHCznmbDqkqEk/ZvYFDRAJqZ3oxwOQg9/yw6tnqHH8I35LoDYPNRetji2GEM0EGH+L2sx4nk1wG1x3Ai11OH590WMZNZTJT8pKOBAZ+mLyWWJdx7JoHzbYNl/M+6AMMBOw+F5TJKf/P5AYlmzXYD4TDgdYZI7SvP0ViFUPviv+3SQRrcxNyWH9XN2t/5mML+hWAr8Z4kt2juYcDPMOqTSszokq79dDfLp4kuTfaet0tHmMJzbFoa0D7r6iyx71+bgjZbGWb6yQGwPw7Kjs97QX6Pv9FEIJkdmx3wP12oGI0VDD85VJZbhJWld7wpgfG/eDlJRYP5Cjhwf+NWczy1MuoirnJlm+fsFkRe2+s3CF2J/E2FN0jWfw2R58JgpulG+DXnrNEFBsXJGpQ6Ave0u8KVp53kZx3SXtFH6ddTmr2+hxRRBuhiKEeqdnWfq2h7YMyLbt+hi0HTV7bdgjXX7ZMGPkSKp5LubhsdCbS+u7Ye9cqWDuMZmulAcYfrW9MTCeZu0Ehfd/+SDDH2O2X +qM0rANv 8Di2GaYr+Cvgm2FnPabwR7p49nVgyi1/NmRQKkF5wKhmc3SN52LCe5nDSdLC9oRZUOsmPmMY/1RKk3ebIfvjk8viVlKvjRb/tiljEA2K4VmZigMeqXUe7ELGQelJejkhVWZ+XxF8U/DK9AgfYvFKOzYKL6MrAjoK2b+naXdM7W6zQfmQNUKE/AP8s/xc9ejciCUpvGrYS0AifHcMllmReBpxjMEUh0VPuVPbFnRV53PyrA9Kdb7pE4jkHHGdqYXHAQBTbIpBr1il8u0o3NT/I8V80nSqEe2md4vC5TprJDmYb+Qga+Tl8UqlDS7NVMkPb1imd4SWi0Ktx7NILXPQxcJlbWA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000011, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Thu, 3 Apr 2025 at 15:53, Sean Christopherson wrote: > > On Thu, Apr 03, 2025, Fuad Tabba wrote: > > Hi Sean, > > > > On Thu, 3 Apr 2025 at 01:19, Sean Christopherson wrote: > > > > > > On Fri, Mar 28, 2025, Fuad Tabba wrote: > > > > @@ -389,22 +381,211 @@ static void kvm_gmem_init_mount(void) > > > > } > > > > > > > > #ifdef CONFIG_KVM_GMEM_SHARED_MEM > > > > -static bool kvm_gmem_offset_is_shared(struct file *file, pgoff_t index) > > > > +/* > > > > + * An enum of the valid folio sharing states: > > > > + * Bit 0: set if not shared with the guest (guest cannot fault it in) > > > > + * Bit 1: set if not shared with the host (host cannot fault it in) > > > > + */ > > > > +enum folio_shareability { > > > > + KVM_GMEM_ALL_SHARED = 0b00, /* Shared with the host and the guest. */ > > > > + KVM_GMEM_GUEST_SHARED = 0b10, /* Shared only with the guest. */ > > > > + KVM_GMEM_NONE_SHARED = 0b11, /* Not shared, transient state. */ > > > > > > Absolutely not. The proper way to define bitmasks is to use BIT(xxx). Based on > > > past discussions, I suspect you went this route so that the most common value > > > is '0' to avoid extra, but that should be an implementation detail buried deep > > > in the low level xarray handling, not a > > > > > > The name is also bizarre and confusing. To map memory into the guest as private, > > > it needs to be in KVM_GMEM_GUEST_SHARED. That's completely unworkable. > > > Of course, it's not at all obvious that you're actually trying to create a bitmask. > > > The above looks like an inverted bitmask, but then it's used as if the values don't > > > matter. > > > > > > return (r == KVM_GMEM_ALL_SHARED || r == KVM_GMEM_GUEST_SHARED); > > > > Ack. > > > > > Given that I can't think of a sane use case for allowing guest_memfd to be mapped > > > into the host but not the guest (modulo temporary demand paging scenarios), I > > > think all we need is: > > > > > > KVM_GMEM_SHARED = BIT(0), > > > KVM_GMEM_INVALID = BIT(1), > > > > We need the third state for the transient case, i.e., when a page is > > transitioning from being shared with the host to going back to > > private, in order to ensure that neither the guest nor the host can > > install a mapping/fault it in. But I see your point. > > That's KVM_GMEM_INVALID. Translating to what you had: > > KVM_GMEM_ALL_SHARED = KVM_GMEM_SHARED > KVM_GMEM_GUEST_SHARED = 0 > KVM_GMEM_NONE_SHARED = KVM_GMEM_INVALID Ack. Thanks, /fuad