On Thu, 2018-07-19 at 06:45 +-0800, Ming Lei wrote: +AD4- So once blk+AF8-freeze+AF8-queue+AF8-start() returns, percpu+AF8-ref+AF8-is+AF8-zero() won't +AD4- return true only until the rcu confirmation is done. That means this +AD4- approach may not put device down. Hello Ming, I agree with your conclusion that it is not guaranteed that q-+AD4-q+AF8-usage+AF8-counter is in atomic mode when percpu+AF8-ref+AF8-is+AF8-zero() is called. However, I think that's fine: if blk+AF8-pre+AF8-runtime+AF8-suspend() returns -EBUSY then the runtime core will try again at a later time to perform runtime suspend. Bart.