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