diff options
author | Yufeng Shen <miletus@chromium.org> | 2012-02-13 17:36:54 -0500 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-02-14 04:39:53 -0500 |
commit | 8a8ed1f5143b3df312e436ab15290e4a7ca6a559 (patch) | |
tree | 90067c14702ee364b47c551d1467508329521f28 /drivers/gpu/drm/i915/i915_drv.h | |
parent | b1d7e4b41fd0f72ea8149056778db5d737739305 (diff) |
drm/i915: Fix race condition in accessing GMBUS
GMBUS has several ports and each has it's own corresponding
I2C adpater. When multiple I2C adapters call gmbus_xfer() at
the same time there is a race condition in using the underlying
GMBUS controller. Fixing this by adding a mutex lock when calling
gmbus_xfer().
v2: Moved gmbus_mutex below intel_gmbus and added comments.
Rebased to drm-intel-next-queued.
Signed-off-by: Yufeng Shen <miletus@chromium.org>
[danvet: Shortened the gmbus_mutex comment a bit and add the patch
revision comment to the commit message.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_drv.h')
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index caec1fdb7dda..8e3eb5e282a1 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
@@ -313,6 +313,10 @@ typedef struct drm_i915_private { | |||
313 | u32 reg0; | 313 | u32 reg0; |
314 | } *gmbus; | 314 | } *gmbus; |
315 | 315 | ||
316 | /** gmbus_mutex protects against concurrent usage of the single hw gmbus | ||
317 | * controller on different i2c buses. */ | ||
318 | struct mutex gmbus_mutex; | ||
319 | |||
316 | struct pci_dev *bridge_dev; | 320 | struct pci_dev *bridge_dev; |
317 | struct intel_ring_buffer ring[I915_NUM_RINGS]; | 321 | struct intel_ring_buffer ring[I915_NUM_RINGS]; |
318 | uint32_t next_seqno; | 322 | uint32_t next_seqno; |