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 4AEA0C433FE for ; Tue, 18 Oct 2022 03:32:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AEFB76B0072; Mon, 17 Oct 2022 23:32:11 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A78996B0075; Mon, 17 Oct 2022 23:32:11 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8CB0D6B0078; Mon, 17 Oct 2022 23:32:11 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 76B746B0072 for ; Mon, 17 Oct 2022 23:32:11 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 96F9B1604D3 for ; Tue, 18 Oct 2022 03:32:10 +0000 (UTC) X-FDA: 80032646820.01.3AA014A Received: from mail-pg1-f181.google.com (mail-pg1-f181.google.com [209.85.215.181]) by imf13.hostedemail.com (Postfix) with ESMTP id 47FC22003E for ; Tue, 18 Oct 2022 03:32:10 +0000 (UTC) Received: by mail-pg1-f181.google.com with SMTP id r18so12175793pgr.12 for ; Mon, 17 Oct 2022 20:32:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=eghJYNpWb8pOBgXzqVbstk5zDfVMcxnMhoyC+aKpn5E=; b=UrIwZOkIZEwXktbqK31SX2fjGS5NKallsVDELhbDw4bd3XsZiVgJE/TRSwTtGzv3ch B8QbU+WRGE7UApC/SEllpFumQ8QMeDjsEbwJMz2jg3/KQBSGlNZiRW9ld+oW5Djxi3kA rw9HzLrXry/bXeZDmsgeivLxwWACxkGgCTJ+e/YsXppP//OiTajC6jb+HJjzlOyTEeG2 fcy4t7EZerI1ehoGFXgowAy2dtnwy23w75PT/uWWPb+Xm2QqY3DdD34Ic/24FoqntUh/ ZUtiICQwYdkNnT4BE+p585lRL6XpB7VV5P8aGP50UqCLh3U7oaQc+xgfSRhtdPN4HpLJ Sm8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=eghJYNpWb8pOBgXzqVbstk5zDfVMcxnMhoyC+aKpn5E=; b=kuJEhVLIebzM25mME9ReJSWwvw2zhUuFojgXAIe9jflTa5nwosvnhb/SayoGGEuhnQ /lwfvN+b/U+ecQzO/54W3Q9VtCw0j5eku93Is6vr6P0FALNJcpoL7kW2Nyov0qxLdGai EfX6062p4QunGbcStDNHHOAV+xtfmChKUKYYLG6vtakR+3M+ne4QPqf6jgXr1SUFvZkq tTqeVjuA/UlOUs4Tuch5z/pE/NayVRHverGy/arl01wFzL5TEybzVj/W1oYWchCENnDv ruURX8iio0E6gemUCKVaIDErIBIOBXLSbDfMySH7OpqLx9NVffuFkZdDVfrgQn24wcgn MTzg== X-Gm-Message-State: ACrzQf1WDshtnDUlkgF2NY3t8AFnh9Ax9q9P+In4rbGvWvxzREQXCDR6 Me1C6j1GncikZLA1sSq1fIw= X-Google-Smtp-Source: AMsMyM7AD1NWi5nIkc0J8qslN3e2zTCfwb0menqv00FjA2ML8a1m0Xgzr9IYIOY4GYi761c2p4Tgcw== X-Received: by 2002:a63:1e0f:0:b0:44b:796c:bc14 with SMTP id e15-20020a631e0f000000b0044b796cbc14mr850128pge.563.1666063929155; Mon, 17 Oct 2022 20:32:09 -0700 (PDT) Received: from [127.0.0.1] (n058152077178.netvigator.com. [58.152.77.178]) by smtp.gmail.com with ESMTPSA id s13-20020aa78bcd000000b00543a098a6ffsm7889717pfd.212.2022.10.17.20.32.02 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 17 Oct 2022 20:32:08 -0700 (PDT) Message-ID: <9885be00-f12b-2019-2fa4-cfc5c8816e80@gmail.com> Date: Tue, 18 Oct 2022 11:31:59 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.2 Subject: Re: [PATCH 0/3] kvm support for ksm Content-Language: en-US To: seanjc@google.com Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, linux-mm@kvack.org, avi@redhat.com, aarcange@redhat.com, chrisw@redhat.com, riel@redhat.com, jeremy@goop.org, mtosatti@redhat.com, hugh@veritas.com, corbet@lwn.net, yaniv@redhat.com, dmonakhov@openvz.org References: <1238457604-7637-1-git-send-email-ieidus@redhat.com> From: ewandevelop In-Reply-To: <1238457604-7637-1-git-send-email-ieidus@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1666063930; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=eghJYNpWb8pOBgXzqVbstk5zDfVMcxnMhoyC+aKpn5E=; b=VaTBPCdcnPCqykO8o9gJR6zZjvBdw3UP45/G3Q+yQ4j4CdtJV0GlTUxlivX+VoseI5Jzqk WVIRxnfR324wC2Y4pWnuWTTikZa829Ew+uk+0HCmixll3zzvISQDaRSCXxO4iltFvDembS bG5mXpJRyR5TZbuU/pwr1grsleqfnMA= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=UrIwZOkI; spf=pass (imf13.hostedemail.com: domain of ewandevelop@gmail.com designates 209.85.215.181 as permitted sender) smtp.mailfrom=ewandevelop@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1666063930; a=rsa-sha256; cv=none; b=MKvisfohGYgXwuAIK/XF35C27pZyA98SrtoAPacKUjQV0Qgv2GACRE6nQTRIKMDhrBn9pi KXfOOaooizh7BXUioPH4smdpHMBkxQkL/HBec3PzOAgcd0PqxY7P5BYL/DxJGGRNT39t7i SOcP7L3g6F2CddXK4E4p/bx2AWC6Ixo= X-Rspamd-Server: rspam12 X-Rspam-User: Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=UrIwZOkI; spf=pass (imf13.hostedemail.com: domain of ewandevelop@gmail.com designates 209.85.215.181 as permitted sender) smtp.mailfrom=ewandevelop@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-Stat-Signature: tishwufcncwjxyr15531cij4p73bq634 X-Rspamd-Queue-Id: 47FC22003E X-HE-Tag: 1666063930-128694 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 2009/3/31 08:00, Izik Eidus wrote: > apply it against Avi git tree. > > Izik Eidus (3): > kvm: dont hold pagecount reference for mapped sptes pages. > kvm: add SPTE_HOST_WRITEABLE flag to the shadow ptes. > kvm: add support for change_pte mmu notifiers > > arch/x86/include/asm/kvm_host.h | 1 + > arch/x86/kvm/mmu.c | 89 ++++++++++++++++++++++++++++++++------- > arch/x86/kvm/paging_tmpl.h | 16 ++++++- > virt/kvm/kvm_main.c | 14 ++++++ > 4 files changed, 101 insertions(+), 19 deletions(-) > > -- > To unsubscribe, send a message with 'unsubscribe linux-mm' in > the body to majordomo@kvack.org. For more info on Linux MM, > see: http://www.linux-mm.org/ . > Don't email: email@kvack.org > > Hi, I'm learning kvm-mmu codes, when I was reading codes from this patch, I can't understand why we need to do special process for "writable pte". > +static int kvm_set_pte_rmapp(struct kvm *kvm, unsigned long *rmapp, > +                 unsigned long data) > +{ > +    int need_flush = 0; > +    u64 *spte, new_spte; > +    pte_t *ptep = (pte_t *)data; > +    pfn_t new_pfn; > + > +    new_pfn = pte_pfn(ptep_val(ptep)); > +    spte = rmap_next(kvm, rmapp, NULL); > +    while (spte) { > +        BUG_ON(!is_shadow_present_pte(*spte)); > +        rmap_printk("kvm_set_pte_rmapp: spte %p %llx\n", spte, *spte); > +        need_flush = 1; > +        if (pte_write(ptep_val(ptep))) { > +            rmap_remove(kvm, spte); > +            set_shadow_pte(spte, shadow_trap_nonpresent_pte); > +            spte = rmap_next(kvm, rmapp, NULL); > +        } else { > +            new_spte = *spte &~ (PT64_BASE_ADDR_MASK); > +            new_spte |= new_pfn << PAGE_SHIFT; > + > +            if (!pte_write(ptep_val(ptep))) { > +                new_spte &= ~PT_WRITABLE_MASK; > +                new_spte &= ~SPTE_HOST_WRITEABLE; > +                if (is_writeble_pte(*spte)) > +                    kvm_set_pfn_dirty(spte_to_pfn(*spte)); > +            } > +            set_shadow_pte(spte, new_spte); > +            spte = rmap_next(kvm, rmapp, spte); > +        } > +    } > +    if (need_flush) > +        kvm_flush_remote_tlbs(kvm); > + > +    return 0; > +} > + In my opinion, we can just regard writable pte same as readable/executable, all the corresponding sptes will be set as write-protect, and when guest access them, an EPT-violation occurs and we do this #PF in kvm. Shall anyone has some hint ?