All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tianyu Lan <lantianyu1986@gmail.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: Tianyu Lan <Tianyu.Lan@microsoft.com>,
	kys@microsoft.com, haiyangz@microsoft.com,
	sthemmin@microsoft.com, Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
	"the arch/x86 maintainers" <x86@kernel.org>,
	Radim Krcmar <rkrcmar@redhat.com>,
	devel@linuxdriverproject.org,
	"linux-kernel@vger kernel org" <linux-kernel@vger.kernel.org>,
	kvm <kvm@vger.kernel.org>,
	michael.h.kelley@microsoft.com, vkuznets@redhat.com
Subject: Re: [PATCH V4 7/15] KVM/MMU: Flush tlb directly in the kvm_zap_gfn_range()
Date: Mon, 15 Oct 2018 21:08:32 +0800	[thread overview]
Message-ID: <CAOLK0pzrzydk9rk-Jijh=rA0oLkSafEqmumY2NSxe44J2=zv2A@mail.gmail.com> (raw)
In-Reply-To: <bdb05a65-f849-7346-61b7-99c444050254@redhat.com>

Hi Paolo:
              Thanks for your review.

On Mon, Oct 15, 2018 at 6:04 PM Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> On 13/10/2018 16:53, lantianyu1986@gmail.com wrote:
> > +     bool flush = false;
> >       int i;
> >
> >       spin_lock(&kvm->mmu_lock);
> > @@ -5654,18 +5655,27 @@ void kvm_zap_gfn_range(struct kvm *kvm, gfn_t gfn_start, gfn_t gfn_end)
> >               slots = __kvm_memslots(kvm, i);
> >               kvm_for_each_memslot(memslot, slots) {
> >                       gfn_t start, end;
> > +                     bool flush_tlb = true;
> >
> >                       start = max(gfn_start, memslot->base_gfn);
> >                       end = min(gfn_end, memslot->base_gfn + memslot->npages);
> >                       if (start >= end)
> >                               continue;
> >
> > -                     slot_handle_level_range(kvm, memslot, kvm_zap_rmapp,
> > -                                             PT_PAGE_TABLE_LEVEL, PT_MAX_HUGEPAGE_LEVEL,
> > -                                             start, end - 1, true);
> > +                     if (kvm_available_flush_tlb_with_range())
> > +                             flush_tlb = false;
>
> This should be moved outside the for, because it's invariant.
>
> > +                     flush = slot_handle_level_range(kvm, memslot,
> > +                                     kvm_zap_rmapp, PT_PAGE_TABLE_LEVEL,
> > +                                     PT_MAX_HUGEPAGE_LEVEL, start,
> > +                                     end - 1, flush_tlb);
>
> ... and this should be "flush |= ".
> >               }
> >       }
> >
> > +     if (flush && kvm_available_flush_tlb_with_range())
> > +             kvm_flush_remote_tlbs_with_address(kvm, gfn_start,
> > +                             gfn_end - gfn_start + 1);
> > +
>
> ... and this can be just if (flush), because if flush_tlb is true then
> slot_handle_level_range always returns false.

OK. Will update.

-- 
Best regards
Tianyu Lan

  reply	other threads:[~2018-10-15 13:08 UTC|newest]

Thread overview: 96+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-13 14:53 [PATCH V4 00/15] x86/KVM/Hyper-v: Add HV ept tlb range flush hypercall support in KVM lantianyu1986
2018-10-13 14:53 ` lantianyu1986
2018-10-13 14:53 ` lantianyu1986 at gmail.com
2018-10-13 14:53 ` lantianyu1986
2018-10-13 14:53 ` lantianyu1986
2018-10-13 14:53 ` lantianyu1986
2018-10-13 14:53 ` [PATCH V4 1/15] KVM: Add tlb_remote_flush_with_range callback in kvm_x86_ops lantianyu1986
2018-10-13 14:53   ` lantianyu1986
2018-10-13 14:53   ` lantianyu1986 at gmail.com
2018-10-13 14:53   ` lantianyu1986
2018-10-13 14:53   ` lantianyu1986
2018-10-13 14:53 ` [PATCH V4 2/15] KVM/MMU: Add tlb flush with range helper function lantianyu1986
2018-10-13 14:53   ` lantianyu1986
2018-10-13 14:53   ` lantianyu1986 at gmail.com
2018-10-13 14:53   ` lantianyu1986
2018-10-13 14:53   ` lantianyu1986
2018-10-14  7:26   ` Liran Alon
2018-10-14  7:26     ` Liran Alon
2018-10-14  7:26     ` Liran Alon
2018-10-14  7:26     ` Liran Alon
2018-10-14  7:26     ` Liran Alon
2018-10-14  8:16     ` Thomas Gleixner
2018-10-14  8:16       ` Thomas Gleixner
2018-10-14  8:16       ` Thomas Gleixner
2018-10-14  8:16       ` Thomas Gleixner
2018-10-14  8:16       ` Thomas Gleixner
2018-10-14  9:20       ` Liran Alon
2018-10-14  9:20         ` Liran Alon
2018-10-14  9:20         ` Liran Alon
2018-10-14  9:20         ` Liran Alon
2018-10-14  9:20         ` Liran Alon
2018-10-14 12:57         ` Tianyu Lan
2018-10-14 12:57           ` Tianyu Lan
2018-10-14 12:57           ` Tianyu Lan
2018-10-14 12:57           ` Tianyu Lan
2018-10-14 12:57           ` Tianyu Lan
2018-10-14  9:27       ` Russell King - ARM Linux
2018-10-14  9:27         ` Russell King - ARM Linux
2018-10-14  9:27         ` Russell King - ARM Linux
2018-10-14  9:27         ` Russell King - ARM Linux
2018-10-14  9:27         ` Russell King - ARM Linux
2018-10-14  9:27         ` Russell King - ARM Linux
2018-10-14  9:35         ` Russell King - ARM Linux
2018-10-14  9:35           ` Russell King - ARM Linux
2018-10-14  9:35           ` Russell King - ARM Linux
2018-10-14  9:35           ` Russell King - ARM Linux
2018-10-14 13:21           ` Tianyu Lan
2018-10-14 13:21             ` Tianyu Lan
2018-10-14 13:21             ` Tianyu Lan
2018-10-14 13:21             ` Tianyu Lan
2018-10-14 13:21             ` Tianyu Lan
2018-10-14 13:21             ` Tianyu Lan
2018-10-14 13:33             ` Russell King - ARM Linux
2018-10-14 13:33               ` Russell King - ARM Linux
2018-10-14 13:33               ` Russell King - ARM Linux
2018-10-14 13:33               ` Russell King - ARM Linux
2018-10-14 13:33               ` Russell King - ARM Linux
2018-10-15 12:02       ` Paolo Bonzini
2018-10-15 12:02         ` Paolo Bonzini
2018-10-15 12:02         ` Paolo Bonzini
2018-10-15 12:02         ` Paolo Bonzini
2018-10-13 14:53 ` [PATCH V4 3/15] KVM: Replace old tlb flush function with new one to flush a specified range lantianyu1986
2018-10-13 14:53   ` lantianyu1986
2018-10-13 14:53   ` lantianyu1986 at gmail.com
2018-10-13 14:53   ` lantianyu1986
2018-10-13 14:53   ` lantianyu1986
2018-10-13 14:53 ` [PATCH V4 4/15] KVM: Make kvm_set_spte_hva() return int lantianyu1986
2018-10-13 14:53   ` lantianyu1986
2018-10-13 14:53   ` lantianyu1986 at gmail.com
2018-10-13 14:53   ` lantianyu1986
2018-10-13 14:53   ` lantianyu1986
2018-10-13 14:53 ` [PATCH V4 5/15] KVM/MMU: Move tlb flush in kvm_set_pte_rmapp() to kvm_mmu_notifier_change_pte() lantianyu1986
2018-10-13 14:53 ` [PATCH V4 6/15] KVM/MMU: Flush tlb directly in the kvm_set_pte_rmapp() lantianyu1986
2018-10-15 11:52   ` Paolo Bonzini
2018-10-13 14:53 ` [PATCH V4 7/15] KVM/MMU: Flush tlb directly in the kvm_zap_gfn_range() lantianyu1986
2018-10-15 10:04   ` Paolo Bonzini
2018-10-15 13:08     ` Tianyu Lan [this message]
2018-10-13 14:53 ` [PATCH V4 8/15] KVM/MMU: Flush tlb directly in kvm_mmu_zap_collapsible_spte() lantianyu1986
2018-10-13 14:53   ` lantianyu1986
2018-10-13 14:54 ` [PATCH V4 9/15] KVM: Add flush_link and parent_pte in the struct kvm_mmu_page lantianyu1986
2018-10-15 10:12   ` Paolo Bonzini
2018-10-15 10:12     ` Paolo Bonzini
2018-10-13 14:54 ` [PATCH V4 10/15] KVM: Add spte's point " lantianyu1986
2018-10-13 14:54 ` [PATCH V4 11/15] KVM/MMU: Replace tlb flush function with range list flush function lantianyu1986
2018-10-15 11:51   ` Paolo Bonzini
2018-10-13 14:54 ` [PATCH V4 12/15] x86/hyper-v: Add HvFlushGuestAddressList hypercall support lantianyu1986
2018-10-15 10:30   ` Paolo Bonzini
2018-10-15 10:30     ` Paolo Bonzini
2018-10-13 14:54 ` [PATCH V4 13/15] x86/Hyper-v: Add trace in the hyperv_nested_flush_guest_mapping_range() lantianyu1986
2018-10-13 14:54 ` [PATCH V4 14/15] KVM/VMX: Change hv flush logic when ept tables are mismatched lantianyu1986
2018-10-15 11:15   ` Paolo Bonzini
2018-10-13 14:54 ` [PATCH V4 15/15] KVM/VMX: Add hv tlb range flush support lantianyu1986
2018-10-15 12:04 ` [PATCH V4 00/15] x86/KVM/Hyper-v: Add HV ept tlb range flush hypercall support in KVM Paolo Bonzini
2018-10-15 12:04   ` Paolo Bonzini
2018-10-15 12:04   ` Paolo Bonzini
2018-10-15 12:04   ` 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='CAOLK0pzrzydk9rk-Jijh=rA0oLkSafEqmumY2NSxe44J2=zv2A@mail.gmail.com' \
    --to=lantianyu1986@gmail.com \
    --cc=Tianyu.Lan@microsoft.com \
    --cc=devel@linuxdriverproject.org \
    --cc=haiyangz@microsoft.com \
    --cc=hpa@zytor.com \
    --cc=kvm@vger.kernel.org \
    --cc=kys@microsoft.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=michael.h.kelley@microsoft.com \
    --cc=mingo@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=rkrcmar@redhat.com \
    --cc=sthemmin@microsoft.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.