1. 01 7月, 2020 1 次提交
    • V
      drm/i915/fbc: Fix fence_y_offset handling · 5331889b
      Ville Syrjälä 提交于
      The current fence_y_offset calculation is broken. I think it more or
      less used to do the right thing, but then I changed the plane code
      to put the final x/y source offsets back into the src rectangle so
      now it's just subtraacting the same value from itself. The code would
      never have worked if we allowed the framebuffer to have a non-zero
      offset.
      
      Let's do this in a better way by just calculating the fence_y_offset
      from the final plane surface offset. Note that we don't align the
      plane surface address to fence rows so with horizontal panning there's
      often a horizontal offset from the fence start to the surface address
      as well. We have no way to tell the hardware about that so we just
      ignore it. Based on some quick tests the invlidation still happens
      correctly. I presume due to the invalidation nuking at least the full
      line (or a segment of multiple lines).
      
      Fixes: 54d4d719 ("drm/i915: Overcome display engine stride limits via GTT remapping")
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20200429101034.8208-4-ville.syrjala@linux.intel.comReviewed-by: NMatt Roper <matthew.d.roper@intel.com>
      5331889b
  2. 30 6月, 2020 3 次提交
  3. 27 6月, 2020 1 次提交
  4. 26 6月, 2020 1 次提交
  5. 24 6月, 2020 1 次提交
  6. 23 6月, 2020 6 次提交
  7. 16 6月, 2020 3 次提交
  8. 12 6月, 2020 1 次提交
  9. 11 6月, 2020 4 次提交
    • I
      drm/i915/dp_mst: Work around out-of-spec adapters filtering short pulses · 471bdd0d
      Imre Deak 提交于
      Some TypeC -> native DP adapters, at least the Club 3D CAC-1557 adapter,
      incorrectly filter out HPD short pulses with a duration less than
      ~540 usec, leading to MST probe failures.
      
      According to the DP Standard 2.0 section 5.1.4:
      - DP sinks should generate short pulses in the 500 usec -> 1 msec range
      - DP sources should detect short pulses in the 250 usec -> 2 msec range
      
      According to the DP Alt Mode on TypeC Standard section 3.9.2, adapters
      should detect and forward short pulses according to how sources should
      detect them as specified in the DP Standard (250 usec -> 2 msec).
      
      Based on the above filtering out short pulses with a duration less than
      540 usec is incorrect.
      
      To make such adapters work add support for a driver polling on MST
      inerrupt flags, and wire this up in the i915 driver. The sink can clear
      an interrupt it raised after 110 msec if the source doesn't respond, so
      use a 50 msec poll period to avoid missing an interrupt. Polling of the
      MST interrupt flags is explicitly allowed by the DP Standard.
      
      This fixes MST probe failures I saw using this adapter and a DELL U2515H
      monitor.
      
      v2:
      - Fix the wait event timeout for the no-poll case.
      v3 (Ville):
      - Fix the short pulse duration limits in the commit log prescribed by the
        DP Standard.
      - Add code comment explaining why/how polling is used.
      - Factor out a helper to schedule the port's hpd irq handler and move it
        to the rest of hotplug handlers.
      - Document the new MST callback.
      - s/update_hpd_irq_state/poll_hpd_irq/
      
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: NLyude Paul <lyude@redhat.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20200604184500.23730-2-imre.deak@intel.com
      471bdd0d
    • I
      drm/i915/dp_mst: Fix disabling MST on a port · 8d712a7e
      Imre Deak 提交于
      Currently MST on a port can get enabled/disabled from the hotplug work
      and get disabled from the short pulse work in a racy way. Fix this by
      relying on the MST state checking in the hotplug work and just schedule
      a hotplug work from the short pulse handler if some problem happened
      during the MST interrupt handling.
      
      This removes the explicit MST disabling in case of an AUX failure, but
      if AUX fails, then probably the detection will also fail during the
      scheduled hotplug work and it's not guaranteed that we'll see
      intermittent errors anyway.
      
      While at it also simplify the error checking of the MST interrupt
      handler.
      
      v2:
      - Convert intel_dp_check_mst_status() to return bool. (Ville)
      - Change the intel_dp->is_mst check to an assert, since after this patch
        the condition can't change after we checked it previously.
      - Document the return value from intel_dp_check_mst_status().
      v3:
      - Remove the intel_dp->is_mst check from intel_dp_check_mst_status().
        There is no point in checking the same condition twice, even though
        there is a chance that the hotplug work running concurrently changes
        it.
      
      Cc: José Roberto de Souza <jose.souza@intel.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NJosé Roberto de Souza <jose.souza@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20200605094801.17709-1-imre.deak@intel.com
      8d712a7e
    • I
      drm/i915: Fix the i915_dsc_fec_support debugfs file for DP MST connectors · f99fb309
      Imre Deak 提交于
      DSC is not supported on DP MST streams so just don't add this entry for
      MST connectors.
      
      This also fixes an OOPS, caused by the encoder->digport cast, which is
      not valid for MST encoders.
      
      v2:
      - Check encoder, which is unset for an MST connector, before it gets
        enabled.
      v3:
      - Just don't add this debugfs file for MST connectors. (Ville)
      
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NManasi Navare <manasi.d.navare@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20200609184140.4937-1-imre.deak@intel.com
      f99fb309
    • I
      drm/i915/icl: Disable DIP on MST ports with the transcoder clock still on · c980216d
      Imre Deak 提交于
      According to BSpec the Data Island Packet should be disabled after
      disabling the transcoder, but before the transcoder clock select is set
      to none. On an ICL RVP, daisy-chained MST config not following this
      leads to a hang with the following MCE when disabling the output:
      
      [  870.948739] mce: [Hardware Error]: CPU 0: Machine Check Exception: 5 Bank 6: ba00000011000402
      [  871.019212] mce: [Hardware Error]: RIP !INEXACT! 10:<ffffffff81aca652> {poll_idle+0x92/0xb0}
      [  871.019212] mce: [Hardware Error]: TSC 135a261fe61
      [  871.019212] mce: [Hardware Error]: PROCESSOR 0:706e5 TIME 1591739604 SOCKET 0 APIC 0 microcode 20
      [  871.019212] mce: [Hardware Error]: Run the above through 'mcelog --ascii'
      [  871.019212] mce: [Hardware Error]: Machine check: Processor context corrupt
      [  871.019212] Kernel panic - not syncing: Fatal machine check
      [  871.019212] Kernel Offset: disabled
      
      Bspec: 4287
      
      Fixes: fa37a213 ("drm/i915: Stop sending DP SDPs on ddi disable")
      Cc: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
      Cc: Uma Shankar <uma.shankar@intel.com>
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Reviewed-by: NUma Shankar <uma.shankar@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20200609220616.6015-1-imre.deak@intel.com
      c980216d
  10. 10 6月, 2020 4 次提交
  11. 09 6月, 2020 1 次提交
  12. 08 6月, 2020 2 次提交
  13. 06 6月, 2020 1 次提交
  14. 05 6月, 2020 8 次提交
  15. 03 6月, 2020 3 次提交