1. 18 7月, 2016 1 次提交
  2. 29 6月, 2016 2 次提交
  3. 15 6月, 2016 1 次提交
    • L
      drm/i915/ilk: Don't disable SSC source if it's in use · 476490a9
      Lyude 提交于
      Thanks to Ville Syrjälä for pointing me towards the cause of this issue.
      
      Unfortunately one of the sideaffects of having the refclk for a DPLL set
      to SSC is that as long as it's set to SSC, the GPU will prevent us from
      powering down any of the pipes or transcoders using it. A couple of
      BIOSes enable SSC in both PCH_DREF_CONTROL and in the DPLL
      configurations. This causes issues on the first modeset, since we don't
      expect SSC to be left on and as a result, can't successfully power down
      the pipes or the transcoders using it. Here's an example from this Dell
      OptiPlex 990:
      
      [drm:intel_modeset_init] SSC enabled by BIOS, overriding VBT which says disabled
      [drm:intel_modeset_init] 2 display pipes available.
      [drm:intel_update_cdclk] Current CD clock rate: 400000 kHz
      [drm:intel_update_max_cdclk] Max CD clock rate: 400000 kHz
      [drm:intel_update_max_cdclk] Max dotclock rate: 360000 kHz
      vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem
      [drm:intel_crt_reset] crt adpa set to 0xf40000
      [drm:intel_dp_init_connector] Adding DP connector on port C
      [drm:intel_dp_aux_init] registering DPDDC-C bus for card0-DP-1
      [drm:ironlake_init_pch_refclk] has_panel 0 has_lvds 0 has_ck505 0
      [drm:ironlake_init_pch_refclk] Disabling SSC entirely
      … later we try committing the first modeset …
      [drm:intel_dump_pipe_config] [CRTC:26][modeset] config ffff88041b02e800 for pipe A
      [drm:intel_dump_pipe_config] cpu_transcoder: A
      …
      [drm:intel_dump_pipe_config] dpll_hw_state: dpll: 0xc4016001, dpll_md: 0x0, fp0: 0x20e08, fp1: 0x30d07
      [drm:intel_dump_pipe_config] planes on this crtc
      [drm:intel_dump_pipe_config] STANDARD PLANE:23 plane: 0.0 idx: 0 enabled
      [drm:intel_dump_pipe_config]     FB:42, fb = 800x600 format = 0x34325258
      [drm:intel_dump_pipe_config]     scaler:0 src (0, 0) 800x600 dst (0, 0) 800x600
      [drm:intel_dump_pipe_config] CURSOR PLANE:25 plane: 0.1 idx: 1 disabled, scaler_id = 0
      [drm:intel_dump_pipe_config] STANDARD PLANE:27 plane: 0.1 idx: 2 disabled, scaler_id = 0
      [drm:intel_get_shared_dpll] CRTC:26 allocated PCH DPLL A
      [drm:intel_get_shared_dpll] using PCH DPLL A for pipe A
      [drm:ilk_audio_codec_disable] Disable audio codec on port C, pipe A
      [drm:intel_disable_pipe] disabling pipe A
      ------------[ cut here ]------------
      WARNING: CPU: 1 PID: 130 at drivers/gpu/drm/i915/intel_display.c:1146 intel_disable_pipe+0x297/0x2d0 [i915]
      pipe_off wait timed out
      …
      ---[ end trace 94fc8aa03ae139e8 ]---
      [drm:intel_dp_link_down]
      [drm:ironlake_crtc_disable [i915]] *ERROR* failed to disable transcoder A
      
      Later modesets succeed since they reset the DPLL's configuration anyway,
      but this is enough to get stuck with a big fat warning in dmesg.
      
      A better solution would be to add refcounts for the SSC source, but for
      now leaving the source clock on should suffice.
      
      Changes since v4:
       - Fix calculation of final for systems with LVDS panels (fixes BUG() on
         CI test suite)
      Changes since v3:
       - Move temp variable into loop
       - Move checks for using_ssc_source to after we've figured out has_ck505
       - Add using_ssc_source to debug output
      Changes since v2:
       - Fix debug output for when we disable the CPU source
      Changes since v1:
       - Leave the SSC source clock on instead of just shutting it off on all
         of the DPLL configurations.
      
      Cc: stable@vger.kernel.org
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NLyude <cpaul@redhat.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: http://patchwork.freedesktop.org/patch/msgid/1465916649-10228-1-git-send-email-cpaul@redhat.comSigned-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      476490a9
  4. 10 6月, 2016 2 次提交
  5. 23 5月, 2016 1 次提交
  6. 17 5月, 2016 2 次提交
  7. 06 5月, 2016 1 次提交
  8. 04 5月, 2016 2 次提交
  9. 02 5月, 2016 1 次提交
  10. 27 4月, 2016 1 次提交
  11. 19 4月, 2016 1 次提交
    • V
      drm/i915: Fix oops in vlv_force_pll_on() · 187a1c07
      Ville Syrjälä 提交于
      intel_pipe_will_have_type() doesn't just look at the passied in
      pipe_config, instead it expects there to be a full atomic state behind
      it. Obviously that won't go so well when vlv_force_pll_on() just uses a
      temp pipe_config. Fix things by using pipe_config->has_dsi_encoder
      instead intel_pipe_will_have_type(INTEL_OUTPUT_DSI) to check if we need
      to actually enable the DPLL.
      
      Here's an example oops for reference:
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000030
      IP: [<ffffffffa0389a5b>] intel_pipe_will_have_type+0x15/0x7b [i915]
      PGD 7acda067 PUD 72696067 PMD 0
      Oops: 0000 [#1] PREEMPT SMP
      Modules linked in: i915 i2c_algo_bit drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops drm intel_gtt agpgart netconsole psmouse atkbd iTCO_wdt libps2 coretemp hwmon efi_pstore intel_rapl punit_atom_debug efivars pcspkr i2c_i801 r8169 lpc_ich mii processor_thermal_device snd_soc_rt5670 intel_soc_dts_iosf snd_soc_rl6231 i2c_hid hid snd_intel_sst_acpi snd_intel_sst_core snd_soc_sst_mfld_platform snd_soc_sst_match snd_soc_core i8042 serio snd_compress snd_pcm snd_timer snd i2c_designware_platform sdhci_acpi i2c_designware_core soundcore sdhci pwm_lpss_platform mmc_core pwm_lpss spi_pxa2xx_platform evdev int3403_thermal int3400_thermal int340x_thermal_zone acpi_thermal_rel sch_fq_codel ip_tables x_tables ipv6 autofs4
      CPU: 3 PID: 290 Comm: Xorg Tainted: G     U          4.6.0-rc4-bsw+ #2876
      Hardware name: Intel Corporation CHERRYVIEW C0 PLATFORM/Braswell CRB, BIOS BRAS.X64.X088.R00.1510270350 10/27/2015
      task: ffff88007a8dd200 ti: ffff880173ac4000 task.ti: ffff880173ac4000
      RIP: 0010:[<ffffffffa0389a5b>]  [<ffffffffa0389a5b>] intel_pipe_will_have_type+0x15/0x7b [i915]
      RSP: 0018:ffff880173ac7928  EFLAGS: 00010246
      RAX: 0000000000000000 RBX: ffff880176594000 RCX: 0000000000000000
      RDX: 0000000000000000 RSI: 0000000000000009 RDI: ffff880176594000
      RBP: ffff880173ac7930 R08: 0000000000019290 R09: 0000000000000000
      R10: ffff880173ac7890 R11: 00000000000080cf R12: ffff88017fbd4000
      R13: ffffffffa03e3c44 R14: ffff88007492c000 R15: ffff88007492c000
      FS:  00007ff8936a6940(0000) GS:ffff88017ef80000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000000030 CR3: 0000000177e08000 CR4: 00000000001006e0
      Stack:
       ffff880176594000 ffff880173ac7948 ffffffffa0389b42 ffff880176594000
       ffff880173ac7978 ffffffffa0396e02 ffff8801765b0000 ffff88007af660d8
       0000000000000000 0000000000000004 ffff880173ac79c0 ffffffffa03b6b64
      Call Trace:
       [<ffffffffa0389b42>] chv_compute_dpll.isra.39+0x33/0x55 [i915]
       [<ffffffffa0396e02>] vlv_force_pll_on+0x80/0xc6 [i915]
       [<ffffffffa03b6b64>] vlv_power_sequencer_pipe+0x29b/0x3dd [i915]
       [<ffffffffa03b6cd4>] _pp_stat_reg+0x2e/0x38 [i915]
       [<ffffffffa03b6dc1>] wait_panel_status+0x4c/0x1ec [i915]
       [<ffffffffa03b6fcb>] wait_panel_power_cycle+0x6a/0xb4 [i915]
       [<ffffffffa03b70da>] edp_panel_vdd_on+0xc5/0x1d1 [i915]
       [<ffffffffa03b861b>] intel_dp_aux_ch+0x55/0x572 [i915]
       [<ffffffff810af5c8>] ? mark_held_locks+0x5d/0x74
       [<ffffffff81518e61>] ? mutex_lock_nested+0x321/0x346
       [<ffffffff81094007>] ? preempt_count_sub+0xf2/0x102
       [<ffffffffa03b8cb4>] intel_dp_aux_transfer+0x17c/0x1b5 [i915]
       [<ffffffffa03028ef>] drm_dp_dpcd_access+0x62/0xed [drm_kms_helper]
       [<ffffffffa0302995>] drm_dp_dpcd_read+0x1b/0x1f [drm_kms_helper]
       [<ffffffffa03b5147>] intel_dp_dpcd_read_wake+0x31/0x69 [i915]
       [<ffffffffa03bb36a>] intel_dp_long_pulse+0x15f/0x5ed [i915]
       [<ffffffffa03bbb09>] intel_dp_detect+0x79/0x95 [i915]
       [<ffffffffa030340e>] drm_helper_probe_single_connector_modes+0xc7/0x3db [drm_kms_helper]
       [<ffffffffa029de23>] drm_mode_getconnector+0xe9/0x333 [drm]
       [<ffffffff810b1cfb>] ? lock_acquire+0x137/0x1df
       [<ffffffffa0292364>] drm_ioctl+0x266/0x3ae [drm]
       [<ffffffffa029dd3a>] ? drm_mode_getcrtc+0x126/0x126 [drm]
       [<ffffffff811af082>] vfs_ioctl+0x18/0x34
       [<ffffffff811af682>] do_vfs_ioctl+0x547/0x5fe
       [<ffffffff811b9acb>] ? __fget_light+0x62/0x71
       [<ffffffff811af77c>] SyS_ioctl+0x43/0x61
       [<ffffffff81001a82>] do_syscall_64+0x63/0xf8
       [<ffffffff8151bc9a>] entry_SYSCALL64_slow_path+0x25/0x25
      Code: 35 00 40 a0 e8 97 4b ce e0 b8 17 00 00 00 5d c3 b8 17 00 00 00 c3 0f 1f 44 00 00 55 31 c0 31 d2 48 89 e5 53 48 8b 8f e8 01 00 00 <44> 8b 49 30 41 39 c1 7e 2d 4c 8b 51 38 4c 8b 41 40 49 83 3c c2
      RIP  [<ffffffffa0389a5b>] intel_pipe_will_have_type+0x15/0x7b [i915]
       RSP <ffff880173ac7928>
      CR2: 0000000000000030
      
      The regressing patch wasn't exactly new (as in first posted more than
      six months ago), so I'm a bit baffled how I didn't manage to hit this
      myself so far.
      
      Cc: Jani Nikula <jani.nikula@intel.com>
      Cc: Marius Vlad <marius.c.vlad@intel.com>
      Reported-by: NMarius Vlad <marius.c.vlad@intel.com>
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94995
      Fixes: cd2d34d9 ("drm/i915: Setup DPLL/DPLLMD for DSI too on VLV/CHV")
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1461000844-20543-1-git-send-email-ville.syrjala@linux.intel.comTested-by: NMarius Vlad <marius.c.vlad@intel.com>
      Reviewed-by: NJani Nikula <jani.nikula@intel.com>
      187a1c07
  12. 18 4月, 2016 2 次提交
  13. 15 4月, 2016 7 次提交
  14. 14 4月, 2016 6 次提交
  15. 13 4月, 2016 3 次提交
  16. 11 4月, 2016 3 次提交
  17. 07 4月, 2016 2 次提交
  18. 06 4月, 2016 1 次提交
  19. 02 4月, 2016 1 次提交