... 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.
01: replace sh_reset_l3_up_pointers() 02: convert sh_audit_flags()'es 1st parameter to domain 03: drop hash_vcpu_foreach() 04: rename hash_domain_foreach() 05: move bogus HVM checks in sh_pagetable_dying() 06: drop a few uses of mfn_valid() 07: L2H shadow type is PV32-only 08: reduce effort of hash calculation 09: simplify conditionals in sh_{get,put}_ref() 10: correct shadow type bounds checks 11: sh_remove_all_mappings() is HVM-only Jan