On Thu, Feb 02, 2017 at 10:47:11AM +0100, Juergen Gross wrote: > Commit 920cf4194954ec ("drm/i915: Introduce an internal allocator for > disposable private objects") introduced a regression for the kernel > running as Xen dom0: when switching to graphics mode a GPU HANG > occurred. > > Reason seems to be a missing adaption similar to that done in > commit 7453c549f5f648 ("swiotlb: Export swiotlb_max_segment to users") > to i915_gem_object_get_pages_internal(). > > So limit the maximum page order to be used according to the maximum > swiotlb segment size instead to the complete swiotlb size. > > Signed-off-by: Juergen Gross <jgross@xxxxxxxx> Fixes: 920cf4194954 ("drm/i915: Introduce an internal allocator for disposable private objects") Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> Cc: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxxxxxxxx> Cc: Daniel Vetter <daniel.vetter@xxxxxxxxx> Cc: Jani Nikula <jani.nikula@xxxxxxxxxxxxxxx> Cc: intel-gfx@xxxxxxxxxxxxxxxxxxxxx Cc: <drm-intel-fixes@xxxxxxxxxxxxxxxxxxxxx> # v4.10-rc1+ We have a nice script for these :-) -Daniel > --- > Please consider for 4.10 as otherwise 4.10 will be unusable as Xen dom0 > with i915 graphics. > --- > drivers/gpu/drm/i915/i915_gem_internal.c | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_gem_internal.c b/drivers/gpu/drm/i915/i915_gem_internal.c > index 4b3ff3e..d09c749 100644 > --- a/drivers/gpu/drm/i915/i915_gem_internal.c > +++ b/drivers/gpu/drm/i915/i915_gem_internal.c > @@ -66,8 +66,16 @@ i915_gem_object_get_pages_internal(struct drm_i915_gem_object *obj) > > max_order = MAX_ORDER; > #ifdef CONFIG_SWIOTLB > - if (swiotlb_nr_tbl()) /* minimum max swiotlb size is IO_TLB_SEGSIZE */ > - max_order = min(max_order, ilog2(IO_TLB_SEGPAGES)); > + if (swiotlb_nr_tbl()) { > + unsigned int max_segment; > + > + max_segment = swiotlb_max_segment(); > + if (max_segment) { > + max_segment = max_t(unsigned int, max_segment, > + PAGE_SIZE) >> PAGE_SHIFT; > + max_order = min(max_order, ilog2(max_segment)); > + } > + } > #endif > > gfp = GFP_KERNEL | __GFP_HIGHMEM | __GFP_RECLAIMABLE; > -- > 2.10.2 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx