]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
scsi: mpt3sas: remove redundant wmb
authorSinan Kaya <okaya@codeaurora.org>
Fri, 7 Apr 2017 19:06:18 +0000 (15:06 -0400)
committerChuck Anderson <chuck.anderson@oracle.com>
Thu, 1 Jun 2017 06:07:23 +0000 (23:07 -0700)
Orabug: 26096353

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>
(cherry picked from commit b1391a5bf83a593bbe92d1f9bddaf563be5c7c9d)
Signed-off-by: Shan Hai <shan.hai@oracle.com>
drivers/scsi/mpt3sas/mpt3sas_base.c

index 7c729ff4b7263db29d213f30e45350a643ec7011..1239cc3caadc90e0c5027866d9141fe33993bb58 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]);