On 25/09/20 23:22, Ben Gardon wrote:
> +     for_each_tdp_pte_root(iter, root, start, end) {
> +             if (!is_shadow_present_pte(iter.old_spte) ||
> +                 is_last_spte(iter.old_spte, iter.level))
> +                     continue;
> +

I'm starting to wonder if another iterator like
for_each_tdp_leaf_pte_root would be clearer, since this idiom repeats
itself quite often.  The tdp_iter_next_leaf function would be easily
implemented as

        while (likely(iter->valid) &&
               (!is_shadow_present_pte(iter.old_spte) ||
                is_last_spte(iter.old_spte, iter.level))
                tdp_iter_next(iter);

Paolo

Reply via email to