1. 22 Feb, 2023 2 commits
  2. 21 Feb, 2023 3 commits
  3. 20 Feb, 2023 1 commit
  4. 17 Feb, 2023 1 commit
  5. 16 Feb, 2023 27 commits
  6. 15 Feb, 2023 6 commits
    • Imre Deak's avatar
      drm/i915: Fix system suspend without fbdev being initialized · 8038510b
      Imre Deak authored
      If fbdev is not initialized for some reason - in practice on platforms
      without display - suspending fbdev should be skipped during system
      suspend, fix this up. While at it add an assert that suspending fbdev
      only happens with the display present.
      
      This fixes the following:
      
      [   91.227923] PM: suspend entry (s2idle)
      [   91.254598] Filesystems sync: 0.025 seconds
      [   91.270518] Freezing user space processes
      [   91.272266] Freezing user space processes completed (elapsed 0.001 seconds)
      [   91.272686] OOM killer disabled.
      [   91.272872] Freezing remaining freezable tasks
      [   91.274295] Freezing remaining freezable tasks completed (elapsed 0.001 seconds)
      [   91.659622] BUG: kernel NULL pointer dereference, address: 00000000000001c8
      [   91.659981] #PF: supervisor write access in kernel mode
      [   91.660252] #PF: error_code(0x0002) - not-present page
      [   91.660511] PGD 0 P4D 0
      [   91.660647] Oops: 0002 [#1] PREEMPT SMP NOPTI
      [   91.660875] CPU: 4 PID: 917 Comm: bash Not tainted 6.2.0-rc7+ #54
      [   91.661185] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS edk2-20221117gitfff6d81270b5-9.fc37 unknown
      [   91.661680] RIP: 0010:mutex_lock+0x19/0x30
      [   91.661914] Code: 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 0f 1f 44 00 00 53 48 89 fb e8 62 d3 ff ff 31 c0 65 48 8b 14 25 00 15 03 00 <f0> 48 0f b1 13 75 06 5b c3 cc cc cc cc 48 89 df 5b eb b4 0f 1f 40
      [   91.662840] RSP: 0018:ffffa1e8011ffc08 EFLAGS: 00010246
      [   91.663087] RAX: 0000000000000000 RBX: 00000000000001c8 RCX: 0000000000000000
      [   91.663440] RDX: ffff8be455eb0000 RSI: 0000000000000001 RDI: 00000000000001c8
      [   91.663802] RBP: ffff8be459440000 R08: ffff8be459441f08 R09: ffffffff8e1432c0
      [   91.664167] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000001
      [   91.664532] R13: 00000000000001c8 R14: 0000000000000000 R15: ffff8be442f4fb20
      [   91.664905] FS:  00007f28ffc16740(0000) GS:ffff8be4bb900000(0000) knlGS:0000000000000000
      [   91.665334] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [   91.665626] CR2: 00000000000001c8 CR3: 0000000114926006 CR4: 0000000000770ee0
      [   91.665988] PKRU: 55555554
      [   91.666131] Call Trace:
      [   91.666265]  <TASK>
      [   91.666381]  intel_fbdev_set_suspend+0x97/0x1b0 [i915]
      [   91.666738]  i915_drm_suspend+0xb9/0x100 [i915]
      [   91.667029]  pci_pm_suspend+0x78/0x170
      [   91.667234]  ? __pfx_pci_pm_suspend+0x10/0x10
      [   91.667461]  dpm_run_callback+0x47/0x150
      [   91.667673]  __device_suspend+0x10a/0x4e0
      [   91.667880]  dpm_suspend+0x134/0x270
      [   91.668069]  dpm_suspend_start+0x79/0x80
      [   91.668272]  suspend_devices_and_enter+0x11b/0x890
      [   91.668526]  pm_suspend.cold+0x270/0x2fc
      [   91.668737]  state_store+0x46/0x90
      [   91.668916]  kernfs_fop_write_iter+0x11b/0x200
      [   91.669153]  vfs_write+0x1e1/0x3a0
      [   91.669336]  ksys_write+0x53/0xd0
      [   91.669510]  do_syscall_64+0x58/0xc0
      [   91.669699]  ? syscall_exit_to_user_mode_prepare+0x18e/0x1c0
      [   91.669980]  ? syscall_exit_to_user_mode_prepare+0x18e/0x1c0
      [   91.670278]  ? syscall_exit_to_user_mode+0x17/0x40
      [   91.670524]  ? do_syscall_64+0x67/0xc0
      [   91.670717]  ? __irq_exit_rcu+0x3d/0x140
      [   91.670931]  entry_SYSCALL_64_after_hwframe+0x72/0xdc
      [   91.671202] RIP: 0033:0x7f28ffd14284
      
      v2: CC stable. (Jani)
      
      Fixes: f8cc091e ("drm/i915/fbdev: suspend HPD before fbdev unregistration")
      References: https://gitlab.freedesktop.org/drm/intel/-/issues/8015Reported-and-tested-by: default avatariczero <iczero@hellomouse.net>
      Cc: Andrzej Hajda <andrzej.hajda@intel.com>
      Cc: iczero <iczero@hellomouse.net>
      Cc: <stable@vger.kernel.org> # v6.1+
      Reviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
      Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20230208114300.3123934-2-imre.deak@intel.com
      (cherry picked from commit 9542d708)
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      8038510b
    • Lucas De Marchi's avatar
      drm/i915: Fix GEN8_MISCCPCTL · 6a8b2e49
      Lucas De Marchi authored
      Register 0x9424 is not replicated on any platform, so it shouldn't be
      declared with REG_MCR(). Declaring it with _MMIO() is basically
      duplicate of the GEN7 version, so just remove the GEN8 and change all
      the callers to use the right functions.
      
      Old versions of the gen8 bspec page used to contain a table with MCR
      registers, apparently implying 0x9400 - 0x94ff registers were
      replicated. However that table went away and there is no information
      related to the ranges for gen8 anymore. Moreover the current behavior of
      the driver wouldn't do anything special for 0x9424 since there is no
      equivalent table in intel_gt_mcr.c: the driver would just fallback to
      intel_uncore_{read,write}(). Therefore, do not care about the possible
      special case for gen8 and just use the register as non-MCR for all the
      platforms.
      
      One place doing read + write is also converted to intel_uncore_rmw().
      
      v2: Reword commit message adding the justification wrt gen8
      
      Fixes: a9e69428 ("drm/i915: Define MCR registers explicitly")
      Cc: Balasubramani Vivekanandan <balasubramani.vivekanandan@intel.com>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Gustavo Sousa <gustavo.sousa@intel.com>
      Cc: Matt Atwood <matthew.s.atwood@intel.com>
      Cc: Ashutosh Dixit <ashutosh.dixit@intel.com>
      Signed-off-by: default avatarLucas De Marchi <lucas.demarchi@intel.com>
      Reviewed-by: default avatarMatt Roper <matthew.d.roper@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20230206165410.3056073-1-lucas.demarchi@intel.com
      (cherry picked from commit 869bace7)
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      6a8b2e49
    • Matt Roper's avatar
      drm/i915/pvc: Annotate two more workaround/tuning registers as MCR · effc0905
      Matt Roper authored
      XEHPC_LNCFMISCCFGREG0 and XEHPC_L3SCRUB are both in MCR register ranges
      on PVC (with HALFBSLICE and L3BANK replication respectively), so they
      should be explicitly declared as MCR registers and use MCR-aware
      workaround handlers.
      
      The workarounds/tuning settings should still be applied properly on PVC
      even without the MCR annotation, but readback verification on
      CONFIG_DRM_I915_DEBUG_GEM builds could potentitally give false positive
      "workaround lost on load" warnings on parts fused such that a unicast
      read targets a terminated register instance.
      
      Fixes: a9e69428 ("drm/i915: Define MCR registers explicitly")
      Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
      Reviewed-by: default avatarGustavo Sousa <gustavo.sousa@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20230201222831.608281-1-matthew.d.roper@intel.com
      (cherry picked from commit 4039e442)
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      effc0905
    • Jani Nikula's avatar
      drm/i915/bios: set default backlight controller index · eb66553d
      Jani Nikula authored
      With backlight controller set to -1 in intel_panel_init_alloc() to
      distinguish uninitialized values, and controller later being set only if
      it's present in VBT, we can end up with -1 for the controller:
      
          [drm:intel_bios_init_panel [i915]] VBT backlight PWM modulation
          frequency 200 Hz, active high, min brightness 0, level 255,
          controller 4294967295
      
      There's no harm if it happens on platforms that ignore controller due to
      only one backlight controller being present, like on VLV above, but play
      it safe.
      
      Fixes: bf38bba3 ("drm/i915: Try to use the correct power sequencer intiially on bxt/glk")
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20230207111626.1839645-1-jani.nikula@intel.com
      (cherry picked from commit a0dcb06d)
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      eb66553d
    • Ville Syrjälä's avatar
      drm/i915: Pick the backlight controller based on VBT on ICP+ · c90b1551
      Ville Syrjälä authored
      Use the second backlight controller on ICP+ if the VBT asks
      us to do so.
      
      On pre-MTP we also check the chicken bit to make sure the
      pins have been correctly muxed by the firmware.
      
      Cc: stable@vger.kernel.org
      Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/8016Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20230207064337.18697-4-ville.syrjala@linux.intel.comReviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
      (cherry picked from commit b3377154)
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      c90b1551
    • Ville Syrjälä's avatar
      drm/i915: Populate encoder->devdata for DSI on icl+ · 14e591a1
      Ville Syrjälä authored
      We now have some eDP+DSI dual panel systems floating around
      where the DSI panel is the secondary LFP and thus needs to
      consult "panel type 2" in VBT in order to locate all the
      other panel type dependant stuff correctly.
      
      To that end we need to pass in the devdata to
      intel_bios_init_panel_late(), otherwise it'll just assume
      we want the primary panel type. So let's try to just populate
      the vbt.ports[] stuff and encoder->devdata for icl+ DSI
      panels as well.
      
      We can't do this on older platforms as there we risk a DSI
      port aliasing with a HDMI/DP port, which is a totally legal
      thing as the DSI ports live in their own little parallel
      universe.
      
      Cc: stable@vger.kernel.org
      Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/8016Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20230207064337.18697-3-ville.syrjala@linux.intel.comReviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
      (cherry picked from commit ba00eb6a)
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      14e591a1