... or so I hope. The main observation was that we still have both hash_vcpu_for_each() and hash_domain_for_each(), where the latter was introduced in 2014/15 to replace the former. Only some eight years later we can now complete this conversion. Everything else addresses other things noticed along the road.
1: replace sh_reset_l3_up_pointers() 2: drop hash_vcpu_foreach() 3: rename hash_domain_foreach() 4: re-work 4-level SHADOW_FOREACH_L2E() See individual patches for changes. Jan