Re: [PATCH 3/4] KVM: MMU: Make kvm_handle_hva() handle range of addresses

Takuya Yoshikawa
2012-06-21T13:41:59Z

I should have read this before sending v2...

On Thu, 21 Jun 2012 11:24:59 +0300
Avi Kivity <avi@redhat.com> wrote:

> > 1. Separate rmap_pde from lpage_info->write_count and
> > make this a simple array. (I once tried this.)
> >
>
> This has the potential to increase cache misses, but I don't think it's
> a killer. The separation can simplify other things as well.

Yes, I think so too.

IIRC, write_count and rmap_pde are not used together so often.

> > 2. Use gfn_to_index() and loop over rmap array:

...

> > /* main part */
> > for each level {
> > rmapp = __gfn_to_rmap(gfn_start, level, memslot);
> > for (idx = gfn_to_index(gfn_start, memslot->base_gfn, level);
> > idx < gfn_to_index(gfn_end, memslot->base_gfn, level); idx++) {
> > ...
> > /* loop over rmap array */
> > ret |= handler(kvm, rmapp + idx, data);
> > }
> > }
> >
>
> Probably want idx <= gfn_to_index(gfn_end-1, ...) otherwise we fail on
> small slots.

I was thinking the same thing when making v2.
But I will check the boundary condition again.

(mmu_notifier + memslot + lpage + rmap...) * alignment...
Very confusing.

Thanks,
Takuya