On Tue, Jun 17, 2014 at 10:11:45PM +0100, Chris Wilson wrote: > On Tue, Jun 17, 2014 at 09:03:00PM +0300, ville.syrjala@xxxxxxxxxxxxxxx wrote: > > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > > > Take the minimum of the object size and the vma size and prefault > > only that much. Avoids a SIGBUS when mmapping only a portion of the > > object. > > > > Prefaulting was introduced here: > > commit b90b91d87038f6b257b40a02b42ed4f9705e06f0 > > Author: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > > Date: Tue Jun 10 12:14:40 2014 +0100 > > > > drm/i915: Prefault the entire object on first page fault > > > > Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > --- > > drivers/gpu/drm/i915/i915_gem.c | 5 ++++- > > 1 file changed, 4 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c > > index 6f8c206..4ef80d1 100644 > > --- a/drivers/gpu/drm/i915/i915_gem.c > > +++ b/drivers/gpu/drm/i915/i915_gem.c > > @@ -1578,9 +1578,12 @@ int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf) > > pfn >>= PAGE_SHIFT; > > > > if (!obj->fault_mappable) { > > + unsigned long size = min_t(unsigned long, > > + vma->vm_end - vma->vm_start, > > + obj->base.size); > > The vma should be the same size as the obj... Unless it gets > coalesced... I wonder if that is even legal for our objects because I > was under the impression that we depended upon it in other places. You have to map from the first page otherwise the lookup won't find it. But apparently we have at least igts that hit this (Rodrigo's psr test as an example). And it's easy to test and easy to fix, so figured ok to merge. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx