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 3ACD9C6FA99 for ; Wed, 8 Mar 2023 00:13:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4C3EC6B0072; Tue, 7 Mar 2023 19:13:29 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 4714C6B0073; Tue, 7 Mar 2023 19:13:29 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 312616B0074; Tue, 7 Mar 2023 19:13:29 -0500 (EST) 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 236AE6B0072 for ; Tue, 7 Mar 2023 19:13:29 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id E5AAA140F5B for ; Wed, 8 Mar 2023 00:13:28 +0000 (UTC) X-FDA: 80543806896.02.9AE5559 Received: from mail-yb1-f201.google.com (mail-yb1-f201.google.com [209.85.219.201]) by imf02.hostedemail.com (Postfix) with ESMTP id 3670F80011 for ; Wed, 8 Mar 2023 00:13:27 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=DQipY5o6; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf02.hostedemail.com: domain of 3JtMHZAsKCBMtv3xA4xHC6zz77z4x.v75416DG-553Etv3.7Az@flex--ackerleytng.bounces.google.com designates 209.85.219.201 as permitted sender) smtp.mailfrom=3JtMHZAsKCBMtv3xA4xHC6zz77z4x.v75416DG-553Etv3.7Az@flex--ackerleytng.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1678234407; 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:dkim-signature; bh=mmMlzzjnms9LP64W1EI4s9J2Aar/VS+/OpXG4YzMt1g=; b=18NsCsLMN9bD+ILSwgY4Jzl7f1Vnt3WFgohfYECKUs5sJpmbWF7Q9ng7T9NlGSQHXu/EY1 S7Zmv1fFXshl/I53zTQHWpojL3t5XCIM924YhfbQeIsCt9Ve5pGealGbRLaOLFFe8BKVs+ kmD3ama2sX2rI6baeLysgyxPXsJ75kQ= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=DQipY5o6; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf02.hostedemail.com: domain of 3JtMHZAsKCBMtv3xA4xHC6zz77z4x.v75416DG-553Etv3.7Az@flex--ackerleytng.bounces.google.com designates 209.85.219.201 as permitted sender) smtp.mailfrom=3JtMHZAsKCBMtv3xA4xHC6zz77z4x.v75416DG-553Etv3.7Az@flex--ackerleytng.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1678234407; a=rsa-sha256; cv=none; b=Jy5Am57pyn36nRxeYIfAekkTZV2Db6Q1DrgvD1kkrAsItSgV+RzHcKFyGxvNF2/YD5nNY9 IPo2NIn12yu1sgJ0Tj8SywsCxRAObbKOmNzAFbBvBDWfaSIozbxz+Llm28IQ+3orkcGt3U b1cbPyS17Lutn89iRRWL+P/ycy5Z3B8= Received: by mail-yb1-f201.google.com with SMTP id m6-20020a056902118600b00aeb1e3dbd1bso15565090ybu.9 for ; Tue, 07 Mar 2023 16:13:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; t=1678234406; h=cc:to:from:subject:message-id:mime-version:in-reply-to:date:from:to :cc:subject:date:message-id:reply-to; bh=mmMlzzjnms9LP64W1EI4s9J2Aar/VS+/OpXG4YzMt1g=; b=DQipY5o6kwt2urMmc3ga0lGBCwLobU1Ifep42NoUNsZIX8Td2En8TfxAl5sbGzyNBB LIWsf3t77LSuCc0pGvjcZjIWULi+KlePCMmeN/QbMHXhC1Ixa4kOh+7152WsxGf2VC2d Ms1xKb6gHNm+/4O8RDcSjT+AzBbqUzpwW93RRiqm6+BJSL4+2HqKul5reyJxS2qUjQVn TjBmoEh1iNCS+lDVRczhTC0nw7EmFFlXj/fUYAlIAjyVh4kOpH9EZLnti4uHp00WyheW Vcv6eAX7BJrGIniLd7INUu4OdKbDatMzJF7cbOv0xYoxbaZDVLO31xC6G1jgMlMxSBxo JYtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678234406; h=cc:to:from:subject:message-id:mime-version:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=mmMlzzjnms9LP64W1EI4s9J2Aar/VS+/OpXG4YzMt1g=; b=OOC+seFNiGJB+5OFRfqY1CIQQ1vPhHudFYMcBL8xosYTdwDWoWp/mwrt9MCLDGmMID oE71VqYrOL2jtR8LXu/fIoTFG8Vzk5ZCWWb3NgwrYaIpERnXxKTq+lS8gaDTNOlHezcg WL1T/xwRV4CAnO4fNlNuGnvWaFa/8/cooTuEhkRqwilwVogmG04qKDsoX+WLCodaw/wB Xkm3VGXI4q9XRaUa2I+z6klK1KtbFbmZYvgaQ8i7/+EMK74gcNMqZf3cCzIIzLNuXPP/ pTCsVpwOGM07gPQxChfVYdIhd7fMmtPonOFLANkj1mex4NPjSHuQ54cBjq/iNoA9SAhO NVuA== X-Gm-Message-State: AO0yUKVThb8fBQ06OPABPhYIwZ0dqgNmGmezJBNxgGCf1xnpJ29Rka3k +EZpj6Y63Vf5HLmqUW16gPbcU4tUh0qmiiJ3Qw== X-Google-Smtp-Source: AK7set9fM9oqHN6RTfjUl1adN2jlRFEqmkZWFcTMizE5EgbRXDHz1eOesgkblPkKuD6/cVScAGsGMu92G3PJwAt7ew== X-Received: from ackerleytng-cloudtop.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:1f5f]) (user=ackerleytng job=sendgmr) by 2002:a05:6902:145:b0:ac2:a7a7:23c3 with SMTP id p5-20020a056902014500b00ac2a7a723c3mr5937614ybh.12.1678234406173; Tue, 07 Mar 2023 16:13:26 -0800 (PST) Date: Wed, 08 Mar 2023 00:13:24 +0000 In-Reply-To: <20230128140030.GB700688@chaop.bj.intel.com> (message from Chao Peng on Sat, 28 Jan 2023 22:00:30 +0800) Mime-Version: 1.0 Message-ID: Subject: Re: [PATCH v10 9/9] KVM: Enable and expose KVM_MEM_PRIVATE From: Ackerley Tng To: Chao Peng Cc: seanjc@google.com, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, linux-arch@vger.kernel.org, linux-api@vger.kernel.org, linux-doc@vger.kernel.org, qemu-devel@nongnu.org, pbonzini@redhat.com, corbet@lwn.net, vkuznets@redhat.com, wanpengli@tencent.com, jmattson@google.com, joro@8bytes.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, arnd@arndb.de, naoya.horiguchi@nec.com, linmiaohe@huawei.com, x86@kernel.org, hpa@zytor.com, hughd@google.com, jlayton@kernel.org, bfields@fieldses.org, akpm@linux-foundation.org, shuah@kernel.org, rppt@kernel.org, steven.price@arm.com, mail@maciej.szmigiero.name, vbabka@suse.cz, vannapurve@google.com, yu.c.zhang@linux.intel.com, kirill.shutemov@linux.intel.com, 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, qperret@google.com, tabba@google.com, michael.roth@amd.com, mhocko@suse.com, wei.w.wang@intel.com Content-Type: text/plain; charset="UTF-8"; format=flowed; delsp=yes X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 3670F80011 X-Stat-Signature: s94rjztqdg8c7sfzhqenp4b9a7wdwxrf X-HE-Tag: 1678234407-160865 X-HE-Meta: U2FsdGVkX18JR0DnQsZH0bXeSH0mxjvIaGR0mjcrTIQuHgB/kW6Vhz2Io4nYXpLFSQcWNdMi0fmgquERwvX0FxaV3zBAojsbyoRiz03tUETceZogUaZoiNyr09bEKe9ZVhHNyu+LO+crXEaHJx7WQO3wEGqd0ZqcYXGAgM9RZIZNXTmHvoe+vQ1hbxFQtVDIjHAlemIYSfFp/Fe4Y6pk8yf+LMGChnpKXLL1lEE4W/UJ3d5sb8nod2xKClWXaLeJWeCxxWFN0oOpudxDFo0s4G7pYU3N3crRx+C8CNlzZzl37bhoJCZuS5LxDnDrPU+6S7wKhvJqst0RBbw7KgV7rD41ypvIw0xwY7sfPiMB7p+9JYn66wLIi+Hm8Gjljj+0ALR9iCnEcNbavDr2FzMfkwYtCxstPAk9uZamL7jTR/NSAv2u/njCUoU9bxe1qzjVn0f/iTfEh2z0yP0IIiLFLtbgW9yvWuSASV7k4fVsMNmXYNAKLpYFt82RPXY2hSm+tsl2oQnUP0C6gJft5beKsCrXqbd/gb9TKbIIz9B7rF6bEmR6FcLlTwYzQFIY8n/N9agID51rLnKCIk+SYWpjKbcZhQKOrxrqihnO3jVJRevAARVwR+FUjvLMzFaXFdbT8qpRdS2jXBc7QFC6ZsW0b+nn9XvbJxXiG1zBD115UBbAwNaTo7MLOUIrMWC7EuLXSkAbaTt2fnQp6RF8iRtcfBOH35L4SRe1pYt+aQJdIP0C4z1uEZu6TLRkZRTYJj6cFs3+ibm2B8VBRFdrpxySIUTNZU10rkd82CEiv228QDlYR4pyqqFZdOs1a2aCLfEUfaCK5XkP67vCrh7WhogAjR3SnCMddGkPyypsRwV0nCDSoftHMIH2ggBA00xzrPKhn4k95nuab1+IA8sZHPTuOP/YppYgbDhcP+YL4X6TAI61zNCIgSHdvHuNmy4PDHBA2ALASgU/6XQ7nNLJVCQ cM95ONnw CClFzBw4MmIYRwlZINwAXxsoUaNZDVvGFUErBP2zUxMB5/G5qo886DlYipvvrKQ7Ti+iIiML12dUJKI7U4csbPgglrhqZ9P4k1wkhYQKHpm/VFGZlHWDCno8UWbpwUrdUsJbH1uw9/L2kyzEatt1f5b5vjsMqR+lC8EZK1v3aOJl8YhbVT07zQmu4qu6D4a9x1WRse62fNDgEfkTADCslEf3OkA6PQ23merbltzNicSYF5jUbTO31rq6y2jeY/ETsN2Zu3CYb/lT+hJL8Zmtudm8HvPqkOhV61nfbjU/KOkdMCkPvsXdA8PFA9nkgTSFvCdK8MGaYIS9rhq85aS5mDTWKoIjLQw9/i1/CGNPbzDDsXyOml5XHCqY+L7NCxL6qa42oxVjfm6oMNCca3MqkbctN2x8HeYGXJyDUga9yaqiDUAuOUgjvUJEusj7H1XDJkkNDTB/mGGmqepiG7jOdNeAcEgvL7Mn1Nn8U7rDsoOOfX1C1sWVlaFlQAiuBhSSMShWldMUV8KWs9RGlUDVn7YtLtpwKtGIRIEJG6WWIDMC9zN9QX/4rchLjTTTTd4G3bvjpPtL+aJ7jlsK1eMM0dxRlaOIJwXJ38W1PiGVQfAQ2PdD3fa5kPoYbKNwyI/bA3RUWNm7iUhMPSpgmAiwl//swIpaJAqlObjecHjl5fcFdxSBTGXiwZsvJnSF04Jp3P4G3edo4io7dmvI= 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: Chao Peng writes: > On Sat, Jan 14, 2023 at 12:01:01AM +0000, Sean Christopherson wrote: >> On Fri, Dec 02, 2022, Chao Peng wrote: > ... >> Strongly prefer to use similar logic to existing code that detects wraps: >> mem->restricted_offset + mem->memory_size < mem->restricted_offset >> This is also where I'd like to add the "gfn is aligned to offset" check, >> though >> my brain is too fried to figure that out right now. > Used count_trailing_zeros() for this TODO, unsure we have other better > approach. > diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c > index afc8c26fa652..fd34c5f7cd2f 100644 > --- a/virt/kvm/kvm_main.c > +++ b/virt/kvm/kvm_main.c > @@ -56,6 +56,7 @@ > #include > #include > #include > +#include > #include "coalesced_mmio.h" > #include "async_pf.h" > @@ -2087,6 +2088,19 @@ static bool kvm_check_memslot_overlap(struct > kvm_memslots *slots, int id, > return false; > } > +/* > + * Return true when ALIGNMENT(offset) >= ALIGNMENT(gpa). > + */ > +static bool kvm_check_rmem_offset_alignment(u64 offset, u64 gpa) > +{ > + if (!offset) > + return true; > + if (!gpa) > + return false; > + > + return !!(count_trailing_zeros(offset) >= count_trailing_zeros(gpa)); Perhaps we could do something like #define lowest_set_bit(val) (val & -val) and use return lowest_set_bit(offset) >= lowest_set_bit(gpa); Please help me to understand: why must ALIGNMENT(offset) >= ALIGNMENT(gpa)? Why is it not sufficient to have both gpa and offset be aligned to PAGE_SIZE? > +} > + > /* > * Allocate some memory and give it an address in the guest physical > address > * space. > @@ -2128,7 +2142,8 @@ int __kvm_set_memory_region(struct kvm *kvm, > if (mem->flags & KVM_MEM_PRIVATE && > (mem->restrictedmem_offset & (PAGE_SIZE - 1) || > mem->restrictedmem_offset + mem->memory_size < > mem->restrictedmem_offset || > - 0 /* TODO: require gfn be aligned with restricted offset */)) > + !kvm_check_rmem_offset_alignment(mem->restrictedmem_offset, > + mem->guest_phys_addr))) > return -EINVAL; > if (as_id >= kvm_arch_nr_memslot_as_ids(kvm) || id >= KVM_MEM_SLOTS_NUM) > return -EINVAL;