Backmerge v6.12-rc6 of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux...
authorDave Airlie <airlied@redhat.com>
Mon, 4 Nov 2024 04:25:33 +0000 (14:25 +1000)
committerDave Airlie <airlied@redhat.com>
Mon, 4 Nov 2024 04:25:33 +0000 (14:25 +1000)
Backmerge Linus tree for some drm-fixes needed for msm and xe merges.

Signed-off-by: Dave Airlie <airlied@redhat.com>
36 files changed:
1  2 
MAINTAINERS
drivers/accel/ivpu/ivpu_debugfs.c
drivers/accel/ivpu/ivpu_hw.c
drivers/accel/ivpu/ivpu_hw.h
drivers/accel/ivpu/ivpu_hw_ip.c
drivers/gpu/drm/amd/pm/swsmu/smu11/vangogh_ppt.c
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c
drivers/gpu/drm/ast/ast_sil164.c
drivers/gpu/drm/ast/ast_vga.c
drivers/gpu/drm/bridge/aux-bridge.c
drivers/gpu/drm/bridge/tc358767.c
drivers/gpu/drm/drm_fbdev_dma.c
drivers/gpu/drm/i915/Kconfig
drivers/gpu/drm/i915/display/intel_dp_mst.c
drivers/gpu/drm/mediatek/mtk_dp.c
drivers/gpu/drm/mgag200/mgag200_drv.c
drivers/gpu/drm/nouveau/nouveau_drm.c
drivers/gpu/drm/panthor/panthor_fw.c
drivers/gpu/drm/panthor/panthor_gem.c
drivers/gpu/drm/panthor/panthor_mmu.c
drivers/gpu/drm/panthor/panthor_sched.c
drivers/gpu/drm/scheduler/sched_main.c
drivers/gpu/drm/tegra/drm.c
drivers/gpu/drm/v3d/v3d_perfmon.c
drivers/gpu/drm/vc4/vc4_perfmon.c
drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
drivers/gpu/drm/xe/regs/xe_gt_regs.h
drivers/gpu/drm/xe/xe_force_wake.c
drivers/gpu/drm/xe/xe_ggtt.c
drivers/gpu/drm/xe/xe_guc_ct.c
drivers/gpu/drm/xe/xe_guc_submit.c
drivers/gpu/drm/xe/xe_guc_types.h
drivers/video/fbdev/atmel_lcdfb.c
drivers/video/fbdev/omap2/omapfb/displays/panel-dsi-cm.c
drivers/video/fbdev/sh_mobile_lcdcfb.c

diff --cc MAINTAINERS
Simple merge
@@@ -125,25 -124,35 +133,26 @@@ static const struct drm_debugfs_info vd
        {"last_bootmode", last_bootmode_show, 0},
        {"reset_counter", reset_counter_show, 0},
        {"reset_pending", reset_pending_show, 0},
+       {"firewall_irq_counter", firewall_irq_counter_show, 0},
  };
  
 -static ssize_t
 -dvfs_mode_fops_write(struct file *file, const char __user *user_buf, size_t size, loff_t *pos)
 +static int dvfs_mode_get(void *data, u64 *dvfs_mode)
  {
 -      struct ivpu_device *vdev = file->private_data;
 -      struct ivpu_fw_info *fw = vdev->fw;
 -      u32 dvfs_mode;
 -      int ret;
 -
 -      ret = kstrtou32_from_user(user_buf, size, 0, &dvfs_mode);
 -      if (ret < 0)
 -              return ret;
 +      struct ivpu_device *vdev = (struct ivpu_device *)data;
  
 -      fw->dvfs_mode = dvfs_mode;
 +      *dvfs_mode = vdev->fw->dvfs_mode;
 +      return 0;
 +}
  
 -      ret = pci_try_reset_function(to_pci_dev(vdev->drm.dev));
 -      if (ret)
 -              return ret;
 +static int dvfs_mode_set(void *data, u64 dvfs_mode)
 +{
 +      struct ivpu_device *vdev = (struct ivpu_device *)data;
  
 -      return size;
 +      vdev->fw->dvfs_mode = (u32)dvfs_mode;
 +      return pci_try_reset_function(to_pci_dev(vdev->drm.dev));
  }
  
 -static const struct file_operations dvfs_mode_fops = {
 -      .owner = THIS_MODULE,
 -      .open = simple_open,
 -      .write = dvfs_mode_fops_write,
 -};
 +DEFINE_DEBUGFS_ATTRIBUTE(dvfs_mode_fops, dvfs_mode_get, dvfs_mode_set, "%llu\n");
  
  static ssize_t
  fw_dyndbg_fops_write(struct file *file, const char __user *user_buf, size_t size, loff_t *pos)
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -401,6 -397,16 +401,16 @@@ static void ggtt_invalidate_gt_tlb(stru
  
  static void xe_ggtt_invalidate(struct xe_ggtt *ggtt)
  {
 -      xe_mmio_read32(xe_root_mmio_gt(xe), VF_CAP_REG);
+       struct xe_device *xe = tile_to_xe(ggtt->tile);
+       /*
+        * XXX: Barrier for GGTT pages. Unsure exactly why this required but
+        * without this LNL is having issues with the GuC reading scratch page
+        * vs. correct GGTT page. Not particularly a hot code path so blindly
+        * do a mmio read here which results in GuC reading correct GGTT page.
+        */
++      xe_mmio_read32(&xe_root_mmio_gt(xe)->mmio, VF_CAP_REG);
        /* Each GT in a tile has its own TLB to cache GGTT lookups */
        ggtt_invalidate_gt_tlb(ggtt->tile->primary_gt);
        ggtt_invalidate_gt_tlb(ggtt->tile->media_gt);
Simple merge
@@@ -1124,25 -1059,6 +1061,21 @@@ guc_exec_queue_timedout_job(struct drm_
                exec_queue_killed_or_banned_or_wedged(q) ||
                exec_queue_destroyed(q);
  
-       /* Job hasn't started, can't be timed out */
-       if (!skip_timeout_check && !xe_sched_job_started(job))
-               goto rearm;
 +      /*
 +       * If devcoredump not captured and GuC capture for the job is not ready
 +       * do manual capture first and decide later if we need to use it
 +       */
 +      if (!exec_queue_killed(q) && !xe->devcoredump.captured &&
 +          !xe_guc_capture_get_matching_and_lock(job)) {
 +              /* take force wake before engine register manual capture */
 +              if (xe_force_wake_get(gt_to_fw(q->gt), XE_FORCEWAKE_ALL))
 +                      xe_gt_info(q->gt, "failed to get forcewake for coredump capture\n");
 +
 +              xe_engine_snapshot_capture_for_job(job);
 +
 +              xe_force_wake_put(gt_to_fw(q->gt), XE_FORCEWAKE_ALL);
 +      }
 +
        /*
         * XXX: Sampling timeout doesn't work in wedged mode as we have to
         * modify scheduling state to read timestamp. We could read the
Simple merge
Simple merge