[lkml]   [2020]   [Oct]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: [PATCH 18/22] kvm: mmu: Support disabling dirty logging for the tdp MMU
On 07/10/20 18:30, Ben Gardon wrote:
>> 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);
> Do you see a substantial efficiency difference between adding a
> tdp_iter_next_leaf and building on for_each_tdp_pte_using_root with
> something like:
> #define for_each_tdp_leaf_pte_using_root(_iter, _root, _start, _end) \
> for_each_tdp_pte_using_root(_iter, _root, _start, _end) \
> if (!is_shadow_present_pte(_iter.old_spte) || \
> !is_last_spte(_iter.old_spte, _iter.level)) \
> continue; \
> else
> I agree that putting those checks in a wrapper makes the code more concise.

No, that would be just another way to write the same thing. That said,
making the iteration API more complicated also has disadvantages because
if get a Cartesian explosion of changes.

Regarding the naming, I'm leaning towards


which is shorter than the version with "using" and still clarifies that
"root" and "vcpu" are the thing that the iteration works on.


 \ /
  Last update: 2020-10-07 19:22    [W:0.141 / U:0.800 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site