> The hwspinlock_tree_lock is not needed as the > spinlock built into the XArray is sufficient for all these cases.
Are you sure about this?
In hwspin_lock_request_specific(), the spinlock is taken, then:
hwspin_lock_request_specific()
-> __hwspin_lock_request()
-> pm_runtime_get_sync()
-> __pm_runtime_resume()
This starts with:
might_sleep_if(!(rpmflags & RPM_ASYNC) && !dev->power.irq_safe &&
dev->power.runtime_status != RPM_ACTIVE);
Isn't this a problem?

