[PULL] drm-xe-next

Lucas De Marchi
2024-08-28T19:18:39Z

Hi Dave and Sima,

Second drm-xe-next pull request for the 6.12 cycle. This includes the
pull request from last week since it was not applied due to the ttm
patch. That patch is now reverted and replacement on the back burner.

The only UAPI change is actually a fix for building with gcc 5.

Aside from the additional fixes compared to last week, 2 important
patches to remove the force_probe requirement for LNL and BMG. Those
are the first platforms to be officially supported by the xe driver: one
integrated and one discrete. For BMG there are still some necessary
changes going through the drm-intel-next pull request later this week.

Cheers,
Lucas De Marchi

drm-xe-next-2024-08-28:
UAPI Changes:
- Fix OA format masks which were breaking build with gcc-5

Cross-subsystem Changes:

Driver Changes:
- Use dma_fence_chain_free in chain fence unused as a sync (Matthew Brost)
- Refactor hw engine lookup and mmio access to be used in more places
(Dominik, Matt Auld, Mika Kuoppala)
- Enable priority mem read for Xe2 and later (Pallavi Mishra)
- Fix PL1 disable flow in xe_hwmon_power_max_write (Karthik)
- Fix refcount and speedup devcoredump (Matthew Brost)
- Add performance tuning changes to Xe2 (Akshata, Shekhar)
- Fix OA sysfs entry (Ashutosh)
- Add first GuC firmware support for BMG (Julia)
- Bump minimum GuC firmware for platforms under force_probe to match LNL
and BMG (Julia)
- Fix access check on user fence creation (Nirmoy)
- Add/document workarounds for Xe2 (Julia, Daniele, John, Tejas)
- Document workaround and use proper WA infra (Matt Roper)
- Fix VF configuration on media GT (Michal Wajdeczko)
- Fix VM dma-resv lock (Matthew Brost)
- Allow suspend/resume exec queue backend op to be called multiple times
(Matthew Brost)
- Add GT stats to debugfs (Nirmoy)
- Add hwconfig to debugfs (Matt Roper)
- Compile out all debugfs code with ONFIG_DEUBG_FS=n (Lucas)
- Remove dead kunit code (Jani Nikula)
- Refactor drvdata storing to help display (Jani Nikula)
- Cleanup unsused xe parameter in pte handling (Himal)
- Rename s/enable_display/probe_display/ for clarity (Lucas)
- Fix missing MCR annotation in couple of registers (Tejas)
- Fix DGFX display suspend/resume (Maarten)
- Prepare exec_queue_kill for PXP handling (Daniele)
- Fix devm/drmm issues (Daniele, Matthew Brost)
- Fix tile and ggtt fini sequences (Matthew Brost)
- Fix crashes when probing without firmware in place (Daniele, Matthew Brost)
- Use xe_managed for kernel BOs (Daniele, Matthew Brost)
- Future-proof dss_per_group calculation by using hwconfig (Matt Roper)
- Use reserved copy engine for user binds on faulting devices
(Matthew Brost)
- Allow mixing dma-fence jobs and long-running faulting jobs (Francois)
- Cleanup redundant arg when creating use BO (Nirmoy)
- Prevent UAF around preempt fence (Auld)
- Fix display suspend/resume (Maarten)
- Use vma_pages() helper (Thorsten)
- Calculate pagefault queue size (Stuart, Matthew Auld)
- Fix missing pagefault wq destroy (Stuart)
- Fix lifetime handling of HW fence ctx (Matthew Brost)
- Fix order destroy order for jobs (Matthew Brost)
- Fix TLB invalidation for media GT (Matthew Brost)
- Document GGTT (Rodrigo Vivi)
- Refactor GGTT layering and fix runtime outer protection (Rodrigo Vivi)
- Handle HPD polling on display pm runtime suspend/resume (Imre, Vinod)
- Drop unrequired NULL checks (Apoorva, Himal)
- Use separate rpm lockdep map for non-d3cold-capable devices (Thomas Hellström)
- Support "nomodeset" kernel command-line option (Thomas Zimmermann)
- Drop force_probe requirement for LNL and BMG (Lucas, Balasubramani)
The following changes since commit a809b92ee0f84c3f655b16a8b4d04bc3665d954a:

Merge tag 'drm-intel-next-2024-08-13' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next (2024-08-16 12:56:42 +1000)

are available in the Git repository at:

https://gitlab.freedesktop.org/drm/xe/kernel.git tags/drm-xe-next-2024-08-28

for you to fetch changes up to 3adcf970dc7ec0469ec3116a5a8be9161d17a335:

drm/xe/bmg: Drop force_probe requirement (2024-08-28 10:47:03 -0700)

----------------------------------------------------------------
UAPI Changes:
- Fix OA format masks which were breaking build with gcc-5

Cross-subsystem Changes:

Driver Changes:
- Use dma_fence_chain_free in chain fence unused as a sync (Matthew Brost)
- Refactor hw engine lookup and mmio access to be used in more places
(Dominik, Matt Auld, Mika Kuoppala)
- Enable priority mem read for Xe2 and later (Pallavi Mishra)
- Fix PL1 disable flow in xe_hwmon_power_max_write (Karthik)
- Fix refcount and speedup devcoredump (Matthew Brost)
- Add performance tuning changes to Xe2 (Akshata, Shekhar)
- Fix OA sysfs entry (Ashutosh)
- Add first GuC firmware support for BMG (Julia)
- Bump minimum GuC firmware for platforms under force_probe to match LNL
and BMG (Julia)
- Fix access check on user fence creation (Nirmoy)
- Add/document workarounds for Xe2 (Julia, Daniele, John, Tejas)
- Document workaround and use proper WA infra (Matt Roper)
- Fix VF configuration on media GT (Michal Wajdeczko)
- Fix VM dma-resv lock (Matthew Brost)
- Allow suspend/resume exec queue backend op to be called multiple times
(Matthew Brost)
- Add GT stats to debugfs (Nirmoy)
- Add hwconfig to debugfs (Matt Roper)
- Compile out all debugfs code with ONFIG_DEUBG_FS=n (Lucas)
- Remove dead kunit code (Jani Nikula)
- Refactor drvdata storing to help display (Jani Nikula)
- Cleanup unsused xe parameter in pte handling (Himal)
- Rename s/enable_display/probe_display/ for clarity (Lucas)
- Fix missing MCR annotation in couple of registers (Tejas)
- Fix DGFX display suspend/resume (Maarten)
- Prepare exec_queue_kill for PXP handling (Daniele)
- Fix devm/drmm issues (Daniele, Matthew Brost)
- Fix tile and ggtt fini sequences (Matthew Brost)
- Fix crashes when probing without firmware in place (Daniele, Matthew Brost)
- Use xe_managed for kernel BOs (Daniele, Matthew Brost)
- Future-proof dss_per_group calculation by using hwconfig (Matt Roper)
- Use reserved copy engine for user binds on faulting devices
(Matthew Brost)
- Allow mixing dma-fence jobs and long-running faulting jobs (Francois)
- Cleanup redundant arg when creating use BO (Nirmoy)
- Prevent UAF around preempt fence (Auld)
- Fix display suspend/resume (Maarten)
- Use vma_pages() helper (Thorsten)
- Calculate pagefault queue size (Stuart, Matthew Auld)
- Fix missing pagefault wq destroy (Stuart)
- Fix lifetime handling of HW fence ctx (Matthew Brost)
- Fix order destroy order for jobs (Matthew Brost)
- Fix TLB invalidation for media GT (Matthew Brost)
- Document GGTT (Rodrigo Vivi)
- Refactor GGTT layering and fix runtime outer protection (Rodrigo Vivi)
- Handle HPD polling on display pm runtime suspend/resume (Imre, Vinod)
- Drop unrequired NULL checks (Apoorva, Himal)
- Use separate rpm lockdep map for non-d3cold-capable devices (Thomas Hellström)
- Support "nomodeset" kernel command-line option (Thomas Zimmermann)
- Drop force_probe requirement for LNL and BMG (Lucas, Balasubramani)

----------------------------------------------------------------
Akshata Jahagirdar (1):
drm/xe/xe2: Introduce performance changes

Apoorva Singh (1):
drm/xe: Remove NULL check of lrc->bo in xe_lrc_snapshot_capture()

Ashutosh Dixit (1):
drm/xe/observation: Drop empty sysctl table entry

Balasubramani Vivekanandan (1):
drm/xe/bmg: Drop force_probe requirement

Daniele Ceraolo Spurio (5):
drm/xe: fix WA 14018094691
drm/xe: Make exec_queue_kill safe to call twice
drm/xe: use devm instead of drmm for managed bo
drm/xe/uc: Use managed bo for HuC and GSC objects
drm/xe/uc: Use devm to register cleanup that includes exec_queues

Dominik Grzegorzek (2):
drm/xe: Move and export xe_hw_engine lookup.
drm/xe: Export xe_hw_engine's mmio accessors

Francois Dugast (11):
drm/xe/hw_engine_group: Introduce xe_hw_engine_group
drm/xe/guc_submit: Make suspend_wait interruptible
'drm/xe/hw_engine_group: Register hw engine group's exec queues
drm/xe/hw_engine_group: Add helper to suspend faulting LR jobs
drm/xe/exec_queue: Remove duplicated code
drm/xe/exec_queue: Prepare last fence for hw engine group resume context
drm/xe/hw_engine_group: Add helper to wait for dma fence jobs
drm/xe/hw_engine_group: Ensure safe transition between execution modes
drm/xe/exec: Switch hw engine group execution mode upon job submission
drm/xe/vm: Remove restriction that all VMs must be faulting if one is
drm/xe/device: Remove unused xe_device::usm::num_vm_in_*

Himal Prasad Ghimiray (5):
drm/xe: Remove unused xe parameter
drm/xe: Remove extra dma_fence_put on xe_sync_entry_add_deps failure
drm/xe: Remove unrequired NULL checks in xe_sync_entry_cleanup
drm/xe: Remove unrequired NULL check in xe_sched_job_free_fences
drm/xe: Fix NPD in ggtt_node_remove()

Imre Deak (2):
drm/xe: Suspend/resume user access only during system s/r
drm/xe: Handle polling only for system s/r in xe_display_pm_suspend/resume()

Jani Nikula (3):
drm/xe/tests: remove unused leftover xe_call_for_each_device()
drm/xe: use pdev_to_xe_device() instead of pci_get_drvdata() directly
drm/xe: add kdev_to_xe_device() helper and use it

Julia Filipchuk (3):
drm/xe/guc: Bump minimum required GuC version to v70.29.2
drm/xe/guc: Define GuC version v70.29.2 for BMG
drm/xe/guc: Enable w/a 14022293748 and 22019794406

Karthik Poosa (1):
drm/xe/hwmon: Fix PL1 disable flow in xe_hwmon_power_max_write

Lucas De Marchi (4):
drm/xe: Allow to compile out debugfs
drm/xe: Rename enable_display module param
Merge drm/drm-next into drm-xe-next
drm/xe/lnl: Drop force_probe requirement

Maarten Lankhorst (2):
drm/xe/display: Match i915 driver suspend/resume sequences better
drm/xe/display: Make display suspend/resume work on discrete

Matt Roper (3):
drm/xe: Name and document Wa_14019789679
drm/xe: Add debugfs to dump GuC's hwconfig
drm/xe/mcr: Try to derive dss_per_grp from hwconfig attributes

Matthew Auld (3):
drm/xe: fix engine_class bounds check again
drm/xe: prevent UAF around preempt fence
drm/xe: fixup xe_alloc_pf_queue

Matthew Brost (24):
drm/xe: Use dma_fence_chain_free in chain fence unused as a sync
drm/xe: Take ref to VM in delayed snapshot
drm/printer: Allow NULL data in devcoredump printer
drm/xe: Faster devcoredump
drm/xe: Only check last fence on user binds
drm/xe: Move VM dma-resv lock from xe_exec_queue_create to __xe_exec_queue_init
drm/xe: Add xe_sched_msg_lock/unlock helper
drm/xe: Reinit msg link when processing a message
drm/xe: Add xe_sched_add_msg_locked helper
drm/xe: Only enable scheduling upon resume if needed
drm/xe: Allow suspend / resume to be safely called multiple times
drm/xe: Fix tile fini sequence
drm/xe: Use for_each_remote_tile rather than manual check
drm/xe: Use reserved copy engine for user binds on faulting devices
drm/xe: Drop HW fence pointer to HW fence ctx
drm/xe: Free job before xe_exec_queue_put
drm/xe: Invalidate media_gt TLBs
drm/xe: Invalidate media_gt TLBs in PT code
Revert "drm/xe: Invalidate media_gt TLBs in PT code"
drm/xe: Move ggtt_fini to devm managed
drm/xe: Set firmware state to loadable before registering guc_fini_hw
drm/xe: Drop warn on xe_guc_pc_gucrc_disable in guc pc fini
drm/xe: Move hw_engine_fini to devm managed
drm/xe: Update xe_sa to use xe_managed_bo_create_pin_map

Michal Wajdeczko (1):
drm/xe/pf: Fix VF config validation on multi-GT platforms

Mika Kuoppala (1):
drm/xe: Add kernel doc for xe_hw_engine_lookup

Nathan Chancellor (1):
drm/xe: Fix total initialization in xe_ggtt_print_holes()

Nirmoy Das (9):
drm/xe: Fix access_ok check in user_fence_create
drm/xe/gt: Add APIs for printing stats over debugfs
drm/xe: Add stats for tlb invalidation count
drm/xe/migrate: Parameterize ccs and bo data clear in xe_migrate_clear()
drm/xe: Remove redundant param from xe_bo_create_user
drm/ttm: Add a flag to allow drivers to skip clear-on-free
drm/xe/lnl: Offload system clear page activity to GPU
Revert "drm/xe/lnl: Offload system clear page activity to GPU"
Revert "drm/ttm: Add a flag to allow drivers to skip clear-on-free"

Pallavi Mishra (1):
drm/xe/xe2: Enable Priority Mem Read

Rodrigo Vivi (12):
drm/xe: Removed unused xe_ggtt_printk
drm/xe: Introduce GGTT documentation
drm/xe: Remove unnecessary drm_mm.h includes
drm/{i915, xe}: Avoid direct inspection of dpt_vma from outside dpt
drm/xe: Encapsulate drm_mm_node inside xe_ggtt_node
drm/xe: Rename xe_ggtt_node related functions
drm/xe: Limit drm_mm_node_allocated access to xe_ggtt_node
drm/xe: Introduce xe_ggtt_largest_hole
drm/xe: Introduce xe_ggtt_print_holes
drm/xe: Refactor xe_ggtt balloon functions to make the node clear
drm/xe: Make xe_ggtt_node struct independent
drm/xe: Fix missing runtime outer protection for ggtt_remove_node

Shekhar Chauhan (1):
drm/xe/xe2: Add performance turning changes

Stuart Summers (3):
drm/xe: Fix missing workqueue destroy in xe_gt_pagefault
drm/xe: Use topology to determine page fault queue size
drm/xe/guc: Bump the G2H queue size to account for page faults

Tejas Upadhyay (4):
drm/xe/xe2hpg: Add Wa_14021821874
drm/xe: Move enable host l2 VRAM post MCR init
drm/xe: Write all slices if its mcr register
drm/xe: Define STATELESS_COMPRESSION_CTRL as mcr register

Thomas Hellström (1):
drm/xe: Use separate rpm lockdep map for non-d3cold-capable devices

Thomas Zimmermann (1):
drm/xe: Support 'nomodeset' kernel command-line option

Thorsten Blum (1):
drm/xe/oa: Use vma_pages() helper function in xe_oa_mmap()

Vinod Govindapillai (1):
drm/xe/display: handle HPD polling in display runtime suspend/resume

Documentation/gpu/xe/xe_mm.rst | 15 +
drivers/gpu/drm/drm_print.c | 13 +-
drivers/gpu/drm/i915/display/intel_dpt.c | 4 +
drivers/gpu/drm/i915/display/intel_dpt.h | 3 +
drivers/gpu/drm/i915/display/skl_universal_plane.c | 3 +-
drivers/gpu/drm/xe/Makefile | 18 +-
drivers/gpu/drm/xe/abi/guc_klvs_abi.h | 1 +
drivers/gpu/drm/xe/compat-i915-headers/i915_vma.h | 7 +-
drivers/gpu/drm/xe/display/xe_display.c | 115 +++--
drivers/gpu/drm/xe/display/xe_display.h | 4 +
drivers/gpu/drm/xe/display/xe_fb_pin.c | 50 ++-
drivers/gpu/drm/xe/regs/xe_engine_regs.h | 1 +
drivers/gpu/drm/xe/regs/xe_gt_regs.h | 10 +-
drivers/gpu/drm/xe/tests/xe_bo.c | 8 +-
drivers/gpu/drm/xe/tests/xe_dma_buf.c | 2 +-
drivers/gpu/drm/xe/tests/xe_migrate.c | 24 +-
drivers/gpu/drm/xe/tests/xe_pci.c | 52 ---
drivers/gpu/drm/xe/tests/xe_pci_test.h | 1 -
drivers/gpu/drm/xe/xe_bo.c | 26 +-
drivers/gpu/drm/xe/xe_bo.h | 10 +-
drivers/gpu/drm/xe/xe_bo_types.h | 5 +-
drivers/gpu/drm/xe/xe_debugfs.h | 4 +
drivers/gpu/drm/xe/xe_devcoredump.c | 111 +++--
drivers/gpu/drm/xe/xe_devcoredump_types.h | 8 +
drivers/gpu/drm/xe/xe_device.c | 5 +-
drivers/gpu/drm/xe/xe_device.h | 15 +-
drivers/gpu/drm/xe/xe_device_types.h | 17 +-
drivers/gpu/drm/xe/xe_exec.c | 20 +-
drivers/gpu/drm/xe/xe_exec_queue.c | 237 +++++-----
drivers/gpu/drm/xe/xe_exec_queue.h | 8 +-
drivers/gpu/drm/xe/xe_exec_queue_types.h | 4 +-
drivers/gpu/drm/xe/xe_ggtt.c | 487 ++++++++++++++++-----
drivers/gpu/drm/xe/xe_ggtt.h | 28 +-
drivers/gpu/drm/xe/xe_ggtt_types.h | 54 ++-
drivers/gpu/drm/xe/xe_gpu_scheduler.c | 23 +-
drivers/gpu/drm/xe/xe_gpu_scheduler.h | 12 +
drivers/gpu/drm/xe/xe_gsc.c | 20 +-
drivers/gpu/drm/xe/xe_gsc_proxy.c | 45 +-
drivers/gpu/drm/xe/xe_gt.c | 10 +-
drivers/gpu/drm/xe/xe_gt_debugfs.c | 13 +
drivers/gpu/drm/xe/xe_gt_mcr.c | 40 +-
drivers/gpu/drm/xe/xe_gt_pagefault.c | 75 +++-
drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 119 ++---
drivers/gpu/drm/xe/xe_gt_sriov_pf_config_types.h | 5 +-
drivers/gpu/drm/xe/xe_gt_sriov_vf.c | 44 +-
drivers/gpu/drm/xe/xe_gt_stats.c | 49 +++
drivers/gpu/drm/xe/xe_gt_stats.h | 29 ++
drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c | 2 +
drivers/gpu/drm/xe/xe_gt_types.h | 24 +-
drivers/gpu/drm/xe/xe_guc.c | 4 +-
drivers/gpu/drm/xe/xe_guc.h | 10 +
drivers/gpu/drm/xe/xe_guc_ads.c | 6 +
drivers/gpu/drm/xe/xe_guc_ct.c | 12 +-
drivers/gpu/drm/xe/xe_guc_hwconfig.c | 97 ++++
drivers/gpu/drm/xe/xe_guc_hwconfig.h | 3 +
drivers/gpu/drm/xe/xe_guc_pc.c | 2 +-
drivers/gpu/drm/xe/xe_guc_submit.c | 62 ++-
drivers/gpu/drm/xe/xe_huc.c | 19 +-
drivers/gpu/drm/xe/xe_hw_engine.c | 149 +++++--
drivers/gpu/drm/xe/xe_hw_engine.h | 10 +
drivers/gpu/drm/xe/xe_hw_engine_group.c | 372 ++++++++++++++++
drivers/gpu/drm/xe/xe_hw_engine_group.h | 29 ++
drivers/gpu/drm/xe/xe_hw_engine_group_types.h | 51 +++
drivers/gpu/drm/xe/xe_hw_engine_types.h | 2 +
drivers/gpu/drm/xe/xe_hw_fence.c | 9 +-
drivers/gpu/drm/xe/xe_hw_fence_types.h | 7 +-
drivers/gpu/drm/xe/xe_hwmon.c | 3 +-
drivers/gpu/drm/xe/xe_lrc.c | 50 ++-
drivers/gpu/drm/xe/xe_migrate.c | 29 +-
drivers/gpu/drm/xe/xe_migrate.h | 9 +-
drivers/gpu/drm/xe/xe_mmio.c | 4 +-
drivers/gpu/drm/xe/xe_module.c | 54 ++-
drivers/gpu/drm/xe/xe_module.h | 2 +-
drivers/gpu/drm/xe/xe_oa.c | 3 +-
drivers/gpu/drm/xe/xe_observation.c | 1 -
drivers/gpu/drm/xe/xe_pci.c | 12 +-
drivers/gpu/drm/xe/xe_pm.c | 99 ++++-
drivers/gpu/drm/xe/xe_pm.h | 1 +
drivers/gpu/drm/xe/xe_preempt_fence.c | 3 +-
drivers/gpu/drm/xe/xe_preempt_fence_types.h | 2 +
drivers/gpu/drm/xe/xe_pt.c | 10 +-
drivers/gpu/drm/xe/xe_res_cursor.h | 1 -
drivers/gpu/drm/xe/xe_sa.c | 13 +-
drivers/gpu/drm/xe/xe_sa_types.h | 1 +
drivers/gpu/drm/xe/xe_sched_job.c | 6 +-
drivers/gpu/drm/xe/xe_sync.c | 21 +-
drivers/gpu/drm/xe/xe_trace.h | 2 +-
drivers/gpu/drm/xe/xe_ttm_stolen_mgr.c | 1 -
drivers/gpu/drm/xe/xe_tuning.c | 13 +-
drivers/gpu/drm/xe/xe_uc_fw.c | 28 +-
drivers/gpu/drm/xe/xe_vm.c | 90 ++--
drivers/gpu/drm/xe/xe_wa.c | 4 +
drivers/gpu/drm/xe/xe_wa_oob.rules | 6 +
include/drm/drm_print.h | 54 ++-
94 files changed, 2381 insertions(+), 865 deletions(-)
create mode 100644 drivers/gpu/drm/xe/xe_gt_stats.c
create mode 100644 drivers/gpu/drm/xe/xe_gt_stats.h
create mode 100644 drivers/gpu/drm/xe/xe_hw_engine_group.c
create mode 100644 drivers/gpu/drm/xe/xe_hw_engine_group.h
create mode 100644 drivers/gpu/drm/xe/xe_hw_engine_group_types.h