Re: [PATCH] block: really disable runtime-pm for blk-mq

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dnia poniedziałek, 30 lipca 2018 14:02:19 CEST piszesz:
> 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.
> 
> Cc: Christoph Hellwig <hch@xxxxxx>
> Cc: Patrick Steinhardt <ps@xxxxxx>
> Cc: Bart Van Assche <Bart.VanAssche@xxxxxxx>
> Cc: Tomas Janousek <tomi@xxxxxxx>
> Cc: Przemek Socha <soprwa@xxxxxxxxx>
> Cc: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>
> Cc: <stable@xxxxxxxxxxxxxxx>
> Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxx>
> ---
>  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;

This patch works perfectly with SATA ssd. I have checked "resume" with all 
schedulers and with kernel command line "scsi_mod.use_blk_mq=1" option  (bfq, 
kyber, deadline-mq). There is no more kernel oops with NULL pointer 
dereference, and machine can resume successfully. When this patch will get to 
stable tree i will close that bug report : https://bugzilla.kernel.org/
show_bug.cgi?id=200435.

Thank you very much,
Przemek.







[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux