aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/gma500/psb_irq.c2
-rw-r--r--drivers/gpu/drm/mga/mga_drv.h2
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_dma.c2
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_dma.h2
-rw-r--r--drivers/gpu/drm/r128/r128_drv.h2
-rw-r--r--drivers/gpu/drm/radeon/radeon_cp.c2
-rw-r--r--drivers/gpu/drm/radeon/radeon_ring.c2
-rw-r--r--drivers/gpu/drm/savage/savage_bci.c6
-rw-r--r--drivers/gpu/drm/savage/savage_state.c2
-rw-r--r--drivers/gpu/drm/via/via_dma.c4
-rw-r--r--drivers/gpu/drm/via/via_dmablit.c2
-rw-r--r--include/drm/drm_os_linux.h7
12 files changed, 14 insertions, 21 deletions
diff --git a/drivers/gpu/drm/gma500/psb_irq.c b/drivers/gpu/drm/gma500/psb_irq.c
index ef00bce9991a..a9bb34704738 100644
--- a/drivers/gpu/drm/gma500/psb_irq.c
+++ b/drivers/gpu/drm/gma500/psb_irq.c
@@ -253,7 +253,7 @@ irqreturn_t psb_irq_handler(int irq, void *arg)
253 253
254 PSB_WVDC32(vdc_stat, PSB_INT_IDENTITY_R); 254 PSB_WVDC32(vdc_stat, PSB_INT_IDENTITY_R);
255 (void) PSB_RVDC32(PSB_INT_IDENTITY_R); 255 (void) PSB_RVDC32(PSB_INT_IDENTITY_R);
256 DRM_READMEMORYBARRIER(); 256 rmb();
257 257
258 if (!handled) 258 if (!handled)
259 return IRQ_NONE; 259 return IRQ_NONE;
diff --git a/drivers/gpu/drm/mga/mga_drv.h b/drivers/gpu/drm/mga/mga_drv.h
index 901e4f935fed..fe453213600a 100644
--- a/drivers/gpu/drm/mga/mga_drv.h
+++ b/drivers/gpu/drm/mga/mga_drv.h
@@ -193,7 +193,7 @@ extern void mga_driver_irq_uninstall(struct drm_device *dev);
193extern long mga_compat_ioctl(struct file *filp, unsigned int cmd, 193extern long mga_compat_ioctl(struct file *filp, unsigned int cmd,
194 unsigned long arg); 194 unsigned long arg);
195 195
196#define mga_flush_write_combine() DRM_WRITEMEMORYBARRIER() 196#define mga_flush_write_combine() wmb()
197 197
198#define MGA_READ8(reg) DRM_READ8(dev_priv->mmio, (reg)) 198#define MGA_READ8(reg) DRM_READ8(dev_priv->mmio, (reg))
199#define MGA_READ(reg) DRM_READ32(dev_priv->mmio, (reg)) 199#define MGA_READ(reg) DRM_READ32(dev_priv->mmio, (reg))
diff --git a/drivers/gpu/drm/nouveau/nouveau_dma.c b/drivers/gpu/drm/nouveau/nouveau_dma.c
index 40f91e1e5842..c177272152e2 100644
--- a/drivers/gpu/drm/nouveau/nouveau_dma.c
+++ b/drivers/gpu/drm/nouveau/nouveau_dma.c
@@ -100,7 +100,7 @@ nv50_dma_push(struct nouveau_channel *chan, struct nouveau_bo *bo,
100 100
101 chan->dma.ib_put = (chan->dma.ib_put + 1) & chan->dma.ib_max; 101 chan->dma.ib_put = (chan->dma.ib_put + 1) & chan->dma.ib_max;
102 102
103 DRM_MEMORYBARRIER(); 103 mb();
104 /* Flush writes. */ 104 /* Flush writes. */
105 nouveau_bo_rd32(pb, 0); 105 nouveau_bo_rd32(pb, 0);
106 106
diff --git a/drivers/gpu/drm/nouveau/nouveau_dma.h b/drivers/gpu/drm/nouveau/nouveau_dma.h
index 984004d66a6d..dc0e0c5cadb4 100644
--- a/drivers/gpu/drm/nouveau/nouveau_dma.h
+++ b/drivers/gpu/drm/nouveau/nouveau_dma.h
@@ -155,7 +155,7 @@ BEGIN_IMC0(struct nouveau_channel *chan, int subc, int mthd, u16 data)
155} 155}
156 156
157#define WRITE_PUT(val) do { \ 157#define WRITE_PUT(val) do { \
158 DRM_MEMORYBARRIER(); \ 158 mb(); \
159 nouveau_bo_rd32(chan->push.buffer, 0); \ 159 nouveau_bo_rd32(chan->push.buffer, 0); \
160 nv_wo32(chan->object, chan->user_put, ((val) << 2) + chan->push.vma.offset); \ 160 nv_wo32(chan->object, chan->user_put, ((val) << 2) + chan->push.vma.offset); \
161} while (0) 161} while (0)
diff --git a/drivers/gpu/drm/r128/r128_drv.h b/drivers/gpu/drm/r128/r128_drv.h
index 4318bfa845cb..5bf3f5ff805d 100644
--- a/drivers/gpu/drm/r128/r128_drv.h
+++ b/drivers/gpu/drm/r128/r128_drv.h
@@ -514,7 +514,7 @@ do { \
514 if (R128_VERBOSE) \ 514 if (R128_VERBOSE) \
515 DRM_INFO("COMMIT_RING() tail=0x%06x\n", \ 515 DRM_INFO("COMMIT_RING() tail=0x%06x\n", \
516 dev_priv->ring.tail); \ 516 dev_priv->ring.tail); \
517 DRM_MEMORYBARRIER(); \ 517 mb(); \
518 R128_WRITE(R128_PM4_BUFFER_DL_WPTR, dev_priv->ring.tail); \ 518 R128_WRITE(R128_PM4_BUFFER_DL_WPTR, dev_priv->ring.tail); \
519 R128_READ(R128_PM4_BUFFER_DL_WPTR); \ 519 R128_READ(R128_PM4_BUFFER_DL_WPTR); \
520} while (0) 520} while (0)
diff --git a/drivers/gpu/drm/radeon/radeon_cp.c b/drivers/gpu/drm/radeon/radeon_cp.c
index d73013e6f58a..bb0d5c3a8311 100644
--- a/drivers/gpu/drm/radeon/radeon_cp.c
+++ b/drivers/gpu/drm/radeon/radeon_cp.c
@@ -2228,7 +2228,7 @@ void radeon_commit_ring(drm_radeon_private_t *dev_priv)
2228 2228
2229 dev_priv->ring.tail &= dev_priv->ring.tail_mask; 2229 dev_priv->ring.tail &= dev_priv->ring.tail_mask;
2230 2230
2231 DRM_MEMORYBARRIER(); 2231 mb();
2232 GET_RING_HEAD( dev_priv ); 2232 GET_RING_HEAD( dev_priv );
2233 2233
2234 if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_R600) { 2234 if ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_R600) {
diff --git a/drivers/gpu/drm/radeon/radeon_ring.c b/drivers/gpu/drm/radeon/radeon_ring.c
index 9214403ae173..ca2d71afeb02 100644
--- a/drivers/gpu/drm/radeon/radeon_ring.c
+++ b/drivers/gpu/drm/radeon/radeon_ring.c
@@ -463,7 +463,7 @@ void radeon_ring_commit(struct radeon_device *rdev, struct radeon_ring *ring)
463 while (ring->wptr & ring->align_mask) { 463 while (ring->wptr & ring->align_mask) {
464 radeon_ring_write(ring, ring->nop); 464 radeon_ring_write(ring, ring->nop);
465 } 465 }
466 DRM_MEMORYBARRIER(); 466 mb();
467 radeon_ring_set_wptr(rdev, ring); 467 radeon_ring_set_wptr(rdev, ring);
468} 468}
469 469
diff --git a/drivers/gpu/drm/savage/savage_bci.c b/drivers/gpu/drm/savage/savage_bci.c
index 6e673fa968e5..d2b2df9e26f3 100644
--- a/drivers/gpu/drm/savage/savage_bci.c
+++ b/drivers/gpu/drm/savage/savage_bci.c
@@ -49,7 +49,7 @@ savage_bci_wait_fifo_shadow(drm_savage_private_t * dev_priv, unsigned int n)
49#endif 49#endif
50 50
51 for (i = 0; i < SAVAGE_DEFAULT_USEC_TIMEOUT; i++) { 51 for (i = 0; i < SAVAGE_DEFAULT_USEC_TIMEOUT; i++) {
52 DRM_MEMORYBARRIER(); 52 mb();
53 status = dev_priv->status_ptr[0]; 53 status = dev_priv->status_ptr[0];
54 if ((status & mask) < threshold) 54 if ((status & mask) < threshold)
55 return 0; 55 return 0;
@@ -123,7 +123,7 @@ savage_bci_wait_event_shadow(drm_savage_private_t * dev_priv, uint16_t e)
123 int i; 123 int i;
124 124
125 for (i = 0; i < SAVAGE_EVENT_USEC_TIMEOUT; i++) { 125 for (i = 0; i < SAVAGE_EVENT_USEC_TIMEOUT; i++) {
126 DRM_MEMORYBARRIER(); 126 mb();
127 status = dev_priv->status_ptr[1]; 127 status = dev_priv->status_ptr[1];
128 if ((((status & 0xffff) - e) & 0xffff) <= 0x7fff || 128 if ((((status & 0xffff) - e) & 0xffff) <= 0x7fff ||
129 (status & 0xffff) == 0) 129 (status & 0xffff) == 0)
@@ -449,7 +449,7 @@ static void savage_dma_flush(drm_savage_private_t * dev_priv)
449 } 449 }
450 } 450 }
451 451
452 DRM_MEMORYBARRIER(); 452 mb();
453 453
454 /* do flush ... */ 454 /* do flush ... */
455 phys_addr = dev_priv->cmd_dma->offset + 455 phys_addr = dev_priv->cmd_dma->offset +
diff --git a/drivers/gpu/drm/savage/savage_state.c b/drivers/gpu/drm/savage/savage_state.c
index 2d3e56d94be3..c01ad0aeaa58 100644
--- a/drivers/gpu/drm/savage/savage_state.c
+++ b/drivers/gpu/drm/savage/savage_state.c
@@ -1032,7 +1032,7 @@ int savage_bci_cmdbuf(struct drm_device *dev, void *data, struct drm_file *file_
1032 1032
1033 /* Make sure writes to DMA buffers are finished before sending 1033 /* Make sure writes to DMA buffers are finished before sending
1034 * DMA commands to the graphics hardware. */ 1034 * DMA commands to the graphics hardware. */
1035 DRM_MEMORYBARRIER(); 1035 mb();
1036 1036
1037 /* Coming from user space. Don't know if the Xserver has 1037 /* Coming from user space. Don't know if the Xserver has
1038 * emitted wait commands. Assuming the worst. */ 1038 * emitted wait commands. Assuming the worst. */
diff --git a/drivers/gpu/drm/via/via_dma.c b/drivers/gpu/drm/via/via_dma.c
index 3436fdad22c5..5d4179284964 100644
--- a/drivers/gpu/drm/via/via_dma.c
+++ b/drivers/gpu/drm/via/via_dma.c
@@ -60,7 +60,7 @@
60 dev_priv->dma_low += 8; \ 60 dev_priv->dma_low += 8; \
61} 61}
62 62
63#define via_flush_write_combine() DRM_MEMORYBARRIER() 63#define via_flush_write_combine() mb()
64 64
65#define VIA_OUT_RING_QW(w1, w2) do { \ 65#define VIA_OUT_RING_QW(w1, w2) do { \
66 *vb++ = (w1); \ 66 *vb++ = (w1); \
@@ -543,7 +543,7 @@ static void via_cmdbuf_start(drm_via_private_t *dev_priv)
543 543
544 VIA_WRITE(VIA_REG_TRANSPACE, pause_addr_hi); 544 VIA_WRITE(VIA_REG_TRANSPACE, pause_addr_hi);
545 VIA_WRITE(VIA_REG_TRANSPACE, pause_addr_lo); 545 VIA_WRITE(VIA_REG_TRANSPACE, pause_addr_lo);
546 DRM_WRITEMEMORYBARRIER(); 546 wmb();
547 VIA_WRITE(VIA_REG_TRANSPACE, command | HC_HAGPCMNT_MASK); 547 VIA_WRITE(VIA_REG_TRANSPACE, command | HC_HAGPCMNT_MASK);
548 VIA_READ(VIA_REG_TRANSPACE); 548 VIA_READ(VIA_REG_TRANSPACE);
549 549
diff --git a/drivers/gpu/drm/via/via_dmablit.c b/drivers/gpu/drm/via/via_dmablit.c
index 694b9954cbbc..ba33cf679180 100644
--- a/drivers/gpu/drm/via/via_dmablit.c
+++ b/drivers/gpu/drm/via/via_dmablit.c
@@ -217,7 +217,7 @@ via_fire_dmablit(struct drm_device *dev, drm_via_sg_info_t *vsg, int engine)
217 VIA_WRITE(VIA_PCI_DMA_MR0 + engine*0x04, VIA_DMA_MR_CM | VIA_DMA_MR_TDIE); 217 VIA_WRITE(VIA_PCI_DMA_MR0 + engine*0x04, VIA_DMA_MR_CM | VIA_DMA_MR_TDIE);
218 VIA_WRITE(VIA_PCI_DMA_BCR0 + engine*0x10, 0); 218 VIA_WRITE(VIA_PCI_DMA_BCR0 + engine*0x10, 0);
219 VIA_WRITE(VIA_PCI_DMA_DPR0 + engine*0x10, vsg->chain_start); 219 VIA_WRITE(VIA_PCI_DMA_DPR0 + engine*0x10, vsg->chain_start);
220 DRM_WRITEMEMORYBARRIER(); 220 wmb();
221 VIA_WRITE(VIA_PCI_DMA_CSR0 + engine*0x04, VIA_DMA_CSR_DE | VIA_DMA_CSR_TS); 221 VIA_WRITE(VIA_PCI_DMA_CSR0 + engine*0x04, VIA_DMA_CSR_DE | VIA_DMA_CSR_TS);
222 VIA_READ(VIA_PCI_DMA_CSR0 + engine*0x04); 222 VIA_READ(VIA_PCI_DMA_CSR0 + engine*0x04);
223} 223}
diff --git a/include/drm/drm_os_linux.h b/include/drm/drm_os_linux.h
index 2953b1d83022..43008938b6b2 100644
--- a/include/drm/drm_os_linux.h
+++ b/include/drm/drm_os_linux.h
@@ -35,19 +35,12 @@ static inline void writeq(u64 val, void __iomem *reg)
35#define DRM_WRITE16(map, offset, val) writew(val, ((void __iomem *)(map)->handle) + (offset)) 35#define DRM_WRITE16(map, offset, val) writew(val, ((void __iomem *)(map)->handle) + (offset))
36/** Write a dword into a MMIO region */ 36/** Write a dword into a MMIO region */
37#define DRM_WRITE32(map, offset, val) writel(val, ((void __iomem *)(map)->handle) + (offset)) 37#define DRM_WRITE32(map, offset, val) writel(val, ((void __iomem *)(map)->handle) + (offset))
38/** Read memory barrier */
39 38
40/** Read a qword from a MMIO region - be careful using these unless you really understand them */ 39/** Read a qword from a MMIO region - be careful using these unless you really understand them */
41#define DRM_READ64(map, offset) readq(((void __iomem *)(map)->handle) + (offset)) 40#define DRM_READ64(map, offset) readq(((void __iomem *)(map)->handle) + (offset))
42/** Write a qword into a MMIO region */ 41/** Write a qword into a MMIO region */
43#define DRM_WRITE64(map, offset, val) writeq(val, ((void __iomem *)(map)->handle) + (offset)) 42#define DRM_WRITE64(map, offset, val) writeq(val, ((void __iomem *)(map)->handle) + (offset))
44 43
45#define DRM_READMEMORYBARRIER() rmb()
46/** Write memory barrier */
47#define DRM_WRITEMEMORYBARRIER() wmb()
48/** Read/write memory barrier */
49#define DRM_MEMORYBARRIER() mb()
50
51#define DRM_WAIT_ON( ret, queue, timeout, condition ) \ 44#define DRM_WAIT_ON( ret, queue, timeout, condition ) \
52do { \ 45do { \
53 DECLARE_WAITQUEUE(entry, current); \ 46 DECLARE_WAITQUEUE(entry, current); \