Message ID | alpine.LSU.2.11.1407241610320.3733@eggly.anvils (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
Am 2014-07-25 01:20, schrieb Hugh Dickins: > On Thu, 24 Jul 2014, Martin Kepplinger wrote: >> Am 2014-06-30 12:39, schrieb Martin Kepplinger: >>> back to aaeb2554337217dfa4eac2fcc90da7be540b9a73 as the first bad >>> commit. why is this not revertable exactly? how can I show a complete >>> list of commits this merge introduces? >>> >> >> It seems that _nobody_ is running a simple 32 bit i915 (acer) laptop. >> rc6 is still unusable. Black screen directly after kernel-loading. no >> change since rc1. >> >> Seems like I won't be able to use 3.16. I'm happy to test patches and am >> happy for any advice what to do, when time permits. > > Martin, I know nothing about aaeb25543372 and why it should be relevant, > but if you're having rc1..rc6 32-bit i915 black screens, please try this > patch that Daniel Vetter put in his fixes queue on Monday, which I'm > hoping will reach Linus for -rc7. > > Hugh > > [PATCH] drm/i915: fix freeze with blank screen booting highmem > > x86_64 boots and displays fine, but booting x86_32 with CONFIG_HIGHMEM > has frozen with a blank screen throughout 3.16-rc on this ThinkPad T420s, > with i915 generation 6 graphics. > > Fix 9d0a6fa6c5e6 ("drm/i915: add render state initialization"): kunmap() > takes struct page * argument, not virtual address. Which the compiler > kindly points out, if you use the appropriate u32 *batch, instead of > silencing it with a void *. > > Why did bisection lead decisively to nearby 229b0489aa75 ("drm/i915: > add null render states for gen6, gen7 and gen8")? Because the u32 > deposited at that virtual address by the previous stub failed the > PageHighMem test, and so caused no harm. > > Signed-off-by: Hugh Dickins <hughd@google.com> > --- > > drivers/gpu/drm/i915/i915_gem_render_state.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > --- 3.16-rc/drivers/gpu/drm/i915/i915_gem_render_state.c 2014-06-16 00:28:52.384076465 -0700 > +++ linux/drivers/gpu/drm/i915/i915_gem_render_state.c 2014-07-21 20:10:03.824481521 -0700 > @@ -31,7 +31,7 @@ > struct i915_render_state { > struct drm_i915_gem_object *obj; > unsigned long ggtt_offset; > - void *batch; > + u32 *batch; > u32 size; > u32 len; > }; > @@ -80,7 +80,7 @@ free: > > static void render_state_free(struct i915_render_state *so) > { > - kunmap(so->batch); > + kunmap(kmap_to_page(so->batch)); > i915_gem_object_ggtt_unpin(so->obj); > drm_gem_object_unreference(&so->obj->base); > kfree(so); > yes! thanks Hugh. On top of linus' current tree, that finally fixes my problem! I hope it'll be included soon! martin p.s. linux-media removed from thread -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Fri, 25 Jul 2014, Martin Kepplinger wrote: > Am 2014-07-25 01:20, schrieb Hugh Dickins: > > > > [PATCH] drm/i915: fix freeze with blank screen booting highmem > > yes! thanks Hugh. On top of linus' current tree, that finally fixes my > problem! I hope it'll be included soon! I'm glad to hear it, Martin, thanks for letting us know. It is now commit 88b98287356762cc16c9ff6cd48116160a5d4dba in Linus's tree for rc7. Hugh -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
--- 3.16-rc/drivers/gpu/drm/i915/i915_gem_render_state.c 2014-06-16 00:28:52.384076465 -0700 +++ linux/drivers/gpu/drm/i915/i915_gem_render_state.c 2014-07-21 20:10:03.824481521 -0700 @@ -31,7 +31,7 @@ struct i915_render_state { struct drm_i915_gem_object *obj; unsigned long ggtt_offset; - void *batch; + u32 *batch; u32 size; u32 len; }; @@ -80,7 +80,7 @@ free: static void render_state_free(struct i915_render_state *so) { - kunmap(so->batch); + kunmap(kmap_to_page(so->batch)); i915_gem_object_ggtt_unpin(so->obj); drm_gem_object_unreference(&so->obj->base); kfree(so);