> -----Original Message----- > From: Intel-gfx [mailto:intel-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx] On Behalf > Of Daniel Vetter > Sent: Wednesday, August 06, 2014 2:05 PM > To: Intel Graphics Development > Cc: Daniel Vetter > Subject: [PATCH 07/15] drm/i915: Allow > i915_gem_setup_global_gtt to fail > > We already needs this just as a safety check in case the preallocation > reservation dance fails. But we definitely need this to be able to > move tha aliasing ppgtt setup back out of the context code to this > place, where it belongs. > > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > --- > drivers/gpu/drm/i915/i915_gem.c | 7 ++++++- > drivers/gpu/drm/i915/i915_gem_gtt.c | 16 ++++++++++------ > drivers/gpu/drm/i915/i915_gem_gtt.h | 4 ++-- > 3 files changed, 18 insertions(+), 9 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_gem.c > b/drivers/gpu/drm/i915/i915_gem.c > index f4e57fe05c6a..d8399ee622b9 100644 > --- a/drivers/gpu/drm/i915/i915_gem.c > +++ b/drivers/gpu/drm/i915/i915_gem.c > @@ -4762,7 +4762,12 @@ int i915_gem_init(struct drm_device *dev) > DRM_DEBUG_DRIVER("allow wake ack timed > out\n"); > } > > - i915_gem_init_userptr(dev); > + ret = i915_gem_init_userptr(dev); > + if (ret) { > + mutex_unlock(&dev->struct_mutex); > + return ret; > + } > + > i915_gem_init_global_gtt(dev); > > ret = i915_gem_context_init(dev); > diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c > b/drivers/gpu/drm/i915/i915_gem_gtt.c > index 3753bf184865..4fa7807ed4d5 100644 > --- a/drivers/gpu/drm/i915/i915_gem_gtt.c > +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c > @@ -1709,10 +1709,10 @@ static void i915_gtt_color_adjust(struct > drm_mm_node *node, > } > } > > -void i915_gem_setup_global_gtt(struct drm_device *dev, > - unsigned long start, > - unsigned long mappable_end, > - unsigned long end) > +int i915_gem_setup_global_gtt(struct drm_device *dev, > + unsigned long start, > + unsigned long mappable_end, > + unsigned long end) > { > /* Let GEM Manage all of the aperture. > * > @@ -1745,8 +1745,10 @@ void i915_gem_setup_global_gtt(struct > drm_device *dev, > > WARN_ON(i915_gem_obj_ggtt_bound(obj)); > ret = drm_mm_reserve_node(&ggtt_vm->mm, &vma- > >node); > - if (ret) > - DRM_DEBUG_KMS("Reservation failed\n"); > + if (ret) { > + DRM_DEBUG_KMS("Reservation failed: %i\n", ret); > + return ret; > + } > obj->has_global_gtt_mapping = 1; > } > > @@ -1763,6 +1765,8 @@ void i915_gem_setup_global_gtt(struct > drm_device *dev, > > /* And finally clear the reserved guard page */ > ggtt_vm->clear_range(ggtt_vm, end - PAGE_SIZE, PAGE_SIZE, true); > + > + return 0; > } > > void i915_gem_init_global_gtt(struct drm_device *dev) > diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.h > b/drivers/gpu/drm/i915/i915_gem_gtt.h > index 0b04ef6167f8..bea3541d5525 100644 > --- a/drivers/gpu/drm/i915/i915_gem_gtt.h > +++ b/drivers/gpu/drm/i915/i915_gem_gtt.h > @@ -271,8 +271,8 @@ struct i915_hw_ppgtt { > > int i915_gem_gtt_init(struct drm_device *dev); > void i915_gem_init_global_gtt(struct drm_device *dev); > -void i915_gem_setup_global_gtt(struct drm_device *dev, unsigned long > start, > - unsigned long mappable_end, unsigned long > end); > +int i915_gem_setup_global_gtt(struct drm_device *dev, unsigned long > start, > + unsigned long mappable_end, unsigned long > end); > > bool intel_enable_ppgtt(struct drm_device *dev, bool full); > Reviewed-by: Michel Thierry <michel.thierry@xxxxxxxxx> > -- > 1.9.3 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Attachment:
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx