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 9020CC4332F for ; Tue, 18 Oct 2022 03:19:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 04AB36B0072; Mon, 17 Oct 2022 23:19:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F3CCA6B0075; Mon, 17 Oct 2022 23:19:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E048D6B0078; Mon, 17 Oct 2022 23:19:42 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id D25586B0072 for ; Mon, 17 Oct 2022 23:19:42 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id AEA8F1A0F92 for ; Tue, 18 Oct 2022 03:19:42 +0000 (UTC) X-FDA: 80032615404.10.B1C28F0 Received: from mail-pj1-f50.google.com (mail-pj1-f50.google.com [209.85.216.50]) by imf04.hostedemail.com (Postfix) with ESMTP id 65CC340030 for ; Tue, 18 Oct 2022 03:19:42 +0000 (UTC) Received: by mail-pj1-f50.google.com with SMTP id g8-20020a17090a128800b0020c79f987ceso16066386pja.5 for ; Mon, 17 Oct 2022 20:19:42 -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=g3vYctWMe2Khoxx+tqp1Z68DkYIq+ZmCbB/96U7bDx8=; b=XTq4VNAtxYa02TWlV9dzQRCrMsA1pXBUDdALUmwbLyor47kqIOIvXiT1Es6nd+08Om d5TbTRNVqGCC+lf3/9G3U3DRaxKRfz65Ax6JHGlg7Xg1ezeN/0nHLlo9mFcx56xJm8YW uZv0LnVfCGOUb0MTvfHWSbX+r/HDGcrIUoSeGUm4xWlJKfhoIrGO96HLglhUK/bQjUYR ajdZZpJQYjyL+/ktKdbd8hTrWbmignyR6I5gU3YFdMOpo9PQEsjB3J8OPP6hYMFELbNK zJCiYpLIb6+Psj0eTricgfSSFSLBI6LUzoia+mB+N9gMaZ6gyEsJ7jhh+PuxdhM3kanU 0SaQ== 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=g3vYctWMe2Khoxx+tqp1Z68DkYIq+ZmCbB/96U7bDx8=; b=lgwNBlkx3z7g26n3B3Lt/gTRL1TqpVxJYOmwj0YcfC5BO0s94vdmTL45u1HQaAtTaA BVGh/j0rgl1Y16IzTABI7rxunXZF/8JsHa7HyEIP2VKrnPgaZm4wswrC2K3ehRM0GaOJ eDl9j+6stzxeo8KitUIQVd9HdnIFwD/xGgezOvDSe4GvJ9Mi4lPL36rmf2bd6/5QR06c ZxcrR6oc0DNUCV62HzvElk3lbC/LNXtGc1cDQlt/9k2Xx8Jfr/DHxbMtJn2ALJzXgcBa IuZJiJzF/T3qxUe9dkBXSMjak6Af9Hh5pYLgFxWm0/q15YbI5YCItifqXCeVw2SFfwHx q1MA== X-Gm-Message-State: ACrzQf2gQycUmqakHMkc05ka8aFpA3wxiMjClpcsNjx8gY6tMngLHj8B YkVmF8zsxRdEspBR3TPtW0w= X-Google-Smtp-Source: AMsMyM6MkkSS/Rv5rM1qlKw86NPM42hBqBjkleWvycrUFZ5HvAl2w2NRgGJ05jGA1EfPrldWUY/p/g== X-Received: by 2002:a17:902:e804:b0:185:5276:7063 with SMTP id u4-20020a170902e80400b0018552767063mr863672plg.171.1666063181339; Mon, 17 Oct 2022 20:19:41 -0700 (PDT) Received: from [127.0.0.1] (n058152077178.netvigator.com. [58.152.77.178]) by smtp.gmail.com with ESMTPSA id t10-20020a1709027fca00b00178aaf6247bsm7356211plb.21.2022.10.17.20.19.36 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 17 Oct 2022 20:19:40 -0700 (PDT) Message-ID: <50faa0c3-6996-c1b2-572a-96b296f4268b@gmail.com> Date: Tue, 18 Oct 2022 11:19:32 +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: Izik Eidus 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=1666063182; 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=g3vYctWMe2Khoxx+tqp1Z68DkYIq+ZmCbB/96U7bDx8=; b=tU7Qa19i9CxOUYhp3ZC66BWTZvt0diGpWLd3+18s8t+kbxCJD4O5lJeY2v+lcBNlIX38y4 1pqCwrMXXQ7Ty1Sh2V4U8MuJtKPxhLy7i6UYIMlW+SpnqneabSRMYBKzjbz/PPp5M5VC0R ns2qaOBynU8VS39+cShksEpTyNinaeg= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=XTq4VNAt; spf=pass (imf04.hostedemail.com: domain of ewandevelop@gmail.com designates 209.85.216.50 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=1666063182; a=rsa-sha256; cv=none; b=lI0WX4Xc5HODAR1Ay/BzHY90l/+K/vHn94DCN0sxtCb4SWBRFIgJP1fqWRRppC6uIS9v9X bgBmi5UXTyd0BTgaRN+kIJndqe6HEDcumNyJuiYBVwY7NtX20kntNdldxuh1tF2SDLawMO vx71lKICey/O+odTB8qQavimWxw4TG8= Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=XTq4VNAt; spf=pass (imf04.hostedemail.com: domain of ewandevelop@gmail.com designates 209.85.216.50 as permitted sender) smtp.mailfrom=ewandevelop@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-Stat-Signature: 4pjn9rs91o1zngjxcqzggx8btzamcjmg X-Rspamd-Queue-Id: 65CC340030 X-Rspam-User: X-Rspamd-Server: rspam04 X-HE-Tag: 1666063182-541414 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: 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 ? 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 > >