diff options
author | Imre Deak <imre.deak@intel.com> | 2013-03-22 17:10:44 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-03-23 07:15:58 -0400 |
commit | 5bd4687e57bbacec20930f580d025aee9fa1f4d8 (patch) | |
tree | 65a4498008dbbebf69b152535e9aac3846e03e8b | |
parent | f5ddf69736fb328800ccd1a06fe69ad2e830adbe (diff) |
drm/i915: set dummy page for stolen objects
This is needed since currently sg_for_each_page assumes that we have
a valid page in each sg item. It is only a real problem for
CONFIG_SPARSEMEM where the page is dereferenced, in other cases the
iterator works ok with an invalid page pointer.
We can remove this workaround when we have fixed sg_page_iter to work on
scatterlists without backing pages.
Signed-off-by: Imre Deak <imre.deak@intel.com>
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem_stolen.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c b/drivers/gpu/drm/i915/i915_gem_stolen.c index 69d97cbac13c..efaaba5c4194 100644 --- a/drivers/gpu/drm/i915/i915_gem_stolen.c +++ b/drivers/gpu/drm/i915/i915_gem_stolen.c | |||
@@ -222,8 +222,8 @@ i915_pages_create_for_stolen(struct drm_device *dev, | |||
222 | } | 222 | } |
223 | 223 | ||
224 | sg = st->sgl; | 224 | sg = st->sgl; |
225 | sg->offset = offset; | 225 | /* we set the dummy page here only to make for_each_sg_page work */ |
226 | sg->length = size; | 226 | sg_set_page(sg, dev_priv->gtt.scratch_page, size, offset); |
227 | 227 | ||
228 | sg_dma_address(sg) = (dma_addr_t)dev_priv->mm.stolen_base + offset; | 228 | sg_dma_address(sg) = (dma_addr_t)dev_priv->mm.stolen_base + offset; |
229 | sg_dma_len(sg) = size; | 229 | sg_dma_len(sg) = size; |