Rev 2335 | Rev 2342 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2335 | Rev 2340 | ||
---|---|---|---|
Line 725... | Line 725... | ||
725 | gfp_t gfpmask) |
725 | gfp_t gfpmask) |
726 | { |
726 | { |
727 | int page_count, i; |
727 | int page_count, i; |
728 | struct page *page; |
728 | struct page *page; |
Line 729... | Line -... | ||
729 | - | ||
730 | ENTER(); |
- | |
731 | 729 | ||
732 | /* Get the list of pages out of our struct file. They'll be pinned |
730 | /* Get the list of pages out of our struct file. They'll be pinned |
733 | * at this point until we release them. |
731 | * at this point until we release them. |
734 | */ |
732 | */ |
735 | page_count = obj->base.size / PAGE_SIZE; |
733 | page_count = obj->base.size / PAGE_SIZE; |
Line 748... | Line 746... | ||
748 | } |
746 | } |
Line 749... | Line 747... | ||
749 | 747 | ||
750 | // if (obj->tiling_mode != I915_TILING_NONE) |
748 | // if (obj->tiling_mode != I915_TILING_NONE) |
Line 751... | Line 749... | ||
751 | // i915_gem_object_do_bit_17_swizzle(obj); |
749 | // i915_gem_object_do_bit_17_swizzle(obj); |
Line 752... | Line 750... | ||
752 | 750 | ||
Line 753... | Line 751... | ||
753 | LEAVE(); |
751 | |
754 | 752 | ||
Line 1067... | Line 1065... | ||
1067 | gfp_t gfpmask = 0; //__GFP_NORETRY | __GFP_NOWARN; |
1065 | gfp_t gfpmask = 0; //__GFP_NORETRY | __GFP_NOWARN; |
1068 | u32 size, fence_size, fence_alignment, unfenced_alignment; |
1066 | u32 size, fence_size, fence_alignment, unfenced_alignment; |
1069 | bool mappable, fenceable; |
1067 | bool mappable, fenceable; |
1070 | int ret; |
1068 | int ret; |
Line 1071... | Line -... | ||
1071 | - | ||
1072 | ENTER(); |
- | |
1073 | 1069 | ||
1074 | if (obj->madv != I915_MADV_WILLNEED) { |
1070 | if (obj->madv != I915_MADV_WILLNEED) { |
1075 | DRM_ERROR("Attempting to bind a purgeable object\n"); |
1071 | DRM_ERROR("Attempting to bind a purgeable object\n"); |
1076 | return -EINVAL; |
1072 | return -EINVAL; |
Line 1195... | Line 1191... | ||
1195 | mappable = |
1191 | mappable = |
1196 | obj->gtt_offset + obj->base.size <= dev_priv->mm.gtt_mappable_end; |
1192 | obj->gtt_offset + obj->base.size <= dev_priv->mm.gtt_mappable_end; |
Line 1197... | Line 1193... | ||
1197 | 1193 | ||
Line 1198... | Line -... | ||
1198 | obj->map_and_fenceable = mappable && fenceable; |
- | |
1199 | 1194 | obj->map_and_fenceable = mappable && fenceable; |
|
1200 | LEAVE(); |
1195 | |
1201 | // trace_i915_gem_object_bind(obj, map_and_fenceable); |
1196 | // trace_i915_gem_object_bind(obj, map_and_fenceable); |
Line 1202... | Line 1197... | ||
1202 | return 0; |
1197 | return 0; |
Line 1495... | Line 1490... | ||
1495 | { |
1490 | { |
1496 | struct drm_device *dev = obj->base.dev; |
1491 | struct drm_device *dev = obj->base.dev; |
1497 | struct drm_i915_private *dev_priv = dev->dev_private; |
1492 | struct drm_i915_private *dev_priv = dev->dev_private; |
1498 | int ret; |
1493 | int ret; |
Line 1499... | Line -... | ||
1499 | - | ||
1500 | ENTER(); |
- | |
1501 | 1494 | ||
1502 | BUG_ON(obj->pin_count == DRM_I915_GEM_OBJECT_MAX_PIN_COUNT); |
1495 | BUG_ON(obj->pin_count == DRM_I915_GEM_OBJECT_MAX_PIN_COUNT); |
Line 1503... | Line 1496... | ||
1503 | // WARN_ON(i915_verify_lists(dev)); |
1496 | // WARN_ON(i915_verify_lists(dev)); |
1504 | 1497 | ||
Line 1532... | Line 1525... | ||
1532 | list_move_tail(&obj->mm_list, |
1525 | list_move_tail(&obj->mm_list, |
1533 | &dev_priv->mm.pinned_list); |
1526 | &dev_priv->mm.pinned_list); |
1534 | } |
1527 | } |
1535 | obj->pin_mappable |= map_and_fenceable; |
1528 | obj->pin_mappable |= map_and_fenceable; |
Line 1536... | Line -... | ||
1536 | - | ||
1537 | LEAVE(); |
- | |
1538 | 1529 | ||
1539 | // WARN_ON(i915_verify_lists(dev)); |
1530 | // WARN_ON(i915_verify_lists(dev)); |
1540 | return 0; |
1531 | return 0; |
Line 1584... | Line 1575... | ||
1584 | struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev, |
1575 | struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev, |
1585 | size_t size) |
1576 | size_t size) |
1586 | { |
1577 | { |
1587 | struct drm_i915_private *dev_priv = dev->dev_private; |
1578 | struct drm_i915_private *dev_priv = dev->dev_private; |
1588 | struct drm_i915_gem_object *obj; |
1579 | struct drm_i915_gem_object *obj; |
1589 | ENTER(); |
1580 | |
1590 | obj = kzalloc(sizeof(*obj), GFP_KERNEL); |
1581 | obj = kzalloc(sizeof(*obj), GFP_KERNEL); |
1591 | if (obj == NULL) |
1582 | if (obj == NULL) |
1592 | return NULL; |
1583 | return NULL; |
Line 1593... | Line 1584... | ||
1593 | 1584 | ||
Line 1627... | Line 1618... | ||
1627 | INIT_LIST_HEAD(&obj->exec_list); |
1618 | INIT_LIST_HEAD(&obj->exec_list); |
1628 | INIT_LIST_HEAD(&obj->gpu_write_list); |
1619 | INIT_LIST_HEAD(&obj->gpu_write_list); |
1629 | obj->madv = I915_MADV_WILLNEED; |
1620 | obj->madv = I915_MADV_WILLNEED; |
1630 | /* Avoid an unnecessary call to unbind on the first bind. */ |
1621 | /* Avoid an unnecessary call to unbind on the first bind. */ |
1631 | obj->map_and_fenceable = true; |
1622 | obj->map_and_fenceable = true; |
1632 | LEAVE(); |
1623 | |
1633 | return obj; |
1624 | return obj; |
1634 | } |
1625 | } |