Takuya Yoshikawa <yoshikawa.takuya@xxxxxxxxxxxxx> wrote: > Takuya Yoshikawa <yoshikawa.takuya@xxxxxxxxxxxxx> 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 was wrong. "and < shift" and bsf did not show any difference for this kind of loop on my box. So we should keep the original implementation. Takuya -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html