~ubuntu-branches/ubuntu/wily/linux-ti-omap4/wily

« back to all changes in this revision

Viewing changes to ubuntu/i915/i915_gem.c

  • Committer: Package Import Robot
  • Author(s): Paolo Pisati, Paolo Pisati
  • Date: 2013-07-11 18:35:20 UTC
  • Revision ID: package-import@ubuntu.com-20130711183520-htnf1x4y5r11hndr
Tags: 3.5.0-229.42
* Release Tracking Bug
  - LP: #1199276

[ Paolo Pisati ]

* [Config] CONFIG_ATH9K_LEGACY_RATE_CONTROL is not set

Show diffs side-by-side

added added

removed removed

Lines of Context:
2491
2491
        /* Avoid an unnecessary call to unbind on rebind. */
2492
2492
        obj->map_and_fenceable = true;
2493
2493
 
2494
 
        drm_mm_hsw_put_block(obj->gtt_space);
 
2494
        drm_mm_put_block_hsw(obj->gtt_space);
2495
2495
        obj->gtt_space = NULL;
2496
2496
        obj->gtt_offset = 0;
2497
2497
 
2838
2838
}
2839
2839
 
2840
2840
static bool i915_gem_valid_gtt_space(struct drm_device *dev,
2841
 
                                     struct drm_mm_hsw_node *gtt_space,
 
2841
                                     struct drm_mm_node_hsw *gtt_space,
2842
2842
                                     unsigned long cache_level)
2843
2843
{
2844
 
        struct drm_mm_hsw_node *other;
 
2844
        struct drm_mm_node_hsw *other;
2845
2845
 
2846
2846
        /* On non-LLC machines we have to be careful when putting differing
2847
2847
         * types of snoopable memory together to avoid the prefetcher
2856
2856
        if (list_empty(&gtt_space->node_list))
2857
2857
                return true;
2858
2858
 
2859
 
        other = list_entry(gtt_space->node_list.prev, struct drm_mm_hsw_node, node_list);
 
2859
        other = list_entry(gtt_space->node_list.prev, struct drm_mm_node_hsw, node_list);
2860
2860
        if (other->allocated && !other->hole_follows && other->color != cache_level)
2861
2861
                return false;
2862
2862
 
2863
 
        other = list_entry(gtt_space->node_list.next, struct drm_mm_hsw_node, node_list);
 
2863
        other = list_entry(gtt_space->node_list.next, struct drm_mm_node_hsw, node_list);
2864
2864
        if (other->allocated && !gtt_space->hole_follows && other->color != cache_level)
2865
2865
                return false;
2866
2866
 
2918
2918
{
2919
2919
        struct drm_device *dev = obj->base.dev;
2920
2920
        drm_i915_private_t *dev_priv = dev->dev_private;
2921
 
        struct drm_mm_hsw_node *node;
 
2921
        struct drm_mm_node_hsw *node;
2922
2922
        u32 size, fence_size, fence_alignment, unfenced_alignment;
2923
2923
        bool mappable, fenceable;
2924
2924
        int ret;
2972
2972
 
2973
2973
 search_free:
2974
2974
        if (map_and_fenceable)
2975
 
                ret = drm_mm_hsw_insert_node_in_range_generic(&dev_priv->mm.gtt_space, node,
 
2975
                ret = drm_mm_insert_node_in_range_generic_hsw(&dev_priv->mm.gtt_space, node,
2976
2976
                                                          size, alignment, obj->cache_level,
2977
2977
                                                          0, dev_priv->mm.gtt_mappable_end);
2978
2978
        else
2979
 
                ret = drm_mm_hsw_insert_node_generic(&dev_priv->mm.gtt_space, node,
 
2979
                ret = drm_mm_insert_node_generic_hsw(&dev_priv->mm.gtt_space, node,
2980
2980
                                                 size, alignment, obj->cache_level);
2981
2981
        if (ret) {
2982
2982
                ret = i915_gem_evict_something(dev, size, alignment,
2992
2992
        }
2993
2993
        if (WARN_ON(!i915_gem_valid_gtt_space(dev, node, obj->cache_level))) {
2994
2994
                i915_gem_object_unpin_pages(obj);
2995
 
                drm_mm_hsw_put_block(node);
 
2995
                drm_mm_put_block_hsw(node);
2996
2996
                return -EINVAL;
2997
2997
        }
2998
2998
 
2999
2999
        ret = i915_gem_gtt_prepare_object(obj);
3000
3000
        if (ret) {
3001
3001
                i915_gem_object_unpin_pages(obj);
3002
 
                drm_mm_hsw_put_block(node);
 
3002
                drm_mm_put_block_hsw(node);
3003
3003
                return ret;
3004
3004
        }
3005
3005