On Fri, Apr 19, 2024, Will Deacon wrote:
> > @@ -663,10 +669,22 @@ static __always_inline kvm_mn_ret_t 
> > __kvm_handle_hva_range(struct kvm *kvm,
> >                                     break;
> >                     }
> >                     r.ret |= range->handler(kvm, &gfn_range);
> > +
> > +                  /*
> > +                   * Use a precise gfn-based TLB flush when possible, as
> > +                   * most mmu_notifier events affect a small-ish range.
> > +                   * Fall back to a full TLB flush if the gfn-based flush
> > +                   * fails, and don't bother trying the gfn-based flush
> > +                   * if a full flush is already pending.
> > +                   */
> > +                  if (range->flush_on_ret && !need_flush && r.ret &&
> > +                      kvm_arch_flush_remote_tlbs_range(kvm, 
> > gfn_range.start,
> > +                                                       gfn_range.end - 
> > gfn_range.start + 1))
> 
> What's that '+ 1' needed for here?

 (a) To see if you're paying attention.
 (b) Because more is always better.
 (c) Because math is hard.
 (d) Because I haven't tested this.
 (e) Both (c) and (d).

Reply via email to