]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
scsi: mpt3sas: remove redundant wmb
authorSinan Kaya <okaya@codeaurora.org>
Fri, 7 Apr 2017 19:06:18 +0000 (15:06 -0400)
committerMartin K. Petersen <martin.petersen@oracle.com>
Mon, 24 Apr 2017 22:31:41 +0000 (18:31 -0400)
Due to relaxed ordering requirements on multiple architectures, drivers
are required to use wmb/rmb/mb combinations when they need to guarantee
observability between the memory and the HW.

The mpt3sas driver is already using wmb() for this purpose.  However, it
issues a writel following wmb(). writel() function on arm/arm64
arhictectures have an embedded wmb() call inside.

This results in unnecessary performance loss and code duplication.

writel already guarantees ordering for both cpu and bus. we don't need
additional wmb()

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
Acked-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
Reviewed-by: Brian King <brking@linux.vnet.ibm.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/mpt3sas/mpt3sas_base.c

index 5b7aec5d575a3904be984a9e4541ce3c392cc6c2..18039bba26c43452751c6f492fe0a5e73eaabfc3 100644 (file)
@@ -1025,7 +1025,6 @@ _base_interrupt(int irq, void *bus_id)
                                    0 : ioc->reply_free_host_index + 1;
                                ioc->reply_free[ioc->reply_free_host_index] =
                                    cpu_to_le32(reply);
-                               wmb();
                                writel(ioc->reply_free_host_index,
                                    &ioc->chip->ReplyFreeHostIndex);
                        }
@@ -1074,7 +1073,6 @@ _base_interrupt(int irq, void *bus_id)
                return IRQ_NONE;
        }
 
-       wmb();
        if (ioc->is_warpdrive) {
                writel(reply_q->reply_post_host_index,
                ioc->reply_post_host_index[msix_index]);