... 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.
Note that patch 8 conflicts contextually but not functionally with patches 3 and 4 from "x86/mm: address aspects noticed during XSA-410 work". 1: replace sh_reset_l3_up_pointers() 2: drop hash_vcpu_foreach() 3: rename hash_domain_foreach() 4: drop a few uses of mfn_valid() 5: L2H shadow type is PV32-only 6: x86/shadow: re-work 4-level SHADOW_FOREACH_L2E() 7: reduce effort of hash calculation 8: call sh_detach_old_tables() directly 9: harden shadow_size() Jan
