Re: [PATCH v10 17/18] scsi: ufs: Forbid auto-hibernation without I/O scheduler

Can Guo
2023-08-21T05:44:25Z

On 8/19/2023 3:34 AM, Bart Van Assche wrote:
> UFSHCI 3.0 controllers do not preserve the write order if auto-hibernation
> is enabled. If the write order is not preserved, an I/O scheduler is
> required to serialize zoned writes. Hence do not allow auto-hibernation
> to be enabled without I/O scheduler if a zoned logical unit is present
> and if the controller is operating in legacy mode. This patch has been
> tested with the following shell script:
>
> show_ah8() {
> echo -n "auto_hibern8: "
> adb shell "cat /sys/devices/platform/13200000.ufs/auto_hibern8"
> }
>
> set_ah8() {
> local rc
> adb shell "echo $1 > /sys/devices/platform/13200000.ufs/auto_hibern8"
> rc=$?
> show_ah8
> return $rc
> }
>
> set_iosched() {
> adb shell "echo $1 >/sys/class/block/$zoned_bdev/queue/scheduler &&
> echo -n 'I/O scheduler: ' &&
> cat /sys/class/block/sde/queue/scheduler"
> }
>
> adb root
> zoned_bdev=$(adb shell grep -lvw 0 /sys/class/block/sd*/queue/chunk_sectors |&
> sed 's|/sys/class/block/||g;s|/queue/chunk_sectors||g')
> [ -n "$zoned_bdev" ]
> show_ah8
> set_ah8 0
> set_iosched none
> if set_ah8 150000; then
> echo "Error: enabled AH8 without I/O scheduler"
> fi
> set_iosched mq-deadline
> set_ah8 150000
>
> Cc: Martin K. Petersen <martin.petersen@oracle.com>
> Cc: Can Guo <quic_cang@quicinc.com>
> Cc: Avri Altman <avri.altman@wdc.com>
> Cc: Bao D. Nguyen <quic_nguyenb@quicinc.com>
> Signed-off-by: Bart Van Assche <bvanassche@acm.org>
> ---
> drivers/ufs/core/ufshcd.c | 58 +++++++++++++++++++++++++++++++++++++++
> 1 file changed, 58 insertions(+)

Reviewed-by: Can Guo <quic_cang@quicinc.com>