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 X-Spam-Level: X-Spam-Status: No, score=-3.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DD1FCC43467 for ; Tue, 20 Oct 2020 12:55:14 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 35C8122250 for ; Tue, 20 Oct 2020 12:55:14 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 35C8122250 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id A8BA76B005C; Tue, 20 Oct 2020 08:55:13 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A16A26B0062; Tue, 20 Oct 2020 08:55:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8B6816B0068; Tue, 20 Oct 2020 08:55:13 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0175.hostedemail.com [216.40.44.175]) by kanga.kvack.org (Postfix) with ESMTP id 5CAFB6B005C for ; Tue, 20 Oct 2020 08:55:13 -0400 (EDT) Received: from smtpin30.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id EBC7C181AEF1A for ; Tue, 20 Oct 2020 12:55:12 +0000 (UTC) X-FDA: 77392299264.30.boat77_510cc812723f Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin30.hostedemail.com (Postfix) with ESMTP id B1F59180B3C83 for ; Tue, 20 Oct 2020 12:55:12 +0000 (UTC) X-HE-Tag: boat77_510cc812723f X-Filterd-Recvd-Size: 4535 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by imf32.hostedemail.com (Postfix) with ESMTP for ; Tue, 20 Oct 2020 12:55:11 +0000 (UTC) IronPort-SDR: yD33gfpNn8eLVb5ACC1aU2dOjam1LEzL9HZZJHcuWsCilxchHKZxe/LQnlkE6TxN1g4c8ep8eL heDlm9Twhxpw== X-IronPort-AV: E=McAfee;i="6000,8403,9779"; a="184828369" X-IronPort-AV: E=Sophos;i="5.77,397,1596524400"; d="scan'208";a="184828369" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Oct 2020 05:55:10 -0700 IronPort-SDR: +Rp7LwkLyTNLzcyhE2PJNGsy/abJyagxG3IK4vs2o5FUnk/MOk9aslHpAM01l3mg4LXtKhsFZU oWAEHocBHarQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,397,1596524400"; d="scan'208";a="301719903" Received: from black.fi.intel.com ([10.237.72.28]) by fmsmga007.fm.intel.com with ESMTP; 20 Oct 2020 05:55:05 -0700 Received: by black.fi.intel.com (Postfix, from userid 1000) id B87B6377; Tue, 20 Oct 2020 15:55:04 +0300 (EEST) Date: Tue, 20 Oct 2020 15:55:04 +0300 From: "Kirill A. Shutemov" To: Peter Zijlstra Cc: "Kirill A. Shutemov" , Dave Hansen , Andy Lutomirski , Paolo Bonzini , Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , David Rientjes , Andrea Arcangeli , Kees Cook , Will Drewry , "Edgecombe, Rick P" , "Kleen, Andi" , Liran Alon , Mike Rapoport , x86@kernel.org, kvm@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [RFCv2 11/16] KVM: Protected memory extension Message-ID: <20201020125504.xadmnhpf3pu4uva7@black.fi.intel.com> References: <20201020061859.18385-1-kirill.shutemov@linux.intel.com> <20201020061859.18385-12-kirill.shutemov@linux.intel.com> <20201020071701.GV2611@hirez.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20201020071701.GV2611@hirez.programming.kicks-ass.net> 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 Tue, Oct 20, 2020 at 09:17:01AM +0200, Peter Zijlstra wrote: > On Tue, Oct 20, 2020 at 09:18:54AM +0300, Kirill A. Shutemov wrote: > > +int __kvm_protect_memory(unsigned long start, unsigned long end, bool protect) > > +{ > > + struct mm_struct *mm = current->mm; > > + struct vm_area_struct *vma, *prev; > > + int ret; > > + > > + if (mmap_write_lock_killable(mm)) > > + return -EINTR; > > + > > + ret = -ENOMEM; > > + vma = find_vma(current->mm, start); > > + if (!vma) > > + goto out; > > + > > + ret = -EINVAL; > > + if (vma->vm_start > start) > > + goto out; > > + > > + if (start > vma->vm_start) > > + prev = vma; > > + else > > + prev = vma->vm_prev; > > + > > + ret = 0; > > + while (true) { > > + unsigned long newflags, tmp; > > + > > + tmp = vma->vm_end; > > + if (tmp > end) > > + tmp = end; > > + > > + newflags = vma->vm_flags; > > + if (protect) > > + newflags |= VM_KVM_PROTECTED; > > + else > > + newflags &= ~VM_KVM_PROTECTED; > > + > > + /* The VMA has been handled as part of other memslot */ > > + if (newflags == vma->vm_flags) > > + goto next; > > + > > + ret = mprotect_fixup(vma, &prev, start, tmp, newflags); > > + if (ret) > > + goto out; > > + > > +next: > > + start = tmp; > > + if (start < prev->vm_end) > > + start = prev->vm_end; > > + > > + if (start >= end) > > + goto out; > > + > > + vma = prev->vm_next; > > + if (!vma || vma->vm_start != start) { > > + ret = -ENOMEM; > > + goto out; > > + } > > + } > > +out: > > + mmap_write_unlock(mm); > > + return ret; > > +} > > +EXPORT_SYMBOL_GPL(__kvm_protect_memory); > > Since migration will be disabled after this; should the above not (at > the very least) force compaction before proceeding to lock the pages in? Migration has to be implemented instead, before we hit upstream. BTW, VMs with direct device assignment pins all guest memory today. So it's not something new in the virtualization world. -- Kirill A. Shutemov