Messages in this thread | | | Date | Fri, 2 Mar 2012 11:56:24 +0900 | From | Takuya Yoshikawa <> | Subject | Re: [PATCH 2/4] KVM: Avoid checking huge page mappings in get_dirty_log() |
| |
Takuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp> wrote:
> + while (mask) { > + rmapp = &slot->rmap[gfn_offset + __ffs(mask)]; > + __rmap_write_protect(kvm, rmapp, PT_PAGE_TABLE_LEVEL); > > - return write_protected; > + /* clear the first set bit */ > + mask &= mask - 1; > + } > }
while (mask) { fsbit = __ffs(mask); gfn_offset += fsbit; mask >>= fsbit + 1;
rmapp = &slot->rmap[gfn_offset]; __rmap_write_protect(kvm, rmapp, PT_PAGE_TABLE_LEVEL); }
Seems to be better: BSF friendly.
I will update this function and post the result with dirty-log-perf output!
Takuya
| |