Hi Dave and Sima, Here goes our likely last pull-request towards 6.11. If some last minute thing shows up a small one might come next Tuesday. Thanks, Rodrigo. drm-xe-next-2024-06-26: UAPI Changes: - New uapi adding OA functionality to Xe (Ashutosh) Cross-subsystem Changes: - devcoredump: Add dev_coredumpm_timeout (Jose) Driver Changes: - More SRIOV preparation, including GuC communication improvements (Michal) - Kconfig update: do not select ACPI_BUTTON (Jani) - Rework GPU page fault handling (Brost) - Forcewake clean-up and fixes (Himal, Michal) - Drop EXEC_QUEUE_FLAG_BANNED (Brost) - Xe/Xe2 Workarounds fixes and additions (Tejas, Akshata, Sai, Vinay) - Xe devcoredump changes (Jose) - Tracing cleanup and add mmio tracing (RK) - Add BMG PCI IDs (Roper) - Scheduler fixes and improvements (Brost) - Some overal driver clean-up around headers and print macros (Michal) - Rename xe_exec_queue::compute to xe_exec_queue::lr (Francois) - Improve RTP rules to allow easier 'OR' conditions in WA declaration (Lucas) - Use ttm_uncached for BO with NEEDS_UC flag (Michal) - Other OA related work and fixes (Ashutosh, Michal, Jose) - Simplify locking in new_vma (Brost) - Remove xe_irq_shutdown (Ilia) The following changes since commit 541b1b0a8fc235bca355921eb7f3f59a8efa3e9a: agp: add missing MODULE_DESCRIPTION() macros (2024-06-24 16:20:58 +1000) are available in the Git repository at: https://gitlab.freedesktop.org/drm/xe/kernel.git tags/drm-xe-next-2024-06-26 for you to fetch changes up to 406d058dc323ae152d380ac90153eb56a75850c1: drm/xe/oa/uapi: Allow preemption to be disabled on the stream exec queue (2024-06-26 18:25:46 -0400) ---------------------------------------------------------------- UAPI Changes: - New uapi adding OA functionality to Xe (Ashutosh) Cross-subsystem Changes: - devcoredump: Add dev_coredumpm_timeout (Jose) Driver Changes: - More SRIOV preparation, including GuC communication improvements (Michal) - Kconfig update: do not select ACPI_BUTTON (Jani) - Rework GPU page fault handling (Brost) - Forcewake clean-up and fixes (Himal, Michal) - Drop EXEC_QUEUE_FLAG_BANNED (Brost) - Xe/Xe2 Workarounds fixes and additions (Tejas, Akshata, Sai, Vinay) - Xe devcoredump changes (Jose) - Tracing cleanup and add mmio tracing (RK) - Add BMG PCI IDs (Roper) - Scheduler fixes and improvements (Brost) - Some overal driver clean-up around headers and print macros (Michal) - Rename xe_exec_queue::compute to xe_exec_queue::lr (Francois) - Improve RTP rules to allow easier 'OR' conditions in WA declaration (Lucas) - Use ttm_uncached for BO with NEEDS_UC flag (Michal) - Other OA related work and fixes (Ashutosh, Michal, Jose) - Simplify locking in new_vma (Brost) - Remove xe_irq_shutdown (Ilia) ---------------------------------------------------------------- Akshata Jahagirdar (1): drm/xe/xe2lpg: Add Wa_14021490052 Ashutosh Dixit (21): drm/xe/perf/uapi: "Perf" layer to support multiple perf counter stream types drm/xe/perf/uapi: Add perf_stream_paranoid sysctl drm/xe/oa/uapi: Add OA data formats drm/xe/oa/uapi: Initialize OA units drm/xe/oa/uapi: Add/remove OA config perf ops drm/xe/oa/uapi: Define and parse OA stream properties drm/xe/oa: OA stream initialization (OAG) drm/xe/oa/uapi: Expose OA stream fd drm/xe/oa/uapi: Read file_operation drm/xe/oa: Add OAR support drm/xe/oa: Add OAC support drm/xe/oa/uapi: Query OA unit properties drm/xe/oa/uapi: OA buffer mmap drm/xe/oa: Add MMIO trigger support drm/xe/oa: Override GuC RC with OA on PVC drm/xe/oa: Changes to OA_TAKEN drm/xe/oa: Enable Xe2+ overrun mode drm/xe/oa: Remove WARN_ON's for unsupported configurations drm/xe/oa: Fix kernel doc in xe_drm.h drm/xe/oa: Allow stream enable/disable functions to return error drm/xe/oa/uapi: Allow preemption to be disabled on the stream exec queue Francois Dugast (2): drm/xe/sched_job: Promote xe_sched_job_add_deps() drm/xe/exec_queue: Rename xe_exec_queue::compute to xe_exec_queue::lr Himal Prasad Ghimiray (3): drm/xe: Cleanup force wake registers bit definitions drm/xe: Ensure caller uses sole domain for xe_force_wake_assert_held drm/xe: Check valid domain is passed in xe_force_wake_ref Ilia Levi (1): drm/xe/irq: remove xe_irq_shutdown Jani Nikula (1): drm/xe: do not select ACPI_BUTTON José Roberto de Souza (3): devcoredump: Add dev_coredumpm_timeout() drm/xe: Increase devcoredump timeout drm/xe/oa: Call xe_oa_emit_oa_config() with new config when updating config Lucas De Marchi (5): drm/xe/rtp: Allow to match 0 sr entries drm/xe/rtp: Expand max rules/actions per entry drm/xe/rtp: Allow to OR rules drm/xe/rtp: Add match on any GT drm/xe/xe2: Add proper check for media in Wa_14020756599 Matt Roper (1): drm/xe/bmg: Add PCI IDs Matthew Brost (15): drm/xe: Rework GPU page fault handling drm/xe: Drop EXEC_QUEUE_FLAG_BANNED drm/xe: Add LRC ctx timestamp support functions drm/xe: Add MI_COPY_MEM_MEM GPU instruction definitions drm/xe: Emit ctx timestamp copy in ring ops drm/xe: Add ctx timestamp to LRC snapshot drm/xe: Add xe_gt_clock_interval_to_ms helper drm/xe: Improve unexpected state error messages drm/xe: Assert runnable state in handle_sched_done drm/xe: Add GuC state asserts to deregister_exec_queue drm/xe: Add pending disable assert to handle_sched_done drm/xe: Add killed, banned, or wedged as stick bit during GuC reset drm/xe: Sample ctx timestamp to determine if jobs have timed out drm/xe: Invert runnable_state / pending enable check and assert drm/xe: Simplify locking in new_vma Michal Wajdeczko (38): drm/xe/guc: Split g2h worker function drm/xe/guc: Allow CTB G2H processing without G2H IRQ drm/xe/pf: Assert LMEM provisioning is done only on DGFX drm/xe/guc: Move H2G SETUP_PC_GUCRC definition to SLPC ABI drm/xe/guc: Add pc_to_ct() helper drm/xe/guc: Prefer GT oriented messages in xe_guc_pc drm/xe/guc: Drop unused legacy GuC message ABI definitions drm/xe/guc: Add kernel-doc for HXG Fast Request drm/xe: Prefer GT oriented messages in xe_force_wake.c drm/xe: Kill fw_to_gt() helper drm/xe: Include additional info on failed force-wake operation drm/xe: Combine common force-wake code into helpers drm/xe/vf: Ignore force-wake requests if VF drm/xe/vf: Use correct check for being a VF driver drm/xe: Drop duplicated declaration drm/xe: Use fixed CCS mode when running in SR-IOV mode drm/xe/uc: Fix and start using xe_uc_fw_sanitize() drm/xe: Allow const pointer when checking SR-IOV mode drm/xe/vf: Don't touch GuC irq registers if using memory irqs drm/xe: Use ttm_uncached for BO with NEEDS_UC flag drm/xe/guc: Move ARAT interrupts enabling to the upload step drm/xe/oa: Fix potential NPD when OA is not initialized drm/xe/vf: Disable features that do not apply to VFs drm/xe/vf: Don't run any save-restore RTP actions if VF drm/xe/vf: Don't apply tile workarounds if VF drm/xe/vf: Don't change hwe IRQ masks if using memory IRQs drm/xe/vf: Don't initialize OA if VF drm/xe/vf: Don't support gtidle if VF drm/xe/vf: Don't use register based TLB invalidation if VF drm/xe/vf: Skip engine ring enabling if VF drm/xe/vf: Custom HuC initialization if VF drm/xe/huc: Use GT oriented error messages in xe_huc.c drm/xe/vf: Skip attempt to start GuC PC if VF drm/xe/guc: Demote the H2G retry log message to debug drm/xe/guc: Add more GuC error codes to ABI drm/xe/guc: Print GuC error codes as hex value drm/xe/pf: Trigger explicit FLR while disabling VFs drm/xe/pf: Disable VFs on remove Radhakrishna Sripada (6): drm/xe/trace: Extract bo, vm, vma traces drm/xe/trace: Extract guc related traces drm/xe/trace: Print device_id in xe_trace_bo events drm/xe/trace: Print device_id in xe_trace_guc events drm/xe/trace: Print device_id in xe_trace events drm/xe: Add reg read/write trace Rodrigo Vivi (2): Merge drm/drm-next into drm-xe-next Merge drm/drm-next into drm-xe-next Sai Teja Pottumuttu (1): drm/xe/xelpgp: Extend Wa_14019877138 to graphics 12.74 Tejas Upadhyay (1): drm/xe/xe2lpm: Fixup Wa_14020756599 Vinay Belgaumkar (2): drm/xe/lnl: Apply Wa_22019338487 drm/xe/guc: Request max GT freq during resume drivers/base/devcoredump.c | 23 +- drivers/gpu/drm/xe/Kconfig | 1 - drivers/gpu/drm/xe/Makefile | 7 + drivers/gpu/drm/xe/abi/guc_actions_abi.h | 6 - drivers/gpu/drm/xe/abi/guc_actions_slpc_abi.h | 22 + drivers/gpu/drm/xe/abi/guc_errors_abi.h | 31 + drivers/gpu/drm/xe/abi/guc_messages_abi.h | 41 +- drivers/gpu/drm/xe/display/xe_fb_pin.c | 4 +- drivers/gpu/drm/xe/instructions/xe_mi_commands.h | 5 + drivers/gpu/drm/xe/regs/xe_engine_regs.h | 2 + drivers/gpu/drm/xe/regs/xe_gt_regs.h | 11 +- drivers/gpu/drm/xe/regs/xe_oa_regs.h | 100 + drivers/gpu/drm/xe/tests/xe_rtp_test.c | 64 +- drivers/gpu/drm/xe/xe_bo.c | 11 +- drivers/gpu/drm/xe/xe_devcoredump.c | 8 +- drivers/gpu/drm/xe/xe_device.c | 45 +- drivers/gpu/drm/xe/xe_device_types.h | 4 + drivers/gpu/drm/xe/xe_exec.c | 8 +- drivers/gpu/drm/xe/xe_exec_queue.c | 8 +- drivers/gpu/drm/xe/xe_exec_queue_types.h | 26 +- drivers/gpu/drm/xe/xe_force_wake.c | 102 +- drivers/gpu/drm/xe/xe_force_wake.h | 13 +- drivers/gpu/drm/xe/xe_ggtt.c | 42 +- drivers/gpu/drm/xe/xe_ggtt.h | 1 - drivers/gpu/drm/xe/xe_ggtt_types.h | 12 +- drivers/gpu/drm/xe/xe_gsc.c | 5 + drivers/gpu/drm/xe/xe_gt.c | 24 + drivers/gpu/drm/xe/xe_gt.h | 1 + drivers/gpu/drm/xe/xe_gt_ccs_mode.c | 9 +- drivers/gpu/drm/xe/xe_gt_clock.c | 20 + drivers/gpu/drm/xe/xe_gt_clock.h | 1 + drivers/gpu/drm/xe/xe_gt_idle.c | 16 + drivers/gpu/drm/xe/xe_gt_pagefault.c | 144 +- drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 15 +- drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c | 21 + drivers/gpu/drm/xe/xe_gt_sriov_pf_control.h | 1 + drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c | 31 +- drivers/gpu/drm/xe/xe_gt_types.h | 4 + drivers/gpu/drm/xe/xe_guc.c | 33 +- drivers/gpu/drm/xe/xe_guc_ct.c | 72 +- drivers/gpu/drm/xe/xe_guc_ct_types.h | 2 + drivers/gpu/drm/xe/xe_guc_pc.c | 204 +- drivers/gpu/drm/xe/xe_guc_pc.h | 5 + drivers/gpu/drm/xe/xe_guc_pc_types.h | 4 + drivers/gpu/drm/xe/xe_guc_submit.c | 346 ++- drivers/gpu/drm/xe/xe_huc.c | 30 +- drivers/gpu/drm/xe/xe_hw_engine.c | 4 +- drivers/gpu/drm/xe/xe_hw_engine_types.h | 2 + drivers/gpu/drm/xe/xe_irq.c | 8 +- drivers/gpu/drm/xe/xe_irq.h | 1 - drivers/gpu/drm/xe/xe_lrc.c | 89 +- drivers/gpu/drm/xe/xe_lrc.h | 6 + drivers/gpu/drm/xe/xe_migrate.c | 28 +- drivers/gpu/drm/xe/xe_mmio.c | 23 +- drivers/gpu/drm/xe/xe_module.c | 5 + drivers/gpu/drm/xe/xe_oa.c | 2510 ++++++++++++++++++++++ drivers/gpu/drm/xe/xe_oa.h | 27 + drivers/gpu/drm/xe/xe_oa_types.h | 242 +++ drivers/gpu/drm/xe/xe_pci.c | 8 +- drivers/gpu/drm/xe/xe_pci_sriov.c | 14 + drivers/gpu/drm/xe/xe_perf.c | 92 + drivers/gpu/drm/xe/xe_perf.h | 20 + drivers/gpu/drm/xe/xe_preempt_fence.c | 2 +- drivers/gpu/drm/xe/xe_pt.c | 8 +- drivers/gpu/drm/xe/xe_query.c | 77 + drivers/gpu/drm/xe/xe_reg_whitelist.c | 24 +- drivers/gpu/drm/xe/xe_ring_ops.c | 21 + drivers/gpu/drm/xe/xe_rtp.c | 45 +- drivers/gpu/drm/xe/xe_rtp.h | 69 +- drivers/gpu/drm/xe/xe_rtp_helpers.h | 2 + drivers/gpu/drm/xe/xe_rtp_types.h | 3 + drivers/gpu/drm/xe/xe_sched_job.c | 6 + drivers/gpu/drm/xe/xe_sched_job.h | 3 + drivers/gpu/drm/xe/xe_sriov.h | 6 +- drivers/gpu/drm/xe/xe_trace.h | 380 +--- drivers/gpu/drm/xe/xe_trace_bo.c | 9 + drivers/gpu/drm/xe/xe_trace_bo.h | 247 +++ drivers/gpu/drm/xe/xe_trace_guc.c | 9 + drivers/gpu/drm/xe/xe_trace_guc.h | 110 + drivers/gpu/drm/xe/xe_uc_fw.h | 2 +- drivers/gpu/drm/xe/xe_vm.c | 101 +- drivers/gpu/drm/xe/xe_wa.c | 25 +- drivers/gpu/drm/xe/xe_wa.h | 2 - drivers/gpu/drm/xe/xe_wa_oob.rules | 1 + include/drm/intel/xe_pciids.h | 7 + include/linux/devcoredump.h | 53 +- include/uapi/drm/xe_drm.h | 308 +++ 87 files changed, 5355 insertions(+), 829 deletions(-) create mode 100644 drivers/gpu/drm/xe/regs/xe_oa_regs.h create mode 100644 drivers/gpu/drm/xe/xe_oa.c create mode 100644 drivers/gpu/drm/xe/xe_oa.h create mode 100644 drivers/gpu/drm/xe/xe_oa_types.h create mode 100644 drivers/gpu/drm/xe/xe_perf.c create mode 100644 drivers/gpu/drm/xe/xe_perf.h create mode 100644 drivers/gpu/drm/xe/xe_trace_bo.c create mode 100644 drivers/gpu/drm/xe/xe_trace_bo.h create mode 100644 drivers/gpu/drm/xe/xe_trace_guc.c create mode 100644 drivers/gpu/drm/xe/xe_trace_guc.h