drm/i915: Include a note about the dangers of I915_READ64/I915_WRITE64
It is important that the user is fully aware that the seemingly atomic
read/write of a 64-bit value from MMIO space, may in fact be 2 separate
operations of 32-bits. This can lead to hilarity, such as
commit d18b961903
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Wed Jul 10 13:36:23 2013 +0100
drm/i915: Fix incoherence with fence updates on Sandybridge+
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
d0a7b6de04
commit
698b3135ac
|
@ -2736,6 +2736,12 @@ void vlv_force_wake_put(struct drm_i915_private *dev_priv, int fw_engine);
|
|||
#define I915_READ_NOTRACE(reg) dev_priv->uncore.funcs.mmio_readl(dev_priv, (reg), false)
|
||||
#define I915_WRITE_NOTRACE(reg, val) dev_priv->uncore.funcs.mmio_writel(dev_priv, (reg), (val), false)
|
||||
|
||||
/* Be very careful with read/write 64-bit values. On 32-bit machines, they
|
||||
* will be implemented using 2 32-bit writes in an arbitrary order with
|
||||
* an arbitrary delay between them. This can cause the hardware to
|
||||
* act upon the intermediate value, possibly leading to corruption and
|
||||
* machine death. You have been warned.
|
||||
*/
|
||||
#define I915_WRITE64(reg, val) dev_priv->uncore.funcs.mmio_writeq(dev_priv, (reg), (val), true)
|
||||
#define I915_READ64(reg) dev_priv->uncore.funcs.mmio_readq(dev_priv, (reg), true)
|
||||
|
||||
|
|
Loading…
Reference in New Issue