Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drivers: Remove explicit invocations of mmiowb()

mmiowb() is now implied by spin_unlock() on architectures that require
it, so there is no reason to call it from driver code. This patch was
generated using coccinelle:

@mmiowb@
@@
- mmiowb();

and invoked as:

$ for d in drivers include/linux/qed sound; do \
spatch --include-headers --sp-file mmiowb.cocci --dir $d --in-place; done

NOTE: mmiowb() has only ever guaranteed ordering in conjunction with
spin_unlock(). However, pairing each mmiowb() removal in this patch with
the corresponding call to spin_unlock() is not at all trivial, so there
is a small chance that this change may regress any drivers incorrectly
relying on mmiowb() to order MMIO writes between CPUs using lock-free
synchronisation. If you've ended up bisecting to this commit, you can
reintroduce the mmiowb() calls using wmb() instead, which should restore
the old behaviour on all architectures other than some esoteric ia64
systems.

Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>

+1 -508
-4
drivers/crypto/cavium/nitrox/nitrox_reqmgr.c
··· 303 303 304 304 /* Ring doorbell with count 1 */ 305 305 writeq(1, cmdq->dbell_csr_addr); 306 - /* orders the doorbell rings */ 307 - mmiowb(); 308 306 309 307 cmdq->write_idx = incr_index(idx, 1, ndev->qlen); 310 308 ··· 597 599 * MSI-X interrupt generates if Completion count > Threshold 598 600 */ 599 601 writeq(slc_cnts.value, cmdq->compl_cnt_csr_addr); 600 - /* order the writes */ 601 - mmiowb(); 602 602 603 603 if (atomic_read(&cmdq->backlog_count)) 604 604 schedule_work(&cmdq->backlog_qflush);
-3
drivers/dma/txx9dmac.c
··· 327 327 channel_writel(dc, SAIR, 0); 328 328 channel_writel(dc, DAIR, 0); 329 329 channel_writel(dc, CCR, 0); 330 - mmiowb(); 331 330 } 332 331 333 332 /* Called with dc->lock held and bh disabled */ ··· 953 954 dma_sync_single_for_device(chan2parent(&dc->chan), 954 955 prev->txd.phys, ddev->descsize, 955 956 DMA_TO_DEVICE); 956 - mmiowb(); 957 957 if (!(channel_readl(dc, CSR) & TXX9_DMA_CSR_CHNEN) && 958 958 channel_read_CHAR(dc) == prev->txd.phys) 959 959 /* Restart chain DMA */ ··· 1078 1080 static void txx9dmac_off(struct txx9dmac_dev *ddev) 1079 1081 { 1080 1082 dma_writel(ddev, MCR, 0); 1081 - mmiowb(); 1082 1083 } 1083 1084 1084 1085 static int __init txx9dmac_chan_probe(struct platform_device *pdev)
-1
drivers/firewire/ohci.c
··· 2939 2939 reg_write(ohci, OHCI1394_IRMultiChanMaskLoClear, ~lo); 2940 2940 reg_write(ohci, OHCI1394_IRMultiChanMaskHiSet, hi); 2941 2941 reg_write(ohci, OHCI1394_IRMultiChanMaskLoSet, lo); 2942 - mmiowb(); 2943 2942 ohci->mc_channels = channels; 2944 2943 } 2945 2944
-10
drivers/gpu/drm/i915/intel_hdmi.c
··· 182 182 183 183 I915_WRITE(VIDEO_DIP_CTL, val); 184 184 185 - mmiowb(); 186 185 for (i = 0; i < len; i += 4) { 187 186 I915_WRITE(VIDEO_DIP_DATA, *data); 188 187 data++; ··· 189 190 /* Write every possible data byte to force correct ECC calculation. */ 190 191 for (; i < VIDEO_DIP_DATA_SIZE; i += 4) 191 192 I915_WRITE(VIDEO_DIP_DATA, 0); 192 - mmiowb(); 193 193 194 194 val |= g4x_infoframe_enable(type); 195 195 val &= ~VIDEO_DIP_FREQ_MASK; ··· 235 237 236 238 I915_WRITE(reg, val); 237 239 238 - mmiowb(); 239 240 for (i = 0; i < len; i += 4) { 240 241 I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), *data); 241 242 data++; ··· 242 245 /* Write every possible data byte to force correct ECC calculation. */ 243 246 for (; i < VIDEO_DIP_DATA_SIZE; i += 4) 244 247 I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), 0); 245 - mmiowb(); 246 248 247 249 val |= g4x_infoframe_enable(type); 248 250 val &= ~VIDEO_DIP_FREQ_MASK; ··· 294 298 295 299 I915_WRITE(reg, val); 296 300 297 - mmiowb(); 298 301 for (i = 0; i < len; i += 4) { 299 302 I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), *data); 300 303 data++; ··· 301 306 /* Write every possible data byte to force correct ECC calculation. */ 302 307 for (; i < VIDEO_DIP_DATA_SIZE; i += 4) 303 308 I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), 0); 304 - mmiowb(); 305 309 306 310 val |= g4x_infoframe_enable(type); 307 311 val &= ~VIDEO_DIP_FREQ_MASK; ··· 346 352 347 353 I915_WRITE(reg, val); 348 354 349 - mmiowb(); 350 355 for (i = 0; i < len; i += 4) { 351 356 I915_WRITE(VLV_TVIDEO_DIP_DATA(intel_crtc->pipe), *data); 352 357 data++; ··· 353 360 /* Write every possible data byte to force correct ECC calculation. */ 354 361 for (; i < VIDEO_DIP_DATA_SIZE; i += 4) 355 362 I915_WRITE(VLV_TVIDEO_DIP_DATA(intel_crtc->pipe), 0); 356 - mmiowb(); 357 363 358 364 val |= g4x_infoframe_enable(type); 359 365 val &= ~VIDEO_DIP_FREQ_MASK; ··· 398 406 val &= ~hsw_infoframe_enable(type); 399 407 I915_WRITE(ctl_reg, val); 400 408 401 - mmiowb(); 402 409 for (i = 0; i < len; i += 4) { 403 410 I915_WRITE(hsw_dip_data_reg(dev_priv, cpu_transcoder, 404 411 type, i >> 2), *data); ··· 407 416 for (; i < data_size; i += 4) 408 417 I915_WRITE(hsw_dip_data_reg(dev_priv, cpu_transcoder, 409 418 type, i >> 2), 0); 410 - mmiowb(); 411 419 412 420 val |= hsw_infoframe_enable(type); 413 421 I915_WRITE(ctl_reg, val);
-2
drivers/ide/tx4939ide.c
··· 156 156 u16 sysctl = tx4939ide_readw(base, TX4939IDE_Sys_Ctl); 157 157 158 158 tx4939ide_writew(sysctl | 0x4000, base, TX4939IDE_Sys_Ctl); 159 - mmiowb(); 160 159 /* wait 12GBUSCLK (typ. 60ns @ GBUS200MHz, max 270ns) */ 161 160 ndelay(270); 162 161 tx4939ide_writew(sysctl, base, TX4939IDE_Sys_Ctl); ··· 395 396 396 397 /* Soft Reset */ 397 398 tx4939ide_writew(0x8000, base, TX4939IDE_Sys_Ctl); 398 - mmiowb(); 399 399 /* at least 20 GBUSCLK (typ. 100ns @ GBUS200MHz, max 450ns) */ 400 400 ndelay(450); 401 401 tx4939ide_writew(0x0000, base, TX4939IDE_Sys_Ctl);
-3
drivers/infiniband/hw/hfi1/chip.c
··· 8365 8365 struct hfi1_devdata *dd = rcd->dd; 8366 8366 u32 addr = CCE_INT_CLEAR + (8 * rcd->ireg); 8367 8367 8368 - mmiowb(); 8369 8368 write_csr(dd, addr, rcd->imask); 8370 8369 /* force the above write on the chip and get a value back */ 8371 8370 (void)read_csr(dd, addr); ··· 11802 11803 << RCV_EGR_INDEX_HEAD_HEAD_SHIFT; 11803 11804 write_uctxt_csr(dd, ctxt, RCV_EGR_INDEX_HEAD, reg); 11804 11805 } 11805 - mmiowb(); 11806 11806 reg = ((u64)rcv_intr_count << RCV_HDR_HEAD_COUNTER_SHIFT) | 11807 11807 (((u64)hd & RCV_HDR_HEAD_HEAD_MASK) 11808 11808 << RCV_HDR_HEAD_HEAD_SHIFT); 11809 11809 write_uctxt_csr(dd, ctxt, RCV_HDR_HEAD, reg); 11810 - mmiowb(); 11811 11810 } 11812 11811 11813 11812 u32 hdrqempty(struct hfi1_ctxtdata *rcd)
-1
drivers/infiniband/hw/hfi1/pio.c
··· 1578 1578 sc_del_credit_return_intr(sc); 1579 1579 trace_hfi1_wantpiointr(sc, needint, sc->credit_ctrl); 1580 1580 if (needint) { 1581 - mmiowb(); 1582 1581 sc_return_credits(sc); 1583 1582 } 1584 1583 }
-2
drivers/infiniband/hw/hns/hns_roce_hw_v1.c
··· 1750 1750 1751 1751 writel(val, hcr + 5); 1752 1752 1753 - mmiowb(); 1754 - 1755 1753 return 0; 1756 1754 } 1757 1755
-6
drivers/infiniband/hw/mlx4/qp.c
··· 3744 3744 writel_relaxed(qp->doorbell_qpn, 3745 3745 to_mdev(ibqp->device)->uar_map + MLX4_SEND_DOORBELL); 3746 3746 3747 - /* 3748 - * Make sure doorbells don't leak out of SQ spinlock 3749 - * and reach the HCA out of order. 3750 - */ 3751 - mmiowb(); 3752 - 3753 3747 stamp_send_wqe(qp, ind + qp->sq_spare_wqes - 1); 3754 3748 3755 3749 qp->sq_next_wqe = ind;
-1
drivers/infiniband/hw/mlx5/qp.c
··· 5123 5123 /* Make sure doorbells don't leak out of SQ spinlock 5124 5124 * and reach the HCA out of order. 5125 5125 */ 5126 - mmiowb(); 5127 5126 bf->offset ^= bf->buf_size; 5128 5127 } 5129 5128
-6
drivers/infiniband/hw/mthca/mthca_cmd.c
··· 292 292 err = mthca_cmd_post_hcr(dev, in_param, out_param, in_modifier, 293 293 op_modifier, op, token, event); 294 294 295 - /* 296 - * Make sure that our HCR writes don't get mixed in with 297 - * writes from another CPU starting a FW command. 298 - */ 299 - mmiowb(); 300 - 301 295 mutex_unlock(&dev->cmd.hcr_mutex); 302 296 return err; 303 297 }
-5
drivers/infiniband/hw/mthca/mthca_cq.c
··· 211 211 mthca_write64(MTHCA_TAVOR_CQ_DB_INC_CI | cq->cqn, incr - 1, 212 212 dev->kar + MTHCA_CQ_DOORBELL, 213 213 MTHCA_GET_DOORBELL_LOCK(&dev->doorbell_lock)); 214 - /* 215 - * Make sure doorbells don't leak out of CQ spinlock 216 - * and reach the HCA out of order: 217 - */ 218 - mmiowb(); 219 214 } 220 215 } 221 216
-17
drivers/infiniband/hw/mthca/mthca_qp.c
··· 1809 1809 (qp->qpn << 8) | size0, 1810 1810 dev->kar + MTHCA_SEND_DOORBELL, 1811 1811 MTHCA_GET_DOORBELL_LOCK(&dev->doorbell_lock)); 1812 - /* 1813 - * Make sure doorbells don't leak out of SQ spinlock 1814 - * and reach the HCA out of order: 1815 - */ 1816 - mmiowb(); 1817 1812 } 1818 1813 1819 1814 qp->sq.next_ind = ind; ··· 1918 1923 1919 1924 qp->rq.next_ind = ind; 1920 1925 qp->rq.head += nreq; 1921 - 1922 - /* 1923 - * Make sure doorbells don't leak out of RQ spinlock and reach 1924 - * the HCA out of order: 1925 - */ 1926 - mmiowb(); 1927 1926 1928 1927 spin_unlock_irqrestore(&qp->rq.lock, flags); 1929 1928 return err; ··· 2152 2163 mthca_write64(dbhi, (qp->qpn << 8) | size0, dev->kar + MTHCA_SEND_DOORBELL, 2153 2164 MTHCA_GET_DOORBELL_LOCK(&dev->doorbell_lock)); 2154 2165 } 2155 - 2156 - /* 2157 - * Make sure doorbells don't leak out of SQ spinlock and reach 2158 - * the HCA out of order: 2159 - */ 2160 - mmiowb(); 2161 2166 2162 2167 spin_unlock_irqrestore(&qp->sq.lock, flags); 2163 2168 return err;
-6
drivers/infiniband/hw/mthca/mthca_srq.c
··· 570 570 MTHCA_GET_DOORBELL_LOCK(&dev->doorbell_lock)); 571 571 } 572 572 573 - /* 574 - * Make sure doorbells don't leak out of SRQ spinlock and 575 - * reach the HCA out of order: 576 - */ 577 - mmiowb(); 578 - 579 573 spin_unlock_irqrestore(&srq->lock, flags); 580 574 return err; 581 575 }
-12
drivers/infiniband/hw/qedr/verbs.c
··· 773 773 cq->db.data.agg_flags = flags; 774 774 cq->db.data.value = cpu_to_le32(cons); 775 775 writeq(cq->db.raw, cq->db_addr); 776 - 777 - /* Make sure write would stick */ 778 - mmiowb(); 779 776 } 780 777 781 778 int qedr_arm_cq(struct ib_cq *ibcq, enum ib_cq_notify_flags flags) ··· 2081 2084 2082 2085 if (rdma_protocol_roce(&dev->ibdev, 1)) { 2083 2086 writel(qp->rq.db_data.raw, qp->rq.db); 2084 - /* Make sure write takes effect */ 2085 - mmiowb(); 2086 2087 } 2087 2088 break; 2088 2089 case QED_ROCE_QP_STATE_ERR: ··· 3497 3502 smp_wmb(); 3498 3503 writel(qp->sq.db_data.raw, qp->sq.db); 3499 3504 3500 - /* Make sure write sticks */ 3501 - mmiowb(); 3502 - 3503 3505 spin_unlock_irqrestore(&qp->q_lock, flags); 3504 3506 3505 3507 return rc; ··· 3687 3695 3688 3696 writel(qp->rq.db_data.raw, qp->rq.db); 3689 3697 3690 - /* Make sure write sticks */ 3691 - mmiowb(); 3692 - 3693 3698 if (rdma_protocol_iwarp(&dev->ibdev, 1)) { 3694 3699 writel(qp->rq.iwarp_db2_data.raw, qp->rq.iwarp_db2); 3695 - mmiowb(); 3696 3700 } 3697 3701 3698 3702 wr = wr->next;
-4
drivers/infiniband/hw/qib/qib_iba6120.c
··· 1884 1884 qib_write_kreg(dd, kr_scratch, 0xfeeddeaf); 1885 1885 writel(pa, tidp32); 1886 1886 qib_write_kreg(dd, kr_scratch, 0xdeadbeef); 1887 - mmiowb(); 1888 1887 spin_unlock_irqrestore(tidlockp, flags); 1889 1888 } 1890 1889 ··· 1927 1928 pa |= 2 << 29; 1928 1929 } 1929 1930 writel(pa, tidp32); 1930 - mmiowb(); 1931 1931 } 1932 1932 1933 1933 ··· 2051 2053 { 2052 2054 if (updegr) 2053 2055 qib_write_ureg(rcd->dd, ur_rcvegrindexhead, egrhd, rcd->ctxt); 2054 - mmiowb(); 2055 2056 qib_write_ureg(rcd->dd, ur_rcvhdrhead, hd, rcd->ctxt); 2056 - mmiowb(); 2057 2057 } 2058 2058 2059 2059 static u32 qib_6120_hdrqempty(struct qib_ctxtdata *rcd)
-3
drivers/infiniband/hw/qib/qib_iba7220.c
··· 2175 2175 pa = chippa; 2176 2176 } 2177 2177 writeq(pa, tidptr); 2178 - mmiowb(); 2179 2178 } 2180 2179 2181 2180 /** ··· 2703 2704 { 2704 2705 if (updegr) 2705 2706 qib_write_ureg(rcd->dd, ur_rcvegrindexhead, egrhd, rcd->ctxt); 2706 - mmiowb(); 2707 2707 qib_write_ureg(rcd->dd, ur_rcvhdrhead, hd, rcd->ctxt); 2708 - mmiowb(); 2709 2708 } 2710 2709 2711 2710 static u32 qib_7220_hdrqempty(struct qib_ctxtdata *rcd)
-3
drivers/infiniband/hw/qib/qib_iba7322.c
··· 3793 3793 pa = chippa; 3794 3794 } 3795 3795 writeq(pa, tidptr); 3796 - mmiowb(); 3797 3796 } 3798 3797 3799 3798 /** ··· 4439 4440 adjust_rcv_timeout(rcd, npkts); 4440 4441 if (updegr) 4441 4442 qib_write_ureg(rcd->dd, ur_rcvegrindexhead, egrhd, rcd->ctxt); 4442 - mmiowb(); 4443 4443 qib_write_ureg(rcd->dd, ur_rcvhdrhead, hd, rcd->ctxt); 4444 4444 qib_write_ureg(rcd->dd, ur_rcvhdrhead, hd, rcd->ctxt); 4445 - mmiowb(); 4446 4445 } 4447 4446 4448 4447 static u32 qib_7322_hdrqempty(struct qib_ctxtdata *rcd)
-4
drivers/infiniband/hw/qib/qib_sd7220.c
··· 1068 1068 for (idx = 0; idx < NUM_DDS_REGS; ++idx) { 1069 1069 data = ((dds_reg_map & 0xF) << 4) | TX_FAST_ELT; 1070 1070 writeq(data, iaddr + idx); 1071 - mmiowb(); 1072 1071 qib_read_kreg32(dd, kr_scratch); 1073 1072 dds_reg_map >>= 4; 1074 1073 for (midx = 0; midx < DDS_ROWS; ++midx) { ··· 1075 1076 1076 1077 data = dds_init_vals[midx].reg_vals[idx]; 1077 1078 writeq(data, daddr); 1078 - mmiowb(); 1079 1079 qib_read_kreg32(dd, kr_scratch); 1080 1080 } /* End inner for (vals for this reg, each row) */ 1081 1081 } /* end outer for (regs to be stored) */ ··· 1096 1098 didx = idx + min_idx; 1097 1099 /* Store the next RXEQ register address */ 1098 1100 writeq(rxeq_init_vals[idx].rdesc, iaddr + didx); 1099 - mmiowb(); 1100 1101 qib_read_kreg32(dd, kr_scratch); 1101 1102 /* Iterate through RXEQ values */ 1102 1103 for (vidx = 0; vidx < 4; vidx++) { 1103 1104 data = rxeq_init_vals[idx].rdata[vidx]; 1104 1105 writeq(data, taddr + (vidx << 6) + idx); 1105 - mmiowb(); 1106 1106 qib_read_kreg32(dd, kr_scratch); 1107 1107 } 1108 1108 } /* end outer for (Reg-writes for RXEQ) */
-8
drivers/media/pci/dt3155/dt3155.c
··· 46 46 u32 tmp = index; 47 47 48 48 iowrite32((tmp << 17) | IIC_READ, addr + IIC_CSR2); 49 - mmiowb(); 50 49 udelay(45); /* wait at least 43 usec for NEW_CYCLE to clear */ 51 50 if (ioread32(addr + IIC_CSR2) & NEW_CYCLE) 52 51 return -EIO; /* error: NEW_CYCLE not cleared */ ··· 76 77 u32 tmp = index; 77 78 78 79 iowrite32((tmp << 17) | IIC_WRITE | data, addr + IIC_CSR2); 79 - mmiowb(); 80 80 udelay(65); /* wait at least 63 usec for NEW_CYCLE to clear */ 81 81 if (ioread32(addr + IIC_CSR2) & NEW_CYCLE) 82 82 return -EIO; /* error: NEW_CYCLE not cleared */ ··· 102 104 u32 tmp = index; 103 105 104 106 iowrite32((tmp << 17) | IIC_WRITE | data, addr + IIC_CSR2); 105 - mmiowb(); 106 107 } 107 108 108 109 /** ··· 261 264 FLD_DN_ODD | FLD_DN_EVEN | 262 265 CAP_CONT_EVEN | CAP_CONT_ODD, 263 266 ipd->regs + CSR1); 264 - mmiowb(); 265 267 } 266 268 267 269 spin_lock(&ipd->lock); ··· 278 282 iowrite32(dma_addr + ipd->width, ipd->regs + ODD_DMA_START); 279 283 iowrite32(ipd->width, ipd->regs + EVEN_DMA_STRIDE); 280 284 iowrite32(ipd->width, ipd->regs + ODD_DMA_STRIDE); 281 - mmiowb(); 282 285 } 283 286 284 287 /* enable interrupts, clear all irq flags */ ··· 432 437 /* resetting the adapter */ 433 438 iowrite32(ADDR_ERR_ODD | ADDR_ERR_EVEN | FLD_CRPT_ODD | FLD_CRPT_EVEN | 434 439 FLD_DN_ODD | FLD_DN_EVEN, pd->regs + CSR1); 435 - mmiowb(); 436 440 msleep(20); 437 441 438 442 /* initializing adapter registers */ 439 443 iowrite32(FIFO_EN | SRST, pd->regs + CSR1); 440 - mmiowb(); 441 444 iowrite32(0xEEEEEE01, pd->regs + EVEN_PIXEL_FMT); 442 445 iowrite32(0xEEEEEE01, pd->regs + ODD_PIXEL_FMT); 443 446 iowrite32(0x00000020, pd->regs + FIFO_TRIGER); ··· 447 454 iowrite32(0, pd->regs + MASK_LENGTH); 448 455 iowrite32(0x0005007C, pd->regs + FIFO_FLAG_CNT); 449 456 iowrite32(0x01010101, pd->regs + IIC_CLK_DUR); 450 - mmiowb(); 451 457 452 458 /* verifying that we have a DT3155 board (not just a SAA7116 chip) */ 453 459 read_i2c_reg(pd->regs, DT_ID, &tmp);
-4
drivers/memstick/host/jmb38x_ms.c
··· 644 644 writel(HOST_CONTROL_RESET_REQ | HOST_CONTROL_CLOCK_EN 645 645 | readl(host->addr + HOST_CONTROL), 646 646 host->addr + HOST_CONTROL); 647 - mmiowb(); 648 647 649 648 for (cnt = 0; cnt < 20; ++cnt) { 650 649 if (!(HOST_CONTROL_RESET_REQ ··· 658 659 writel(HOST_CONTROL_RESET | HOST_CONTROL_CLOCK_EN 659 660 | readl(host->addr + HOST_CONTROL), 660 661 host->addr + HOST_CONTROL); 661 - mmiowb(); 662 662 663 663 for (cnt = 0; cnt < 20; ++cnt) { 664 664 if (!(HOST_CONTROL_RESET ··· 670 672 return -EIO; 671 673 672 674 reset_ok: 673 - mmiowb(); 674 675 writel(INT_STATUS_ALL, host->addr + INT_SIGNAL_ENABLE); 675 676 writel(INT_STATUS_ALL, host->addr + INT_STATUS_ENABLE); 676 677 return 0; ··· 1006 1009 tasklet_kill(&host->notify); 1007 1010 writel(0, host->addr + INT_SIGNAL_ENABLE); 1008 1011 writel(0, host->addr + INT_STATUS_ENABLE); 1009 - mmiowb(); 1010 1012 dev_dbg(&jm->pdev->dev, "interrupts off\n"); 1011 1013 spin_lock_irqsave(&host->lock, flags); 1012 1014 if (host->req) {
-2
drivers/misc/ioc4.c
··· 156 156 157 157 /* Reset to power-on state */ 158 158 writel(0, &idd->idd_misc_regs->int_out.raw); 159 - mmiowb(); 160 159 161 160 /* Set up square wave */ 162 161 int_out.raw = 0; ··· 163 164 int_out.fields.mode = IOC4_INT_OUT_MODE_TOGGLE; 164 165 int_out.fields.diag = 0; 165 166 writel(int_out.raw, &idd->idd_misc_regs->int_out.raw); 166 - mmiowb(); 167 167 168 168 /* Check square wave period averaged over some number of cycles */ 169 169 start = ktime_get_ns();
-3
drivers/misc/mei/hw-me.c
··· 350 350 hcsr |= H_IG; 351 351 hcsr &= ~H_RST; 352 352 mei_hcsr_set(dev, hcsr); 353 - 354 - /* complete this write before we set host ready on another CPU */ 355 - mmiowb(); 356 353 } 357 354 358 355 /**
-1
drivers/misc/tifm_7xx1.c
··· 403 403 fm->eject = tifm_7xx1_dummy_eject; 404 404 fm->has_ms_pif = tifm_7xx1_dummy_has_ms_pif; 405 405 writel(TIFM_IRQ_SETALL, fm->addr + FM_CLEAR_INTERRUPT_ENABLE); 406 - mmiowb(); 407 406 free_irq(dev->irq, fm); 408 407 409 408 tifm_remove_adapter(fm);
-1
drivers/mmc/host/alcor.c
··· 967 967 alcor_request_complete(host, 0); 968 968 } 969 969 970 - mmiowb(); 971 970 mutex_unlock(&host->cmd_mutex); 972 971 } 973 972
-13
drivers/mmc/host/sdhci.c
··· 1807 1807 sdhci_send_command(host, mrq->cmd); 1808 1808 } 1809 1809 1810 - mmiowb(); 1811 1810 spin_unlock_irqrestore(&host->lock, flags); 1812 1811 } 1813 1812 EXPORT_SYMBOL_GPL(sdhci_request); ··· 2009 2010 */ 2010 2011 if (host->quirks & SDHCI_QUIRK_RESET_CMD_DATA_ON_IOS) 2011 2012 sdhci_do_reset(host, SDHCI_RESET_CMD | SDHCI_RESET_DATA); 2012 - 2013 - mmiowb(); 2014 2013 } 2015 2014 EXPORT_SYMBOL_GPL(sdhci_set_ios); 2016 2015 ··· 2102 2105 2103 2106 sdhci_writel(host, host->ier, SDHCI_INT_ENABLE); 2104 2107 sdhci_writel(host, host->ier, SDHCI_SIGNAL_ENABLE); 2105 - mmiowb(); 2106 2108 } 2107 2109 } 2108 2110 ··· 2349 2353 2350 2354 host->tuning_done = 0; 2351 2355 2352 - mmiowb(); 2353 2356 spin_unlock_irqrestore(&host->lock, flags); 2354 2357 2355 2358 /* Wait for Buffer Read Ready interrupt */ ··· 2700 2705 2701 2706 host->mrqs_done[i] = NULL; 2702 2707 2703 - mmiowb(); 2704 2708 spin_unlock_irqrestore(&host->lock, flags); 2705 2709 2706 2710 mmc_request_done(host->mmc, mrq); ··· 2733 2739 sdhci_finish_mrq(host, host->cmd->mrq); 2734 2740 } 2735 2741 2736 - mmiowb(); 2737 2742 spin_unlock_irqrestore(&host->lock, flags); 2738 2743 } 2739 2744 ··· 2763 2770 } 2764 2771 } 2765 2772 2766 - mmiowb(); 2767 2773 spin_unlock_irqrestore(&host->lock, flags); 2768 2774 } 2769 2775 ··· 3243 3251 mmc->ops->set_ios(mmc, &mmc->ios); 3244 3252 } else { 3245 3253 sdhci_init(host, (host->mmc->pm_flags & MMC_PM_KEEP_POWER)); 3246 - mmiowb(); 3247 3254 } 3248 3255 3249 3256 if (host->irq_wake_enabled) { ··· 3382 3391 mmc_hostname(mmc), host->ier, 3383 3392 sdhci_readl(host, SDHCI_INT_STATUS)); 3384 3393 3385 - mmiowb(); 3386 3394 spin_unlock_irqrestore(&host->lock, flags); 3387 3395 } 3388 3396 EXPORT_SYMBOL_GPL(sdhci_cqe_enable); ··· 3406 3416 mmc_hostname(mmc), host->ier, 3407 3417 sdhci_readl(host, SDHCI_INT_STATUS)); 3408 3418 3409 - mmiowb(); 3410 3419 spin_unlock_irqrestore(&host->lock, flags); 3411 3420 } 3412 3421 EXPORT_SYMBOL_GPL(sdhci_cqe_disable); ··· 4243 4254 mmc_hostname(mmc), ret); 4244 4255 goto unirq; 4245 4256 } 4246 - 4247 - mmiowb(); 4248 4257 4249 4258 ret = mmc_add_host(mmc); 4250 4259 if (ret)
-3
drivers/mmc/host/tifm_sd.c
··· 889 889 struct tifm_dev *sock = host->dev; 890 890 891 891 writel(0, sock->addr + SOCK_MMCSD_INT_ENABLE); 892 - mmiowb(); 893 892 host->clk_div = 61; 894 893 host->clk_freq = 20000000; 895 894 writel(TIFM_MMCSD_RESET, sock->addr + SOCK_MMCSD_SYSTEM_CONTROL); ··· 939 940 writel(TIFM_MMCSD_CERR | TIFM_MMCSD_BRS | TIFM_MMCSD_EOC 940 941 | TIFM_MMCSD_ERRMASK, 941 942 sock->addr + SOCK_MMCSD_INT_ENABLE); 942 - mmiowb(); 943 943 944 944 return 0; 945 945 } ··· 1003 1005 spin_lock_irqsave(&sock->lock, flags); 1004 1006 host->eject = 1; 1005 1007 writel(0, sock->addr + SOCK_MMCSD_INT_ENABLE); 1006 - mmiowb(); 1007 1008 spin_unlock_irqrestore(&sock->lock, flags); 1008 1009 1009 1010 tasklet_kill(&host->finish_tasklet);
-10
drivers/mmc/host/via-sdmmc.c
··· 686 686 via_sdc_send_command(host, mrq->cmd); 687 687 } 688 688 689 - mmiowb(); 690 689 spin_unlock_irqrestore(&host->lock, flags); 691 690 } 692 691 ··· 710 711 gatt &= ~VIA_CRDR_PCICLKGATT_PAD_PWRON; 711 712 writeb(gatt, host->pcictrl_mmiobase + VIA_CRDR_PCICLKGATT); 712 713 713 - mmiowb(); 714 714 spin_unlock_irqrestore(&host->lock, flags); 715 715 716 716 via_pwron_sleep(host); ··· 768 770 if (readb(addrbase + VIA_CRDR_PCISDCCLK) != clock) 769 771 writeb(clock, addrbase + VIA_CRDR_PCISDCCLK); 770 772 771 - mmiowb(); 772 773 spin_unlock_irqrestore(&host->lock, flags); 773 774 774 775 if (ios->power_mode != MMC_POWER_OFF) ··· 827 830 via_restore_pcictrlreg(host); 828 831 via_restore_sdcreg(host); 829 832 830 - mmiowb(); 831 833 spin_unlock_irqrestore(&host->lock, flags); 832 834 } 833 835 ··· 921 925 922 926 result = IRQ_HANDLED; 923 927 924 - mmiowb(); 925 928 out: 926 929 spin_unlock(&sdhost->lock); 927 930 ··· 955 960 } 956 961 } 957 962 958 - mmiowb(); 959 963 spin_unlock_irqrestore(&sdhost->lock, flags); 960 964 } 961 965 ··· 1006 1012 tasklet_schedule(&host->finish_tasklet); 1007 1013 } 1008 1014 1009 - mmiowb(); 1010 1015 spin_unlock_irqrestore(&host->lock, flags); 1011 1016 1012 1017 via_reset_pcictrl(host); ··· 1013 1020 spin_lock_irqsave(&host->lock, flags); 1014 1021 } 1015 1022 1016 - mmiowb(); 1017 1023 spin_unlock_irqrestore(&host->lock, flags); 1018 1024 1019 1025 via_print_pcictrl(host); ··· 1180 1188 1181 1189 /* Disable generating further interrupts */ 1182 1190 writeb(0x0, sdhost->pcictrl_mmiobase + VIA_CRDR_PCIINTCTRL); 1183 - mmiowb(); 1184 1191 1185 1192 if (sdhost->mrq) { 1186 1193 pr_err("%s: Controller removed during " ··· 1188 1197 /* make sure all DMA is stopped */ 1189 1198 writel(VIA_CRDR_DMACTRL_SFTRST, 1190 1199 sdhost->ddma_mmiobase + VIA_CRDR_DMACTRL); 1191 - mmiowb(); 1192 1200 sdhost->mrq->cmd->error = -ENOMEDIUM; 1193 1201 if (sdhost->mrq->stop) 1194 1202 sdhost->mrq->stop->error = -ENOMEDIUM;
-2
drivers/mtd/nand/raw/r852.c
··· 45 45 int address, uint8_t value) 46 46 { 47 47 writeb(value, dev->mmio + address); 48 - mmiowb(); 49 48 } 50 49 51 50 ··· 60 61 int address, uint32_t value) 61 62 { 62 63 writel(cpu_to_le32(value), dev->mmio + address); 63 - mmiowb(); 64 64 } 65 65 66 66 /* returns pointer to our private structure */
-1
drivers/mtd/nand/raw/txx9ndfmc.c
··· 159 159 if ((ctrl & NAND_CTRL_CHANGE) && cmd == NAND_CMD_NONE) 160 160 txx9ndfmc_write(dev, 0, TXX9_NDFDTR); 161 161 } 162 - mmiowb(); 163 162 } 164 163 165 164 static int txx9ndfmc_dev_ready(struct nand_chip *chip)
-1
drivers/net/ethernet/aeroflex/greth.c
··· 613 613 napi_schedule(&greth->napi); 614 614 } 615 615 616 - mmiowb(); 617 616 spin_unlock(&greth->devlock); 618 617 619 618 return retval;
-4
drivers/net/ethernet/alacritech/slicoss.c
··· 345 345 if (sdev->promisc != set_promisc) { 346 346 sdev->promisc = set_promisc; 347 347 slic_configure_rcv(sdev); 348 - /* make sure writes to receiver cant leak out of the lock */ 349 - mmiowb(); 350 348 } 351 349 spin_unlock_bh(&sdev->link_lock); 352 350 } ··· 1459 1461 1460 1462 if (slic_get_free_tx_descs(txq) < SLIC_MAX_REQ_TX_DESCS) 1461 1463 netif_stop_queue(dev); 1462 - /* make sure writes to io-memory cant leak out of tx queue lock */ 1463 - mmiowb(); 1464 1464 1465 1465 return NETDEV_TX_OK; 1466 1466 drop_skb:
-1
drivers/net/ethernet/amazon/ena/ena_com.c
··· 2016 2016 mb(); 2017 2017 writel_relaxed((u32)aenq->head, 2018 2018 dev->reg_bar + ENA_REGS_AENQ_HEAD_DB_OFF); 2019 - mmiowb(); 2020 2019 } 2021 2020 2022 2021 int ena_com_dev_reset(struct ena_com_dev *ena_dev,
-1
drivers/net/ethernet/atheros/atlx/atl1.c
··· 2439 2439 atl1_tx_map(adapter, skb, ptpd); 2440 2440 atl1_tx_queue(adapter, count, ptpd); 2441 2441 atl1_update_mailbox(adapter); 2442 - mmiowb(); 2443 2442 return NETDEV_TX_OK; 2444 2443 } 2445 2444
-1
drivers/net/ethernet/atheros/atlx/atl2.c
··· 908 908 ATL2_WRITE_REGW(&adapter->hw, REG_MB_TXD_WR_IDX, 909 909 (adapter->txd_write_ptr >> 2)); 910 910 911 - mmiowb(); 912 911 dev_consume_skb_any(skb); 913 912 return NETDEV_TX_OK; 914 913 }
-4
drivers/net/ethernet/broadcom/bnx2.c
··· 3305 3305 3306 3306 BNX2_WR(bp, rxr->rx_bseq_addr, rxr->rx_prod_bseq); 3307 3307 3308 - mmiowb(); 3309 - 3310 3308 return rx_pkt; 3311 3309 3312 3310 } ··· 6720 6722 6721 6723 BNX2_WR16(bp, txr->tx_bidx_addr, prod); 6722 6724 BNX2_WR(bp, txr->tx_bseq_addr, txr->tx_prod_bseq); 6723 - 6724 - mmiowb(); 6725 6725 6726 6726 txr->tx_prod = prod; 6727 6727
-2
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
··· 4166 4166 4167 4167 DOORBELL_RELAXED(bp, txdata->cid, txdata->tx_db.raw); 4168 4168 4169 - mmiowb(); 4170 - 4171 4169 txdata->tx_bd_prod += nbd; 4172 4170 4173 4171 if (unlikely(bnx2x_tx_avail(bp, txdata) < MAX_DESC_PER_TX_PKT)) {
-4
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h
··· 527 527 REG_WR_RELAXED(bp, fp->ustorm_rx_prods_offset + i * 4, 528 528 ((u32 *)&rx_prods)[i]); 529 529 530 - mmiowb(); 531 - 532 530 DP(NETIF_MSG_RX_STATUS, 533 531 "queue[%d]: wrote bd_prod %u cqe_prod %u sge_prod %u\n", 534 532 fp->index, bd_prod, rx_comp_prod, rx_sge_prod); ··· 651 653 REG_WR(bp, igu_addr, cmd_data.sb_id_and_flags); 652 654 653 655 /* Make sure that ACK is written */ 654 - mmiowb(); 655 656 barrier(); 656 657 } 657 658 ··· 671 674 REG_WR(bp, hc_addr, (*(u32 *)&igu_ack)); 672 675 673 676 /* Make sure that ACK is written */ 674 - mmiowb(); 675 677 barrier(); 676 678 } 677 679
-1
drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c
··· 2623 2623 wmb(); 2624 2624 DOORBELL_RELAXED(bp, txdata->cid, txdata->tx_db.raw); 2625 2625 2626 - mmiowb(); 2627 2626 barrier(); 2628 2627 2629 2628 num_pkts++;
-29
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
··· 869 869 "write %x to HC %d (addr 0x%x)\n", 870 870 val, port, addr); 871 871 872 - /* flush all outstanding writes */ 873 - mmiowb(); 874 - 875 872 REG_WR(bp, addr, val); 876 873 if (REG_RD(bp, addr) != val) 877 874 BNX2X_ERR("BUG! Proper val not read from IGU!\n"); ··· 883 886 IGU_PF_CONF_ATTN_BIT_EN); 884 887 885 888 DP(NETIF_MSG_IFDOWN, "write %x to IGU\n", val); 886 - 887 - /* flush all outstanding writes */ 888 - mmiowb(); 889 889 890 890 REG_WR(bp, IGU_REG_PF_CONFIGURATION, val); 891 891 if (REG_RD(bp, IGU_REG_PF_CONFIGURATION) != val) ··· 1589 1595 /* 1590 1596 * Ensure that HC_CONFIG is written before leading/trailing edge config 1591 1597 */ 1592 - mmiowb(); 1593 1598 barrier(); 1594 1599 1595 1600 if (!CHIP_IS_E1(bp)) { ··· 1604 1611 REG_WR(bp, HC_REG_TRAILING_EDGE_0 + port*8, val); 1605 1612 REG_WR(bp, HC_REG_LEADING_EDGE_0 + port*8, val); 1606 1613 } 1607 - 1608 - /* Make sure that interrupts are indeed enabled from here on */ 1609 - mmiowb(); 1610 1614 } 1611 1615 1612 1616 static void bnx2x_igu_int_enable(struct bnx2x *bp) ··· 1664 1674 1665 1675 REG_WR(bp, IGU_REG_TRAILING_EDGE_LATCH, val); 1666 1676 REG_WR(bp, IGU_REG_LEADING_EDGE_LATCH, val); 1667 - 1668 - /* Make sure that interrupts are indeed enabled from here on */ 1669 - mmiowb(); 1670 1677 } 1671 1678 1672 1679 void bnx2x_int_enable(struct bnx2x *bp) ··· 3820 3833 3821 3834 REG_WR16_RELAXED(bp, BAR_XSTRORM_INTMEM + XSTORM_SPQ_PROD_OFFSET(func), 3822 3835 bp->spq_prod_idx); 3823 - mmiowb(); 3824 3836 } 3825 3837 3826 3838 /** ··· 5230 5244 { 5231 5245 /* No memory barriers */ 5232 5246 storm_memset_eq_prod(bp, prod, BP_FUNC(bp)); 5233 - mmiowb(); 5234 5247 } 5235 5248 5236 5249 static int bnx2x_cnic_handle_cfc_del(struct bnx2x *bp, u32 cid, ··· 6498 6513 6499 6514 /* flush all */ 6500 6515 mb(); 6501 - mmiowb(); 6502 6516 } 6503 6517 6504 6518 void bnx2x_pre_irq_nic_init(struct bnx2x *bp) ··· 6537 6553 6538 6554 /* flush all before enabling interrupts */ 6539 6555 mb(); 6540 - mmiowb(); 6541 6556 6542 6557 bnx2x_int_enable(bp); 6543 6558 ··· 7758 7775 DP(NETIF_MSG_HW, "write 0x%08x to IGU(via GRC) addr 0x%x\n", 7759 7776 data, igu_addr_data); 7760 7777 REG_WR(bp, igu_addr_data, data); 7761 - mmiowb(); 7762 7778 barrier(); 7763 7779 DP(NETIF_MSG_HW, "write 0x%08x to IGU(via GRC) addr 0x%x\n", 7764 7780 ctl, igu_addr_ctl); 7765 7781 REG_WR(bp, igu_addr_ctl, ctl); 7766 - mmiowb(); 7767 7782 barrier(); 7768 7783 7769 7784 /* wait for clean up to finish */ ··· 9531 9550 9532 9551 DP(NETIF_MSG_HW | NETIF_MSG_IFUP, "%s gates #2, #3 and #4\n", 9533 9552 close ? "closing" : "opening"); 9534 - mmiowb(); 9535 9553 } 9536 9554 9537 9555 #define SHARED_MF_CLP_MAGIC 0x80000000 /* `magic' bit */ ··· 9654 9674 if (!CHIP_IS_E1(bp)) { 9655 9675 REG_WR(bp, PXP2_REG_RD_START_INIT, 0); 9656 9676 REG_WR(bp, PXP2_REG_RQ_RBC_DONE, 0); 9657 - mmiowb(); 9658 9677 } 9659 9678 } 9660 9679 ··· 9753 9774 reset_mask1 & (~not_reset_mask1)); 9754 9775 9755 9776 barrier(); 9756 - mmiowb(); 9757 9777 9758 9778 REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_2_SET, 9759 9779 reset_mask2 & (~stay_reset2)); 9760 9780 9761 9781 barrier(); 9762 - mmiowb(); 9763 9782 9764 9783 REG_WR(bp, GRCBASE_MISC + MISC_REGISTERS_RESET_REG_1_SET, reset_mask1); 9765 - mmiowb(); 9766 9784 } 9767 9785 9768 9786 /** ··· 9842 9866 /* Clear "unprepared" bit */ 9843 9867 REG_WR(bp, MISC_REG_UNPREPARED, 0); 9844 9868 barrier(); 9845 - 9846 - /* Make sure all is written to the chip before the reset */ 9847 - mmiowb(); 9848 9869 9849 9870 /* Wait for 1ms to empty GLUE and PCI-E core queues, 9850 9871 * PSWHST, GRC and PSWRD Tetris buffer. ··· 14801 14828 if (rc) 14802 14829 break; 14803 14830 14804 - mmiowb(); 14805 14831 barrier(); 14806 14832 14807 14833 /* Start accepting on iSCSI L2 ring */ ··· 14835 14863 if (!bnx2x_wait_sp_comp(bp, sp_bits)) 14836 14864 BNX2X_ERR("rx_mode completion timed out!\n"); 14837 14865 14838 - mmiowb(); 14839 14866 barrier(); 14840 14867 14841 14868 /* Unset iSCSI L2 MAC */
-1
drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c
··· 5039 5039 /* As no ramrod is sent, complete the command immediately */ 5040 5040 o->complete_cmd(bp, o, BNX2X_Q_CMD_INIT); 5041 5041 5042 - mmiowb(); 5043 5042 smp_mb(); 5044 5043 5045 5044 return 0;
-2
drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c
··· 100 100 DP(NETIF_MSG_HW, "write 0x%08x to IGU(via GRC) addr 0x%x\n", 101 101 cmd_data.sb_id_and_flags, igu_addr_data); 102 102 REG_WR(bp, igu_addr_data, cmd_data.sb_id_and_flags); 103 - mmiowb(); 104 103 barrier(); 105 104 106 105 DP(NETIF_MSG_HW, "write 0x%08x to IGU(via GRC) addr 0x%x\n", 107 106 ctl, igu_addr_ctl); 108 107 REG_WR(bp, igu_addr_ctl, ctl); 109 - mmiowb(); 110 108 barrier(); 111 109 } 112 110
-4
drivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.c
··· 172 172 /* Trigger the PF FW */ 173 173 writeb_relaxed(1, &zone_data->trigger.vf_pf_channel.addr_valid); 174 174 175 - mmiowb(); 176 - 177 175 /* Wait for PF to complete */ 178 176 while ((tout >= 0) && (!*done)) { 179 177 msleep(interval); ··· 1177 1179 1178 1180 /* ack the FW */ 1179 1181 storm_memset_vf_mbx_ack(bp, vf->abs_vfid); 1180 - mmiowb(); 1181 1182 1182 1183 /* copy the response header including status-done field, 1183 1184 * must be last dmae, must be after FW is acked ··· 2171 2174 */ 2172 2175 storm_memset_vf_mbx_ack(bp, vf->abs_vfid); 2173 2176 /* Firmware ack should be written before unlocking channel */ 2174 - mmiowb(); 2175 2177 bnx2x_unlock_vf_pf_channel(bp, vf, mbx->first_tlv.tl.type); 2176 2178 } 2177 2179 }
-3
drivers/net/ethernet/broadcom/bnxt/bnxt.c
··· 556 556 557 557 tx_done: 558 558 559 - mmiowb(); 560 - 561 559 if (unlikely(bnxt_tx_avail(bp, txr) <= MAX_SKB_FRAGS + 1)) { 562 560 if (skb->xmit_more && !tx_buf->is_push) 563 561 bnxt_db_write(bp, &txr->tx_db, prod); ··· 2121 2123 &dim_sample); 2122 2124 net_dim(&cpr->dim, dim_sample); 2123 2125 } 2124 - mmiowb(); 2125 2126 return work_done; 2126 2127 } 2127 2128
-6
drivers/net/ethernet/broadcom/tg3.c
··· 1073 1073 struct tg3 *tp = tnapi->tp; 1074 1074 1075 1075 tw32_mailbox(tnapi->int_mbox, tnapi->last_tag << 24); 1076 - mmiowb(); 1077 1076 1078 1077 /* When doing tagged status, this work check is unnecessary. 1079 1078 * The last_tag we write above tells the chip which piece of ··· 6998 6999 tw32_rx_mbox(TG3_RX_JMB_PROD_IDX_REG, 6999 7000 tpr->rx_jmb_prod_idx); 7000 7001 } 7001 - mmiowb(); 7002 7002 } else if (work_mask) { 7003 7003 /* rx_std_buffers[] and rx_jmb_buffers[] entries must be 7004 7004 * updated before the producer indices can be updated. ··· 7208 7210 tw32_rx_mbox(TG3_RX_JMB_PROD_IDX_REG, 7209 7211 dpr->rx_jmb_prod_idx); 7210 7212 7211 - mmiowb(); 7212 - 7213 7213 if (err) 7214 7214 tw32_f(HOSTCC_MODE, tp->coal_now); 7215 7215 } ··· 7274 7278 HOSTCC_MODE_ENABLE | 7275 7279 tnapi->coal_now); 7276 7280 } 7277 - mmiowb(); 7278 7281 break; 7279 7282 } 7280 7283 } ··· 8154 8159 if (!skb->xmit_more || netif_xmit_stopped(txq)) { 8155 8160 /* Packets are ready, update Tx producer idx on card. */ 8156 8161 tw32_tx_mbox(tnapi->prodmbox, entry); 8157 - mmiowb(); 8158 8162 } 8159 8163 8160 8164 return NETDEV_TX_OK;
-10
drivers/net/ethernet/cavium/liquidio/cn66xx_device.c
··· 38 38 lio_pci_readq(oct, CN6XXX_CIU_SOFT_RST); 39 39 lio_pci_writeq(oct, 1, CN6XXX_CIU_SOFT_RST); 40 40 41 - /* make sure that the reset is written before starting timer */ 42 - mmiowb(); 43 - 44 41 /* Wait for 10ms as Octeon resets. */ 45 42 mdelay(100); 46 43 ··· 484 487 485 488 /* Disable Interrupts */ 486 489 writeq(0, cn6xxx->intr_enb_reg64); 487 - 488 - /* make sure interrupts are really disabled */ 489 - mmiowb(); 490 490 } 491 491 492 492 static void lio_cn6xxx_get_pcie_qlmport(struct octeon_device *oct) ··· 548 554 value = octeon_read_csr(oct, reg); 549 555 value &= ~(1 << oq_no); 550 556 octeon_write_csr(oct, reg, value); 551 - 552 - /* Ensure that the enable register is written. 553 - */ 554 - mmiowb(); 555 557 556 558 spin_unlock(&cn6xxx->lock_for_droq_int_enb_reg); 557 559 }
-1
drivers/net/ethernet/cavium/liquidio/octeon_device.c
··· 1449 1449 iq->pkt_in_done -= iq->pkts_processed; 1450 1450 iq->pkts_processed = 0; 1451 1451 /* this write needs to be flushed before we release the lock */ 1452 - mmiowb(); 1453 1452 spin_unlock_bh(&iq->lock); 1454 1453 oct = iq->oct_dev; 1455 1454 }
-4
drivers/net/ethernet/cavium/liquidio/octeon_droq.c
··· 513 513 */ 514 514 wmb(); 515 515 writel(desc_refilled, droq->pkts_credit_reg); 516 - /* make sure mmio write completes */ 517 - mmiowb(); 518 516 519 517 if (pkts_credit + desc_refilled >= CN23XX_SLI_DEF_BP) 520 518 reschedule = 0; ··· 710 712 */ 711 713 wmb(); 712 714 writel(desc_refilled, droq->pkts_credit_reg); 713 - /* make sure mmio write completes */ 714 - mmiowb(); 715 715 } 716 716 } 717 717 } /* for (each packet)... */
-1
drivers/net/ethernet/cavium/liquidio/request_manager.c
··· 278 278 if (atomic_read(&oct->status) == OCT_DEV_RUNNING) { 279 279 writel(iq->fill_cnt, iq->doorbell_reg); 280 280 /* make sure doorbell write goes through */ 281 - mmiowb(); 282 281 iq->fill_cnt = 0; 283 282 iq->last_db_time = jiffies; 284 283 return;
-5
drivers/net/ethernet/intel/e1000/e1000_main.c
··· 3270 3270 if (!skb->xmit_more || 3271 3271 netif_xmit_stopped(netdev_get_tx_queue(netdev, 0))) { 3272 3272 writel(tx_ring->next_to_use, hw->hw_addr + tx_ring->tdt); 3273 - /* we need this if more than one processor can write to 3274 - * our tail at a time, it synchronizes IO on IA64/Altix 3275 - * systems 3276 - */ 3277 - mmiowb(); 3278 3273 } 3279 3274 } else { 3280 3275 dev_kfree_skb_any(skb);
-7
drivers/net/ethernet/intel/e1000e/netdev.c
··· 3816 3816 if (tx_ring->next_to_use == tx_ring->count) 3817 3817 tx_ring->next_to_use = 0; 3818 3818 ew32(TDT(0), tx_ring->next_to_use); 3819 - mmiowb(); 3820 3819 usleep_range(200, 250); 3821 3820 } 3822 3821 ··· 5903 5904 tx_ring->next_to_use); 5904 5905 else 5905 5906 writel(tx_ring->next_to_use, tx_ring->tail); 5906 - 5907 - /* we need this if more than one processor can write 5908 - * to our tail at a time, it synchronizes IO on 5909 - *IA64/Altix systems 5910 - */ 5911 - mmiowb(); 5912 5907 } 5913 5908 } else { 5914 5909 dev_kfree_skb_any(skb);
-2
drivers/net/ethernet/intel/fm10k/fm10k_iov.c
··· 321 321 pci_read_config_dword(pdev, pos + PCI_ERR_UNCOR_MASK, &err_mask); 322 322 err_mask |= PCI_ERR_UNC_COMP_ABORT; 323 323 pci_write_config_dword(pdev, pos + PCI_ERR_UNCOR_MASK, err_mask); 324 - 325 - mmiowb(); 326 324 } 327 325 328 326 int fm10k_iov_resume(struct pci_dev *pdev)
-5
drivers/net/ethernet/intel/fm10k/fm10k_main.c
··· 1037 1037 /* notify HW of packet */ 1038 1038 if (netif_xmit_stopped(txring_txq(tx_ring)) || !skb->xmit_more) { 1039 1039 writel(i, tx_ring->tail); 1040 - 1041 - /* we need this if more than one processor can write to our tail 1042 - * at a time, it synchronizes IO on IA64/Altix systems 1043 - */ 1044 - mmiowb(); 1045 1040 } 1046 1041 1047 1042 return;
-5
drivers/net/ethernet/intel/i40e/i40e_txrx.c
··· 3471 3471 /* notify HW of packet */ 3472 3472 if (netif_xmit_stopped(txring_txq(tx_ring)) || !skb->xmit_more) { 3473 3473 writel(i, tx_ring->tail); 3474 - 3475 - /* we need this if more than one processor can write to our tail 3476 - * at a time, it synchronizes IO on IA64/Altix systems 3477 - */ 3478 - mmiowb(); 3479 3474 } 3480 3475 3481 3476 return 0;
-5
drivers/net/ethernet/intel/iavf/iavf_txrx.c
··· 2360 2360 /* notify HW of packet */ 2361 2361 if (netif_xmit_stopped(txring_txq(tx_ring)) || !skb->xmit_more) { 2362 2362 writel(i, tx_ring->tail); 2363 - 2364 - /* we need this if more than one processor can write to our tail 2365 - * at a time, it synchronizes IO on IA64/Altix systems 2366 - */ 2367 - mmiowb(); 2368 2363 } 2369 2364 2370 2365 return;
-5
drivers/net/ethernet/intel/ice/ice_txrx.c
··· 1356 1356 /* notify HW of packet */ 1357 1357 if (netif_xmit_stopped(txring_txq(tx_ring)) || !skb->xmit_more) { 1358 1358 writel(i, tx_ring->tail); 1359 - 1360 - /* we need this if more than one processor can write to our tail 1361 - * at a time, it synchronizes IO on IA64/Altix systems 1362 - */ 1363 - mmiowb(); 1364 1359 } 1365 1360 1366 1361 return;
-5
drivers/net/ethernet/intel/igb/igb_main.c
··· 6028 6028 6029 6029 if (netif_xmit_stopped(txring_txq(tx_ring)) || !skb->xmit_more) { 6030 6030 writel(i, tx_ring->tail); 6031 - 6032 - /* we need this if more than one processor can write to our tail 6033 - * at a time, it synchronizes IO on IA64/Altix systems 6034 - */ 6035 - mmiowb(); 6036 6031 } 6037 6032 return 0; 6038 6033
-4
drivers/net/ethernet/intel/igbvf/netdev.c
··· 2279 2279 tx_ring->buffer_info[first].next_to_watch = tx_desc; 2280 2280 tx_ring->next_to_use = i; 2281 2281 writel(i, adapter->hw.hw_addr + tx_ring->tail); 2282 - /* we need this if more than one processor can write to our tail 2283 - * at a time, it synchronizes IO on IA64/Altix systems 2284 - */ 2285 - mmiowb(); 2286 2282 } 2287 2283 2288 2284 static netdev_tx_t igbvf_xmit_frame_ring_adv(struct sk_buff *skb,
-5
drivers/net/ethernet/intel/igc/igc_main.c
··· 892 892 893 893 if (netif_xmit_stopped(txring_txq(tx_ring)) || !skb->xmit_more) { 894 894 writel(i, tx_ring->tail); 895 - 896 - /* we need this if more than one processor can write to our tail 897 - * at a time, it synchronizes IO on IA64/Altix systems 898 - */ 899 - mmiowb(); 900 895 } 901 896 902 897 return 0;
-5
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
··· 8299 8299 8300 8300 if (netif_xmit_stopped(txring_txq(tx_ring)) || !skb->xmit_more) { 8301 8301 writel(i, tx_ring->tail); 8302 - 8303 - /* we need this if more than one processor can write to our tail 8304 - * at a time, it synchronizes IO on IA64/Altix systems 8305 - */ 8306 - mmiowb(); 8307 8302 } 8308 8303 8309 8304 return 0;
-4
drivers/net/ethernet/marvell/sky2.c
··· 1139 1139 /* Make sure write' to descriptors are complete before we tell hardware */ 1140 1140 wmb(); 1141 1141 sky2_write16(hw, Y2_QADDR(q, PREF_UNIT_PUT_IDX), idx); 1142 - 1143 - /* Synchronize I/O on since next processor may write to tail */ 1144 - mmiowb(); 1145 1142 } 1146 1143 1147 1144 ··· 1351 1354 1352 1355 /* reset the Rx prefetch unit */ 1353 1356 sky2_write32(hw, Y2_QADDR(rxq, PREF_UNIT_CTRL), PREF_UNIT_RST_SET); 1354 - mmiowb(); 1355 1357 } 1356 1358 1357 1359 /* Clean out receive buffer area, assumes receiver hardware stopped */
-4
drivers/net/ethernet/mellanox/mlx4/catas.c
··· 129 129 comm_flags = rst_req << COM_CHAN_RST_REQ_OFFSET; 130 130 __raw_writel((__force u32)cpu_to_be32(comm_flags), 131 131 (__iomem char *)priv->mfunc.comm + MLX4_COMM_CHAN_FLAGS); 132 - /* Make sure that our comm channel write doesn't 133 - * get mixed in with writes from another CPU. 134 - */ 135 - mmiowb(); 136 132 137 133 end = msecs_to_jiffies(MLX4_COMM_TIME) + jiffies; 138 134 while (time_before(jiffies, end)) {
-13
drivers/net/ethernet/mellanox/mlx4/cmd.c
··· 281 281 val = param | (cmd << 16) | (priv->cmd.comm_toggle << 31); 282 282 __raw_writel((__force u32) cpu_to_be32(val), 283 283 &priv->mfunc.comm->slave_write); 284 - mmiowb(); 285 284 mutex_unlock(&dev->persist->device_state_mutex); 286 285 return 0; 287 286 } ··· 494 495 (event ? (1 << HCR_E_BIT) : 0) | 495 496 (op_modifier << HCR_OPMOD_SHIFT) | 496 497 op), hcr + 6); 497 - 498 - /* 499 - * Make sure that our HCR writes don't get mixed in with 500 - * writes from another CPU starting a FW command. 501 - */ 502 - mmiowb(); 503 498 504 499 cmd->toggle = cmd->toggle ^ 1; 505 500 ··· 2199 2206 } 2200 2207 __raw_writel((__force u32) cpu_to_be32(reply), 2201 2208 &priv->mfunc.comm[slave].slave_read); 2202 - mmiowb(); 2203 2209 2204 2210 return; 2205 2211 ··· 2402 2410 &priv->mfunc.comm[i].slave_write); 2403 2411 __raw_writel((__force u32) 0, 2404 2412 &priv->mfunc.comm[i].slave_read); 2405 - mmiowb(); 2406 2413 for (port = 1; port <= MLX4_MAX_PORTS; port++) { 2407 2414 struct mlx4_vport_state *admin_vport; 2408 2415 struct mlx4_vport_state *oper_vport; ··· 2567 2576 slave_read |= (u32)COMM_CHAN_EVENT_INTERNAL_ERR; 2568 2577 __raw_writel((__force u32)cpu_to_be32(slave_read), 2569 2578 &priv->mfunc.comm[slave].slave_read); 2570 - /* Make sure that our comm channel write doesn't 2571 - * get mixed in with writes from another CPU. 2572 - */ 2573 - mmiowb(); 2574 2579 } 2575 2580 } 2576 2581
-1
drivers/net/ethernet/mellanox/mlx5/core/cmd.c
··· 917 917 mlx5_core_dbg(dev, "writing 0x%x to command doorbell\n", 1 << ent->idx); 918 918 wmb(); 919 919 iowrite32be(1 << ent->idx, &dev->iseg->cmd_dbell); 920 - mmiowb(); 921 920 /* if not in polling don't use ent after this point */ 922 921 if (cmd_mode == CMD_MODE_POLLING || poll_cmd) { 923 922 poll_timeout(ent);
-2
drivers/net/ethernet/myricom/myri10ge/myri10ge.c
··· 1439 1439 tx->queue_active = 0; 1440 1440 put_be32(htonl(1), tx->send_stop); 1441 1441 mb(); 1442 - mmiowb(); 1443 1442 } 1444 1443 __netif_tx_unlock(dev_queue); 1445 1444 } ··· 2860 2861 tx->queue_active = 1; 2861 2862 put_be32(htonl(1), tx->send_go); 2862 2863 mb(); 2863 - mmiowb(); 2864 2864 } 2865 2865 tx->pkt_start++; 2866 2866 if ((avail - count) < MXGEFW_MAX_SEND_DESC) {
-2
drivers/net/ethernet/neterion/s2io.c
··· 4153 4153 4154 4154 writeq(val64, &tx_fifo->List_Control); 4155 4155 4156 - mmiowb(); 4157 - 4158 4156 put_off++; 4159 4157 if (put_off == fifo->tx_curr_put_info.fifo_len + 1) 4160 4158 put_off = 0;
-5
drivers/net/ethernet/neterion/vxge/vxge-main.c
··· 1826 1826 vxge_hw_channel_msix_unmask( 1827 1827 (struct __vxge_hw_channel *)ring->handle, 1828 1828 ring->rx_vector_no); 1829 - mmiowb(); 1830 1829 } 1831 1830 1832 1831 /* We are copying and returning the local variable, in case if after ··· 2233 2234 vxge_hw_channel_msix_unmask((struct __vxge_hw_channel *)fifo->handle, 2234 2235 fifo->tx_vector_no); 2235 2236 2236 - mmiowb(); 2237 - 2238 2237 return IRQ_HANDLED; 2239 2238 } 2240 2239 ··· 2269 2272 */ 2270 2273 vxge_hw_vpath_msix_mask(vdev->vpaths[i].handle, msix_id); 2271 2274 vxge_hw_vpath_msix_clear(vdev->vpaths[i].handle, msix_id); 2272 - mmiowb(); 2273 2275 2274 2276 status = vxge_hw_vpath_alarm_process(vdev->vpaths[i].handle, 2275 2277 vdev->exec_mode); 2276 2278 if (status == VXGE_HW_OK) { 2277 2279 vxge_hw_vpath_msix_unmask(vdev->vpaths[i].handle, 2278 2280 msix_id); 2279 - mmiowb(); 2280 2281 continue; 2281 2282 } 2282 2283 vxge_debug_intr(VXGE_ERR,
-4
drivers/net/ethernet/neterion/vxge/vxge-traffic.c
··· 1399 1399 VXGE_HW_NODBW_GET_NO_SNOOP(no_snoop), 1400 1400 &fifo->nofl_db->control_0); 1401 1401 1402 - mmiowb(); 1403 - 1404 1402 writeq(txdl_ptr, &fifo->nofl_db->txdl_ptr); 1405 - 1406 - mmiowb(); 1407 1403 } 1408 1404 1409 1405 /**
-13
drivers/net/ethernet/qlogic/qed/qed_int.c
··· 774 774 { 775 775 u16 rc = 0, index; 776 776 777 - /* Make certain HW write took affect */ 778 - mmiowb(); 779 - 780 777 index = le16_to_cpu(p_sb_desc->sb_attn->sb_index); 781 778 if (p_sb_desc->index != index) { 782 779 p_sb_desc->index = index; 783 780 rc = QED_SB_ATT_IDX; 784 781 } 785 - 786 - /* Make certain we got a consistent view with HW */ 787 - mmiowb(); 788 782 789 783 return rc; 790 784 } ··· 1164 1170 /* Both segments (interrupts & acks) are written to same place address; 1165 1171 * Need to guarantee all commands will be received (in-order) by HW. 1166 1172 */ 1167 - mmiowb(); 1168 1173 barrier(); 1169 1174 } 1170 1175 ··· 1798 1805 qed_wr(p_hwfn, p_ptt, IGU_REG_TRAILING_EDGE_LATCH, 0xfff); 1799 1806 qed_wr(p_hwfn, p_ptt, IGU_REG_ATTENTION_ENABLE, 0xfff); 1800 1807 1801 - /* Flush the writes to IGU */ 1802 - mmiowb(); 1803 - 1804 1808 /* Unmask AEU signals toward IGU */ 1805 1809 qed_wr(p_hwfn, p_ptt, MISC_REG_AEU_MASK_ATTN_IGU, 0xff); 1806 1810 } ··· 1860 1870 barrier(); 1861 1871 1862 1872 qed_wr(p_hwfn, p_ptt, IGU_REG_COMMAND_REG_CTRL, cmd_ctrl); 1863 - 1864 - /* Flush the write to IGU */ 1865 - mmiowb(); 1866 1873 1867 1874 /* calculate where to read the status bit from */ 1868 1875 sb_bit = 1 << (igu_sb_id % 32);
-3
drivers/net/ethernet/qlogic/qed/qed_spq.c
··· 341 341 USTORM_EQE_CONS_OFFSET(p_hwfn->rel_pf_id); 342 342 343 343 REG_WR16(p_hwfn, addr, prod); 344 - 345 - /* keep prod updates ordered */ 346 - mmiowb(); 347 344 } 348 345 349 346 int qed_eq_completion(struct qed_hwfn *p_hwfn, void *cookie)
-8
drivers/net/ethernet/qlogic/qede/qede_ethtool.c
··· 1526 1526 barrier(); 1527 1527 writel(txq->tx_db.raw, txq->doorbell_addr); 1528 1528 1529 - /* mmiowb is needed to synchronize doorbell writes from more than one 1530 - * processor. It guarantees that the write arrives to the device before 1531 - * the queue lock is released and another start_xmit is called (possibly 1532 - * on another CPU). Without this barrier, the next doorbell can bypass 1533 - * this doorbell. This is applicable to IA64/Altix systems. 1534 - */ 1535 - mmiowb(); 1536 - 1537 1529 for (i = 0; i < QEDE_SELFTEST_POLL_COUNT; i++) { 1538 1530 if (qede_txq_has_work(txq)) 1539 1531 break;
-8
drivers/net/ethernet/qlogic/qede/qede_fp.c
··· 580 580 581 581 internal_ram_wr(rxq->hw_rxq_prod_addr, sizeof(rx_prods), 582 582 (u32 *)&rx_prods); 583 - 584 - /* mmiowb is needed to synchronize doorbell writes from more than one 585 - * processor. It guarantees that the write arrives to the device before 586 - * the napi lock is released and another qede_poll is called (possibly 587 - * on another CPU). Without this barrier, the next doorbell can bypass 588 - * this doorbell. This is applicable to IA64/Altix systems. 589 - */ 590 - mmiowb(); 591 583 } 592 584 593 585 static void qede_get_rxhash(struct sk_buff *skb, u8 bitfields, __le32 rss_hash)
-1
drivers/net/ethernet/qlogic/qla3xxx.c
··· 1858 1858 wmb(); 1859 1859 writel_relaxed(qdev->small_buf_q_producer_index, 1860 1860 &port_regs->CommonRegs.rxSmallQProducerIndex); 1861 - mmiowb(); 1862 1861 } 1863 1862 } 1864 1863
-1
drivers/net/ethernet/qlogic/qlge/qlge.h
··· 2181 2181 static inline void ql_write_db_reg(u32 val, void __iomem *addr) 2182 2182 { 2183 2183 writel(val, addr); 2184 - mmiowb(); 2185 2184 } 2186 2185 2187 2186 /*
-1
drivers/net/ethernet/qlogic/qlge/qlge_main.c
··· 2695 2695 wmb(); 2696 2696 2697 2697 ql_write_db_reg_relaxed(tx_ring->prod_idx, tx_ring->prod_idx_db_reg); 2698 - mmiowb(); 2699 2698 netif_printk(qdev, tx_queued, KERN_DEBUG, qdev->ndev, 2700 2699 "tx queued, slot %d, len %d\n", 2701 2700 tx_ring->prod_idx, skb->len);
-9
drivers/net/ethernet/renesas/ravb_main.c
··· 728 728 729 729 spin_lock(&priv->lock); 730 730 ravb_emac_interrupt_unlocked(ndev); 731 - mmiowb(); 732 731 spin_unlock(&priv->lock); 733 732 return IRQ_HANDLED; 734 733 } ··· 847 848 result = IRQ_HANDLED; 848 849 } 849 850 850 - mmiowb(); 851 851 spin_unlock(&priv->lock); 852 852 return result; 853 853 } ··· 879 881 result = IRQ_HANDLED; 880 882 } 881 883 882 - mmiowb(); 883 884 spin_unlock(&priv->lock); 884 885 return result; 885 886 } ··· 895 898 if (ravb_queue_interrupt(ndev, q)) 896 899 result = IRQ_HANDLED; 897 900 898 - mmiowb(); 899 901 spin_unlock(&priv->lock); 900 902 return result; 901 903 } ··· 939 943 ravb_write(ndev, ~(mask | TIS_RESERVED), TIS); 940 944 ravb_tx_free(ndev, q, true); 941 945 netif_wake_subqueue(ndev, q); 942 - mmiowb(); 943 946 spin_unlock_irqrestore(&priv->lock, flags); 944 947 } 945 948 } ··· 954 959 ravb_write(ndev, mask, RIE0); 955 960 ravb_write(ndev, mask, TIE); 956 961 } 957 - mmiowb(); 958 962 spin_unlock_irqrestore(&priv->lock, flags); 959 963 960 964 /* Receive error message handling */ ··· 1002 1008 if (priv->no_avb_link && phydev->link) 1003 1009 ravb_rcv_snd_enable(ndev); 1004 1010 1005 - mmiowb(); 1006 1011 spin_unlock_irqrestore(&priv->lock, flags); 1007 1012 1008 1013 if (new_state && netif_msg_link(priv)) ··· 1594 1601 netif_stop_subqueue(ndev, q); 1595 1602 1596 1603 exit: 1597 - mmiowb(); 1598 1604 spin_unlock_irqrestore(&priv->lock, flags); 1599 1605 return NETDEV_TX_OK; 1600 1606 ··· 1665 1673 spin_lock_irqsave(&priv->lock, flags); 1666 1674 ravb_modify(ndev, ECMR, ECMR_PRM, 1667 1675 ndev->flags & IFF_PROMISC ? ECMR_PRM : 0); 1668 - mmiowb(); 1669 1676 spin_unlock_irqrestore(&priv->lock, flags); 1670 1677 } 1671 1678
-3
drivers/net/ethernet/renesas/ravb_ptp.c
··· 196 196 ravb_write(ndev, GIE_PTCS, GIE); 197 197 else 198 198 ravb_write(ndev, GID_PTCD, GID); 199 - mmiowb(); 200 199 spin_unlock_irqrestore(&priv->lock, flags); 201 200 202 201 return 0; ··· 258 259 else 259 260 ravb_write(ndev, GID_PTMD0, GID); 260 261 } 261 - mmiowb(); 262 262 spin_unlock_irqrestore(&priv->lock, flags); 263 263 264 264 return error; ··· 329 331 spin_lock_irqsave(&priv->lock, flags); 330 332 ravb_wait(ndev, GCCR, GCCR_TCR, GCCR_TCR_NOREQ); 331 333 ravb_modify(ndev, GCCR, GCCR_TCSS, GCCR_TCSS_ADJGPTP); 332 - mmiowb(); 333 334 spin_unlock_irqrestore(&priv->lock, flags); 334 335 335 336 priv->ptp.clock = ptp_clock_register(&priv->ptp.info, &pdev->dev);
-1
drivers/net/ethernet/renesas/sh_eth.c
··· 2010 2010 if ((mdp->cd->no_psr || mdp->no_ether_link) && phydev->link) 2011 2011 sh_eth_rcv_snd_enable(ndev); 2012 2012 2013 - mmiowb(); 2014 2013 spin_unlock_irqrestore(&mdp->lock, flags); 2015 2014 2016 2015 if (new_state && netif_msg_link(mdp))
-2
drivers/net/ethernet/sfc/falcon/io.h
··· 108 108 _ef4_writed(efx, value->u32[2], reg + 8); 109 109 _ef4_writed(efx, value->u32[3], reg + 12); 110 110 #endif 111 - mmiowb(); 112 111 spin_unlock_irqrestore(&efx->biu_lock, flags); 113 112 } 114 113 ··· 129 130 __raw_writel((__force u32)value->u32[0], membase + addr); 130 131 __raw_writel((__force u32)value->u32[1], membase + addr + 4); 131 132 #endif 132 - mmiowb(); 133 133 spin_unlock_irqrestore(&efx->biu_lock, flags); 134 134 } 135 135
-2
drivers/net/ethernet/sfc/io.h
··· 120 120 _efx_writed(efx, value->u32[2], reg + 8); 121 121 _efx_writed(efx, value->u32[3], reg + 12); 122 122 #endif 123 - mmiowb(); 124 123 spin_unlock_irqrestore(&efx->biu_lock, flags); 125 124 } 126 125 ··· 141 142 __raw_writel((__force u32)value->u32[0], membase + addr); 142 143 __raw_writel((__force u32)value->u32[1], membase + addr + 4); 143 144 #endif 144 - mmiowb(); 145 145 spin_unlock_irqrestore(&efx->biu_lock, flags); 146 146 } 147 147
-14
drivers/net/ethernet/silan/sc92031.c
··· 361 361 /* stop interrupts */ 362 362 iowrite32(0, port_base + IntrMask); 363 363 _sc92031_dummy_read(port_base); 364 - mmiowb(); 365 364 366 365 /* wait for any concurrent interrupt/tasklet to finish */ 367 366 synchronize_irq(priv->pdev->irq); ··· 378 379 wmb(); 379 380 380 381 iowrite32(IntrBits, port_base + IntrMask); 381 - mmiowb(); 382 382 } 383 383 384 384 static void _sc92031_disable_tx_rx(struct net_device *dev) ··· 865 867 rmb(); 866 868 867 869 iowrite32(intr_mask, port_base + IntrMask); 868 - mmiowb(); 869 870 870 871 spin_unlock(&priv->lock); 871 872 } ··· 898 901 rmb(); 899 902 900 903 iowrite32(intr_mask, port_base + IntrMask); 901 - mmiowb(); 902 904 903 905 return IRQ_NONE; 904 906 } ··· 974 978 iowrite32(priv->tx_bufs_dma_addr + entry * TX_BUF_SIZE, 975 979 port_base + TxAddr0 + entry * 4); 976 980 iowrite32(tx_status, port_base + TxStatus0 + entry * 4); 977 - mmiowb(); 978 981 979 982 if (priv->tx_head - priv->tx_tail >= NUM_TX_DESC) 980 983 netif_stop_queue(dev); ··· 1019 1024 spin_lock_bh(&priv->lock); 1020 1025 1021 1026 _sc92031_reset(dev); 1022 - mmiowb(); 1023 1027 1024 1028 spin_unlock_bh(&priv->lock); 1025 1029 sc92031_enable_interrupts(dev); ··· 1054 1060 1055 1061 _sc92031_disable_tx_rx(dev); 1056 1062 _sc92031_tx_clear(dev); 1057 - mmiowb(); 1058 1063 1059 1064 spin_unlock_bh(&priv->lock); 1060 1065 ··· 1074 1081 1075 1082 _sc92031_set_mar(dev); 1076 1083 _sc92031_set_rx_config(dev); 1077 - mmiowb(); 1078 1084 1079 1085 spin_unlock_bh(&priv->lock); 1080 1086 } ··· 1090 1098 priv->tx_timeouts++; 1091 1099 1092 1100 _sc92031_reset(dev); 1093 - mmiowb(); 1094 1101 1095 1102 spin_unlock(&priv->lock); 1096 1103 ··· 1131 1140 1132 1141 output_status = _sc92031_mii_read(port_base, MII_OutputStatus); 1133 1142 _sc92031_mii_scan(port_base); 1134 - mmiowb(); 1135 1143 1136 1144 spin_unlock_bh(&priv->lock); 1137 1145 ··· 1301 1311 1302 1312 priv->pm_config = pm_config; 1303 1313 iowrite32(pm_config, port_base + PMConfig); 1304 - mmiowb(); 1305 1314 1306 1315 spin_unlock_bh(&priv->lock); 1307 1316 ··· 1326 1337 1327 1338 out: 1328 1339 _sc92031_mii_scan(port_base); 1329 - mmiowb(); 1330 1340 1331 1341 spin_unlock_bh(&priv->lock); 1332 1342 ··· 1518 1530 1519 1531 _sc92031_disable_tx_rx(dev); 1520 1532 _sc92031_tx_clear(dev); 1521 - mmiowb(); 1522 1533 1523 1534 spin_unlock_bh(&priv->lock); 1524 1535 ··· 1542 1555 spin_lock_bh(&priv->lock); 1543 1556 1544 1557 _sc92031_reset(dev); 1545 - mmiowb(); 1546 1558 1547 1559 spin_unlock_bh(&priv->lock); 1548 1560 sc92031_enable_interrupts(dev);
-3
drivers/net/ethernet/via/via-rhine.c
··· 571 571 if (rp->quirks & rqStatusWBRace) 572 572 iowrite8(mask >> 16, ioaddr + IntrStatus2); 573 573 iowrite16(mask, ioaddr + IntrStatus); 574 - mmiowb(); 575 574 } 576 575 577 576 /* ··· 862 863 if (work_done < budget) { 863 864 napi_complete_done(napi, work_done); 864 865 iowrite16(enable_mask, ioaddr + IntrEnable); 865 - mmiowb(); 866 866 } 867 867 return work_done; 868 868 } ··· 1891 1893 static void rhine_irq_disable(struct rhine_private *rp) 1892 1894 { 1893 1895 iowrite16(0x0000, rp->base + IntrEnable); 1894 - mmiowb(); 1895 1896 } 1896 1897 1897 1898 /* The interrupt handler does all of the Rx thread work and cleans up
-6
drivers/net/ethernet/wiznet/w5100.c
··· 219 219 static inline int w5100_write_direct(struct net_device *ndev, u32 addr, u8 data) 220 220 { 221 221 __w5100_write_direct(ndev, addr, data); 222 - mmiowb(); 223 222 224 223 return 0; 225 224 } ··· 235 236 { 236 237 __w5100_write_direct(ndev, addr, data >> 8); 237 238 __w5100_write_direct(ndev, addr + 1, data); 238 - mmiowb(); 239 239 240 240 return 0; 241 241 } ··· 257 259 258 260 for (i = 0; i < len; i++, addr++) 259 261 __w5100_write_direct(ndev, addr, *buf++); 260 - 261 - mmiowb(); 262 262 263 263 return 0; 264 264 } ··· 371 375 for (i = 0; i < len; i++) 372 376 *buf++ = w5100_read_direct(ndev, W5100_IDM_DR); 373 377 374 - mmiowb(); 375 378 spin_unlock_irqrestore(&mmio_priv->reg_lock, flags); 376 379 377 380 return 0; ··· 389 394 for (i = 0; i < len; i++) 390 395 __w5100_write_direct(ndev, W5100_IDM_DR, *buf++); 391 396 392 - mmiowb(); 393 397 spin_unlock_irqrestore(&mmio_priv->reg_lock, flags); 394 398 395 399 return 0;
-15
drivers/net/ethernet/wiznet/w5300.c
··· 141 141 142 142 spin_lock_irqsave(&priv->reg_lock, flags); 143 143 w5300_write_direct(priv, W5300_IDM_AR, addr); 144 - mmiowb(); 145 144 data = w5300_read_direct(priv, W5300_IDM_DR); 146 145 spin_unlock_irqrestore(&priv->reg_lock, flags); 147 146 ··· 153 154 154 155 spin_lock_irqsave(&priv->reg_lock, flags); 155 156 w5300_write_direct(priv, W5300_IDM_AR, addr); 156 - mmiowb(); 157 157 w5300_write_direct(priv, W5300_IDM_DR, data); 158 - mmiowb(); 159 158 spin_unlock_irqrestore(&priv->reg_lock, flags); 160 159 } 161 160 ··· 189 192 unsigned long timeout = jiffies + msecs_to_jiffies(100); 190 193 191 194 w5300_write(priv, W5300_S0_CR, cmd); 192 - mmiowb(); 193 195 194 196 while (w5300_read(priv, W5300_S0_CR) != 0) { 195 197 if (time_after(jiffies, timeout)) ··· 237 241 w5300_write(priv, W5300_SHARH, 238 242 ndev->dev_addr[4] << 8 | 239 243 ndev->dev_addr[5]); 240 - mmiowb(); 241 244 } 242 245 243 246 static void w5300_hw_reset(struct w5300_priv *priv) 244 247 { 245 248 w5300_write_direct(priv, W5300_MR, MR_RST); 246 - mmiowb(); 247 249 mdelay(5); 248 250 w5300_write_direct(priv, W5300_MR, priv->indirect ? 249 251 MR_WDF(7) | MR_PB | MR_IND : 250 252 MR_WDF(7) | MR_PB); 251 - mmiowb(); 252 253 w5300_write(priv, W5300_IMR, 0); 253 254 w5300_write_macaddr(priv); 254 255 ··· 257 264 w5300_write32(priv, W5300_TMSRL, 64 << 24); 258 265 w5300_write32(priv, W5300_TMSRH, 0); 259 266 w5300_write(priv, W5300_MTYPE, 0x00ff); 260 - mmiowb(); 261 267 } 262 268 263 269 static void w5300_hw_start(struct w5300_priv *priv) 264 270 { 265 271 w5300_write(priv, W5300_S0_MR, priv->promisc ? 266 272 S0_MR_MACRAW : S0_MR_MACRAW_MF); 267 - mmiowb(); 268 273 w5300_command(priv, S0_CR_OPEN); 269 274 w5300_write(priv, W5300_S0_IMR, S0_IR_RECV | S0_IR_SENDOK); 270 275 w5300_write(priv, W5300_IMR, IR_S0); 271 - mmiowb(); 272 276 } 273 277 274 278 static void w5300_hw_close(struct w5300_priv *priv) 275 279 { 276 280 w5300_write(priv, W5300_IMR, 0); 277 - mmiowb(); 278 281 w5300_command(priv, S0_CR_CLOSE); 279 282 } 280 283 ··· 361 372 netif_stop_queue(ndev); 362 373 363 374 w5300_write_frame(priv, skb->data, skb->len); 364 - mmiowb(); 365 375 ndev->stats.tx_packets++; 366 376 ndev->stats.tx_bytes += skb->len; 367 377 dev_kfree_skb(skb); ··· 407 419 if (rx_count < budget) { 408 420 napi_complete_done(napi, rx_count); 409 421 w5300_write(priv, W5300_IMR, IR_S0); 410 - mmiowb(); 411 422 } 412 423 413 424 return rx_count; ··· 421 434 if (!ir) 422 435 return IRQ_NONE; 423 436 w5300_write(priv, W5300_S0_IR, ir); 424 - mmiowb(); 425 437 426 438 if (ir & S0_IR_SENDOK) { 427 439 netif_dbg(priv, tx_done, ndev, "tx done\n"); ··· 430 444 if (ir & S0_IR_RECV) { 431 445 if (napi_schedule_prep(&priv->napi)) { 432 446 w5300_write(priv, W5300_IMR, 0); 433 - mmiowb(); 434 447 __napi_schedule(&priv->napi); 435 448 } 436 449 }
-4
drivers/net/wireless/ath/ath5k/base.c
··· 837 837 838 838 txq->link = &ds->ds_link; 839 839 ath5k_hw_start_tx_dma(ah, txq->qnum); 840 - mmiowb(); 841 840 spin_unlock_bh(&txq->lock); 842 841 843 842 return 0; ··· 2173 2174 } 2174 2175 2175 2176 ath5k_hw_set_imr(ah, ah->imask); 2176 - mmiowb(); 2177 2177 spin_unlock_bh(&ah->block); 2178 2178 } 2179 2179 ··· 2777 2779 2778 2780 ret = 0; 2779 2781 done: 2780 - mmiowb(); 2781 2782 mutex_unlock(&ah->lock); 2782 2783 2783 2784 set_bit(ATH_STAT_STARTED, ah->status); ··· 2836 2839 "putting device to sleep\n"); 2837 2840 } 2838 2841 2839 - mmiowb(); 2840 2842 mutex_unlock(&ah->lock); 2841 2843 2842 2844 ath5k_stop_tasklets(ah);
-2
drivers/net/wireless/ath/ath5k/mac80211-ops.c
··· 263 263 memcpy(common->curbssid, bss_conf->bssid, ETH_ALEN); 264 264 common->curaid = 0; 265 265 ath5k_hw_set_bssid(ah); 266 - mmiowb(); 267 266 } 268 267 269 268 if (changes & BSS_CHANGED_BEACON_INT) ··· 527 528 ret = -EINVAL; 528 529 } 529 530 530 - mmiowb(); 531 531 mutex_unlock(&ah->lock); 532 532 return ret; 533 533 }
-7
drivers/net/wireless/broadcom/b43/main.c
··· 485 485 val = swab32(val); 486 486 487 487 b43_write32(dev, B43_MMIO_RAM_CONTROL, offset); 488 - mmiowb(); 489 488 b43_write32(dev, B43_MMIO_RAM_DATA, val); 490 489 } 491 490 ··· 655 656 /* The hardware guarantees us an atomic write, if we 656 657 * write the low register first. */ 657 658 b43_write32(dev, B43_MMIO_REV3PLUS_TSF_LOW, low); 658 - mmiowb(); 659 659 b43_write32(dev, B43_MMIO_REV3PLUS_TSF_HIGH, high); 660 - mmiowb(); 661 660 } 662 661 663 662 void b43_tsf_write(struct b43_wldev *dev, u64 tsf) ··· 1819 1822 if (b43_bus_host_is_sdio(dev->dev)) { 1820 1823 /* wl->mutex is enough. */ 1821 1824 b43_do_beacon_update_trigger_work(dev); 1822 - mmiowb(); 1823 1825 } else { 1824 1826 spin_lock_irq(&wl->hardirq_lock); 1825 1827 b43_do_beacon_update_trigger_work(dev); 1826 - mmiowb(); 1827 1828 spin_unlock_irq(&wl->hardirq_lock); 1828 1829 } 1829 1830 } ··· 2073 2078 2074 2079 mutex_lock(&dev->wl->mutex); 2075 2080 b43_do_interrupt_thread(dev); 2076 - mmiowb(); 2077 2081 mutex_unlock(&dev->wl->mutex); 2078 2082 2079 2083 return IRQ_HANDLED; ··· 2137 2143 2138 2144 spin_lock(&dev->wl->hardirq_lock); 2139 2145 ret = b43_do_interrupt(dev); 2140 - mmiowb(); 2141 2146 spin_unlock(&dev->wl->hardirq_lock); 2142 2147 2143 2148 return ret;
-1
drivers/net/wireless/broadcom/b43/sysfs.c
··· 129 129 } else 130 130 err = -ENOSYS; 131 131 132 - mmiowb(); 133 132 mutex_unlock(&wldev->wl->mutex); 134 133 135 134 return err ? err : count;
-2
drivers/net/wireless/broadcom/b43legacy/ilt.c
··· 315 315 void b43legacy_ilt_write(struct b43legacy_wldev *dev, u16 offset, u16 val) 316 316 { 317 317 b43legacy_phy_write(dev, B43legacy_PHY_ILT_G_CTRL, offset); 318 - mmiowb(); 319 318 b43legacy_phy_write(dev, B43legacy_PHY_ILT_G_DATA1, val); 320 319 } 321 320 322 321 void b43legacy_ilt_write32(struct b43legacy_wldev *dev, u16 offset, u32 val) 323 322 { 324 323 b43legacy_phy_write(dev, B43legacy_PHY_ILT_G_CTRL, offset); 325 - mmiowb(); 326 324 b43legacy_phy_write(dev, B43legacy_PHY_ILT_G_DATA2, 327 325 (val & 0xFFFF0000) >> 16); 328 326 b43legacy_phy_write(dev, B43legacy_PHY_ILT_G_DATA1,
-20
drivers/net/wireless/broadcom/b43legacy/main.c
··· 264 264 val = swab32(val); 265 265 266 266 b43legacy_write32(dev, B43legacy_MMIO_RAM_CONTROL, offset); 267 - mmiowb(); 268 267 b43legacy_write32(dev, B43legacy_MMIO_RAM_DATA, val); 269 268 } 270 269 ··· 340 341 if (offset & 0x0003) { 341 342 /* Unaligned access */ 342 343 b43legacy_shm_control_word(dev, routing, offset >> 2); 343 - mmiowb(); 344 344 b43legacy_write16(dev, 345 345 B43legacy_MMIO_SHM_DATA_UNALIGNED, 346 346 (value >> 16) & 0xffff); 347 - mmiowb(); 348 347 b43legacy_shm_control_word(dev, routing, 349 348 (offset >> 2) + 1); 350 - mmiowb(); 351 349 b43legacy_write16(dev, B43legacy_MMIO_SHM_DATA, 352 350 value & 0xffff); 353 351 return; ··· 352 356 offset >>= 2; 353 357 } 354 358 b43legacy_shm_control_word(dev, routing, offset); 355 - mmiowb(); 356 359 b43legacy_write32(dev, B43legacy_MMIO_SHM_DATA, value); 357 360 } 358 361 ··· 363 368 if (offset & 0x0003) { 364 369 /* Unaligned access */ 365 370 b43legacy_shm_control_word(dev, routing, offset >> 2); 366 - mmiowb(); 367 371 b43legacy_write16(dev, 368 372 B43legacy_MMIO_SHM_DATA_UNALIGNED, 369 373 value); ··· 371 377 offset >>= 2; 372 378 } 373 379 b43legacy_shm_control_word(dev, routing, offset); 374 - mmiowb(); 375 380 b43legacy_write16(dev, B43legacy_MMIO_SHM_DATA, value); 376 381 } 377 382 ··· 464 471 status = b43legacy_read32(dev, B43legacy_MMIO_MACCTL); 465 472 status |= B43legacy_MACCTL_TBTTHOLD; 466 473 b43legacy_write32(dev, B43legacy_MMIO_MACCTL, status); 467 - mmiowb(); 468 474 } 469 475 470 476 static void b43legacy_time_unlock(struct b43legacy_wldev *dev) ··· 486 494 u32 hi = (tsf & 0xFFFFFFFF00000000ULL) >> 32; 487 495 488 496 b43legacy_write32(dev, B43legacy_MMIO_REV3PLUS_TSF_LOW, 0); 489 - mmiowb(); 490 497 b43legacy_write32(dev, B43legacy_MMIO_REV3PLUS_TSF_HIGH, 491 498 hi); 492 - mmiowb(); 493 499 b43legacy_write32(dev, B43legacy_MMIO_REV3PLUS_TSF_LOW, 494 500 lo); 495 501 } else { ··· 497 507 u16 v3 = (tsf & 0xFFFF000000000000ULL) >> 48; 498 508 499 509 b43legacy_write16(dev, B43legacy_MMIO_TSF_0, 0); 500 - mmiowb(); 501 510 b43legacy_write16(dev, B43legacy_MMIO_TSF_3, v3); 502 - mmiowb(); 503 511 b43legacy_write16(dev, B43legacy_MMIO_TSF_2, v2); 504 - mmiowb(); 505 512 b43legacy_write16(dev, B43legacy_MMIO_TSF_1, v1); 506 - mmiowb(); 507 513 b43legacy_write16(dev, B43legacy_MMIO_TSF_0, v0); 508 514 } 509 515 } ··· 1236 1250 /* The handler might have updated the IRQ mask. */ 1237 1251 b43legacy_write32(dev, B43legacy_MMIO_GEN_IRQ_MASK, 1238 1252 dev->irq_mask); 1239 - mmiowb(); 1240 1253 spin_unlock_irq(&wl->irq_lock); 1241 1254 } 1242 1255 mutex_unlock(&wl->mutex); ··· 1331 1346 dma_reason[2], dma_reason[3], 1332 1347 dma_reason[4], dma_reason[5]); 1333 1348 b43legacy_controller_restart(dev, "DMA error"); 1334 - mmiowb(); 1335 1349 spin_unlock_irqrestore(&dev->wl->irq_lock, flags); 1336 1350 return; 1337 1351 } ··· 1380 1396 handle_irq_transmit_status(dev); 1381 1397 1382 1398 b43legacy_write32(dev, B43legacy_MMIO_GEN_IRQ_MASK, dev->irq_mask); 1383 - mmiowb(); 1384 1399 spin_unlock_irqrestore(&dev->wl->irq_lock, flags); 1385 1400 } 1386 1401 ··· 1471 1488 dev->irq_reason = reason; 1472 1489 tasklet_schedule(&dev->isr_tasklet); 1473 1490 out: 1474 - mmiowb(); 1475 1491 spin_unlock(&dev->wl->irq_lock); 1476 1492 1477 1493 return ret; ··· 2763 2781 2764 2782 spin_lock_irqsave(&wl->irq_lock, flags); 2765 2783 b43legacy_write32(dev, B43legacy_MMIO_GEN_IRQ_MASK, dev->irq_mask); 2766 - mmiowb(); 2767 2784 spin_unlock_irqrestore(&wl->irq_lock, flags); 2768 2785 out_unlock_mutex: 2769 2786 mutex_unlock(&wl->mutex); ··· 2881 2900 spin_lock_irqsave(&wl->irq_lock, flags); 2882 2901 b43legacy_write32(dev, B43legacy_MMIO_GEN_IRQ_MASK, dev->irq_mask); 2883 2902 /* XXX: why? */ 2884 - mmiowb(); 2885 2903 spin_unlock_irqrestore(&wl->irq_lock, flags); 2886 2904 out_unlock_mutex: 2887 2905 mutex_unlock(&wl->mutex);
-1
drivers/net/wireless/broadcom/b43legacy/phy.c
··· 134 134 void b43legacy_phy_write(struct b43legacy_wldev *dev, u16 offset, u16 val) 135 135 { 136 136 b43legacy_write16(dev, B43legacy_MMIO_PHY_CONTROL, offset); 137 - mmiowb(); 138 137 b43legacy_write16(dev, B43legacy_MMIO_PHY_DATA, val); 139 138 } 140 139
-1
drivers/net/wireless/broadcom/b43legacy/pio.h
··· 92 92 u16 offset, u16 value) 93 93 { 94 94 b43legacy_write16(queue->dev, queue->mmio_base + offset, value); 95 - mmiowb(); 96 95 } 97 96 98 97
-4
drivers/net/wireless/broadcom/b43legacy/radio.c
··· 95 95 B43legacy_WARN_ON(status & B43legacy_MACCTL_RADIOLOCK); 96 96 status |= B43legacy_MACCTL_RADIOLOCK; 97 97 b43legacy_write32(dev, B43legacy_MMIO_MACCTL, status); 98 - mmiowb(); 99 98 udelay(10); 100 99 } 101 100 ··· 107 108 B43legacy_WARN_ON(!(status & B43legacy_MACCTL_RADIOLOCK)); 108 109 status &= ~B43legacy_MACCTL_RADIOLOCK; 109 110 b43legacy_write32(dev, B43legacy_MMIO_MACCTL, status); 110 - mmiowb(); 111 111 } 112 112 113 113 u16 b43legacy_radio_read16(struct b43legacy_wldev *dev, u16 offset) ··· 139 141 void b43legacy_radio_write16(struct b43legacy_wldev *dev, u16 offset, u16 val) 140 142 { 141 143 b43legacy_write16(dev, B43legacy_MMIO_RADIO_CONTROL, offset); 142 - mmiowb(); 143 144 b43legacy_write16(dev, B43legacy_MMIO_RADIO_DATA_LOW, val); 144 145 } 145 146 ··· 330 333 void b43legacy_nrssi_hw_write(struct b43legacy_wldev *dev, u16 offset, s16 val) 331 334 { 332 335 b43legacy_phy_write(dev, B43legacy_PHY_NRSSILT_CTRL, offset); 333 - mmiowb(); 334 336 b43legacy_phy_write(dev, B43legacy_PHY_NRSSILT_DATA, (u16)val); 335 337 } 336 338
-1
drivers/net/wireless/broadcom/b43legacy/sysfs.c
··· 143 143 if (err) 144 144 b43legacyerr(wldev->wl, "Interference Mitigation not " 145 145 "supported by device\n"); 146 - mmiowb(); 147 146 spin_unlock_irqrestore(&wldev->wl->irq_lock, flags); 148 147 mutex_unlock(&wldev->wl->mutex); 149 148
-7
drivers/net/wireless/intel/iwlegacy/common.h
··· 2030 2030 _il_release_nic_access(struct il_priv *il) 2031 2031 { 2032 2032 _il_clear_bit(il, CSR_GP_CNTRL, CSR_GP_CNTRL_REG_FLAG_MAC_ACCESS_REQ); 2033 - /* 2034 - * In above we are reading CSR_GP_CNTRL register, what will flush any 2035 - * previous writes, but still want write, which clear MAC_ACCESS_REQ 2036 - * bit, be performed on PCI bus before any other writes scheduled on 2037 - * different CPUs (after we drop reg_lock). 2038 - */ 2039 - mmiowb(); 2040 2033 } 2041 2034 2042 2035 static inline u32
-1
drivers/net/wireless/intel/iwlwifi/pcie/trans.c
··· 2067 2067 * MAC_ACCESS_REQ bit to be performed before any other writes 2068 2068 * scheduled on different CPUs (after we drop reg_lock). 2069 2069 */ 2070 - mmiowb(); 2071 2070 out: 2072 2071 spin_unlock_irqrestore(&trans_pcie->reg_lock, *flags); 2073 2072 }
-7
drivers/ntb/hw/idt/ntb_hw_idt.c
··· 358 358 iowrite32((u32)reg, ndev->cfgspc + (ptrdiff_t)IDT_NT_GASAADDR); 359 359 /* Put the new value of the register */ 360 360 iowrite32(data, ndev->cfgspc + (ptrdiff_t)IDT_NT_GASADATA); 361 - /* Make sure the PCIe transactions are executed */ 362 - mmiowb(); 363 361 /* Unlock GASA registers operations */ 364 362 spin_unlock_irqrestore(&ndev->gasa_lock, irqflags); 365 363 } ··· 748 750 spin_lock_irqsave(&ndev->mtbl_lock, irqflags); 749 751 idt_nt_write(ndev, IDT_NT_NTMTBLADDR, ndev->part); 750 752 idt_nt_write(ndev, IDT_NT_NTMTBLDATA, mtbldata); 751 - mmiowb(); 752 753 spin_unlock_irqrestore(&ndev->mtbl_lock, irqflags); 753 754 754 755 /* Notify the peers by setting and clearing the global signal bit */ ··· 775 778 spin_lock_irqsave(&ndev->mtbl_lock, irqflags); 776 779 idt_nt_write(ndev, IDT_NT_NTMTBLADDR, ndev->part); 777 780 idt_nt_write(ndev, IDT_NT_NTMTBLDATA, 0); 778 - mmiowb(); 779 781 spin_unlock_irqrestore(&ndev->mtbl_lock, irqflags); 780 782 781 783 /* Notify the peers by setting and clearing the global signal bit */ ··· 1335 1339 idt_nt_write(ndev, IDT_NT_LUTLDATA, (u32)addr); 1336 1340 idt_nt_write(ndev, IDT_NT_LUTMDATA, (u32)(addr >> 32)); 1337 1341 idt_nt_write(ndev, IDT_NT_LUTUDATA, data); 1338 - mmiowb(); 1339 1342 spin_unlock_irqrestore(&ndev->lut_lock, irqflags); 1340 1343 /* Limit address isn't specified since size is fixed for LUT */ 1341 1344 } ··· 1388 1393 idt_nt_write(ndev, IDT_NT_LUTLDATA, 0); 1389 1394 idt_nt_write(ndev, IDT_NT_LUTMDATA, 0); 1390 1395 idt_nt_write(ndev, IDT_NT_LUTUDATA, 0); 1391 - mmiowb(); 1392 1396 spin_unlock_irqrestore(&ndev->lut_lock, irqflags); 1393 1397 } 1394 1398 ··· 1806 1812 /* Set the route and send the data */ 1807 1813 idt_sw_write(ndev, partdata_tbl[ndev->part].msgctl[midx], swpmsgctl); 1808 1814 idt_nt_write(ndev, ntdata_tbl.msgs[midx].out, msg); 1809 - mmiowb(); 1810 1815 /* Unlock the messages routing table */ 1811 1816 spin_unlock_irqrestore(&ndev->msg_locks[midx], irqflags); 1812 1817
-3
drivers/ntb/test/ntb_perf.c
··· 284 284 ntb_peer_spad_write(perf->ntb, peer->pidx, 285 285 PERF_SPAD_HDATA(perf->gidx), 286 286 upper_32_bits(data)); 287 - mmiowb(); 288 287 ntb_peer_spad_write(perf->ntb, peer->pidx, 289 288 PERF_SPAD_CMD(perf->gidx), 290 289 cmd); 291 - mmiowb(); 292 290 ntb_peer_db_set(perf->ntb, PERF_SPAD_NOTIFY(peer->gidx)); 293 291 294 292 dev_dbg(&perf->ntb->dev, "DB ring peer %#llx\n", ··· 377 379 378 380 ntb_peer_msg_write(perf->ntb, peer->pidx, PERF_MSG_HDATA, 379 381 upper_32_bits(data)); 380 - mmiowb(); 381 382 382 383 /* This call shall trigger peer message event */ 383 384 ntb_peer_msg_write(perf->ntb, peer->pidx, PERF_MSG_CMD, cmd);
+1 -2
drivers/scsi/bfa/bfa.h
··· 62 62 ((__bfa)->iocfc.cfg.drvcfg.num_reqq_elems - 1); \ 63 63 writel((__bfa)->iocfc.req_cq_pi[__reqq], \ 64 64 (__bfa)->iocfc.bfa_regs.cpe_q_pi[__reqq]); \ 65 - mmiowb(); \ 66 - } while (0) 65 + } while (0) 67 66 68 67 #define bfa_rspq_pi(__bfa, __rspq) \ 69 68 (*(u32 *)((__bfa)->iocfc.rsp_cq_shadow_pi[__rspq].kva))
-2
drivers/scsi/bfa/bfa_hw_cb.c
··· 61 61 62 62 bfa_rspq_ci(bfa, rspq) = ci; 63 63 writel(ci, bfa->iocfc.bfa_regs.rme_q_ci[rspq]); 64 - mmiowb(); 65 64 } 66 65 67 66 void ··· 71 72 72 73 bfa_rspq_ci(bfa, rspq) = ci; 73 74 writel(ci, bfa->iocfc.bfa_regs.rme_q_ci[rspq]); 74 - mmiowb(); 75 75 } 76 76 77 77 void
-2
drivers/scsi/bfa/bfa_hw_ct.c
··· 81 81 82 82 bfa_rspq_ci(bfa, rspq) = ci; 83 83 writel(ci, bfa->iocfc.bfa_regs.rme_q_ci[rspq]); 84 - mmiowb(); 85 84 } 86 85 87 86 /* ··· 93 94 { 94 95 bfa_rspq_ci(bfa, rspq) = ci; 95 96 writel(ci, bfa->iocfc.bfa_regs.rme_q_ci[rspq]); 96 - mmiowb(); 97 97 } 98 98 99 99 void
-2
drivers/scsi/bnx2fc/bnx2fc_hwi.c
··· 991 991 FCOE_CQE_TOGGLE_BIT_SHIFT); 992 992 msg = *((u32 *)rx_db); 993 993 writel(cpu_to_le32(msg), tgt->ctx_base); 994 - mmiowb(); 995 994 996 995 } 997 996 ··· 1408 1409 (tgt->sq_curr_toggle_bit << 15); 1409 1410 msg = *((u32 *)sq_db); 1410 1411 writel(cpu_to_le32(msg), tgt->ctx_base); 1411 - mmiowb(); 1412 1412 1413 1413 } 1414 1414
-3
drivers/scsi/bnx2i/bnx2i_hwi.c
··· 253 253 writew(ep->qp.rq_prod_idx, 254 254 ep->qp.ctx_base + CNIC_RECV_DOORBELL); 255 255 } 256 - mmiowb(); 257 256 } 258 257 259 258 ··· 278 279 bnx2i_ring_577xx_doorbell(bnx2i_conn); 279 280 } else 280 281 writew(count, ep->qp.ctx_base + CNIC_SEND_DOORBELL); 281 - 282 - mmiowb(); 283 282 } 284 283 285 284
-1
drivers/scsi/megaraid/megaraid_sas_base.c
··· 815 815 &(regs)->inbound_high_queue_port); 816 816 writel((lower_32_bits(frame_phys_addr) | (frame_count<<1))|1, 817 817 &(regs)->inbound_low_queue_port); 818 - mmiowb(); 819 818 spin_unlock_irqrestore(&instance->hba_lock, flags); 820 819 } 821 820
-1
drivers/scsi/megaraid/megaraid_sas_fusion.c
··· 242 242 &instance->reg_set->inbound_low_queue_port); 243 243 writel(le32_to_cpu(req_desc->u.high), 244 244 &instance->reg_set->inbound_high_queue_port); 245 - mmiowb(); 246 245 spin_unlock_irqrestore(&instance->hba_lock, flags); 247 246 #endif 248 247 }
-1
drivers/scsi/mpt3sas/mpt3sas_base.c
··· 3333 3333 spin_lock_irqsave(writeq_lock, flags); 3334 3334 __raw_writel((u32)(b), addr); 3335 3335 __raw_writel((u32)(b >> 32), (addr + 4)); 3336 - mmiowb(); 3337 3336 spin_unlock_irqrestore(writeq_lock, flags); 3338 3337 } 3339 3338
-1
drivers/scsi/qedf/qedf_io.c
··· 807 807 writel(*(u32 *)&dbell, fcport->p_doorbell); 808 808 /* Make sure SQ index is updated so f/w prcesses requests in order */ 809 809 wmb(); 810 - mmiowb(); 811 810 } 812 811 813 812 static void qedf_trace_io(struct qedf_rport *fcport, struct qedf_ioreq *io_req,
-1
drivers/scsi/qedi/qedi_fw.c
··· 985 985 * others they are two different assembly operations. 986 986 */ 987 987 wmb(); 988 - mmiowb(); 989 988 QEDI_INFO(&qedi_conn->qedi->dbg_ctx, QEDI_LOG_MP_REQ, 990 989 "prod_idx=0x%x, fw_prod_idx=0x%x, cid=0x%x\n", 991 990 qedi_conn->ep->sq_prod_idx, qedi_conn->ep->fw_sq_prod_idx,
-5
drivers/scsi/qla1280.c
··· 3004 3004 sp->flags |= SRB_SENT; 3005 3005 ha->actthreads++; 3006 3006 WRT_REG_WORD(&reg->mailbox4, ha->req_ring_index); 3007 - /* Enforce mmio write ordering; see comment in qla1280_isp_cmd(). */ 3008 - mmiowb(); 3009 3007 3010 3008 out: 3011 3009 if (status) ··· 3252 3254 sp->flags |= SRB_SENT; 3253 3255 ha->actthreads++; 3254 3256 WRT_REG_WORD(&reg->mailbox4, ha->req_ring_index); 3255 - /* Enforce mmio write ordering; see comment in qla1280_isp_cmd(). */ 3256 - mmiowb(); 3257 3257 3258 3258 out: 3259 3259 if (status) ··· 3375 3379 * See Documentation/driver-api/device-io.rst for more information. 3376 3380 */ 3377 3381 WRT_REG_WORD(&reg->mailbox4, ha->req_ring_index); 3378 - mmiowb(); 3379 3382 3380 3383 LEAVE("qla1280_isp_cmd"); 3381 3384 }
-1
drivers/ssb/pci.c
··· 305 305 else if (i % 2) 306 306 pr_cont("."); 307 307 writew(sprom[i], bus->mmio + bus->sprom_offset + (i * 2)); 308 - mmiowb(); 309 308 msleep(20); 310 309 } 311 310 err = pci_read_config_dword(pdev, SSB_SPROMCTL, &spromctl);
-4
drivers/ssb/pcmcia.c
··· 338 338 err = select_core_and_segment(dev, &offset); 339 339 if (likely(!err)) 340 340 writeb(value, bus->mmio + offset); 341 - mmiowb(); 342 341 spin_unlock_irqrestore(&bus->bar_lock, flags); 343 342 } 344 343 ··· 351 352 err = select_core_and_segment(dev, &offset); 352 353 if (likely(!err)) 353 354 writew(value, bus->mmio + offset); 354 - mmiowb(); 355 355 spin_unlock_irqrestore(&bus->bar_lock, flags); 356 356 } 357 357 ··· 366 368 writew((value & 0x0000FFFF), bus->mmio + offset); 367 369 writew(((value & 0xFFFF0000) >> 16), bus->mmio + offset + 2); 368 370 } 369 - mmiowb(); 370 371 spin_unlock_irqrestore(&bus->bar_lock, flags); 371 372 } 372 373 ··· 421 424 WARN_ON(1); 422 425 } 423 426 unlock: 424 - mmiowb(); 425 427 spin_unlock_irqrestore(&bus->bar_lock, flags); 426 428 } 427 429 #endif /* CONFIG_SSB_BLOCKIO */
-3
drivers/staging/comedi/drivers/mite.c
··· 371 371 writel(CHOR_CLRDONE, 372 372 mite->mmio + MITE_CHOR(mite_chan->channel)); 373 373 } 374 - mmiowb(); 375 374 spin_unlock_irqrestore(&mite->lock, flags); 376 375 return status; 377 376 } ··· 450 451 mite_chan->done = 0; 451 452 /* arm */ 452 453 writel(CHOR_START, mite->mmio + MITE_CHOR(mite_chan->channel)); 453 - mmiowb(); 454 454 spin_unlock_irqrestore(&mite->lock, flags); 455 455 } 456 456 EXPORT_SYMBOL_GPL(mite_dma_arm); ··· 636 638 CHCR_CLR_LC_IE | CHCR_CLR_CONT_RB_IE, 637 639 mite->mmio + MITE_CHCR(mite_chan->channel)); 638 640 mite_chan->ring = NULL; 639 - mmiowb(); 640 641 } 641 642 spin_unlock_irqrestore(&mite->lock, flags); 642 643 }
-2
drivers/staging/comedi/drivers/ni_660x.c
··· 320 320 ni_660x_write(dev, chip, devpriv->dma_cfg[chip] | 321 321 NI660X_DMA_CFG_RESET(mite_channel), 322 322 NI660X_DMA_CFG); 323 - mmiowb(); 324 323 } 325 324 326 325 static inline void ni_660x_unset_dma_channel(struct comedi_device *dev, ··· 332 333 devpriv->dma_cfg[chip] &= ~NI660X_DMA_CFG_SEL_MASK(mite_channel); 333 334 devpriv->dma_cfg[chip] |= NI660X_DMA_CFG_SEL_NONE(mite_channel); 334 335 ni_660x_write(dev, chip, devpriv->dma_cfg[chip], NI660X_DMA_CFG); 335 - mmiowb(); 336 336 } 337 337 338 338 static int ni_660x_request_mite_channel(struct comedi_device *dev,
-1
drivers/staging/comedi/drivers/ni_mio_common.c
··· 547 547 reg); 548 548 break; 549 549 } 550 - mmiowb(); 551 550 spin_unlock_irqrestore(&devpriv->soft_reg_copy_lock, flags); 552 551 } 553 552
-2
drivers/staging/comedi/drivers/ni_pcidio.c
··· 310 310 writeb(primary_DMAChannel_bits(devpriv->di_mite_chan->channel) | 311 311 secondary_DMAChannel_bits(devpriv->di_mite_chan->channel), 312 312 dev->mmio + DMA_LINE_CONTROL_GROUP1); 313 - mmiowb(); 314 313 spin_unlock_irqrestore(&devpriv->mite_channel_lock, flags); 315 314 return 0; 316 315 } ··· 326 327 writeb(primary_DMAChannel_bits(0) | 327 328 secondary_DMAChannel_bits(0), 328 329 dev->mmio + DMA_LINE_CONTROL_GROUP1); 329 - mmiowb(); 330 330 } 331 331 spin_unlock_irqrestore(&devpriv->mite_channel_lock, flags); 332 332 }
-1
drivers/staging/comedi/drivers/ni_tio.c
··· 234 234 regs[reg] &= ~mask; 235 235 regs[reg] |= (value & mask); 236 236 ni_tio_write(counter, regs[reg] | transient, reg); 237 - mmiowb(); 238 237 spin_unlock_irqrestore(&counter_dev->regs_lock, flags); 239 238 } 240 239 }
-2
drivers/staging/comedi/drivers/s626.c
··· 108 108 { 109 109 unsigned int val = (cmd << 16) | cmd; 110 110 111 - mmiowb(); 112 111 writel(val, dev->mmio + reg); 113 112 } 114 113 ··· 115 116 unsigned int cmd, unsigned int reg) 116 117 { 117 118 writel(cmd << 16, dev->mmio + reg); 118 - mmiowb(); 119 119 } 120 120 121 121 static bool s626_mc_test(struct comedi_device *dev,
-1
drivers/tty/serial/men_z135_uart.c
··· 353 353 354 354 memcpy_toio(port->membase + MEN_Z135_TX_RAM, &xmit->buf[xmit->tail], n); 355 355 xmit->tail = (xmit->tail + n) & (UART_XMIT_SIZE - 1); 356 - mmiowb(); 357 356 358 357 iowrite32(n & 0x3ff, port->membase + MEN_Z135_TX_CTRL); 359 358
-1
drivers/tty/serial/serial_txx9.c
··· 248 248 sio_out(up, TXX9_SIFCR, TXX9_SIFCR_SWRST); 249 249 /* TX4925 BUG WORKAROUND. Accessing SIOC register 250 250 * immediately after soft reset causes bus error. */ 251 - mmiowb(); 252 251 udelay(1); 253 252 while ((sio_in(up, TXX9_SIFCR) & TXX9_SIFCR_SWRST) && --tmout) 254 253 udelay(1);
-4
drivers/usb/early/xhci-dbc.c
··· 533 533 534 534 xdbc_mem_init(); 535 535 536 - mmiowb(); 537 - 538 536 ret = xdbc_start(); 539 537 if (ret < 0) 540 538 goto reset_out; ··· 584 586 return ret; 585 587 586 588 xdbc_mem_init(); 587 - 588 - mmiowb(); 589 589 590 590 ret = xdbc_start(); 591 591 if (ret < 0) {
-2
drivers/usb/host/xhci-dbgcap.c
··· 421 421 string_length = xhci_dbc_populate_strings(dbc->string); 422 422 xhci_dbc_init_contexts(xhci, string_length); 423 423 424 - mmiowb(); 425 - 426 424 xhci_dbc_eps_init(xhci); 427 425 dbc->state = DS_INITIALIZED; 428 426
-2
include/linux/qed/qed_if.h
··· 1338 1338 } 1339 1339 1340 1340 /* Let SB update */ 1341 - mmiowb(); 1342 1341 return rc; 1343 1342 } 1344 1343 ··· 1373 1374 /* Both segments (interrupts & acks) are written to same place address; 1374 1375 * Need to guarantee all commands will be received (in-order) by HW. 1375 1376 */ 1376 - mmiowb(); 1377 1377 barrier(); 1378 1378 } 1379 1379
-1
sound/soc/txx9/txx9aclc-ac97.c
··· 102 102 u32 ready = ACINT_CODECRDY(ac97->num) | ACINT_REGACCRDY; 103 103 104 104 __raw_writel(ACCTL_ENLINK, base + ACCTLDIS); 105 - mmiowb(); 106 105 udelay(1); 107 106 __raw_writel(ACCTL_ENLINK, base + ACCTLEN); 108 107 /* wait for primary codec ready status */