Hi Dave and Sima, Second drm-xe-next pull request for the 6.12 cycle. Several fixes here that are also going through drm-xe-fixes. Most of the other changes are the missing bits for Xe2 (LNL and BMG) and general refactors. The only UAPI change is actually a fix for building with gcc 5. I left some commits out since they were too fresh and I didn't have core CI results for them. Plan is to send the final pull request for 6.12 next week with those commits. thanks Lucas De Marchi drm-xe-next-2024-08-22: UAPI Changes: - Fix OA format masks which were breaking build with gcc-5 Cross-subsystem Changes: - drm/ttm: Add a flag to allow drivers to skip clear-on-free 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) - Offload system clear page to GPU (Nirmoy) - 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 fini sequence (Brost) - Fix crashes when probing without firmware in place (Daniele) - 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) 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-22 for you to fetch changes up to 23683061805be368c8d1c7e7ff52abc470cac275: drm/xe/lnl: Offload system clear page activity to GPU (2024-08-19 17:49:00 +0200) ---------------------------------------------------------------- UAPI Changes: - Fix OA format masks which were breaking build with gcc-5 Cross-subsystem Changes: - drm/ttm: Add a flag to allow drivers to skip clear-on-free 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) - Offload system clear page to GPU (Nirmoy) - 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 fini sequence (Brost) - Fix crashes when probing without firmware in place (Daniele) - 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) ---------------------------------------------------------------- Akshata Jahagirdar (1): drm/xe/xe2: Introduce performance changes Ashutosh Dixit (1): drm/xe/observation: Drop empty sysctl table entry 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 (1): drm/xe: Remove unused xe parameter 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 (3): drm/xe: Allow to compile out debugfs drm/xe: Rename enable_display module param Merge drm/drm-next into drm-xe-next 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 (2): drm/xe: fix engine_class bounds check again drm/xe: prevent UAF around preempt fence Matthew Brost (14): 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 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 Nirmoy Das (7): 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 Pallavi Mishra (1): drm/xe/xe2: Enable Priority Mem Read Shekhar Chauhan (1): drm/xe/xe2: Add performance turning changes 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 Thorsten Blum (1): drm/xe/oa: Use vma_pages() helper function in xe_oa_mmap() drivers/gpu/drm/drm_print.c | 13 +- drivers/gpu/drm/ttm/ttm_pool.c | 18 +- drivers/gpu/drm/xe/Makefile | 18 +- drivers/gpu/drm/xe/abi/guc_klvs_abi.h | 1 + drivers/gpu/drm/xe/display/xe_display.c | 88 ++++-- 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 | 48 +++- drivers/gpu/drm/xe/xe_bo.h | 1 - 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_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_sriov_pf_config.c | 11 +- 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 | 15 ++ drivers/gpu/drm/xe/xe_guc.h | 10 + drivers/gpu/drm/xe/xe_guc_ads.c | 6 + drivers/gpu/drm/xe/xe_guc_hwconfig.c | 97 +++++++ drivers/gpu/drm/xe/xe_guc_hwconfig.h | 3 + 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 | 145 +++++++--- 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_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 | 7 +- drivers/gpu/drm/xe/xe_mmio.c | 4 +- drivers/gpu/drm/xe/xe_module.c | 6 +- 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 | 10 +- drivers/gpu/drm/xe/xe_pm.c | 11 +- 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_sync.c | 4 +- drivers/gpu/drm/xe/xe_ttm_sys_mgr.c | 12 + drivers/gpu/drm/xe/xe_tuning.c | 13 +- drivers/gpu/drm/xe/xe_uc_fw.c | 28 +- drivers/gpu/drm/xe/xe_vm.c | 53 +--- drivers/gpu/drm/xe/xe_wa.c | 4 + drivers/gpu/drm/xe/xe_wa_oob.rules | 6 + include/drm/drm_print.h | 54 +++- include/drm/ttm/ttm_tt.h | 6 +- 71 files changed, 1585 insertions(+), 525 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