1. 31 Dec, 2018 12 commits
  2. 28 Dec, 2018 7 commits
  3. 27 Dec, 2018 2 commits
  4. 25 Dec, 2018 3 commits
  5. 22 Dec, 2018 1 commit
  6. 21 Dec, 2018 4 commits
  7. 20 Dec, 2018 1 commit
  8. 18 Dec, 2018 7 commits
    • Imre Deak's avatar
      drm/i915/icl: Add fallback detection method for TypeC legacy ports · 2a041c97
      Imre Deak authored
      Add a fallback detection method for TypeC legacy ports in case the
      VBT port information used to detect normally such ports is
      incorrect.
      
      For the fallback method we use the TypeC legacy mode specific HPD
      interrupt flag which should only be raised for a legacy port.
      
      WARN if the VBT port info is incorrect.
      
      In a case where we'd detect the port in a contradicting way both as a
      legacy and also as a USB DP and/or TBT alternate port treat the port
      as legacy (by also emitting a WARN from icl_update_tc_port_type).
      
      v2:
      - Repurpose the detection as a fallback method instead of using
        it only for the DP legacy case. By now we should normally use VBT to
        detect DP legacy ports as well.
      Suggested-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: José Roberto de Souza <jose.souza@intel.com>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
      Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> (v1)
      Reviewed-by: default avatarMika Kahola <mika.kahola@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20181214182703.18865-5-imre.deak@intel.com
      2a041c97
    • Imre Deak's avatar
      drm/i915/icl: Fix HPD handling for TypeC legacy ports · f6bff60e
      Imre Deak authored
      Atm HPD disconnect events on TypeC ports will break things, since we'll
      switch the TypeC mode (between legacy and disconnected modes as well as
      among USB DP alternate, Thunderbolt alternate and disconnected modes) on
      the fly from the HPD disconnect interrupt work while the port may be
      still active.
      
      Even if the port happens to be not active during the disconnect we'd
      still have a problem during a subsequent modeset or AUX transfer that
      could happen regardless of the port's connected state. For instance the
      system resume display mode restore code and userspace could perform a
      modeset on the port or userspace could start an AUX transfer even if the
      port is in disconnected state.
      
      To fix this keep TypeC legacy ports in legacy mode whenever we're not
      suspended. This mode is a static configuration as opposed to the
      Thunderbolt and USB DP alternate modes between which we can switch
      dynamically.
      
      We determine if a TypeC port is legacy (wired to a legacy HDMI or a
      legacy DP connector) via the VBT DDI port specific USB-TypeC and
      Thunderbolt flags. If both these flags are cleared then the port is
      configured for legacy mode.
      
      On such legacy ports we'll run the TypeC PHY connect sequence explicitly
      during driver loading and system resume (vs. running the sequence during
      HPD processing). The connect will succeed even if the display is not
      connected to begin with (or disappears during the suspended state) since
      for legacy ports the PORT_TX_DFLEXDPPMS / DP_PHY_MODE_STATUS_COMPLETED
      flag is always set (as opposed to the USB DP alternate mode where it
      gets set only when a display is connected).
      
      Correspondingly run the TypeC PHY disconnect sequence during system
      suspend and driver unloading. For the unloading case I had to split
      up intel_dp_encoder_destroy() to be able to have the 1. flush any
      pending encoder work, 2. disconnect TC PHY, 3. call DRM core cleanup and
      kfree on the encoder object.
      
      For now run the PHY disconnect during suspend only for TypeC legacy
      ports. We will need to disconnect even in USB DP alternate mode in the
      future, but atm we don't have a way to reconnect the port in this mode
      during resume if the display disappears while being suspended. So for
      now punt on this case.
      
      Note that we do not disconnect the port during runtime suspend; in
      legacy mode there are no shared HW resources (PHY lanes) with other HW
      blocks (USB), so no need to release / reacquire these resources as with
      USB DP alternate mode. The only reason to disconnect legacy ports during
      system suspend is that the PORT_TX_DFLEXDPPMS /
      DP_PHY_MODE_STATUS_COMPLETED flag must be rechecked and the port must be
      connected again during system resume. We'll also have to turn the check
      for this flag into a poll, after figuring out what's the proper timeout
      value for it.
      
      v2:
      - Remove the redundant special casing of legacy mode when doing a
        disconnect in icl_tc_port_connected(). It's guaranteed already that we
        won't disconnect legacy ports in that function.
      - Add a note about the new intel_ddi_encoder_destroy() hook.
      - Reword the commit message after switching to the VBT based detection.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108070
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108924
      Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: José Roberto de Souza <jose.souza@intel.com>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
      Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20181214182703.18865-4-imre.deak@intel.com
      f6bff60e
    • Imre Deak's avatar
      drm/i915/bios: Parse the VBT TypeC and Thunderbolt port flags · 38b3416f
      Imre Deak authored
      This is needed by the next patch to determine if a DDI TypeC port is
      physically wired to a legacy DP or legacy HDMI connector or if the port
      is wired to a USB-C/Thunderbolt connector.
      
      Cc: Jani Nikula <jani.nikula@linux.intel.com>
      Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: José Roberto de Souza <jose.souza@intel.com>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
      Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20181214182703.18865-3-imre.deak@intel.com
      38b3416f
    • Imre Deak's avatar
      drm/i915/icl: Add a debug print for TypeC port disconnection · f0236a85
      Imre Deak authored
      It's useful to see at which point a TypeC port gets disconnected, so add
      a debug print for it.
      
      Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: José Roberto de Souza <jose.souza@intel.com>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
      Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20181214182703.18865-2-imre.deak@intel.com
      f0236a85
    • Chris Wilson's avatar
      drm/i915: Apply missed interrupt after reset w/a to all ringbuffer gen · 060f2322
      Chris Wilson authored
      Having completed a test run of gem_eio across all machines in CI we also
      observe the phenomenon (of lost interrupts after resetting the GPU) on
      gen3 machines as well as the previously sighted gen6/gen7. Let's apply
      the same HWSTAM workaround that was effective for gen6+ for all, as
      although we haven't seen the same failure on gen4/5 it seems prudent to
      keep the code the same.
      
      As a consequence we can remove the extra setting of HWSTAM and apply the
      register from a single site.
      
      v2: Delazy and move the HWSTAM into its own function
      v3: Mask off all HWSP writes on driver unload and engine cleanup.
      v4: And what about the physical hwsp?
      v5: No, engine->init_hw() is not called from driver_init_hw(), don't be
      daft. Really scrub HWSTAM as early as we can in driver_init_mmio()
      v6: Rename set_hwsp as it was setting the mask not the hwsp register.
      v7: Ville pointed out that although vcs(bsd) was introduced for g4x/ilk,
      per-engine HWSTAM was not introduced until gen6!
      
      References: https://bugs.freedesktop.org/show_bug.cgi?id=108735Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20181218102712.11058-1-chris@chris-wilson.co.uk
      060f2322
    • Clint Taylor's avatar
      drm/i915/icl: combo port vswing programming changes per BSPEC · b265a2a6
      Clint Taylor authored
      In August 2018 the BSPEC changed the ICL port programming sequence to
      closely resemble earlier gen programming sequence. Restrict combo phy to
      HBR max rate unless eDP panel is connected to port.
      
      v2: remove debug code that Imre found
      v3: simplify translation table if-else
      v4: edp translation table now based on link rate and low_swing
      v5: Misc review comments + r-b
      BSpec: 21257
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Imre Deak <imre.deak@intel.com>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Reviewed-by: default avatarImre Deak <imre.deak@intel.com>
      Signed-off-by: default avatarClint Taylor <clinton.a.taylor@intel.com>
      Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/1545084827-5776-1-git-send-email-clinton.a.taylor@intel.com
      b265a2a6
    • Hans de Goede's avatar
      drm/i915: Update crtc scaler settings when update_pipe is set · 2c5c415c
      Hans de Goede authored
      When the pipe_config's update_pipe flag is set we may need to update the
      panel fitting settings. On GEN9+ this means we need to update the crtc's
      scaler settings.
      
      This fixes the following WARN_ON, during i915 loading on an Asrock
      B150M Pro4S/D3 board with an i5-6500 CPU / graphics:
      
      [drm:pipe_config_err [i915]] *ERROR* mismatch in pch_pfit.enabled
       (expected no, found yes)
      pipe state doesn't match!
      WARNING: CPU: 3 PID: 305 at drivers/gpu/drm/i915/intel_display.c:12084
      
      With line 12084 being the I915_STATE_WARN call inside the
      "if (!intel_pipe_config_compare())" block in verify_crtc_state().
      
      On this board with 2 1920x1080 monitors connected over HDMI the GOP
      initializes both monitors at 1920x1080 and despite no scaling being
      necessary configures a scaler for one of them.
      
      When booting with fastboot=1 on the initial modeset needs_modeset will
      be false while update_pipe is true. Since we were not calling
      skl_update_scaler_crtc() in this case we would leave the scaler enabled
      causing this error.
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20181217141903.4182-1-hdegoede@redhat.com
      2c5c415c
  9. 17 Dec, 2018 2 commits
  10. 13 Dec, 2018 1 commit
    • Chris Wilson's avatar
      drm/i915: Fix Cherryview oops on boot · a4893349
      Chris Wilson authored
      Do not dereference the LUT blob before checking whether that blob
      exists. Or else,
      
      <1>[   13.978684] BUG: unable to handle kernel NULL pointer dereference at 0000000000000048
      <6>[   13.978718] PGD 0 P4D 0
      <4>[   13.978733] Oops: 0000 [#1] PREEMPT SMP PTI
      <4>[   13.978750] CPU: 0 PID: 282 Comm: modprobe Not tainted 4.20.0-rc5-CI-CI_DRM_5294+ #1
      <4>[   13.978773] Hardware name:  /NUC5CPYB, BIOS PYBSWCEL.86A.0058.2016.1102.1842 11/02/2016
      <4>[   13.978932] RIP: 0010:cherryview_load_csc_matrix+0x1e6/0x210 [i915]
      <4>[   13.978953] Code: 41 5c 41 5d e9 7b 83 aa e1 41 c1 e4 0d 48 83 bd 00 02 00 00 00 48 8b 85 10 02 00 00 45 89 e5 74 09 ba 01 00 00 00 31 c9 eb 9d <48> 8b 50 48 48 c1 ea 03 81 fa 00 01 00 00 75 07 31 d2 48 85 c0 75
      <4>[   13.979001] RSP: 0018:ffffc9000026f840 EFLAGS: 00010246
      <4>[   13.979018] RAX: 0000000000000000 RBX: ffff888165500000 RCX: 7885fe6200000000
      <4>[   13.979039] RDX: 0000000000000020 RSI: ffff88816553a008 RDI: ffff888165464a88
      <4>[   13.979060] RBP: ffff888165464a88 R08: 000000000ed0e429 R09: 0000000000000001
      <4>[   13.979080] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000004000
      <4>[   13.979101] R13: 0000000000004000 R14: ffff888165500000 R15: ffff888165464a88
      <4>[   13.979122] FS:  00007fb69c4f3540(0000) GS:ffff88817ba00000(0000) knlGS:0000000000000000
      <4>[   13.979146] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      <4>[   13.979163] CR2: 0000000000000048 CR3: 000000016d7fa000 CR4: 00000000001006f0
      <4>[   13.979184] Call Trace:
      <4>[   13.979302]  intel_update_crtc+0x18f/0x2b0 [i915]
      <4>[   13.979421]  intel_update_crtcs+0x49/0x60 [i915]
      <4>[   13.979538]  intel_atomic_commit_tail+0x1ea/0xd70 [i915]
      <4>[   13.979657]  ? intel_atomic_commit_ready+0x3f/0x50 [i915]
      <4>[   13.979762]  ? __i915_sw_fence_complete+0x1a0/0x250 [i915]
      <4>[   13.979884]  intel_atomic_commit+0x244/0x330 [i915]
      <4>[   13.980002]  intel_initial_commit+0xb6/0x140 [i915]
      <4>[   13.980127]  intel_modeset_init+0x7a1/0x1880 [i915]
      <4>[   13.980235]  i915_driver_load+0xcbb/0x15c0 [i915]
      <4>[   13.980257]  ? __pm_runtime_resume+0x4f/0x80
      <4>[   13.980277]  ? _raw_spin_unlock_irqrestore+0x4c/0x60
      <4>[   13.980296]  ? lockdep_hardirqs_on+0xe0/0x1b0
      <4>[   13.980401]  i915_pci_probe+0x29/0xa0 [i915]
      <4>[   13.980421]  pci_device_probe+0xa1/0x130
      <4>[   13.980440]  really_probe+0xf3/0x3e0
      <4>[   13.980456]  driver_probe_device+0x10a/0x120
      <4>[   13.980474]  __driver_attach+0xdb/0x100
      <4>[   13.980489]  ? driver_probe_device+0x120/0x120
      <4>[   13.980505]  ? driver_probe_device+0x120/0x120
      <4>[   13.980522]  bus_for_each_dev+0x74/0xc0
      <4>[   13.980539]  bus_add_driver+0x15f/0x250
      <4>[   13.980554]  ? 0xffffffffa0348000
      <4>[   13.980568]  driver_register+0x56/0xe0
      <4>[   13.980583]  ? 0xffffffffa0348000
      <4>[   13.980597]  do_one_initcall+0x58/0x2e0
      <4>[   13.980615]  ? do_init_module+0x1d/0x1ea
      <4>[   13.980631]  ? rcu_read_lock_sched_held+0x6f/0x80
      <4>[   13.980649]  ? kmem_cache_alloc_trace+0x264/0x290
      <4>[   13.980668]  do_init_module+0x56/0x1ea
      <4>[   13.980685]  load_module+0x227a/0x29c0
      <4>[   13.980715]  ? __se_sys_finit_module+0xd3/0xf0
      <4>[   13.980731]  __se_sys_finit_module+0xd3/0xf0
      <4>[   13.980756]  do_syscall_64+0x55/0x190
      <4>[   13.980772]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
      <4>[   13.980789] RIP: 0033:0x7fb69c019839
      <4>[   13.980804] Code: 00 f3 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 1f f6 2c 00 f7 d8 64 89 01 48
      <4>[   13.980851] RSP: 002b:00007ffdc112e3a8 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
      <4>[   13.980875] RAX: ffffffffffffffda RBX: 000055c689fe0b30 RCX: 00007fb69c019839
      <4>[   13.980895] RDX: 0000000000000000 RSI: 000055c689a05d2e RDI: 0000000000000000
      <4>[   13.980916] RBP: 000055c689a05d2e R08: 0000000000000000 R09: 0000000000000000
      <4>[   13.980936] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
      <4>[   13.980957] R13: 000055c689fe0c60 R14: 0000000000040000 R15: 000055c689fe0b30
      <4>[   13.980986] Modules linked in: i915(+) snd_hda_intel snd_hda_codec snd_hwdep snd_hda_core snd_pcm pinctrl_cherryview prime_numbers
      <4>[   13.981027] CR2: 0000000000000048
      
      Fixes: 302da0cd ("drm/i915: Use intel_ types more consistently for color management code (v2)")
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=109054Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Matt Roper <matthew.d.roper@intel.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: default avatarMatt Roper <matthew.d.roper@intel.com>
      Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20181213161241.3461-1-chris@chris-wilson.co.uk
      a4893349