On Mon, Oct 11, 2021 at 10:17:08AM +0200, Jan Beulich wrote: > With NPT or shadow in use, the p2m_set_entry() -> p2m_pt_set_entry() -> > write_p2m_entry() -> p2m_flush_nestedp2m() call sequence triggers a lock > order violation when the PoD lock is held around it. Hence such flushing > needs to be deferred. Steal the approach from p2m_change_type_range(). > > Similarly for EPT I think ept_set_entry() -> ept_sync_domain() -> > ept_sync_domain_prepare() -> p2m_flush_nestedp2m() is affected.
I'm slightly worried by this path because it doesn't seem to acknowledge defer_nested_flush. Maybe the flag should be checked by p2m_flush_nestedp2m instead of leaving it to the callers? Thanks, Roger.