diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index e4408daf8cef..e2421869a40c 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
@@ -2423,6 +2423,16 @@ i915_gem_clflush_object(struct drm_gem_object *obj) | |||
2423 | if (obj_priv->pages == NULL) | 2423 | if (obj_priv->pages == NULL) |
2424 | return; | 2424 | return; |
2425 | 2425 | ||
2426 | /* XXX: The 865 in particular appears to be weird in how it handles | ||
2427 | * cache flushing. We haven't figured it out, but the | ||
2428 | * clflush+agp_chipset_flush doesn't appear to successfully get the | ||
2429 | * data visible to the PGU, while wbinvd + agp_chipset_flush does. | ||
2430 | */ | ||
2431 | if (IS_I865G(obj->dev)) { | ||
2432 | wbinvd(); | ||
2433 | return; | ||
2434 | } | ||
2435 | |||
2426 | drm_clflush_pages(obj_priv->pages, obj->size / PAGE_SIZE); | 2436 | drm_clflush_pages(obj_priv->pages, obj->size / PAGE_SIZE); |
2427 | } | 2437 | } |
2428 | 2438 | ||