Hi Dave and Sima, Here goes our first Xe pull request targeting 6.11. A very active round, with highlight to many changes targeting SR-IOV support and many different clean-ups. Thanks, Rodrigo. drm-xe-next-2024-06-06: UAPI Changes: - Expose the L3 bank mask (Francois) Cross-subsystem Changes: - Update Xe driver maintainers (Oded) Display (i915): - Add missing include to intel_vga.c (Michal Wajdeczko) Driver Changes: - Fix Display (xe-only) detection for ADL-N (Lucas) - Runtime PM fixes that enabled PC-10 and D3Cold (Francois, Rodrigo) - Fix unexpected silent drm backmerge issues (Thomas) - More (a lot more) preparation for SR-IOV support (Michal Wajdeczko) - Devcoredump fixes and improvements (Jose, Tejas, Matt Brost) - Introduce device 'wedged' state (Rodrigo) - Improve debug and info messages (Michal Wajdeczko, Rodrigo, Nirmoy) - Adding or fixing workarounds (Tejas, Shekhar, Lucas, Bommu) - Check result of drmm_mutex_init (Michal Wajdeczko) - Enlarge the critical dma fence area for preempt fences (Matt Auld) - Prevent UAF in VM's rebind work (Matt Auld) - GuC submit related clean-ups and fixes (Matt Brost, Himal, Jonathan, Niranjana) - Prefer local helpers to perform dma reservation locking (Himal) - Spelling and typo fixes (Colin, Francois) - Prep patches for 1 job per VM bind IOCTL (no uapi change yet) (Matt Brost) - Remove uninitialized end var from xe_gt_tlb_invalidation_range (Nirmoy) - GSC related changes targeting LNL support (Daniele) - Fix assert in L3 bank mask generation (Francois) - Perform dma_map when moving system buffer objects to TT (Thomas) - Add helpers for manipulating macro arguments (Michal Wajdeczko) - Refactor default device atomic settings (Nirmoy) - Add debugfs node to dump mocs (Janga) - Use ordered WQ for G2H handler (Matt Brost) - Clean up and fixes in header includes (Michal Wajdeczko) - Prefer flexible-array over deprecated zero-lenght ones (Lucas) - Add Indirect Ring State support (Niranjana) - Fix UBSAN shift-out-of-bounds failure (Shuicheng) - HWMon fixes and additions (Karthik) - Clean-up refactor around probe init functions (Lucas, Michal Wajdeczko) - Fix PCODE init function (Himal) - Only use reserved BCS instances for usm migrate exec queue (Matt Brost) - Only zap PTEs as needed (Matt Brost) - Per client usage info (Lucas) - Core hotunplug improvements converting stuff towards devm (Matt Auld) - Don't emit false error if running in execlist mode (Michal Wajdeczko) - Remove unused struct (Dr. David) - Support/debug for slow GuC loads (John Harrison) - Decouple job seqno and lrc seqno (Matt Brost) - Allow migrate vm gpu submissions from reclaim context (Thomas) - Rename drm-client running time to run_ticks and fix a UAF (Umesh) - Check empty pinned BO list with lock held (Nirmoy) - Drop undesired prefix from the platform name (Michal Wajdeczko) - Remove unwanted mutex locking on xe file close (Niranjana) - Replace format-less snprintf() with strscpy() (Arnd) - Other general clean-ups on registers definitions and function names (Michal Wajdeczko) - Add kernel-doc to some xe_lrc interfaces (Niranajana) - Use missing lock in relay_needs_worker (Nirmoy) - Drop redundant W=1 warnings from Makefile (Jani) - Simplify if condition in preempt fences code (Thorsten) - Flush engine buffers before signalling user fence on all engines (Andrzej) - Don't overmap identity VRAM mapping (Matt Brost) - Do not dereference NULL job->fence in trace points (Matt Brost) - Add synchronous gt reset debugfs (Jonathan) - Xe gt_idle fixes (Riana) The following changes since commit 4a56c0ed5aa0bcbe1f5f7d755fb1fe1ebf48ae9c: Merge tag 'amd-drm-next-6.10-2024-04-26' of https://gitlab.freedesktop.org/agd5f/linux into drm-next (2024-04-30 14:43:00 +1000) are available in the Git repository at: https://gitlab.freedesktop.org/drm/xe/kernel.git tags/drm-xe-next-2024-06-06 for you to fetch changes up to 6800e63cf97bae62bca56d8e691544540d945f53: drm/xe: move disable_c6 call (2024-06-06 15:07:19 -0400) ---------------------------------------------------------------- UAPI Changes: - Expose the L3 bank mask (Francois) Cross-subsystem Changes: - Update Xe driver maintainers (Oded) Display (i915): - Add missing include to intel_vga.c (Michal Wajdeczko) Driver Changes: - Fix Display (xe-only) detection for ADL-N (Lucas) - Runtime PM fixes that enabled PC-10 and D3Cold (Francois, Rodrigo) - Fix unexpected silent drm backmerge issues (Thomas) - More (a lot more) preparation for SR-IOV support (Michal Wajdeczko) - Devcoredump fixes and improvements (Jose, Tejas, Matt Brost) - Introduce device 'wedged' state (Rodrigo) - Improve debug and info messages (Michal Wajdeczko, Rodrigo, Nirmoy) - Adding or fixing workarounds (Tejas, Shekhar, Lucas, Bommu) - Check result of drmm_mutex_init (Michal Wajdeczko) - Enlarge the critical dma fence area for preempt fences (Matt Auld) - Prevent UAF in VM's rebind work (Matt Auld) - GuC submit related clean-ups and fixes (Matt Brost, Himal, Jonathan, Niranjana) - Prefer local helpers to perform dma reservation locking (Himal) - Spelling and typo fixes (Colin, Francois) - Prep patches for 1 job per VM bind IOCTL (no uapi change yet) (Matt Brost) - Remove uninitialized end var from xe_gt_tlb_invalidation_range (Nirmoy) - GSC related changes targeting LNL support (Daniele) - Fix assert in L3 bank mask generation (Francois) - Perform dma_map when moving system buffer objects to TT (Thomas) - Add helpers for manipulating macro arguments (Michal Wajdeczko) - Refactor default device atomic settings (Nirmoy) - Add debugfs node to dump mocs (Janga) - Use ordered WQ for G2H handler (Matt Brost) - Clean up and fixes in header includes (Michal Wajdeczko) - Prefer flexible-array over deprecated zero-lenght ones (Lucas) - Add Indirect Ring State support (Niranjana) - Fix UBSAN shift-out-of-bounds failure (Shuicheng) - HWMon fixes and additions (Karthik) - Clean-up refactor around probe init functions (Lucas, Michal Wajdeczko) - Fix PCODE init function (Himal) - Only use reserved BCS instances for usm migrate exec queue (Matt Brost) - Only zap PTEs as needed (Matt Brost) - Per client usage info (Lucas) - Core hotunplug improvements converting stuff towards devm (Matt Auld) - Don't emit false error if running in execlist mode (Michal Wajdeczko) - Remove unused struct (Dr. David) - Support/debug for slow GuC loads (John Harrison) - Decouple job seqno and lrc seqno (Matt Brost) - Allow migrate vm gpu submissions from reclaim context (Thomas) - Rename drm-client running time to run_ticks and fix a UAF (Umesh) - Check empty pinned BO list with lock held (Nirmoy) - Drop undesired prefix from the platform name (Michal Wajdeczko) - Remove unwanted mutex locking on xe file close (Niranjana) - Replace format-less snprintf() with strscpy() (Arnd) - Other general clean-ups on registers definitions and function names (Michal Wajdeczko) - Add kernel-doc to some xe_lrc interfaces (Niranajana) - Use missing lock in relay_needs_worker (Nirmoy) - Drop redundant W=1 warnings from Makefile (Jani) - Simplify if condition in preempt fences code (Thorsten) - Flush engine buffers before signalling user fence on all engines (Andrzej) - Don't overmap identity VRAM mapping (Matt Brost) - Do not dereference NULL job->fence in trace points (Matt Brost) - Add synchronous gt reset debugfs (Jonathan) - Xe gt_idle fixes (Riana) ---------------------------------------------------------------- Andrzej Hajda (4): drm/xe: flush gtt before signalling user fence on all engines drm/xe: allow unaligned start and size xe_res_cursor parameters Revert "drm/xe: flush gtt before signalling user fence on all engines" drm/xe: flush engine buffers before signalling user fence on all engines Arnd Bergmann (1): drm/xe: replace format-less snprintf() with strscpy() Bommu Krishnaiah (1): drm/xe/xe2: Add workaround 14021402888 Colin Ian King (1): drm/xe: Fix spelling mistake "forcebly" -> "forcibly" Daniele Ceraolo Spurio (3): drm/xe/gsc: Turn off GSCCS interrupts when disabling the engine drm/xe/gsc: define GSCCS for LNL Revert "drm/xe: make gt_remove use devm" Dr. David Alan Gilbert (1): drm/xe: remove unused struct 'xe_gt_desc' Francois Dugast (4): drm/xe/gt: Fix assert in L3 bank mask generation drm/xe/debugfs: Get a runtime_pm reference when setting wedged mode drm/xe/vm_doc: Fix some typos drm/xe/uapi: Expose the L3 bank mask Himal Prasad Ghimiray (5): drm/xe/vm: Use xe_vm_lock()/xe_vm_unlock() helpers drm/xe: Use xe_bo_lock()/xe_bo_unlock() helpers drm/xe: Change xe_guc_submit_stop return to void drm/xe: Change pcode timeout to 50msec while polling again drm/xe: Fix the warning conditions Janga Rahul Kumar (2): drm/xe: Relocate regs_are_mcr function drm/xe/mocs: Add debugfs node to dump mocs Jani Nikula (1): drm/xe: drop redundant W=1 warnings from Makefile John Harrison (3): drm/xe: Make read_perf_limit_reasons globally accessible drm/xe/guc: Port over the slow GuC loading support from i915 drm/xe/guc: Fix uninitialised count in GuC load debug prints Jonathan Cavitt (4): drm/xe/xe_guc_submit: Fix exec queue stop race condition drm/xe/xe_guc_submit: Allow lr exec queues to be banned drm/xe/xe_guc_submit: Declare reset if banned or killed or wedged drm/xe/xe_gt_debugfs: Add synchronous gt reset debugfs José Roberto de Souza (6): drm/xe: Store xe_hw_engine in xe_hw_engine_snapshot drm/xe: Add helpers to loop over geometry and compute DSS drm/xe: Add INSTDONE registers to devcoredump drm/xe: Replace RING_START_UDW by u64 RING_START drm/xe: Add process name to devcoredump drm/xe: Nuke simple error capture Karthik Poosa (3): drm/xe/hwmon: Remove unwanted write permission for currN_label drm/xe/hwmon: Add HWMON support for BMG drm/xe/hwmon: Expose card power and energy attributes of BMG Lucas De Marchi (14): drm/xe/display: Fix ADL-N detection drm/xe: Merge 16021540221 and 18034896535 WAs drm/xe/ads: Use flexible-array drm/xe: Drop __engine_mask drm/xe: Drop useless forcewake get/put drm/xe: Move xe_gt_init_early() where it belongs drm/xe: Move xe_force_wake_init_gt() inside gt initialization drm/xe: Move sw-only pcode initialization drm/xe: Promote xe_hw_engine_class_to_str() drm/xe: Add XE_ENGINE_CLASS_OTHER to str conversion drm/xe: Add helper to capture engine timestamp drm/xe: Cache data about user-visible engines drm/xe: Add helper to return any available hw engine drm/xe/client: Print runtime to fdinfo Matt Roper (1): drm/xe: Don't refer to general LRC initialization as a "wa" Matthew Auld (21): drm/xe/preempt_fence: enlarge the fence critical section Revert "drm/xe/vm: drop vm->destroy_work" drm/xe/vm: prevent UAF in rebind_work_func() drm/xe/pci: remove broken driver_release drm/xe: covert sysfs over to devm drm/xe/ggtt: use drm_dev_enter to mark device section drm/xe/guc: move guc_fini over to devm drm/xe/guc: s/guc_fini/guc_fini_hw/ drm/xe/guc_pc: move pc_fini to devm drm/xe/guc_pc: s/pc_fini/pc_fini_hw/ drm/xe/irq: move irq_uninstall over to devm drm/xe/device: move flr to devm drm/xe/device: move xe_device_sanitize over to devm drm/xe/coredump: move over to devm drm/xe/gt: break out gt_fini into sw vs hw state drm/xe: make gt_remove use devm drm/xe/mmio: move mmio_fini over to devm drm/xe: reset mmio mappings with devm drm/xe/display: move display fini stuff to devm drm/xe/display: stop calling domains_driver_remove twice drm/xe/display: move device_remove over to drmm Matthew Brost (26): drm/xe: Delete unused GuC submission_state.suspend drm/xe: s/ENGINE_STATE_ENABLED/EXEC_QUEUE_STATE_ENABLED drm/xe: s/ENGINE_STATE_SUSPENDED/EXEC_QUEUE_STATE_SUSPENDED drm/xe: s/ENGINE_STATE_KILLED/EXEC_QUEUE_STATE_KILLED drm/xe: Fix alignment in GuC exec queue state defines drm/xe: Replace engine references with exec queue in xe_guc_submit.c drm/xe: Lock all gpuva ops during VM bind IOCTL drm/xe: Add ops_execute function which returns a fence drm/xe: Move migrate to prefetch to op_lock_and_prep function drm/xe: Add struct xe_vma_ops abstraction drm/xe: Use xe_vma_ops to implement xe_vm_rebind drm/xe: Simplify VM bind IOCTL error handling and cleanup drm/xe: Use xe_vma_ops to implement page fault rebinds drm/xe: Add some members to xe_vma_ops drm/xe: Add vm_bind_ioctl_ops_fini helper drm/xe: Move ufence check to op_lock_and_prep drm/xe: Move ufence add to vm_bind_ioctl_ops_fini drm/xe: Add xe_gt_tlb_invalidation_range and convert PT layer to use this drm/xe: Delete PT update selftest drm/xe: Use ordered WQ for G2H handler drm/xe: Only use reserved BCS instances for usm migrate exec queue drm/xe: Only zap PTEs as needed drm/xe: Decouple job seqno and lrc seqno drm/xe: Fix NULL ptr dereference in devcoredump drm/xe: Don't overmap identity VRAM mapping drm/xe: Do not dereference NULL job->fence in trace points Michal Wajdeczko (79): drm/xe/guc: Add GuC Relay ABI version 1.0 definitions drm/xe: Add helper to calculate adjusted register offset drm/xe: Add few more GT register definitions drm/xe/pf: Add SR-IOV GuC Relay PF services drm/xe/kunit: Add PF service tests drm/xe/pf: Expose SR-IOV VFs configuration over debugfs drm/xe/pf: Expose SR-IOV VF control commands over debugfs drm/xe/pf: Expose SR-IOV policy settings over debugfs drm/xe/guc: Update VF configuration KLVs definitions drm/xe/pf: Clamp maximum execution quantum to 100s drm/xe/guc: Improve GuC doorbell/context ID manager intro message drm/xe: Check result of drmm_mutex_init() drm/xe/pf: Expose PF service details via debugfs drm/xe/guc: Fix typos in VF CFG KLVs descriptions drm/xe/pf: Re-initialize SR-IOV specific HW settings drm/xe/pf: Initialize and update PF services on driver init drm/xe: Add helpers for manipulating macro arguments drm/xe/kunit: Add simple tests for new xe_args macros drm/xe/rtp: Prefer helper macros from xe_args.h drm/xe: Fix xe_mocs.h drm/xe: Don't rely on xe_assert.h to be included elsewhere drm/xe: Don't rely on xe_force_wake.h to be included elsewhere drm/xe: Fix xe_device.h drm/xe: Move xe_gpu_commands.h file to instructions/ drm/xe: Rename few xe_args.h macros drm/xe: Fix xe_gt_throttle_sysfs.h drm/xe: Fix xe_guc_ads.h drm/xe: Fix xe_lrc.h drm/xe: Fix xe_reg_sr.h drm/xe/uc: Reorder post hwconfig uC initialization step drm/xe/uc: Move GuC submission init to post hwconfig step drm/xe/pf: Don't advertise support to enable VFs if not ready drm/xe/pf: Implement pci_driver.sriov_configure callback drm/xe/guc: Add more KLV helper macros drm/xe/guc: Introduce GuC KLV thresholds set drm/xe/guc: Add support for threshold KLVs in to_string() helper drm/xe/pf: Introduce functions to configure VF thresholds drm/xe/pf: Allow configuration of VF thresholds over debugfs drm/xe/guc: Add GUC2PF_ADVERSE_EVENT to ABI drm/xe/pf: Track adverse events notifications from GuC drm/xe/pf: Expose PF monitor details via debugfs drm/xe/guc: Add VF2GUC_MATCH_VERSION to ABI drm/xe/guc: Add VF2GUC_VF_RESET to ABI drm/xe/guc: Add VF2GUC_QUERY_SINGLE_KLV to ABI drm/xe/vf: Add support for VF to query its configuration drm/xe/vf: Custom hardware config load step if VF drm/xe/vf: Expose SR-IOV VF attributes to GT debugfs drm/xe: Fix xe_uc.h drm/xe: Fix xe_gsc.h drm/xe: Fix xe_huc.h drm/xe: Fix xe_guc_pc.h drm/i915/display: Add missing include to intel_vga.c drm/xe: Don't rely on indirect includes from xe_mmio.h drm/xe: Cleanup xe_mmio.h drm/xe/guc: Allow to initialize submission with limited set of IDs drm/xe/vf: Custom GuC initialization if VF drm/xe/uc: Don't emit false error if running in execlist mode drm/xe/vf: Use register values obtained from the PF drm/xe/guc: Add GLOBAL_CFG_GMD_ID KLV definition drm/xe/vf: Obtain value of GMDID register from GuC drm/xe/vf: Provide early access to GMDID register drm/xe/vf: Cache value of the GMDID register drm/xe/vf: Treat GMDID as another runtime register drm/xe/vf: Read VF configuration prior to GGTT initialization drm/xe/vf: Use only assigned GGTT region drm/xe: Store platform name in xe_device.info drm/xe: Use platform name in xe_assert() drm/xe: Drop undesired prefix from the platform name drm/xe: Move XEHP_MTCFG_ADDR register definition to xe_regs.h drm/xe: Move BAR definitions to dedicated file drm/xe: Drop xe_ prefix from static functions in xe_mmio.c drm/xe: Promote VRAM initialization function to own file drm/xe/vf: Setup VRAM based on received config data drm/xe: Split MCR initialization drm/xe/pf: Update the LMTT when freeing VF GT config drm/xe/vf: Support only GuC/HuC firmwares drm/xe/vf: Custom uC initialization drm/xe/vf: Custom GuC reset drm/xe/vf: Custom GT restart Niranjana Vishwanathapura (8): drm/xe: Minor cleanup in LRC handling drm/xe: Add Indirect Ring State support drm/xe: Dump Indirect Ring State registers drm/xe/xe2: Enable Indirect Ring State support for Xe2 drm/xe: Properly handle alloc_guc_id() failure drm/xe: Remove unwanted mutex locking drm/xe: Decouple xe_exec_queue and xe_lrc drm/xe: Add kernel-doc to some xe_lrc interfaces Nirmoy Das (11): drm/xe: Remove uninitialized end var from xe_gt_tlb_invalidation_range() drm/xe: Introduce has_atomic_enable_pte_bit device info drm/xe: Move vm bind bo validation to a helper function drm/xe: Introduce has_device_atomics_on_smem device info drm/xe: Add function to check if BO has single placement drm/xe: Refactor default device atomic settings drm/xe: Add warn when level can not be zero. drm/xe/tests: Use uninterruptible VM lock drm/xe: Check empty pinned BO list with lock held. drm/xe: Add engine name to the engine reset and cat-err log drm/xe: Use missing lock in relay_needs_worker Oded Gabbay (1): MAINTAINERS: update Xe driver maintainers Riana Tauro (4): drm/xe: Standardize power gate registers drm/xe: Enable Coarse Power Gating drm/xe/xe_gt_idle: use GT forcewake domain assertion drm/xe: move disable_c6 call Rodrigo Vivi (13): drm/xe: make xe_pm_runtime_lockdep_map a static struct drm/xe: Introduce a simple wedged state drm/xe: declare wedged upon GuC load failure drm/xe: Force wedged state and block GT reset upon any GPU hang drm/xe: Introduce the wedged_mode debugfs drm/xe: Demote CCS_MODE info to debug only drm/xe: Fix xe_pm_runtime_get_if_active return drm/xe: Fix xe_pm_runtime_get_if_in_use documentation drm/xe: Relax runtime pm protection during execution drm/xe: Relax runtime pm protection around VM drm/xe: Prepare display for D3Cold drm/xe: Stop checking for power_lost on D3Cold drm/xe: Enable D3Cold on 'low' VRAM utilization Shekhar Chauhan (1): drm/xe/xe2hpg: Add Wa_14021490052 Shuicheng Lin (1): drm/xe: Fix UBSAN shift-out-of-bounds failure Tejas Upadhyay (4): drm/xe/xe2: Add workaround 14021567978 drm/xe: skip error capture when exec queue is killed drm/xe/xe2lpm: Add permanent Wa_14020756599 drm/xe/xe2lpg: Add permanent wa_14020756599 Thomas Hellström (7): drm/xe: Fix unexpected backmerge results Merge drm/drm-next into drm-xe-next drm/xe: Perform dma_map when moving system buffer objects to TT drm/xe: Split lrc seqno fence creation up drm/xe: Don't initialize fences at xe_sched_job_create() drm/xe: Remove xe_lrc_create_seqno_fence() drm/xe: Move job creation out of the struct xe_migrate::job_mutex Thorsten Blum (1): drm/xe/vm: Simplify if condition Umesh Nerlige Ramappa (4): drm/xe/lrc: Add helper to capture context timestamp drm/xe: Add helper to accumulate exec queue runtime drm/xe: Use run_ticks instead of runtime for client stats drm/xe: Do not access xe file when updating exec queue run_ticks Documentation/gpu/drm-usage-stats.rst | 21 +- Documentation/gpu/xe/index.rst | 1 + Documentation/gpu/xe/xe-drm-usage-stats.rst | 10 + MAINTAINERS | 1 - drivers/gpu/drm/i915/display/intel_vga.c | 1 + drivers/gpu/drm/xe/Kconfig.debug | 10 - drivers/gpu/drm/xe/Makefile | 34 +- drivers/gpu/drm/xe/abi/guc_actions_sriov_abi.h | 190 ++++ drivers/gpu/drm/xe/abi/guc_errors_abi.h | 26 +- drivers/gpu/drm/xe/abi/guc_klvs_abi.h | 40 +- drivers/gpu/drm/xe/abi/guc_relay_actions_abi.h | 170 +++- drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h | 3 +- drivers/gpu/drm/xe/display/xe_display.c | 43 +- drivers/gpu/drm/xe/display/xe_display.h | 12 +- drivers/gpu/drm/xe/display/xe_hdcp_gsc.c | 1 + .../xe/{regs => instructions}/xe_gpu_commands.h | 0 drivers/gpu/drm/xe/regs/xe_bars.h | 11 + drivers/gpu/drm/xe/regs/xe_engine_regs.h | 10 +- drivers/gpu/drm/xe/regs/xe_gt_regs.h | 67 +- drivers/gpu/drm/xe/regs/xe_guc_regs.h | 2 + drivers/gpu/drm/xe/regs/xe_lrc_layout.h | 8 + drivers/gpu/drm/xe/regs/xe_pcode_regs.h | 7 + drivers/gpu/drm/xe/regs/xe_regs.h | 3 + drivers/gpu/drm/xe/regs/xe_sriov_regs.h | 3 + drivers/gpu/drm/xe/tests/Makefile | 1 + drivers/gpu/drm/xe/tests/xe_args_test.c | 221 +++++ .../gpu/drm/xe/tests/xe_gt_sriov_pf_service_test.c | 232 +++++ drivers/gpu/drm/xe/tests/xe_migrate.c | 88 +- drivers/gpu/drm/xe/xe_args.h | 143 +++ drivers/gpu/drm/xe/xe_assert.h | 4 +- drivers/gpu/drm/xe/xe_bb.c | 2 +- drivers/gpu/drm/xe/xe_bo.c | 71 +- drivers/gpu/drm/xe/xe_bo.h | 1 + drivers/gpu/drm/xe/xe_debugfs.c | 58 ++ drivers/gpu/drm/xe/xe_devcoredump.c | 19 +- drivers/gpu/drm/xe/xe_devcoredump_types.h | 2 + drivers/gpu/drm/xe/xe_device.c | 107 ++- drivers/gpu/drm/xe/xe_device.h | 13 +- drivers/gpu/drm/xe/xe_device_sysfs.c | 4 +- drivers/gpu/drm/xe/xe_device_types.h | 23 +- drivers/gpu/drm/xe/xe_drm_client.c | 124 ++- drivers/gpu/drm/xe/xe_exec_queue.c | 77 +- drivers/gpu/drm/xe/xe_exec_queue.h | 10 + drivers/gpu/drm/xe/xe_exec_queue_types.h | 16 +- drivers/gpu/drm/xe/xe_execlist.c | 12 +- drivers/gpu/drm/xe/xe_ggtt.c | 32 +- drivers/gpu/drm/xe/xe_gsc.c | 3 + drivers/gpu/drm/xe/xe_gsc.h | 3 +- drivers/gpu/drm/xe/xe_gsc_proxy.c | 1 + drivers/gpu/drm/xe/xe_gsc_submit.c | 1 + drivers/gpu/drm/xe/xe_gt.c | 142 ++- drivers/gpu/drm/xe/xe_gt.h | 27 + drivers/gpu/drm/xe/xe_gt_ccs_mode.c | 10 +- drivers/gpu/drm/xe/xe_gt_clock.c | 1 + drivers/gpu/drm/xe/xe_gt_debugfs.c | 31 + drivers/gpu/drm/xe/xe_gt_freq.c | 8 +- drivers/gpu/drm/xe/xe_gt_idle.c | 66 +- drivers/gpu/drm/xe/xe_gt_idle.h | 4 +- drivers/gpu/drm/xe/xe_gt_mcr.c | 27 +- drivers/gpu/drm/xe/xe_gt_mcr.h | 25 + drivers/gpu/drm/xe/xe_gt_pagefault.c | 16 +- drivers/gpu/drm/xe/xe_gt_sriov_pf.c | 32 + drivers/gpu/drm/xe/xe_gt_sriov_pf.h | 5 + drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 106 ++- drivers/gpu/drm/xe/xe_gt_sriov_pf_config.h | 6 + drivers/gpu/drm/xe/xe_gt_sriov_pf_config_types.h | 4 + drivers/gpu/drm/xe/xe_gt_sriov_pf_debugfs.c | 427 +++++++++ drivers/gpu/drm/xe/xe_gt_sriov_pf_debugfs.h | 18 + drivers/gpu/drm/xe/xe_gt_sriov_pf_monitor.c | 147 ++++ drivers/gpu/drm/xe/xe_gt_sriov_pf_monitor.h | 27 + drivers/gpu/drm/xe/xe_gt_sriov_pf_monitor_types.h | 22 + drivers/gpu/drm/xe/xe_gt_sriov_pf_service.c | 550 ++++++++++++ drivers/gpu/drm/xe/xe_gt_sriov_pf_service.h | 36 + drivers/gpu/drm/xe/xe_gt_sriov_pf_service_types.h | 52 ++ drivers/gpu/drm/xe/xe_gt_sriov_pf_types.h | 10 + drivers/gpu/drm/xe/xe_gt_sriov_vf.c | 979 +++++++++++++++++++++ drivers/gpu/drm/xe/xe_gt_sriov_vf.h | 30 + drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.c | 72 ++ drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.h | 14 + drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h | 84 ++ drivers/gpu/drm/xe/xe_gt_sysfs.c | 4 +- .../{xe_gt_throttle_sysfs.c => xe_gt_throttle.c} | 30 +- drivers/gpu/drm/xe/xe_gt_throttle.h | 17 + drivers/gpu/drm/xe/xe_gt_throttle_sysfs.h | 16 - drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c | 64 +- drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h | 3 + drivers/gpu/drm/xe/xe_gt_topology.c | 14 +- drivers/gpu/drm/xe/xe_gt_topology.h | 3 + drivers/gpu/drm/xe/xe_gt_types.h | 34 +- drivers/gpu/drm/xe/xe_guc.c | 354 ++++++-- drivers/gpu/drm/xe/xe_guc.h | 3 +- drivers/gpu/drm/xe/xe_guc_ads.c | 73 +- drivers/gpu/drm/xe/xe_guc_ads.h | 3 +- drivers/gpu/drm/xe/xe_guc_ct.c | 9 + drivers/gpu/drm/xe/xe_guc_ct.h | 2 +- drivers/gpu/drm/xe/xe_guc_ct_types.h | 2 + drivers/gpu/drm/xe/xe_guc_db_mgr.c | 3 +- drivers/gpu/drm/xe/xe_guc_id_mgr.c | 3 +- drivers/gpu/drm/xe/xe_guc_klv_helpers.c | 12 + drivers/gpu/drm/xe/xe_guc_klv_helpers.h | 15 +- drivers/gpu/drm/xe/xe_guc_klv_thresholds_set.h | 64 ++ .../gpu/drm/xe/xe_guc_klv_thresholds_set_types.h | 68 ++ drivers/gpu/drm/xe/xe_guc_pc.c | 12 +- drivers/gpu/drm/xe/xe_guc_pc.h | 5 +- drivers/gpu/drm/xe/xe_guc_relay.c | 17 +- drivers/gpu/drm/xe/xe_guc_submit.c | 282 +++--- drivers/gpu/drm/xe/xe_guc_submit.h | 4 +- drivers/gpu/drm/xe/xe_guc_types.h | 9 - drivers/gpu/drm/xe/xe_huc.c | 2 + drivers/gpu/drm/xe/xe_huc.h | 3 +- drivers/gpu/drm/xe/xe_hw_engine.c | 193 +++- drivers/gpu/drm/xe/xe_hw_engine.h | 3 + drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.c | 30 +- drivers/gpu/drm/xe/xe_hw_engine_types.h | 26 +- drivers/gpu/drm/xe/xe_hw_fence.c | 59 +- drivers/gpu/drm/xe/xe_hw_fence.h | 7 +- drivers/gpu/drm/xe/xe_hwmon.c | 37 +- drivers/gpu/drm/xe/xe_irq.c | 6 +- drivers/gpu/drm/xe/xe_lrc.c | 305 ++++++- drivers/gpu/drm/xe/xe_lrc.h | 58 +- drivers/gpu/drm/xe/xe_lrc_types.h | 12 + drivers/gpu/drm/xe/xe_migrate.c | 90 +- drivers/gpu/drm/xe/xe_mmio.c | 442 +++------- drivers/gpu/drm/xe/xe_mmio.h | 22 +- drivers/gpu/drm/xe/xe_mocs.c | 301 ++++++- drivers/gpu/drm/xe/xe_mocs.h | 11 +- drivers/gpu/drm/xe/xe_module.c | 5 + drivers/gpu/drm/xe/xe_module.h | 1 + drivers/gpu/drm/xe/xe_pat.c | 1 + drivers/gpu/drm/xe/xe_pci.c | 106 ++- drivers/gpu/drm/xe/xe_pci_sriov.c | 143 +++ drivers/gpu/drm/xe/xe_pci_sriov.h | 13 + drivers/gpu/drm/xe/xe_pci_types.h | 4 + drivers/gpu/drm/xe/xe_pcode.c | 8 +- drivers/gpu/drm/xe/xe_pm.c | 42 +- drivers/gpu/drm/xe/xe_pm.h | 9 +- drivers/gpu/drm/xe/xe_preempt_fence.c | 14 +- drivers/gpu/drm/xe/xe_pt.c | 69 +- drivers/gpu/drm/xe/xe_query.c | 10 +- drivers/gpu/drm/xe/xe_reg_sr.h | 4 +- drivers/gpu/drm/xe/xe_res_cursor.h | 2 - drivers/gpu/drm/xe/xe_ring_ops.c | 52 +- drivers/gpu/drm/xe/xe_rtp.c | 6 + drivers/gpu/drm/xe/xe_rtp.h | 18 +- drivers/gpu/drm/xe/xe_rtp_helpers.h | 26 +- drivers/gpu/drm/xe/xe_sched_job.c | 181 ++-- drivers/gpu/drm/xe/xe_sched_job.h | 7 +- drivers/gpu/drm/xe/xe_sched_job_types.h | 20 +- drivers/gpu/drm/xe/xe_sriov.c | 11 + drivers/gpu/drm/xe/xe_sync.c | 15 + drivers/gpu/drm/xe/xe_sync.h | 1 + drivers/gpu/drm/xe/xe_tile_sysfs.c | 4 +- drivers/gpu/drm/xe/xe_trace.h | 11 +- drivers/gpu/drm/xe/xe_ttm_stolen_mgr.c | 2 + drivers/gpu/drm/xe/xe_uc.c | 58 +- drivers/gpu/drm/xe/xe_uc.h | 4 +- drivers/gpu/drm/xe/xe_uc_fw.c | 5 + drivers/gpu/drm/xe/xe_vm.c | 859 ++++++++++-------- drivers/gpu/drm/xe/xe_vm.h | 5 +- drivers/gpu/drm/xe/xe_vm_doc.h | 24 +- drivers/gpu/drm/xe/xe_vm_types.h | 33 +- drivers/gpu/drm/xe/xe_vram.c | 368 ++++++++ drivers/gpu/drm/xe/xe_vram.h | 13 + drivers/gpu/drm/xe/xe_vram_freq.c | 4 +- drivers/gpu/drm/xe/xe_wa.c | 46 +- include/uapi/drm/xe_drm.h | 2 + 166 files changed, 8058 insertions(+), 1800 deletions(-) create mode 100644 Documentation/gpu/xe/xe-drm-usage-stats.rst rename drivers/gpu/drm/xe/{regs => instructions}/xe_gpu_commands.h (100%) create mode 100644 drivers/gpu/drm/xe/regs/xe_bars.h create mode 100644 drivers/gpu/drm/xe/tests/xe_args_test.c create mode 100644 drivers/gpu/drm/xe/tests/xe_gt_sriov_pf_service_test.c create mode 100644 drivers/gpu/drm/xe/xe_args.h create mode 100644 drivers/gpu/drm/xe/xe_gt_sriov_pf_debugfs.c create mode 100644 drivers/gpu/drm/xe/xe_gt_sriov_pf_debugfs.h create mode 100644 drivers/gpu/drm/xe/xe_gt_sriov_pf_monitor.c create mode 100644 drivers/gpu/drm/xe/xe_gt_sriov_pf_monitor.h create mode 100644 drivers/gpu/drm/xe/xe_gt_sriov_pf_monitor_types.h create mode 100644 drivers/gpu/drm/xe/xe_gt_sriov_pf_service.c create mode 100644 drivers/gpu/drm/xe/xe_gt_sriov_pf_service.h create mode 100644 drivers/gpu/drm/xe/xe_gt_sriov_pf_service_types.h create mode 100644 drivers/gpu/drm/xe/xe_gt_sriov_vf.c create mode 100644 drivers/gpu/drm/xe/xe_gt_sriov_vf.h create mode 100644 drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.c create mode 100644 drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.h create mode 100644 drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h rename drivers/gpu/drm/xe/{xe_gt_throttle_sysfs.c => xe_gt_throttle.c} (83%) create mode 100644 drivers/gpu/drm/xe/xe_gt_throttle.h delete mode 100644 drivers/gpu/drm/xe/xe_gt_throttle_sysfs.h create mode 100644 drivers/gpu/drm/xe/xe_guc_klv_thresholds_set.h create mode 100644 drivers/gpu/drm/xe/xe_guc_klv_thresholds_set_types.h create mode 100644 drivers/gpu/drm/xe/xe_pci_sriov.c create mode 100644 drivers/gpu/drm/xe/xe_pci_sriov.h create mode 100644 drivers/gpu/drm/xe/xe_vram.c create mode 100644 drivers/gpu/drm/xe/xe_vram.h