linux_dsm_epyc7002/drivers/gpu/drm/i915
Daniel Vetter 50c3dc970a drm/fb-helper: Fix hpd vs. initial config races
Some drivers need to be able to have a perfect race-free fbcon setup.
Current drivers only enable hotplug processing after the call to
drm_fb_helper_initial_config which leaves a tiny but important race.

This race is especially noticable on embedded platforms where the
driver itself enables the voltage for the hdmi output, since only then
will monitors (after a bit of delay, as usual) respond by asserting
the hpd pin.

Most of the infrastructure is already there with the split-out
drm_fb_helper_init. And drm_fb_helper_initial_config already has all
the required locking to handle concurrent hpd events since

commit 53f1904bce
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Thu Mar 20 14:26:35 2014 +0100

    drm/fb-helper: improve drm_fb_helper_initial_config locking

The only missing bit is making drm_fb_helper_hotplug_event save
against concurrent calls of drm_fb_helper_initial_config. The only
unprotected bit is the check for fb_helper->fb.

With that drivers can first initialize the fb helper, then enabel
hotplug processing and then set up the initial config all in a
completely race-free manner. Update kerneldoc and convert i915 as a
proof of concept.

Feature requested by Thierry since his tegra driver atm reliably boots
slowly enough to misses the hotplug event for an external hdmi screen,
but also reliably boots to quickly for the hpd pin to be asserted when
the fb helper calls into the hdmi ->detect function.

Cc: Thierry Reding <treding@nvidia.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
2014-07-08 11:31:13 +10:00
..
dvo_ch7xxx.c drm/i915: Remove spurious semicolons 2014-04-09 21:54:33 +02:00
dvo_ch7017.c
dvo_ivch.c drm/i915: Remove spurious semicolons 2014-04-09 21:54:33 +02:00
dvo_ns2501.c drm/i915: Remove spurious semicolons 2014-04-09 21:54:33 +02:00
dvo_sil164.c drm/i915: Remove spurious semicolons 2014-04-09 21:54:33 +02:00
dvo_tfp410.c drm/i915: Remove spurious semicolons 2014-04-09 21:54:33 +02:00
dvo.h
i915_cmd_parser.c drm/i915: s/intel_ring_buffer/intel_engine_cs 2014-05-22 23:01:05 +02:00
i915_debugfs.c drm/i915: Hold the table lock whilst walking the file's idr and counting the objects in debugfs 2014-06-24 15:00:48 +03:00
i915_dma.c drm/fb-helper: Fix hpd vs. initial config races 2014-07-08 11:31:13 +10:00
i915_drv.c drm/fb-helper: Fix hpd vs. initial config races 2014-07-08 11:31:13 +10:00
i915_drv.h drm/fb-helper: Fix hpd vs. initial config races 2014-07-08 11:31:13 +10:00
i915_gem_context.c drm/i915: Only mark the ctx as initialised after a SET_CONTEXT operation 2014-06-24 14:48:41 +03:00
i915_gem_debug.c drm/i915: prefer struct drm_i915_private to drm_i915_private_t 2014-03-31 15:34:21 +02:00
i915_gem_dmabuf.c drm/i915: Introduce mapping of user pages into video memory (userptr) ioctl 2014-05-16 19:31:29 +02:00
i915_gem_evict.c drm/i915: Prevent negative relocation deltas from wrapping 2014-05-27 11:18:40 +03:00
i915_gem_execbuffer.c Merge commit '9e9a928eed8796a0a1aaed7e0b676db86ba84594' into drm-next 2014-06-05 20:28:59 +10:00
i915_gem_gtt.c Merge remote-tracking branch 'drm-intel/topic/kicking-dogs-and-vgacon' into drm-intel-fixes 2014-06-11 11:38:41 +03:00
i915_gem_gtt.h drm/i915: s/i915_hw_context/intel_context 2014-05-22 23:41:17 +02:00
i915_gem_render_state.c drm/i915: s/intel_ring_buffer/intel_engine_cs 2014-05-22 23:01:05 +02:00
i915_gem_stolen.c drm/i915: restrict vt-d stolen memory workaround to pre-gen8 2014-03-31 10:45:34 +02:00
i915_gem_tiling.c drm/i915: prefer struct drm_i915_private to drm_i915_private_t 2014-03-31 15:34:21 +02:00
i915_gem_userptr.c drm/i915: Introduce mapping of user pages into video memory (userptr) ioctl 2014-05-16 19:31:29 +02:00
i915_gem.c drm/i915: use shmem helpers if possible 2014-06-17 22:30:50 +02:00
i915_gpu_error.c drm/i95: Initialize active ring->pid to -1 2014-06-11 11:06:43 +03:00
i915_ioc32.c drm: Remove DRM_ARRAY_SIZE() for ARRAY_SIZE() 2014-06-10 09:36:17 +10:00
i915_irq.c drm/fb-helper: Fix hpd vs. initial config races 2014-07-08 11:31:13 +10:00
i915_params.c drm/i915: Add debug module option for VTd validation 2014-04-03 11:23:11 +02:00
i915_reg.h drm/i915: Enable interrupt-based AGPBUSY# enable on 85x 2014-06-05 08:52:39 +02:00
i915_suspend.c drm/i915: disable GT power saving early during system suspend 2014-05-22 21:53:27 +02:00
i915_sysfs.c drm/i915: s/i915_hw_context/intel_context 2014-05-22 23:41:17 +02:00
i915_trace_points.c
i915_trace.h drm/i915: s/intel_ring_buffer/intel_engine_cs 2014-05-22 23:01:05 +02:00
i915_ums.c
intel_acpi.c
intel_bios.c drm/i915: default to having backlight if VBT not available 2014-06-23 16:08:20 +03:00
intel_bios.h drm/i915: Detect if MIPI panel based on VBT and initialize only if present 2014-06-05 08:52:33 +02:00
intel_crt.c drm: add register and unregister functions for connectors 2014-06-19 08:55:28 +02:00
intel_ddi.c drm/i915: grab the audio power domain when enabling audio on HSW+ 2014-05-22 15:06:33 +02:00
intel_display.c Merge tag 'topic/core-stuff-2014-06-30' of git://anongit.freedesktop.org/drm-intel into drm-next 2014-07-08 11:04:35 +10:00
intel_dp.c drm: add register and unregister functions for connectors 2014-06-19 08:55:28 +02:00
intel_drv.h drm/i915: cache hw power well enabled state 2014-06-23 10:02:03 +03:00
intel_dsi_cmd.c drm/i915: Send DPI command explicitely in LP mode 2014-04-09 21:54:30 +02:00
intel_dsi_cmd.h drm/i915: Send DPI command explicitely in LP mode 2014-04-09 21:54:30 +02:00
intel_dsi_panel_vbt.c drm/i915: Add support for Generic MIPI panel driver 2014-06-05 08:52:32 +02:00
intel_dsi_pll.c
intel_dsi.c drm: add register and unregister functions for connectors 2014-06-19 08:55:28 +02:00
intel_dsi.h drm/i915: Add support for Generic MIPI panel driver 2014-06-05 08:52:32 +02:00
intel_dvo.c drm: add register and unregister functions for connectors 2014-06-19 08:55:28 +02:00
intel_fbdev.c Merge commit '9e9a928eed8796a0a1aaed7e0b676db86ba84594' into drm-next 2014-06-05 20:28:59 +10:00
intel_hdmi.c drm: add register and unregister functions for connectors 2014-06-19 08:55:28 +02:00
intel_i2c.c
intel_lvds.c drm: add register and unregister functions for connectors 2014-06-19 08:55:28 +02:00
intel_modes.c
intel_opregion.c drm: convert crtc and connection_mutex to ww_mutex (v5) 2014-06-05 09:54:33 +10:00
intel_overlay.c Merge commit '9e9a928eed8796a0a1aaed7e0b676db86ba84594' into drm-next 2014-06-05 20:28:59 +10:00
intel_panel.c drm/i915: set backlight duty cycle after backlight enable for gen4 2014-06-11 11:06:43 +03:00
intel_pm.c Merge tag 'drm-intel-fixes-2014-07-03' of git://anongit.freedesktop.org/drm-intel 2014-07-06 07:49:59 +10:00
intel_renderstate_gen6.c drm/i915: add null render states for gen6, gen7 and gen8 2014-05-14 19:17:08 +02:00
intel_renderstate_gen7.c drm/i915: add null render states for gen6, gen7 and gen8 2014-05-14 19:17:08 +02:00
intel_renderstate_gen8.c drm/i915: add null render states for gen6, gen7 and gen8 2014-05-14 19:17:08 +02:00
intel_renderstate.h drm/i915: add render state initialization 2014-05-14 19:16:13 +02:00
intel_ringbuffer.c drm/i915: Don't WARN about ring idle bit on gen2 2014-06-05 08:52:41 +02:00
intel_ringbuffer.h drm/i915: Reorder semaphore deadlock check 2014-06-11 11:06:43 +03:00
intel_sdvo_regs.h
intel_sdvo.c Merge tag 'topic/core-stuff-2014-06-30' of git://anongit.freedesktop.org/drm-intel into drm-next 2014-07-08 11:04:35 +10:00
intel_sideband.c drm/i915: vlv/chv: fix DSI sideband register accessing 2014-05-19 17:50:14 +02:00
intel_sprite.c drm/i915: Wait for vblank after enabling the primary plane on BDW 2014-06-27 17:36:11 +03:00
intel_tv.c drm: add register and unregister functions for connectors 2014-06-19 08:55:28 +02:00
intel_uncore.c drm/i915: fix possible refcount leak when resetting forcewake 2014-06-11 11:06:43 +03:00
Kconfig drm/i915: Introduce mapping of user pages into video memory (userptr) ioctl 2014-05-16 19:31:29 +02:00
Makefile drm/i915: Add support for Generic MIPI panel driver 2014-06-05 08:52:32 +02:00