diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index a06974127f22..9e35dafc5807 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
| @@ -1801,7 +1801,14 @@ i915_gem_object_get_pages_gtt(struct drm_i915_gem_object *obj) | |||
| 1801 | gfp |= __GFP_NORETRY | __GFP_NOWARN | __GFP_NO_KSWAPD; | 1801 | gfp |= __GFP_NORETRY | __GFP_NOWARN | __GFP_NO_KSWAPD; |
| 1802 | gfp &= ~(__GFP_IO | __GFP_WAIT); | 1802 | gfp &= ~(__GFP_IO | __GFP_WAIT); |
| 1803 | } | 1803 | } |
| 1804 | 1804 | #ifdef CONFIG_SWIOTLB | |
| 1805 | if (swiotlb_nr_tbl()) { | ||
| 1806 | st->nents++; | ||
| 1807 | sg_set_page(sg, page, PAGE_SIZE, 0); | ||
| 1808 | sg = sg_next(sg); | ||
| 1809 | continue; | ||
| 1810 | } | ||
| 1811 | #endif | ||
| 1805 | if (!i || page_to_pfn(page) != last_pfn + 1) { | 1812 | if (!i || page_to_pfn(page) != last_pfn + 1) { |
| 1806 | if (i) | 1813 | if (i) |
| 1807 | sg = sg_next(sg); | 1814 | sg = sg_next(sg); |
| @@ -1812,8 +1819,10 @@ i915_gem_object_get_pages_gtt(struct drm_i915_gem_object *obj) | |||
| 1812 | } | 1819 | } |
| 1813 | last_pfn = page_to_pfn(page); | 1820 | last_pfn = page_to_pfn(page); |
| 1814 | } | 1821 | } |
| 1815 | 1822 | #ifdef CONFIG_SWIOTLB | |
| 1816 | sg_mark_end(sg); | 1823 | if (!swiotlb_nr_tbl()) |
| 1824 | #endif | ||
| 1825 | sg_mark_end(sg); | ||
| 1817 | obj->pages = st; | 1826 | obj->pages = st; |
| 1818 | 1827 | ||
| 1819 | if (i915_gem_object_needs_bit17_swizzle(obj)) | 1828 | if (i915_gem_object_needs_bit17_swizzle(obj)) |
