All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tianyu Lan <lantianyu1986@gmail.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: Sean Christopherson <sean.j.christopherson@intel.com>,
	Lan Tianyu <Tianyu.Lan@microsoft.com>,
	Radim Krcmar <rkrcmar@redhat.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>,
	bp@alien8.de, "H. Peter Anvin" <hpa@zytor.com>,
	"the arch/x86 maintainers" <x86@kernel.org>,
	kvm <kvm@vger.kernel.org>,
	"linux-kernel@vger kernel org" <linux-kernel@vger.kernel.org>,
	michael.h.kelley@microsoft.com, kys@microsoft.com,
	vkuznets@redhat.com, linux@armlinux.org.uk
Subject: Re: [PATCH 11/11] KVM/MMU: Flush tlb in the kvm_age_rmapp()
Date: Tue, 8 Jan 2019 11:42:05 +0800	[thread overview]
Message-ID: <CAOLK0pxrdWZ6RAJROw0cyfexjZnKqSsCrm-jUD=wUHWvWV47kQ@mail.gmail.com> (raw)
In-Reply-To: <d434edb8-5f09-7331-c89d-9b78907e896a@redhat.com>

Hi Paolo:
               Thanks for your review.

On Tue, Jan 8, 2019 at 12:31 AM Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> On 07/01/19 04:42, Tianyu Lan wrote:
> >> I'm assuming you're
> >> clearing young to avoid the flush in kvm_mmu_notifier_clear_flush_young(),
> >> but keeping that flush is silly since it will never be invoked.  Just
> >> squash this patch with patch 10/11 so that you can remove the unnecessary
> >> flush in kvm_mmu_notifier_clear_flush_young() and preserve young.
> >>
> > The platform may provide tlb flush with address range as granularity. My changes
> > are to use range flush when it's available. kvm_mmu_notifier_clear_flush_young()
> > is common function for all platforms and most platforms still need the
> > flush in the
> > kvm_mmu_notifier_clear_flush_young(). I think it's better to separate
> > flush request and
> > "young" from return value of kvm_age_hva(). New flush parameter I
> > added in the patch 10
> > can be changed to a pointer and kvm_age_hva() can use it to return
> > flush request.
>
> There are two possibilities:
>
> - pass a "bool *flush".  If NULL, kvm_age_hva should not flush.  If not
> NULL, kvm_age_hva should receive a true *flush, and should change it to
> false if kvm_age_hva takes care of the flush
>
> - pass a "bool flush".  In patch 10, change all kvm_age_hva
> implementation to do the flush if they return 1.
>
> I think I prefer the latter, in this case the small code duplication is
> offset by a simpler API.
>

From my understanding, this means to move the flush in the
kvm_mmu_notifier_clear_flush_young()
to kvm_age_hva() and do flush in kvm_age_hva() when young is >0 and "flush"
parameter is true, right?
-- 
Best regards
Tianyu Lan

WARNING: multiple messages have this Message-ID (diff)
From: Tianyu Lan <lantianyu1986@gmail.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: Sean Christopherson <sean.j.christopherson@intel.com>,
	Lan Tianyu <Tianyu.Lan@microsoft.com>,
	Radim Krcmar <rkrcmar@redhat.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>,
	bp@alien8.de, "H. Peter Anvin" <hpa@zytor.com>,
	"the arch/x86 maintainers" <x86@kernel.org>,
	kvm <kvm@vger.kernel.org>,
	"linux-kernel@vger kernel org" <linux-kernel@vger.kernel.org>,
	michael.h.kelley@microsoft.com, kys@microsoft.com,
	vkuznets@redhat.com, linux@armlinux.org.uk
Subject: Re: [PATCH 11/11] KVM/MMU: Flush tlb in the kvm_age_rmapp()
Date: Tue, 8 Jan 2019 11:42:05 +0800	[thread overview]
Message-ID: <CAOLK0pxrdWZ6RAJROw0cyfexjZnKqSsCrm-jUD=wUHWvWV47kQ@mail.gmail.com> (raw)
In-Reply-To: <d434edb8-5f09-7331-c89d-9b78907e896a@redhat.com>

Hi Paolo:
               Thanks for your review.

On Tue, Jan 8, 2019 at 12:31 AM Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> On 07/01/19 04:42, Tianyu Lan wrote:
> >> I'm assuming you're
> >> clearing young to avoid the flush in kvm_mmu_notifier_clear_flush_young(),
> >> but keeping that flush is silly since it will never be invoked.  Just
> >> squash this patch with patch 10/11 so that you can remove the unnecessary
> >> flush in kvm_mmu_notifier_clear_flush_young() and preserve young.
> >>
> > The platform may provide tlb flush with address range as granularity. My changes
> > are to use range flush when it's available. kvm_mmu_notifier_clear_flush_young()
> > is common function for all platforms and most platforms still need the
> > flush in the
> > kvm_mmu_notifier_clear_flush_young(). I think it's better to separate
> > flush request and
> > "young" from return value of kvm_age_hva(). New flush parameter I
> > added in the patch 10
> > can be changed to a pointer and kvm_age_hva() can use it to return
> > flush request.
>
> There are two possibilities:
>
> - pass a "bool *flush".  If NULL, kvm_age_hva should not flush.  If not
> NULL, kvm_age_hva should receive a true *flush, and should change it to
> false if kvm_age_hva takes care of the flush
>
> - pass a "bool flush".  In patch 10, change all kvm_age_hva
> implementation to do the flush if they return 1.
>
> I think I prefer the latter, in this case the small code duplication is
> offset by a simpler API.
>

>From my understanding, this means to move the flush in the
kvm_mmu_notifier_clear_flush_young()
to kvm_age_hva() and do flush in kvm_age_hva() when young is >0 and "flush"
parameter is true, right?
-- 
Best regards
Tianyu Lan

  reply	other threads:[~2019-01-08  3:42 UTC|newest]

Thread overview: 106+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-04  8:53 [PATCH 00/11] X86/KVM/Hyper-V: Add HV ept tlb range list flush support in KVM lantianyu1986
2019-01-04  8:53 ` lantianyu1986
2019-01-04  8:53 ` lantianyu1986
2019-01-04  8:53 ` lantianyu1986
2019-01-04  8:53 ` lantianyu1986
2019-01-04  8:53 ` [PATCH 1/11] X86/Hyper-V: Add parameter offset for hyperv_fill_flush_guest_mapping_list() lantianyu1986
2019-01-04  8:53   ` lantianyu1986
2019-01-04  8:53   ` lantianyu1986
2019-01-04  8:53   ` lantianyu1986
2019-01-04  8:53   ` lantianyu1986
2019-01-04  8:53 ` [PATCH 2/11] KVM/VMX: Fill range list in kvm_fill_hv_flush_list_func() lantianyu1986
2019-01-04  8:53   ` lantianyu1986
2019-01-04  8:53   ` lantianyu1986
2019-01-04  8:53   ` lantianyu1986
2019-01-04  8:53   ` lantianyu1986
2019-01-04  8:53 ` [PATCH 3/11] KVM: Add spte's point in the struct kvm_mmu_page lantianyu1986
2019-01-04  8:53   ` lantianyu1986
2019-01-04  8:53   ` lantianyu1986
2019-01-04  8:53   ` lantianyu1986
2019-01-04  8:53   ` lantianyu1986
2019-01-07 16:34   ` Paolo Bonzini
2019-01-07 16:34     ` Paolo Bonzini
2019-01-07 16:34     ` Paolo Bonzini
2019-01-07 16:34     ` Paolo Bonzini
2019-01-07 16:34     ` Paolo Bonzini
2019-01-04  8:53 ` [PATCH 4/11] KVM/MMU: Introduce tlb flush with range list lantianyu1986
2019-01-04  8:53   ` lantianyu1986
2019-01-04  8:53   ` lantianyu1986
2019-01-04  8:53   ` lantianyu1986
2019-01-04  8:53   ` lantianyu1986
2019-01-07 16:39   ` Paolo Bonzini
2019-01-07 16:39     ` Paolo Bonzini
2019-01-07 16:39     ` Paolo Bonzini
2019-01-07 16:39     ` Paolo Bonzini
2019-01-04  8:53 ` [PATCH 5/11] KVM/MMU: Flush tlb directly in the kvm_mmu_slot_gfn_write_protect() lantianyu1986
2019-01-04  8:53   ` lantianyu1986
2019-01-04  8:53   ` lantianyu1986
2019-01-04  8:53   ` lantianyu1986
2019-01-04  8:53   ` lantianyu1986
2019-01-04  8:54 ` [PATCH 6/11] KVM/MMU: Flush tlb with range list in sync_page() lantianyu1986
2019-01-04  8:54   ` lantianyu1986
2019-01-04  8:54   ` lantianyu1986
2019-01-04  8:54   ` lantianyu1986
2019-01-04  8:54   ` lantianyu1986
2019-01-04 16:30   ` Sean Christopherson
2019-01-04 16:30     ` Sean Christopherson
2019-01-04 16:30     ` Sean Christopherson
2019-01-04 16:30     ` Sean Christopherson
2019-01-07  5:13     ` Tianyu Lan
2019-01-07  5:13       ` Tianyu Lan
2019-01-07  5:13       ` Tianyu Lan
2019-01-07  5:13       ` Tianyu Lan
2019-01-07  5:13       ` Tianyu Lan
2019-01-07 16:07     ` Paolo Bonzini
2019-01-07 16:07       ` Paolo Bonzini
2019-01-07 16:07       ` Paolo Bonzini
2019-01-07 16:07       ` Paolo Bonzini
2019-01-07 16:07       ` Paolo Bonzini
2019-01-04  8:54 ` [PATCH 7/11] KVM: Remove redundant check in the kvm_get_dirty_log_protect() lantianyu1986
2019-01-04  8:54   ` lantianyu1986
2019-01-04  8:54   ` lantianyu1986
2019-01-04  8:54   ` lantianyu1986
2019-01-04  8:54   ` lantianyu1986
2019-01-04 15:50   ` Sean Christopherson
2019-01-04 15:50     ` Sean Christopherson
2019-01-04 15:50     ` Sean Christopherson
2019-01-04 15:50     ` Sean Christopherson
2019-01-04 21:27     ` Sean Christopherson
2019-01-04 21:27       ` Sean Christopherson
2019-01-04 21:27       ` Sean Christopherson
2019-01-04 21:27       ` Sean Christopherson
2019-01-07 16:20     ` Paolo Bonzini
2019-01-07 16:20       ` Paolo Bonzini
2019-01-07 16:20       ` Paolo Bonzini
2019-01-07 16:20       ` Paolo Bonzini
2019-01-07 16:20       ` Paolo Bonzini
2019-01-04  8:54 ` [PATCH 8/11] KVM: Make kvm_arch_mmu_enable_log_dirty_pt_masked() return value lantianyu1986
2019-01-04  8:54   ` lantianyu1986
2019-01-04  8:54   ` lantianyu1986
2019-01-04  8:54   ` lantianyu1986
2019-01-04  8:54   ` lantianyu1986
2019-01-04  8:54 ` [PATCH 9/11] KVM/MMU: Flush tlb in the kvm_mmu_write_protect_pt_masked() lantianyu1986
2019-01-04  8:54   ` lantianyu1986
2019-01-04  8:54   ` lantianyu1986
2019-01-04  8:54   ` lantianyu1986
2019-01-04  8:54   ` lantianyu1986
2019-01-07 16:26   ` Paolo Bonzini
2019-01-07 16:26     ` Paolo Bonzini
2019-01-07 16:26     ` Paolo Bonzini
2019-01-07 16:26     ` Paolo Bonzini
2019-01-10  9:06     ` Tianyu Lan
2019-01-10  9:06       ` Tianyu Lan
2019-01-10  9:06       ` Tianyu Lan
2019-01-10  9:06       ` Tianyu Lan
2019-01-10  9:06       ` Tianyu Lan
2019-01-04  8:54 ` [PATCH 10/11] KVM: Add flush parameter for kvm_age_hva() lantianyu1986
2019-01-04  8:54   ` lantianyu1986
2019-01-04  8:54   ` lantianyu1986
2019-01-04  8:54   ` lantianyu1986
2019-01-04  8:54   ` lantianyu1986
2019-01-04  8:54 ` [PATCH 11/11] KVM/MMU: Flush tlb in the kvm_age_rmapp() lantianyu1986
     [not found]   ` <20190104161235.GB11288@linux.intel.com>
2019-01-07  3:42     ` Tianyu Lan
2019-01-07 16:31       ` Paolo Bonzini
2019-01-08  3:42         ` Tianyu Lan [this message]
2019-01-08  3:42           ` Tianyu Lan
2019-01-08 11:52           ` Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAOLK0pxrdWZ6RAJROw0cyfexjZnKqSsCrm-jUD=wUHWvWV47kQ@mail.gmail.com' \
    --to=lantianyu1986@gmail.com \
    --cc=Tianyu.Lan@microsoft.com \
    --cc=bp@alien8.de \
    --cc=hpa@zytor.com \
    --cc=kvm@vger.kernel.org \
    --cc=kys@microsoft.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=michael.h.kelley@microsoft.com \
    --cc=mingo@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=rkrcmar@redhat.com \
    --cc=sean.j.christopherson@intel.com \
    --cc=tglx@linutronix.de \
    --cc=vkuznets@redhat.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.