Thread (23 messages) 23 messages, 4 authors, 2018-08-07

Re: [PATCH v3 5/9] block, scsi: Rework runtime power management

From: Bart Van Assche <hidden>
Date: 2018-08-03 16:16:21

On Fri, 2018-08-03 at 07:50 +0800, Ming Lei wrote:
I am not sure if using PREEMPT_ONLY can work well for runtime PM,=
 there
are lots of users which depends on blk_freeze_queue() for mak=
ing sure
there isn't any in-flight requests.
Please elaborate "lots of other users". The only use I have found i=
n the
kernel tree of that flag of which I think that it is not related to power
management is in ide_prep_sense(). All other uses of the RQF_PR=
EEMPT /
BLK_MQ_REQ_PREEMPT / QUEUE_FLAG_PREEMPT_ONLY flags =
I found are IMHO related
to power management:
* generic_ide_resume()
* __scsi_execute()
* scsi_device_quiesce() / scsi_device_resume()

However, we may have to modify __scsi_execute() such that only re=
quests
that are related to power management are submitted with the
BLK_MQ_REQ_PREEMPT flag set. I don't think that all __scs=
i_execute() callers
need that flag.
But now PREEMPT_ONLY opens one door for preempt-req during the bi=
g
window, so this way may break current uses of blk_freeze_queu=
e().

The power management core serializes runtime power management against suspe=
nd,
resume and hibernation so I think it is safe to use the PREEMPT_ONLY fl=
ag for
runtime power management although it is already used for suspend, resume an=
d
hibernation.

Bart.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help