On 05/08/2015 06:04, Xiao Guangrong wrote: > - for_each_shadow_entry_lockless(vcpu, addr, iterator, spte) > + for_each_shadow_entry_lockless(vcpu, addr, iterator, spte) { > + leaf = iterator.level; > + > + if (!root) > + root = leaf; > + > + sptes[leaf - 1] = spte; > + I'm a bit undecided between this and open-coding the macro: for (shadow_walk_init(&iterator, vcpu, addr), root = iterator.level; shadow_walk_okay(&iterator); __shadow_walk_next(&iterator, spte)) { leaf = iterator.level; spte = mmu_spte_get_lockless(iterator.sptep); Any second opinions? Paolo -- 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