Message ID | 1387320131-16740-1-git-send-email-daniel.vetter@ffwll.ch (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Dec 17, 2013 at 11:42:11PM +0100, Daniel Vetter wrote: > But only when we indeed set up a gtt mapping. We need this since the > vma also holds a pages_pin_count, on top of the unconditional > pages_pin_count we grab for all stolen objects (to avoid swap-out). > > This should avoid a pages_pin_count underrun when cleaning up > framebuffers objects taken over from the BIOS. > > Reported-by: Jesse Barnes <jbarnes@virtuousgeek.org> > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > Cc: Ben Widawsky <benjamin.widawsky@intel.com> > Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> > --- > drivers/gpu/drm/i915/i915_gem_stolen.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c b/drivers/gpu/drm/i915/i915_gem_stolen.c > index d284d892ed94..fed87ec17211 100644 > --- a/drivers/gpu/drm/i915/i915_gem_stolen.c > +++ b/drivers/gpu/drm/i915/i915_gem_stolen.c > @@ -420,6 +420,7 @@ i915_gem_object_create_stolen_for_preallocated(struct drm_device *dev, > > list_add_tail(&obj->global_list, &dev_priv->mm.bound_list); > list_add_tail(&vma->mm_list, &ggtt->inactive_list); > + i915_gem_object_pin_pages(obj); > > return obj; > > -- > 1.8.4.3 > I'm missing why _i915_gem_object_create_stolen() isn't good enough for pinning the pages.
On Wed, Dec 18, 2013 at 1:00 AM, Ben Widawsky <benjamin.widawsky@intel.com> wrote: > I'm missing why _i915_gem_object_create_stolen() isn't good enough for > pinning the pages. Citing my commit message "... vma also holds a pages_pin_count". Which is on top of the general pages_pin_count we have for all stolen objects to avoid them getting swapped out. -Daniel
On Tue, Dec 17, 2013 at 11:42:11PM +0100, Daniel Vetter wrote: > But only when we indeed set up a gtt mapping. We need this since the > vma also holds a pages_pin_count, on top of the unconditional > pages_pin_count we grab for all stolen objects (to avoid swap-out). > > This should avoid a pages_pin_count underrun when cleaning up > framebuffers objects taken over from the BIOS. > > Reported-by: Jesse Barnes <jbarnes@virtuousgeek.org> > Cc: Jesse Barnes <jbarnes@virtuousgeek.org> > Cc: Ben Widawsky <benjamin.widawsky@intel.com> > Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> The bug is older than the introduction of vma. Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> -Chris
diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c b/drivers/gpu/drm/i915/i915_gem_stolen.c index d284d892ed94..fed87ec17211 100644 --- a/drivers/gpu/drm/i915/i915_gem_stolen.c +++ b/drivers/gpu/drm/i915/i915_gem_stolen.c @@ -420,6 +420,7 @@ i915_gem_object_create_stolen_for_preallocated(struct drm_device *dev, list_add_tail(&obj->global_list, &dev_priv->mm.bound_list); list_add_tail(&vma->mm_list, &ggtt->inactive_list); + i915_gem_object_pin_pages(obj); return obj;
But only when we indeed set up a gtt mapping. We need this since the vma also holds a pages_pin_count, on top of the unconditional pages_pin_count we grab for all stolen objects (to avoid swap-out). This should avoid a pages_pin_count underrun when cleaning up framebuffers objects taken over from the BIOS. Reported-by: Jesse Barnes <jbarnes@virtuousgeek.org> Cc: Jesse Barnes <jbarnes@virtuousgeek.org> Cc: Ben Widawsky <benjamin.widawsky@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> --- drivers/gpu/drm/i915/i915_gem_stolen.c | 1 + 1 file changed, 1 insertion(+)