From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dl1-f42.google.com (mail-dl1-f42.google.com [74.125.82.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DCFDB3C1977 for ; Wed, 24 Jun 2026 14:18:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=74.125.82.42 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782310731; cv=pass; b=rFdg7xUFM6pWfWG4ZuU4jinZhphiBr5r/6Fyz1+KJqlwXiF10oaG5p2dHd/+LkU0sBJv0qlT1C2l1FfZiDKe4kTZRlFhKxw0FTJSopR+HnERtWfo+wYyCXzSnb6Quvu+nHdSRr8drP3J3hJg4ruOD5MzKM7htq31YLaSbEhYpnI= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782310731; c=relaxed/simple; bh=S43KLHfWZf4rr+LSchiMooKQ2vnBu5Vtd0C00yl/idE=; h=From:In-Reply-To:References:MIME-Version:Date:Message-ID:Subject: To:Cc:Content-Type; b=TbTPXU1ryvwlb6LHhX+9IOU/grQw4pnJ5BS2eJ+eYuQclIdDMGJIxQrne67aGQYOCjXpuBxF201JizP8CCmeNrG9l4go4NQCoa4oryWp9AcWFIWW2FS7Jh853mvPIosNW70R1+KNiuqdxZFffekonxM/Mpz9v1NLeGw1tlNMzJE= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=df3sqHyt; arc=pass smtp.client-ip=74.125.82.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="df3sqHyt" Received: by mail-dl1-f42.google.com with SMTP id a92af1059eb24-13810b63a1aso2568445c88.1 for ; Wed, 24 Jun 2026 07:18:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782310727; cv=none; d=google.com; s=arc-20240605; b=HhKr8llZeBSXGQTvtFlGepbDTh+fyU78FxroxAjjUad2Q2mY8NKq5Uc5kpRJLZ6d+X lVExcmTz87nV/wyQh1GFp3daQaKqfML2durSfRv0KUPApjE28wzc3N3CQ/ouPOFqP1YR 5flITcbbRl5HxZf3A0zU1Dk/1f4z8W0gmo6vejIBk6nsUOYTyccioQtQYyZC+BDw2Hg3 5nA6v06oNrMDNbkXYHt2+Yaa02Wxfm3YckBbGpQcv7HUj8zzOi4mIAM09A4fNA1p3AuC R/uT/yYl3nAWsedyiDNtPUlO6HHz4Z3LuLXpfOcDipi2taKGfMdiBVTK1+0QXDMpWsvz Ymqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:dkim-signature; bh=ucZ6vleVNv7XMe9m+p1ud+LWxJsaO5xEtX2/mrf+WGU=; fh=2mnW1boEDIAgZTQe27auHZWN+0oiYFLSC+NFETBs3GQ=; b=Frc0oFm9lqYsz3hHcdLnEH1lo7xAv7i7EtrLfFx1LoZA+jlVK7WAIKwUfzXgSUCvA+ 6Pj77kuIHHBmV3vnuxdudjLBpSSfKwaNxvEwz7KEXioCe/lBs9yLyvg3wd1UlJwiMpfn 2Xotkb6SaMRh5iiQPWTyEHlSaOK40X7ElaXQZJSgPnFUCRusS8QOffs4BXFxSlDoB/lw uV9wYcB8zlJBHv9vTSBoTccOlDwqM5YUFxcPjgddWdrvDU/eWv3cMs43cuWdB2/ts8TH byW+WSGet4TvTEZQRVHL7ltGNgXj2DGGwKybODL5u/cy4uNJ1KHCKa4rbzf7ISdoex8T h3lA==; darn=vger.kernel.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1782310727; x=1782915527; darn=vger.kernel.org; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:from:to:cc:subject:date:message-id:reply-to; bh=ucZ6vleVNv7XMe9m+p1ud+LWxJsaO5xEtX2/mrf+WGU=; b=df3sqHytMdVQfm8AoVQf0XDsZFlP86k7xtk4HCgprtM4Sn9s7OAXQylD/qcfp/Ep9r 0t9p/fnfAiUBS/iQBNEPTdSrMRAMDtcJP1OwM4knL5F42tn5UEehXedN8s4JXkHtRTZK VOqr9xe3z7xacVEAVUp0J8cETm9/thUkrXIXkD9i85dk8hbcnwljADl4eLtMcNHJUdq7 Y1FOh+re6oPej1vzugspLX8LP1l+xmKh7xNSPDHoAHZvo10EYqTi2dcHjOsy0YYdRivn fRKFRvQUauDv62EyXbk7hRSdU8O/51XpfJwHFWCzmVQRJkPuzoLRk3OrekIrJxhOujO3 IjeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782310727; x=1782915527; h=cc:to:subject:message-id:date:mime-version:references:in-reply-to :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ucZ6vleVNv7XMe9m+p1ud+LWxJsaO5xEtX2/mrf+WGU=; b=CuJFRRLwVdLDkKori4WXh/UBO1Og+/CCu9eoimwpVYUdl1dRWTTIFvbGXI9xh3tir3 oDQUXwRRt5Xbmx/nHNdAFlACh3UgMW7UsSL7vgWZuXX4XYM+C2ObK1QwIe6cbkvsmg9Z iBXGH8JabAN6vzV0LKp7zfeT+9GL7g6GKSt3nwnWNmxl8HwJiNP+PULMoWp76knmQ03T KWrk7mdC/JPosr5VMPyVvOUqxl1+4EyzH6KEmLobbjFDHvUJU2tS9hAxJXlK2wBjGOa1 ezBzU+BPjXNtD2OmtA7sZJ6S4lVwG0SRbdm9JRDWZyyXHvNlHDiNlKzouzMxYu81V60e J4Bg== X-Forwarded-Encrypted: i=1; AFNElJ/DnHsUZmL5Bx723ZGIp0FmnmCxLjmgGU1N5/A5UYxDJPepreQpQHV7M4hXlBG1VZ2senqiBxSmtu8EfXA=@vger.kernel.org X-Gm-Message-State: AOJu0YwG1eZDPUHZfGgsMBSMkr2/6tBItbSpluBH+CH/UIYnMBGos8HJ aYa6mkoFB0/b97rwTDH6FSNB1fKSvWgUneD0/NAqY0qqtPREPcdG38BBGB12KngowNxwkHiXbB4 K4PszIZJYVdDJaGhrkTyNthV5b1xSvogajL796hHV X-Gm-Gg: AfdE7cn59+/a3WOxXdMlagqQ+T37/IoC1ZCtPeMiPqjVgnJLVoghCuH+wfAHXEGDFF8 FQQpLOauH5OTZ8Nmey9s+RIhvYplUZaLwv2wvuPvK98XHAzHJUDeii1yylbPDTBA3RN3A0eCRV/ RN/LIXTuSS8mwltmflMKFcEFOGIMBQfanj4UPEkxklG6rV/qV+qWmcK1iLLBRrnvyUhKxw0F5s9 Dl6zXbN0FR4UdXRoxPUbJR3MYHPamZKwY92L5PQr7bkRY9qtzZi6lpwXZf3bpguQmIZxITPuImY XY1ngzqJwzozzpLZnz7kXMFad7aL X-Received: by 2002:a05:7022:43a0:b0:12d:de3e:86a8 with SMTP id a92af1059eb24-139ad72bfe4mr15983384c88.38.1782310725876; Wed, 24 Jun 2026 07:18:45 -0700 (PDT) Received: from 176938342045 named unknown by gmailapi.google.com with HTTPREST; Wed, 24 Jun 2026 07:18:45 -0700 Received: from 176938342045 named unknown by gmailapi.google.com with HTTPREST; Wed, 24 Jun 2026 07:18:44 -0700 From: Ackerley Tng In-Reply-To: <3ec15992-2a29-434b-8c99-8b86bfcf007e@arm.com> References: <20260618-gmem-inplace-conversion-v8-0-9d2959357853@google.com> <20260618-gmem-inplace-conversion-v8-8-9d2959357853@google.com> <3ec15992-2a29-434b-8c99-8b86bfcf007e@arm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Date: Wed, 24 Jun 2026 07:18:44 -0700 X-Gm-Features: AVVi8CeUzt8nV1nzvS6dw32sjloWQ_ALAuG02W0rgNOvY8pSNnpach_kfV-0O1g Message-ID: Subject: Re: [PATCH v8 08/46] KVM: Provide generic interface for checking memory private/shared status To: Suzuki K Poulose , Fuad Tabba Cc: aik@amd.com, andrew.jones@linux.dev, binbin.wu@linux.intel.com, brauner@kernel.org, chao.p.peng@linux.intel.com, david@kernel.org, jmattson@google.com, jthoughton@google.com, michael.roth@amd.com, oupton@kernel.org, pankaj.gupta@amd.com, qperret@google.com, rick.p.edgecombe@intel.com, rientjes@google.com, shivankg@amd.com, steven.price@arm.com, willy@infradead.org, wyihan@google.com, yan.y.zhao@intel.com, forkloop@google.com, pratyush@kernel.org, aneesh.kumar@kernel.org, liam@infradead.org, Paolo Bonzini , Sean Christopherson , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , Jonathan Corbet , Shuah Khan , Shuah Khan , Vishal Annapurve , Andrew Morton , Chris Li , Kairui Song , Kemeng Shi , Nhat Pham , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , Youngjun Park , Qi Zheng , Shakeel Butt , Kiryl Shutsemau , Baoquan He , Jason Gunthorpe , Vlastimil Babka , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org, linux-coco@lists.linux.dev Content-Type: text/plain; charset="UTF-8" Suzuki K Poulose writes: > > [...snip...] > >>>> @@ -2546,7 +2546,7 @@ bool kvm_arch_pre_set_memory_attributes(struct kvm *kvm, >>>> bool kvm_arch_post_set_memory_attributes(struct kvm *kvm, >>>> struct kvm_gfn_range *range); >>>> >>>> -static inline bool kvm_mem_is_private(struct kvm *kvm, gfn_t gfn) >>>> +static inline bool kvm_vm_mem_is_private(struct kvm *kvm, gfn_t gfn) >> >> Should have read the Sashiko review first, but where is this used? >> It's not used at all in this series... > > See below: > >> >> /fuad >> >>>> { >>>> return kvm_get_vm_memory_attributes(kvm, gfn) & KVM_MEMORY_ATTRIBUTE_PRIVATE; >>>> } >>>> @@ -2557,6 +2557,16 @@ static inline bool kvm_mem_range_is_private(struct kvm *kvm, gfn_t start, >>>> KVM_MEMORY_ATTRIBUTE_PRIVATE, >>>> KVM_MEMORY_ATTRIBUTE_PRIVATE); >>>> } >>>> +#endif /* CONFIG_KVM_VM_MEMORY_ATTRIBUTES */ >>>> + >>>> +#ifdef kvm_arch_has_private_mem >>>> +typedef bool (kvm_mem_is_private_t)(struct kvm *kvm, gfn_t gfn); >>>> +DECLARE_STATIC_CALL(__kvm_mem_is_private, kvm_mem_is_private_t); >>>> + >>>> +static inline bool kvm_mem_is_private(struct kvm *kvm, gfn_t gfn) >>>> +{ >>>> + return static_call(__kvm_mem_is_private)(kvm, gfn); >>>> +} >>>> #else >>>> static inline bool kvm_mem_is_private(struct kvm *kvm, gfn_t gfn) >>>> { >>>> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c >>>> index 6669f1477013c..8b238e461b854 100644 >>>> --- a/virt/kvm/kvm_main.c >>>> +++ b/virt/kvm/kvm_main.c >>>> @@ -2627,6 +2627,20 @@ static int kvm_vm_ioctl_set_mem_attributes(struct kvm *kvm, >>>> } >>>> #endif /* CONFIG_KVM_VM_MEMORY_ATTRIBUTES */ >>>> >>>> +#ifdef kvm_arch_has_private_mem >>>> +DEFINE_STATIC_CALL_RET0(__kvm_mem_is_private, kvm_mem_is_private_t); >>>> +EXPORT_STATIC_CALL_GPL(__kvm_mem_is_private); >>>> + >>>> +static void kvm_init_memory_attributes(void) >>>> +{ >>>> +#ifdef CONFIG_KVM_VM_MEMORY_ATTRIBUTES >>>> + static_call_update(__kvm_mem_is_private, kvm_vm_mem_is_private); >>>> +#endif >>>> +} > > > Here ^^ as the static call update ? > > > Suzuki Thanks Suzuki, it is used here. kvm_mem_is_private() was and still is the function used to check if some gfn is private or shared. Hence, in this patch, the usages of kvm_mem_is_private() were not updated. Instead, kvm_mem_is_private() is now set up as a static call, and the static call is hard-wired to kvm_vm_mem_is_private() in this patch. In the later wiring patch, all the places where attributes are looked up are updated all at once: if conversion enabled, take gmem route, else take VM route. kvm_mem_is_private() is special in that the if-else is done at KVM load time rather than runtime, and I believe that's for performance reasons since this is checked quite often from the KVM fault handling code. Buut I think perhaps Fuad was referring to kvm_mem_range_is_private(), which is indeed not used anywhere. Binbin also asked about this, I think we should drop kvm_mem_range_is_private(). My reply to Binbin is at [1]. [1] https://lore.kernel.org/all/CAEvNRgGbBcrX5Fw3vNTsTOBNC=Ypi=9-S07674yPxLU9i4akjA@mail.gmail.com/