[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <c98a3741-273b-8a69-016d-5f3e79f8a71e@acm.org>
Date: Tue, 14 Mar 2023 16:21:15 -0700
From: Bart Van Assche <bvanassche@....org>
To: Alexey Klimov <alexey.klimov@...aro.org>, peterz@...radead.org
Cc: draszik@...gle.com, peter.griffin@...aro.org,
willmcvicker@...gle.com, mingo@...nel.org, ulf.hansson@...aro.org,
tony@...mide.com, linux-block@...r.kernel.org,
linux-kernel@...r.kernel.org, axboe@...nel.dk,
alim.akhtar@...sung.com, regressions@...ts.linux.dev,
avri.altman@....com, klimova@...gle.com
Subject: Re: [REGRESSION] CPUIDLE_FLAG_RCU_IDLE, blk_mq_freeze_queue_wait()
and slow-stuck reboots
On 3/14/23 16:00, Alexey Klimov wrote:
> The delay is found to be in device's ->shutdown() methods called from kernel_restart():
> void kernel_restart_prepare(char *cmd)
> {
> blocking_notifier_call_chain(&reboot_notifier_list, SYS_RESTART, cmd);
> system_state = SYSTEM_RESTART;
> usermodehelper_disable();
> device_shutdown(); <---- here
> }
>
> The driver in question is ufshcd and its ufshcd_wl_shutdown() shutdown method. It often blocks on scsi_device_quiesce() and upon manual checking it seems that it sleeps on blk_mq_freeze_queue_wait()/wait_event() in blk_freeze_queue():
>
> scsi_device_quiesce(struct scsi_device *sdev)
> {
> ...
> blk_mq_freeze_queue(q);
> ...
> }
> ||
> V
> void blk_freeze_queue(struct request_queue *q)
> {
> /*
> * In the !blk_mq case we are only calling this to kill the
> * q_usage_counter, otherwise this increases the freeze depth
> * and waits for it to return to zero. For this reason there is
> * no blk_unfreeze_queue(), and blk_freeze_queue() is not
> * exported to drivers as the only user for unfreeze is blk_mq.
> */
> blk_freeze_queue_start(q);
> blk_mq_freeze_queue_wait(q); <--- sleeps on wait_event() here
> }
Please let me know if you want me to resubmit patch "scsi: ufs: Remove
the LUN quiescing code from ufshcd_wl_shutdown()"
(https://lore.kernel.org/linux-scsi/20220331223424.1054715-14-bvanassche@acm.org/).
Thanks,
Bart.
Powered by blists - more mailing lists