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@lst.de Cc: Patrick Steinhardt ps@pks.im Cc: Bart Van Assche Bart.VanAssche@wdc.com Cc: Tomas Janousek tomi@nomi.cz Cc: Przemek Socha soprwa@gmail.com Cc: Alan Stern stern@rowland.harvard.edu Cc: stable@vger.kernel.org Signed-off-by: Ming Lei ming.lei@redhat.com
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.