Now I'm back from vacation. My patched kernel mentioned in comment 11 is really a hack, just dropping napi_disable() / napi_enable() calls at runtime and system suspends temporarily. The fact that this patch worked implies that the usages of napi_disable() calls there are doubtful and very likely buggy. But fixing this properly needs more deep consideration. That said, there are multiple bugs here: - The recursive runtime PM handling that causes a deadlock; this one is addressed by the patch in comment 8 - The napi_disable() / napi_enable() calls at the runtime / system resume callbacks that again causes the deadlock