ppt_assign_device() holds the global PPT lock across the save/reset/restore. pcie_flr() can wait up to the reset timeout, and every PPT operation on every VM stalls behind it.
Reserve the function with resetting and drop the lock for the reset, as ppt_reset_device() already does (D58864). Set ppt->vm first so a competing assign or ppt_detach() gets EBUSY at once instead of sleeping out the reset. Clear it if the assign fails.
ppt_unassign_device() still resets under the lock.