On Mon, Jul 30, 2018 at 08:02:19PM +0800, Ming Lei wrote:
> Runtime PM isn't ready for blk-mq yet, and commit 765e40b675a9 ("block:
> disable runtime-pm for blk-mq") tried to disable it. Unfortunately,
> it can't take effect in that way since user space still can switch
> it on via 'echo auto > /sys/block/sdN/device/power/control'.
> 
> This patch disables runtime-pm for blk-mq really by pm_runtime_disable()
> and fixes all kinds of PM related kernel crash.

I can confirm that this patch fixes the kernel panics I've seen.
For what it's worth, the USB hotplugging issues didn't
re-surface, either. Thanks!

> Cc: Christoph Hellwig <[email protected]>
> Cc: Patrick Steinhardt <[email protected]>
> Cc: Bart Van Assche <[email protected]>
> Cc: Tomas Janousek <[email protected]>
> Cc: Przemek Socha <[email protected]>
> Cc: Alan Stern <[email protected]>
> Cc: <[email protected]>
> Signed-off-by: Ming Lei <[email protected]>
> ---
>  block/blk-core.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/block/blk-core.c b/block/blk-core.c
> index 03a4ea93a5f3..090b782df129 100644
> --- a/block/blk-core.c
> +++ b/block/blk-core.c
> @@ -3769,9 +3769,11 @@ EXPORT_SYMBOL(blk_finish_plug);
>   */
>  void blk_pm_runtime_init(struct request_queue *q, struct device *dev)
>  {
> -     /* not support for RQF_PM and ->rpm_status in blk-mq yet */
> -     if (q->mq_ops)
> +     /* Don't enable runtime PM for blk-mq until it is ready */
> +     if (q->mq_ops) {
> +             pm_runtime_disable(dev);
>               return;
> +     }
>  
>       q->dev = dev;
>       q->rpm_status = RPM_ACTIVE;
> -- 
> 2.9.5
> 

Attachment: signature.asc
Description: PGP signature

Reply via email to