1. 09 2月, 2017 5 次提交
  2. 08 2月, 2017 1 次提交
  3. 06 2月, 2017 1 次提交
  4. 02 2月, 2017 1 次提交
    • M
      drm/i915: Fix POWER_DOMAIN_AUDIO refcounting. · 37255d8d
      Maarten Lankhorst 提交于
      If the crtc was brought up with audio before the driver loads,
      then crtc_disable will remove a refcount to audio that doesn't exist
      before.
      
      Fortunately we already set power domains on readout, so we can just add
      the power domain handling to get_crtc_power_domains, which will update
      the power domains correctly in all cases.
      
      This was found when testing module reload on CI with the crtc enabled,
      which resulted in the following warn after module reload + modeset:
      
      [   24.197041] ------------[ cut here ]------------
      [   24.197075] WARNING: CPU: 0 PID: 99 at drivers/gpu/drm/i915/intel_runtime_pm.c:1790 intel_display_power_put+0x134/0x140 [i915]
      [   24.197076] Use count on domain AUDIO is already zero
      [   24.197098] CPU: 0 PID: 99 Comm: kworker/u8:2 Not tainted 4.9.0-CI-Trybot_393+ #1
      [   24.197099] Hardware name:                  /NUC6i5SYB, BIOS SYSKLi35.86A.0042.2016.0409.1246 04/09/2016
      [   24.197102] Workqueue: events_unbound async_run_entry_fn
      [   24.197105]  ffffc900003c7688 ffffffff81435b35 ffffc900003c76d8 0000000000000000
      [   24.197107]  ffffc900003c76c8 ffffffff8107e4d6 000006fe5dc36f28 ffff88025dc30054
      [   24.197109]  ffff88025dc36f28 ffff88025dc30000 ffff88025dc30000 0000000000000015
      [   24.197110] Call Trace:
      [   24.197113]  [<ffffffff81435b35>] dump_stack+0x67/0x92
      [   24.197116]  [<ffffffff8107e4d6>] __warn+0xc6/0xe0
      [   24.197118]  [<ffffffff8107e53a>] warn_slowpath_fmt+0x4a/0x50
      [   24.197149]  [<ffffffffa039b4b4>] intel_display_power_put+0x134/0x140 [i915]
      [   24.197187]  [<ffffffffa04217dd>] intel_disable_ddi+0x4d/0x80 [i915]
      [   24.197223]  [<ffffffffa03f388f>] intel_encoders_disable.isra.74+0x7f/0x90 [i915]
      [   24.197257]  [<ffffffffa03f6c05>] haswell_crtc_disable+0x55/0x170 [i915]
      [   24.197292]  [<ffffffffa03fec88>] intel_atomic_commit_tail+0x108/0xfd0 [i915]
      [   24.197295]  [<ffffffff810d47c6>] ? __lock_is_held+0x66/0x90
      [   24.197330]  [<ffffffffa03fff79>] intel_atomic_commit+0x429/0x560 [i915]
      [   24.197332]  [<ffffffff81570186>] ?drm_atomic_add_affected_connectors+0x56/0xf0
      [   24.197334]  [<ffffffff8156f726>] drm_atomic_commit+0x46/0x50
      [   24.197336]  [<ffffffff81553f87>] restore_fbdev_mode+0x147/0x270
      [   24.197337]  [<ffffffff81555bee>] drm_fb_helper_restore_fbdev_mode_unlocked+0x2e/0x70
      [   24.197339]  [<ffffffff81555aa8>] drm_fb_helper_set_par+0x28/0x50
      [   24.197374]  [<ffffffffa041c7d3>] intel_fbdev_set_par+0x13/0x70 [i915]
      [   24.197376]  [<ffffffff8149e07a>] fbcon_init+0x57a/0x600
      [   24.197379]  [<ffffffff81514b71>] visual_init+0xd1/0x130
      [   24.197381]  [<ffffffff8151603c>] do_bind_con_driver+0x1bc/0x3a0
      [   24.197384]  [<ffffffff81516521>] do_take_over_console+0x111/0x180
      [   24.197386]  [<ffffffff8149e152>] do_fbcon_takeover+0x52/0xb0
      [   24.197387]  [<ffffffff814a12c3>] fbcon_event_notify+0x723/0x850
      [   24.197390]  [<ffffffff810a4830>] ?__blocking_notifier_call_chain+0x30/0x70
      [   24.197392]  [<ffffffff810a44a4>] notifier_call_chain+0x34/0xa0
      [   24.197394]  [<ffffffff810a4848>] __blocking_notifier_call_chain+0x48/0x70
      [   24.197397]  [<ffffffff810a4881>] blocking_notifier_call_chain+0x11/0x20
      [   24.197398]  [<ffffffff814a4556>] fb_notifier_call_chain+0x16/0x20
      [   24.197400]  [<ffffffff814a678c>] register_framebuffer+0x24c/0x330
      [   24.197402]  [<ffffffff815558d9>] drm_fb_helper_initial_config+0x219/0x3c0
      [   24.197436]  [<ffffffffa041d373>] intel_fbdev_initial_config+0x13/0x30 [i915]
      [   24.197438]  [<ffffffff810a5d44>] async_run_entry_fn+0x34/0x140
      [   24.197440]  [<ffffffff8109c26c>] process_one_work+0x1ec/0x6b0
      [   24.197442]  [<ffffffff8109c1e6>] ? process_one_work+0x166/0x6b0
      [   24.197445]  [<ffffffff8109c779>] worker_thread+0x49/0x490
      [   24.197447]  [<ffffffff8109c730>] ? process_one_work+0x6b0/0x6b0
      [   24.197448]  [<ffffffff810a2a9b>] kthread+0xeb/0x110
      [   24.197451]  [<ffffffff810a29b0>] ? kthread_park+0x60/0x60
      [   24.197453]  [<ffffffff818241a7>] ret_from_fork+0x27/0x40
      [   24.197476] ---[ end trace bda64b683b8e8162 ]---
      Signed-off-by: NMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1481812185-19098-3-git-send-email-maarten.lankhorst@linux.intel.comReviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      37255d8d
  5. 30 1月, 2017 1 次提交
  6. 27 1月, 2017 1 次提交
  7. 26 1月, 2017 2 次提交
    • M
      drm/i915: Add support for DP Video pattern compliance tests · 611032bf
      Manasi Navare 提交于
      The intel_dp_autotest_video_pattern() function gets invoked through the
      compliance test handler on a HPD short pulse if the test type is
      set to DP_TEST_VIDEO_PATTERN. This performs the DPCD registers
      reads to read the requested test pattern, video pattern resolution,
      frame rate and bits per color value. The results of this analysis
      are handed off to userspace so that the userspace app can set the
      video pattern mode appropriately for the test result/response.
      When the  test is requested with specific BPC value, we read the BPC
      value from the DPCD register. If this BPC value in intel_dp structure
      has a non-zero value and we're on a display port connector, then we use
      the value to calculate the bpp for the pipe. Also in this case if its
      a 18bpp video pattern request, then we force the dithering on pipe to be
      disabled since it causes CRC mismatches.
      
      The compliance_test_active flag is set at the end of the individual
      test handling functions. This is so that the kernel-side operations
      can be completed without the risk of interruption from the userspace
      app that is polling on that flag.
      
      v5:
      * Remove test_result variable
      * Populate the compliance test data at the end of the function (Jani Nikula)
      v4:
      *Return TEST_NAK on read failures and invalid values (Jani Nikula)
      * Address CRC mismatch errors
      v3:
      * Use the updated properly shifted bit definitions (Jani Nikula)
      * Force dithering to be disabled on 18bpp compliance
      test request (Manasi Navare)
      v2:
      * Updated the DPCD Register reads based on proper defines in header (Jani Nikula)
      * Squahsed the patch that forced the pipe bpp to compliance test bpp (Jani Nikula)
      Signed-off-by: NManasi Navare <manasi.d.navare@intel.com>
      Cc: Jani Nikula <jani.nikula@linux.intel.com>
      Cc: Daniel Vetter <daniel.vetter@intel.com>
      Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1485274909-17470-1-git-send-email-manasi.d.navare@intel.com
      611032bf
    • D
      drm: s/drm_crtc_get_hv_timings/drm_mode_get_hv_timings/ · 196cd5d3
      Daniel Vetter 提交于
      The function operates on modes, not CRTCs. Also move it into
      drm_modes.[hc]. Spotted while reviewing CRTC docs.
      Reviewed-by: NAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/20170125062657.19270-15-daniel.vetter@ffwll.ch
      196cd5d3
  8. 25 1月, 2017 2 次提交
    • R
      drm/i915: Introduce IS_GEN9_BC for Skylake and Kabylake. · b976dc53
      Rodrigo Vivi 提交于
      Along with GLK it was introduced the .is_lp and IS_GEN9_LP.
      So, following the same simplification standard we can
      put Skylake and Kabylake under the same bucket for most
      of the things.
      
      So let's add the IS_GEN9_BC for "Big Core" (non Atom based
      platforms).
      
      The i915_drv.c was let out of this patch on purpose
      because that is really a decision per platform, just like
      other cases where IS_KABYLAKE is different from IS_SKYLAKE.
      
      v2: fix conflict with IS_LP and 3 new cases for this
          big core bucket:
          - intel_ddi.c: intel_ddi_get_link_dpll
          - intel_fbc.c: find_compression_threshold
          - i915_gem_gtt.c: gtt_write_workarounds
      
      Cc: Anusha Srivatsa <anusha.srivatsa@intel.com>
      Cc: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
      Cc: Jani Nikula <jani.nikula@intel.com>
      Signed-off-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Reviewed-by: NAnder Conselvan de Oliveira <conselvan2@gmail.com>
      Acked-by: NJani Nikula <jani.nikula@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1485196357-30599-2-git-send-email-rodrigo.vivi@intel.com
      b976dc53
    • C
      drm/i915: Move atomic state free from out of fence release · eb955eee
      Chris Wilson 提交于
      Fences are required to support being released from under an atomic context.
      The drm_atomic_state struct may take a mutex when being released and so
      we cannot drop a reference to the drm_atomic_state from the fence release
      path directly, and so we need to defer that unreference to a worker.
      
      [  326.576697] WARNING: CPU: 2 PID: 366 at kernel/sched/core.c:7737 __might_sleep+0x5d/0x80
      [  326.576816] do not call blocking ops when !TASK_RUNNING; state=1 set at [<ffffffffc0359549>] intel_breadcrumbs_signaler+0x59/0x270 [i915]
      [  326.576818] Modules linked in: rfcomm fuse snd_hda_codec_hdmi bnep snd_hda_codec_realtek snd_hda_codec_generic snd_hda_intel snd_hda_codec snd_hwdep snd_hda_core snd_pcm snd_seq_midi snd_seq_midi_event snd_rawmidi snd_seq snd_seq_device snd_timer input_leds led_class snd punit_atom_debug btusb btrtl btbcm btintel intel_rapl bluetooth i915 drm_kms_helper syscopyarea sysfillrect iwlwifi sysimgblt soundcore fb_sys_fops mei_txe cfg80211 drm pwm_lpss_platform pwm_lpss pinctrl_cherryview fjes acpi_pad parport_pc ppdev parport autofs4
      [  326.576899] CPU: 2 PID: 366 Comm: i915/signal:0 Tainted: G     U          4.10.0-rc3-patser+ #5030
      [  326.576902] Hardware name:                  /NUC5PPYB, BIOS PYBSWCEL.86A.0031.2015.0601.1712 06/01/2015
      [  326.576905] Call Trace:
      [  326.576920]  dump_stack+0x4d/0x6d
      [  326.576926]  __warn+0xc0/0xe0
      [  326.576931]  warn_slowpath_fmt+0x5a/0x80
      [  326.577004]  ? intel_breadcrumbs_signaler+0x59/0x270 [i915]
      [  326.577075]  ? intel_breadcrumbs_signaler+0x59/0x270 [i915]
      [  326.577079]  __might_sleep+0x5d/0x80
      [  326.577087]  mutex_lock+0x1b/0x40
      [  326.577133]  drm_property_free_blob+0x1e/0x80 [drm]
      [  326.577167]  ? drm_property_destroy+0xe0/0xe0 [drm]
      [  326.577200]  drm_mode_object_unreference+0x5c/0x70 [drm]
      [  326.577233]  drm_property_unreference_blob+0xe/0x10 [drm]
      [  326.577260]  __drm_atomic_helper_crtc_destroy_state+0x14/0x40 [drm_kms_helper]
      [  326.577278]  drm_atomic_helper_crtc_destroy_state+0x10/0x20 [drm_kms_helper]
      [  326.577352]  intel_crtc_destroy_state+0x9/0x10 [i915]
      [  326.577388]  drm_atomic_state_default_clear+0xea/0x1d0 [drm]
      [  326.577462]  intel_atomic_state_clear+0xd/0x20 [i915]
      [  326.577497]  drm_atomic_state_clear+0x1a/0x30 [drm]
      [  326.577532]  __drm_atomic_state_free+0x13/0x60 [drm]
      [  326.577607]  intel_atomic_commit_ready+0x6f/0x78 [i915]
      [  326.577670]  i915_sw_fence_release+0x3a/0x50 [i915]
      [  326.577733]  dma_i915_sw_fence_wake+0x39/0x80 [i915]
      [  326.577741]  dma_fence_signal+0xda/0x120
      [  326.577812]  ? intel_breadcrumbs_signaler+0x59/0x270 [i915]
      [  326.577884]  intel_breadcrumbs_signaler+0xb1/0x270 [i915]
      [  326.577889]  kthread+0x127/0x130
      [  326.577961]  ? intel_engine_remove_wait+0x1a0/0x1a0 [i915]
      [  326.577964]  ? kthread_stop+0x120/0x120
      [  326.577970]  ret_from_fork+0x22/0x30
      
      Fixes: c004a90b ("drm/i915: Restore nonblocking awaits for modesetting")
      Reported-by: NMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Link: http://patchwork.freedesktop.org/patch/msgid/20170123212939.30345-1-chris@chris-wilson.co.uk
      Cc: <drm-intel-fixes@lists.freedesktop.org> # v4.10-rc1+
      Reviewed-by: NJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      eb955eee
  9. 23 1月, 2017 3 次提交
  10. 19 1月, 2017 4 次提交
  11. 18 1月, 2017 4 次提交
  12. 15 1月, 2017 2 次提交
  13. 12 1月, 2017 1 次提交
  14. 11 1月, 2017 1 次提交
    • T
      drm/i915: Use new CRC debugfs API · 8c6b709d
      Tomeu Vizoso 提交于
      The core provides now an ABI to userspace for generation of frame CRCs,
      so implement the ->set_crc_source() callback and reuse as much code as
      possible with the previous ABI implementation.
      
      When handling the pageflip interrupt, we skip 1 or 2 frames depending on
      the HW because they contain wrong values. For the legacy ABI for
      generating frame CRCs, this was done in userspace but now that we have a
      generic ABI it's better if it's not exposed by the kernel.
      
      v2:
          - Leave the legacy implementation in place as the ABI implementation
            in the core is incompatible with it.
      v3:
          - Use the "cooked" vblank counter so we have a whole 32 bits.
          - Make sure we don't mess with the state of the legacy CRC capture
            ABI implementation.
      v4:
          - Keep use of get_vblank_counter as in the legacy code, will be
            changed in a followup commit.
      
      v5:
          - Skip first frame or two as it's known that they contain wrong
            data.
          - A few fixes suggested by Emil Velikov.
      
      v6:
          - Rework programming of the HW registers to preserve previous
            behavior.
      
      v7:
          - Address whitespace issue.
          - Added a comment on why in the implementation of the new ABI we
            skip the 1st or 2nd frames.
      
      v9:
          - Add stub for intel_crtc_set_crc_source.
      
      v12:
          - Rebased.
          - Remove stub for intel_crtc_set_crc_source and instead set the
            callback to NULL (Jani Nikula).
      
      v15:
          - Rebased.
      Signed-off-by: NTomeu Vizoso <tomeu.vizoso@collabora.com>
      Reviewed-by: NEmil Velikov <emil.velikov@collabora.com>
      Reviewed-by: NRobert Foss <robert.foss@collabora.com>
      
      irq
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Link: http://patchwork.freedesktop.org/patch/msgid/20170110134305.26326-2-tomeu.vizoso@collabora.com
      8c6b709d
  15. 04 1月, 2017 1 次提交
  16. 03 1月, 2017 1 次提交
  17. 02 1月, 2017 1 次提交
  18. 30 12月, 2016 4 次提交
  19. 22 12月, 2016 1 次提交
  20. 20 12月, 2016 3 次提交