Re: [PATCH 02/14] scsi: hisi_sas: Remove preemptible().

John Garry
2020-11-26T14:11:25Z

On 26/11/2020 13:29, Sebastian Andrzej Siewior wrote:
> From: "Ahmed S. Darwish"<a.darwish@linutronix.de>
>
> hisi_sas_task_exec() uses preemptible() to see if it's safe to block.
> This does not work for CONFIG_PREEMPT_COUNT=n kernels in which
> preemptible() always returns 0.
>
> The problem is masked when enabling some of the common Kconfig.debug
> options (like CONFIG_DEBUG_ATOMIC_SLEEP), as they implicitly enable the
> preemption counter.
>
> In general, driver leaf functions should not make logic decisions based
> on the context they're called from. The caller should be the entity
> responsible for explicitly indicating context.
>
> Since hisi_sas_task_exec() already has a gfp_t flags parameter, use it
> as the explicit context marker.
>
> Fixes: 214e702d4b70 ("scsi: hisi_sas: Adjust task reject period during host reset")
> Fixes: 550c0d89d52d ("scsi: hisi_sas: Replace in_softirq() check in hisi_sas_task_exec()")
> Signed-off-by: Ahmed S. Darwish<a.darwish@linutronix.de>
> Signed-off-by: Sebastian Andrzej Siewior<bigeasy@linutronix.de>
> Cc: Xiaofei Tan<tanxiaofei@huawei.com>
> Cc: Xiang Chen<chenxiang66@hisilicon.com>
> Cc: John Garry<john.garry@huawei.com>

Acked-by: John Garry <john.garry@huawei.com>