linux/drivers/gpu/drm/i915
Daniel Vetter bbf470202d drm/i915: fix oops in primary_check_plane
On Sun, Jul 12, 2015 at 09:52:51AM -0700, Linus Torvalds wrote:
> On Sun, Jul 12, 2015 at 1:03 AM, Jörg Otte <jrg.otte@gmail.com> wrote:
> > BUG: unable to handle kernel NULL pointer dereference at 0000000000000009
> > IP: [<ffffffffbd3447bb>] 0xffffffffbd3447bb
>
> Ugh. Please enable KALLSYMS to get sane symbols.
>
> But yes, "crtc_state->base.active" is at offset 9 from "crtc_state",
> so it's pretty clearly just that change frm
>
> -       if (intel_crtc->active) {
> +       if (crtc_state->base.active) {
>
> and "crtc_state" is NULL.
>
> And the code very much knows that crtc_state can be NULL, since it's
> initialized with
>
>         crtc_state = state->base.state ?
>                 intel_atomic_get_crtc_state(state->base.state,
> intel_crtc) : NULL;
>
> Tssk. Daniel? Should I just revert that commit dec4f799d0
> ("drm/i915: Use crtc_state->active in primary check_plane func") for
> now, or is there a better fix? Like just checking crtc_state for NULL?

Indeed embarrassing. I've missed that we still have 1 caller left that's
using the transitional helpers, and those don't fill out
plane_state->state backpointers to the global atomic update since there is
no global atomic update for transitional helpers. Below diff should fix
this - we need to preferentially check crts_state->active and if that's
not set intel_crtc->active should yield the right result for the one
remaining caller (it's in the crtc_disable paths).

This fixes a regression introduced in

commit dec4f799d0
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Tue Jul 7 11:15:47 2015 +0200

    drm/i915: Use crtc_state->active in primary check_plane func

which was quickly reverted in

commit 01e2d0627a
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Sun Jul 12 15:00:20 2015 -0700

    Revert "drm/i915: Use crtc_state->active in primary check_plane func"

Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Jörg Otte <jrg.otte@gmail.com>
Reported-and-tested-by: Jörg Otte <jrg.otte@gmail.com>
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2015-07-13 22:44:13 +02:00
..
dvo_ch7xxx.c
dvo_ch7017.c
dvo_ivch.c
dvo_ns2501.c
dvo_sil164.c
dvo_tfp410.c
dvo.h
i915_cmd_parser.c drm/i915: Add SCRATCH1 and ROW_CHICKEN3 to the register whitelist. 2015-06-15 16:00:48 +03:00
i915_debugfs.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-06-26 13:18:51 -07:00
i915_dma.c drm/i915: s/dpio_lock/sb_lock/ 2015-05-28 11:13:51 +02:00
i915_drv.c drm/i915/skl: Deinit/init the display at suspend/resume 2015-05-21 22:50:15 +02:00
i915_drv.h drm/i915: remove unused has_dma_mapping flag 2015-07-13 22:42:41 +02:00
i915_gem_batch_pool.c
i915_gem_batch_pool.h
i915_gem_context.c drm/i915: Store device pointer in contexts for late tracepoint usafe 2015-07-13 22:42:38 +02:00
i915_gem_debug.c drm/i915: Implement inter-engine read-read optimisations 2015-05-21 15:11:42 +02:00
i915_gem_dmabuf.c drm/i915: remove unused has_dma_mapping flag 2015-07-13 22:42:41 +02:00
i915_gem_evict.c
i915_gem_execbuffer.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-06-26 13:18:51 -07:00
i915_gem_gtt.c drm/i915: remove unused has_dma_mapping flag 2015-07-13 22:42:41 +02:00
i915_gem_gtt.h drm/i915: Add a partial GGTT view type 2015-05-08 13:04:18 +02:00
i915_gem_render_state.c
i915_gem_render_state.h
i915_gem_shrinker.c
i915_gem_stolen.c drm/i915: remove unused has_dma_mapping flag 2015-07-13 22:42:41 +02:00
i915_gem_tiling.c drm/i915: Declare the swizzling unknown for L-shaped configurations 2015-07-09 09:36:44 +02:00
i915_gem_userptr.c drm/i915: avoid leaking DMA mappings 2015-07-13 22:42:40 +02:00
i915_gem.c drm/i915: remove unused has_dma_mapping flag 2015-07-13 22:42:41 +02:00
i915_gpu_error.c drm/i915: Implement inter-engine read-read optimisations 2015-05-21 15:11:42 +02:00
i915_ioc32.c
i915_irq.c drm/i915: Snapshot seqno of most recently submitted request. 2015-07-13 22:42:39 +02:00
i915_params.c drm/i915/skl: Add module parameter to select edp vswing table 2015-05-08 13:03:41 +02:00
i915_reg.h Merge tag 'drm-intel-next-fixes-2015-07-02' of git://anongit.freedesktop.org/drm-intel 2015-07-02 14:36:40 -07:00
i915_suspend.c
i915_sysfs.c
i915_trace_points.c
i915_trace.h drm/i915: Store device pointer in contexts for late tracepoint usafe 2015-07-13 22:42:38 +02:00
i915_vgpu.c
i915_vgpu.h
intel_acpi.c
intel_atomic_plane.c drm/i915: Use atomic helpers for computing changed flags 2015-05-08 13:04:08 +02:00
intel_atomic.c drm/i915: Call drm helpers when duplicating crtc and plane states 2015-05-08 13:03:58 +02:00
intel_audio.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-06-26 13:18:51 -07:00
intel_bios.c drm/i915/bios: be more explicit about discarding iomem address space 2015-05-20 11:26:01 +02:00
intel_bios.h
intel_crt.c drm/i915: Disable CRT port after pipe on PCH platforms 2015-05-21 23:23:16 +02:00
intel_csr.c drm/i915/skl: Fix DMC API version in firmware file name 2015-06-05 12:08:01 +03:00
intel_ddi.c drm/i915/skl: Deinit/init the display at suspend/resume 2015-05-21 22:50:15 +02:00
intel_display.c drm/i915: fix oops in primary_check_plane 2015-07-13 22:44:13 +02:00
intel_dp_mst.c drm/i915: Use for_each_connector_in_state helper macro 2015-05-08 13:03:58 +02:00
intel_dp.c Merge tag 'drm-intel-next-fixes-2015-07-02' of git://anongit.freedesktop.org/drm-intel 2015-07-02 14:36:40 -07:00
intel_drv.h drm/i915: Fix IPS related flicker 2015-06-26 11:50:23 +03:00
intel_dsi_panel_vbt.c drm/i915: s/dpio_lock/sb_lock/ 2015-05-28 11:13:51 +02:00
intel_dsi_pll.c drm/i915: s/dpio_lock/sb_lock/ 2015-05-28 11:13:51 +02:00
intel_dsi.c drm/i915: s/dpio_lock/sb_lock/ 2015-05-28 11:13:51 +02:00
intel_dsi.h
intel_dvo.c
intel_fbc.c drm/i915: get rid of primary_enabled and use atomic state 2015-05-08 13:03:53 +02:00
intel_fbdev.c drm/i915: Another fbdev hack to avoid PSR on fbcon. 2015-05-29 10:18:32 +02:00
intel_fifo_underrun.c
intel_frontbuffer.c
intel_hdmi.c drm/i915: Disable 12bpc hdmi for now 2015-05-28 11:13:52 +02:00
intel_i2c.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-06-26 13:18:51 -07:00
intel_lrc.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-06-26 13:18:51 -07:00
intel_lrc.h
intel_lvds.c Linux 4.1-rc4 2015-05-20 16:23:53 +10:00
intel_modes.c
intel_opregion.c drm: i915: Port to new backlight interface selection API 2015-06-19 01:10:54 +02:00
intel_overlay.c drm/i915: Implement inter-engine read-read optimisations 2015-05-21 15:11:42 +02:00
intel_panel.c drm/i915: fix backlight after resume on 855gm 2015-06-29 14:31:04 +03:00
intel_pm.c Linux 4.1-rc6 2015-06-04 09:23:51 +10:00
intel_psr.c
intel_renderstate_gen6.c
intel_renderstate_gen7.c
intel_renderstate_gen8.c
intel_renderstate_gen9.c
intel_renderstate.h
intel_ringbuffer.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-06-26 13:18:51 -07:00
intel_ringbuffer.h drm/i915: Snapshot seqno of most recently submitted request. 2015-07-13 22:42:39 +02:00
intel_runtime_pm.c drm/i915: Throw out WIP CHV power well definitions 2015-05-28 11:13:50 +02:00
intel_sdvo_regs.h
intel_sdvo.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2015-06-26 13:18:51 -07:00
intel_sideband.c drm/i915: s/dpio_lock/sb_lock/ 2015-05-28 11:13:51 +02:00
intel_sprite.c drm/i915: Kill intel_flush_primary_plane() 2015-05-28 11:13:51 +02:00
intel_tv.c
intel_uncore.c
Kconfig Revert "drm/i915: Force clean compilation with -Werror" 2015-05-26 07:46:21 +02:00
Makefile Revert "drm/i915: Force clean compilation with -Werror" 2015-05-26 07:46:21 +02:00