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 67C70C433EF for ; Wed, 20 Jul 2022 16:44:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BEFED6B0071; Wed, 20 Jul 2022 12:44:38 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BA01D6B0073; Wed, 20 Jul 2022 12:44:38 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A40BD6B0074; Wed, 20 Jul 2022 12:44:38 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 963846B0071 for ; Wed, 20 Jul 2022 12:44:38 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 5BC4C12065A for ; Wed, 20 Jul 2022 16:44:38 +0000 (UTC) X-FDA: 79708051836.06.C553B20 Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.178]) by imf22.hostedemail.com (Postfix) with ESMTP id E93E8C008C for ; Wed, 20 Jul 2022 16:44:37 +0000 (UTC) Received: by mail-pl1-f178.google.com with SMTP id y24so2225234plh.7 for ; Wed, 20 Jul 2022 09:44:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=NKI6wQLzSjuIgXqGP/STBDd/io3ztt1cS6FImLHwFp4=; b=aYf105zHRqcKnwIvd6ekmpqruUyQToVuka3h99YqNWRmFXkZ7ZVHV8oWNskzAvMx2F hflOC9nxBStxjqtxvcltphe6Q5E58yJ1G2iJfhXNEqLsdIUxBz1Jghs5U/OLu3mGUc1a JRrnyPRUFOER4kSZYOrYSqnkSlzR3XQAIIqK13/lyE2A23HrMPyXlZiOV822mKgY0tgd nTwYcdRpttHY+A4wo2bLHxYVFSJL0sIrCNfPF0RyUS+KwJ64AABEJ8yX01Hb9NjXpaI/ s6Pf48SWnWTxK6vMsYlo9rnJGzIsPUCTu5j+IdeVl1yrYnYpbPzLMaw748Y0j9AcRKUU ZGfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=NKI6wQLzSjuIgXqGP/STBDd/io3ztt1cS6FImLHwFp4=; b=oaWwTu3faa4SxOpAA1im4s+27xpjPTCtz4Nnyas25lCGAtQqdd+KpsP/T6F803clgS j5cu7TQkA4y+GePTIWFd7IH9sK6g24sMiU2YlpoE6YZ6q+/N6RpoTeUl5/FKnqchQT1F /Gta2FAraXbSEprRg/MaY+euJI5x+ydKsJOOCFfdmQJfyUrV8WFXQf9yFo5X//1s1h0G fQCDAVwc7lcIYmmge/f9pPAth82uRLznwdamVjfAVHWDxp6xcof6+PPQpU06c8DftcsP kDIDXWt3z2Aqj9KlS2dvWvvELmP8ItFR1xs2qv9iEihXukqjTpxdRRSJ2lkRc5PTjgmX zMdA== X-Gm-Message-State: AJIora8T9ZWIqu4sBbycsv3lDmKrl+o1So6/9LFBadzeNB9ekyNywN7H v7PZ6qokmPta4JRS2KBAAhBKqQ== X-Google-Smtp-Source: AGRyM1utYrsQFWglg8OIUvJRKtR6LVkU7MbzTy7HM7RFQtBExxPfhBWR/u5swtl61L63cUwi4vupQg== X-Received: by 2002:a17:90b:3ec1:b0:1f1:edcf:dd2b with SMTP id rm1-20020a17090b3ec100b001f1edcfdd2bmr6535996pjb.156.1658335476747; Wed, 20 Jul 2022 09:44:36 -0700 (PDT) Received: from google.com (123.65.230.35.bc.googleusercontent.com. [35.230.65.123]) by smtp.gmail.com with ESMTPSA id k6-20020aa79986000000b00528c22038f5sm14345128pfh.14.2022.07.20.09.44.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Jul 2022 09:44:36 -0700 (PDT) Date: Wed, 20 Jul 2022 16:44:32 +0000 From: Sean Christopherson To: Chao Peng Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-api@vger.kernel.org, linux-doc@vger.kernel.org, qemu-devel@nongnu.org, linux-kselftest@vger.kernel.org, Paolo Bonzini , Jonathan Corbet , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H . Peter Anvin" , Hugh Dickins , Jeff Layton , "J . Bruce Fields" , Andrew Morton , Shuah Khan , Mike Rapoport , Steven Price , "Maciej S . Szmigiero" , Vlastimil Babka , Vishal Annapurve , Yu Zhang , "Kirill A . Shutemov" , luto@kernel.org, jun.nakajima@intel.com, dave.hansen@intel.com, ak@linux.intel.com, david@redhat.com, aarcange@redhat.com, ddutile@redhat.com, dhildenb@redhat.com, Quentin Perret , Michael Roth , mhocko@suse.com, Muchun Song Subject: Re: [PATCH v7 11/14] KVM: Register/unregister the guest private memory regions Message-ID: References: <20220706082016.2603916-1-chao.p.peng@linux.intel.com> <20220706082016.2603916-12-chao.p.peng@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20220706082016.2603916-12-chao.p.peng@linux.intel.com> ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1658335478; a=rsa-sha256; cv=none; b=5bkSTgoqNQMGFtMFFt075vC9v7AZn7xFHqjukZj3uHph4kmfaYz/9sRy0FiA0V1Lwxh180 aZgLEpxQRBXD4pz36ECvVZt/DGLerc6TvjdN6howakN8jEJSCpI6tI/5hiplQWxV3QdZPh 0uqXbOQOs0bZl+EnsDWtYZQkJRF9KMI= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=aYf105zH; spf=pass (imf22.hostedemail.com: domain of seanjc@google.com designates 209.85.214.178 as permitted sender) smtp.mailfrom=seanjc@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1658335478; 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=NKI6wQLzSjuIgXqGP/STBDd/io3ztt1cS6FImLHwFp4=; b=6OCVQDxCA/rWqrr4O5BF5t3r2HBLkTHuN0UN0W2Q0dsMUe6whuHRo0WfzkoZ+bSQv6QczE w/G/DK6sFOzr9LsTL1IaSqBeeAqqV1T6YmP4fvDM4QJV/LwcCTYa1A5f4LBBQ8RQYtMYW2 9Z9N0PhNP0/yF88jEf8+QqKmtiP/DlI= X-Rspamd-Queue-Id: E93E8C008C Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=aYf105zH; spf=pass (imf22.hostedemail.com: domain of seanjc@google.com designates 209.85.214.178 as permitted sender) smtp.mailfrom=seanjc@google.com; dmarc=pass (policy=reject) header.from=google.com X-Rspam-User: X-Rspamd-Server: rspam06 X-Stat-Signature: hpgfcgqd7c35ohqyry4njxym9qwopoih X-HE-Tag: 1658335477-734127 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Wed, Jul 06, 2022, Chao Peng wrote: > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c > index 230c8ff9659c..bb714c2a4b06 100644 > --- a/virt/kvm/kvm_main.c > +++ b/virt/kvm/kvm_main.c > @@ -914,6 +914,35 @@ static int kvm_init_mmu_notifier(struct kvm *kvm) > > #endif /* CONFIG_MMU_NOTIFIER && KVM_ARCH_WANT_MMU_NOTIFIER */ > > +#ifdef CONFIG_HAVE_KVM_PRIVATE_MEM > +#define KVM_MEM_ATTR_PRIVATE 0x0001 > +static int kvm_vm_ioctl_set_encrypted_region(struct kvm *kvm, unsigned int ioctl, > + struct kvm_enc_region *region) > +{ > + unsigned long start, end; As alluded to in a different reply, because this will track GPAs instead of HVAs, the type needs to be "gpa_t", not "unsigned long". Oh, actually, they need to be gfn_t, since those are what gets shoved into the xarray. > + void *entry; > + int r; > + > + if (region->size == 0 || region->addr + region->size < region->addr) > + return -EINVAL; > + if (region->addr & (PAGE_SIZE - 1) || region->size & (PAGE_SIZE - 1)) > + return -EINVAL; > + > + start = region->addr >> PAGE_SHIFT; > + end = (region->addr + region->size - 1) >> PAGE_SHIFT; > + > + entry = ioctl == KVM_MEMORY_ENCRYPT_REG_REGION ? > + xa_mk_value(KVM_MEM_ATTR_PRIVATE) : NULL; > + > + r = xa_err(xa_store_range(&kvm->mem_attr_array, start, end, > + entry, GFP_KERNEL_ACCOUNT)); IIUC, this series treats memory as shared by default. I think we should invert that and have KVM's ABI be that all guest memory as private by default, i.e. require the guest to opt into sharing memory instead of opt out of sharing memory. And then the xarray would track which regions are shared. Regarding mem_attr_array, it probably makes sense to explicitly include what it's tracking in the name, i.e. name it {private,shared}_mem_array depending on whether it's used to track private vs. shared memory. If we ever need to track metadata beyond shared/private then we can tweak the name as needed, e.g. if hardware ever supports secondary non-ephemeral encryption keys.