]> git.baikalelectronics.ru Git - kernel.git/commit
scsi: ufs: core: Remove redundant wmb() in ufshcd_send_command()
authorManivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Wed, 4 May 2022 08:42:11 +0000 (14:12 +0530)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 11 May 2022 01:52:53 +0000 (21:52 -0400)
commit19106eac1485ea45a769fd9cbb150429a08e4b22
tree6124480ee5ef31eabd1b8051038e6c26bf441d9b
parent3906f7be15c66697a4b91ec4439ca9e8ffd3d9b3
scsi: ufs: core: Remove redundant wmb() in ufshcd_send_command()

The wmb() inside ufshcd_send_command() is added to make sure that the
doorbell is committed immediately. This leads to couple of expectations:

 1. The doorbell write should complete before the function return.

 2. The doorbell write should not cross the function boundary.

2nd expectation is fullfilled by the Linux memory model as there is a
guarantee that the critical section won't cross the unlock (release)
operation.

1st expectation is not really needed here as there is no following read/
write that depends on the doorbell to be complete implicitly. Even if the
doorbell write is in a CPUs Write Buffer (WB), wmb() won't flush it. And
there is no real need of a WB flush here as well.

So let's get rid of the wmb() that seems redundant.

Link: https://lore.kernel.org/r/20220504084212.11605-5-manivannan.sadhasivam@linaro.org
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Acked-by: Bean Huo <beanhuo@micron.com>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/ufs/ufshcd.c