Hi Dave and Sima, Here goes our last drm-xe-next PR towards 6.17.
It brings a lot of workarounds infra and additions and the enabling of SRIOV capability in BMG, as long as underneath hardware SKU and Firmware supports it as well. Thanks, Rodrigo. drm-xe-next-2025-07-15: Driver Changes: - Create and use XE_DEVICE_WA infrastructure (Atwood) - SRIOV: Mark BMG as SR-IOV capable (Michal) - Dont skip TLB invalidations on VF (Tejas) - Fix migration copy direction in access_memory (Auld) - General code clean-up (Lucas, Brost, Dr. David, Xin) - More missing XeLP workarounds (Tvrtko) - SRIOV: Relax VF/PF version negotiation (Michal) - SRIOV: LMTT invalidation (Michal) The following changes since commit 94de94d24ea8cf567ec7254a723c3192c72c2ca6: drm/xe/guc: Cancel ongoing H2G requests when stopping CT (2025-07-10 21:46:29 +0200) are available in the Git repository at: https://gitlab.freedesktop.org/drm/xe/kernel.git tags/drm-xe-next-2025-07-15 for you to fetch changes up to a81648768178f6adf171d98db486b4b2613f645a: drm/xe/pf: Invalidate LMTT after completing changes (2025-07-15 13:05:22 +0200) ---------------------------------------------------------------- Driver Changes: - Create and use XE_DEVICE_WA infrastructure (Atwood) - SRIOV: Mark BMG as SR-IOV capable (Michal) - Dont skip TLB invalidations on VF (Tejas) - Fix migration copy direction in access_memory (Auld) - General code clean-up (Lucas, Brost, Dr. David, Xin) - More missing XeLP workarounds (Tvrtko) - SRIOV: Relax VF/PF version negotiation (Michal) - SRIOV: LMTT invalidation (Michal) ---------------------------------------------------------------- Dr. David Alan Gilbert (1): drm/xe: Remove unused functions Lucas De Marchi (9): drm/xe/migrate: Fix alignment check drm/xe: Normalize default param values drm/xe: Fix missing kernel-doc drm/xe/lrc: Reduce scope of empty lrc data drm/xe: Count dwords before allocating drm/xe/gt: Extract emit_job_sync() drm/xe/lrc: Remove leftover TODO/FIXME drm/xe/gt: Drop third submission for default context drm/xe/lrc: Add table with LRC layout Matt Atwood (6): drm/xe: prepare xe_gen_wa_oob to be multi-use drm/xe: add xe_device_wa infrastructure drm/xe: add new type to RTP context drm/xe: Add infrastructure for Device OOB workarounds drm/xe: Move Wa_15015404425 to use the new XE_DEVICE_WA macro drm/xe: extend Wa_15015404425 to apply to PTL Matthew Auld (1): drm/xe/migrate: fix copy direction in access_memory Matthew Brost (2): drm/xe: Move page fault init after topology init drm/xe: Remove references to CONFIG_DRM_XE_DEVMEM_MIRROR Michal Wajdeczko (14): drm/xe/sriov: Mark BMG as SR-IOV capable drm/xe: Combine PF and VF device data into union drm/xe: Move PF and VF device types to separate headers drm/xe: Introduce xe_tile_is_root helper drm/xe: Introduce xe_gt_is_main_type helper drm/xe/pf: Expose basic info about VFs in debugfs drm/xe/pf: Stop requiring VF/PF version negotiation on every GT drm/xe/vf: Store negotiated VF/PF ABI version at device level drm/xe/pf: Prepare to stop SR-IOV support prior GT reset drm/xe/pf: Resend PF provisioning after GT reset drm/xe/pf: Move GGTT config KLVs encoding to helper drm/xe/pf: Force GuC virtualization mode drm/xe/pf: Invalidate LMTT during LMEM unprovisioning drm/xe/pf: Invalidate LMTT after completing changes Tejas Upadhyay (1): drm/xe: Dont skip TLB invalidations on VF Tvrtko Ursulin (7): drm/xe: Generalize wa bb emission code drm/xe: Pass wa bb setup arguments in a struct drm/xe: Rename utilization workaround emission function drm/xe: Track number of written dwords from workaround batch buffer emission drm/xe: Allow specifying number of extra dwords at the end of wa bb emission drm/xe: Add plumbing for indirect context workarounds drm/xe: Waste fewer instructions in emit_wa_job() Xin Wang (1): drm/xe: Update register definitions in LRC layout header drivers/gpu/drm/xe/Makefile | 12 +- drivers/gpu/drm/xe/regs/xe_lrc_layout.h | 7 + .../gpu/drm/xe/tests/xe_gt_sriov_pf_service_test.c | 232 ------------------ .../gpu/drm/xe/tests/xe_sriov_pf_service_kunit.c | 227 +++++++++++++++++ drivers/gpu/drm/xe/xe_bb.c | 2 +- drivers/gpu/drm/xe/xe_bb.h | 2 +- drivers/gpu/drm/xe/xe_bo.c | 15 -- drivers/gpu/drm/xe/xe_bo.h | 3 - drivers/gpu/drm/xe/xe_debugfs.c | 24 ++ drivers/gpu/drm/xe/xe_device.c | 8 + drivers/gpu/drm/xe/xe_device.h | 4 + drivers/gpu/drm/xe/xe_device_types.h | 25 +- drivers/gpu/drm/xe/xe_device_wa_oob.rules | 2 + drivers/gpu/drm/xe/xe_force_wake.c | 2 +- drivers/gpu/drm/xe/xe_gen_wa_oob.c | 45 +++- drivers/gpu/drm/xe/xe_gsc_proxy.c | 3 +- drivers/gpu/drm/xe/xe_gt.c | 191 +++++++-------- drivers/gpu/drm/xe/xe_gt.h | 5 + drivers/gpu/drm/xe/xe_gt_idle.c | 2 +- drivers/gpu/drm/xe/xe_gt_sriov_pf.c | 19 ++ drivers/gpu/drm/xe/xe_gt_sriov_pf.h | 5 + drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 126 +++++++--- drivers/gpu/drm/xe/xe_gt_sriov_pf_control.c | 7 +- drivers/gpu/drm/xe/xe_gt_sriov_pf_debugfs.c | 9 +- drivers/gpu/drm/xe/xe_gt_sriov_pf_service.c | 166 +------------ drivers/gpu/drm/xe/xe_gt_sriov_pf_service.h | 2 - drivers/gpu/drm/xe/xe_gt_sriov_vf.c | 34 +-- drivers/gpu/drm/xe/xe_gt_sriov_vf_types.h | 12 - drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c | 34 +++ drivers/gpu/drm/xe/xe_gt_tlb_invalidation.h | 1 + drivers/gpu/drm/xe/xe_gt_topology.c | 5 - drivers/gpu/drm/xe/xe_gt_topology.h | 2 - drivers/gpu/drm/xe/xe_irq.c | 7 +- drivers/gpu/drm/xe/xe_lmtt.c | 54 +++++ drivers/gpu/drm/xe/xe_lmtt.h | 1 + drivers/gpu/drm/xe/xe_lrc.c | 269 ++++++++++++++++----- drivers/gpu/drm/xe/xe_lrc.h | 2 +- drivers/gpu/drm/xe/xe_lrc_types.h | 3 +- drivers/gpu/drm/xe/xe_migrate.c | 6 +- drivers/gpu/drm/xe/xe_mmio.c | 8 +- drivers/gpu/drm/xe/xe_module.c | 35 ++- drivers/gpu/drm/xe/xe_oa.c | 6 +- drivers/gpu/drm/xe/xe_pci.c | 1 + drivers/gpu/drm/xe/xe_ring_ops.c | 22 +- drivers/gpu/drm/xe/xe_rtp.c | 47 ++-- drivers/gpu/drm/xe/xe_rtp.h | 14 +- drivers/gpu/drm/xe/xe_rtp_types.h | 2 + drivers/gpu/drm/xe/xe_sriov_pf.c | 61 ++++- drivers/gpu/drm/xe/xe_sriov_pf.h | 6 + drivers/gpu/drm/xe/xe_sriov_pf_service.c | 216 +++++++++++++++++ drivers/gpu/drm/xe/xe_sriov_pf_service.h | 23 ++ drivers/gpu/drm/xe/xe_sriov_pf_service_types.h | 36 +++ drivers/gpu/drm/xe/xe_sriov_pf_types.h | 45 ++++ drivers/gpu/drm/xe/xe_sriov_types.h | 36 --- drivers/gpu/drm/xe/xe_sriov_vf_types.h | 41 ++++ drivers/gpu/drm/xe/xe_tile.h | 6 + drivers/gpu/drm/xe/xe_vm.c | 4 +- drivers/gpu/drm/xe/xe_wa.c | 58 +++++ drivers/gpu/drm/xe/xe_wa.h | 22 +- drivers/gpu/drm/xe/xe_wa_oob.rules | 2 + 60 files changed, 1501 insertions(+), 765 deletions(-) delete mode 100644 drivers/gpu/drm/xe/tests/xe_gt_sriov_pf_service_test.c create mode 100644 drivers/gpu/drm/xe/tests/xe_sriov_pf_service_kunit.c create mode 100644 drivers/gpu/drm/xe/xe_device_wa_oob.rules create mode 100644 drivers/gpu/drm/xe/xe_sriov_pf_service.c create mode 100644 drivers/gpu/drm/xe/xe_sriov_pf_service.h create mode 100644 drivers/gpu/drm/xe/xe_sriov_pf_service_types.h create mode 100644 drivers/gpu/drm/xe/xe_sriov_pf_types.h create mode 100644 drivers/gpu/drm/xe/xe_sriov_vf_types.h