Hi Dave & Daniel, Sorry for the big PR in advance. Had the summer vacations and did not notice until tool late how many patches were in already before leaving. As requested, there is a lot of refactoring to increase the use of TTM allocator and prep for DRM scheduler. Note that at times the patches trade simplicity for performance and revert optimizations not seen as critical. So some performance regressions are expected. As an example is dropping of faster GPU relocation path for older platforms, which should be mitigated by updating to the latest UMD versions to regain the perf. This PR drops various bits of uAPI where userspace has dropped the ball after reviews have been completed on both sides (Thanks Jason for doing the due-diligence!). [1] Due to the complexity of tracing back who used what, I think we could do better in the future to avoid such situations to begin with. See below for my suggestion [2]. In addition to the refactoring and uAPI cleanup there is preliminay code for ADL-P/XeHP and DG2 platforms. Fixes for ADL-S and removal of CNL code. A couple of fixes that have been Cc: stable already. Removing unnecessary workarounds per stepping and adding missing for Gen12 iGFX. I915_MMAP_OFFSET_FIXED is also added to to align with the static/fixed caching mode per BO instead of per-mapping mode (for dGFX only). There is GuC firmware interface update and backend code major rework that unblock enabling GuC on Gen11 (not on by default). Then there is the addition of the GuCRC power management feature which can be enabled for Gen12+ when submission is enabled. Then there is finally the drm-next backmerge and 3 topic branch merges. I think that is mostly all. I tried to summarize much in the tag description so it should hopefully not be horribly long... Regards, Joonas [1] Given that Jason is only human and there is no way to automate this analysis, we may have to bring something back as fixes if we find breakage (like with the MMAP IOCTL). [2] As we first require to merge the kernel code, should we introduce some further rules that the userspace has to land their code before the final kernel version release? If that is not followed through, we would neuter the new uAPI with as small patch as possible in the final release candidate and then remove it in next release. Thoughts? *** drm-intel-gt-next-2021-08-06-1: UAPI Changes: - Add I915_MMAP_OFFSET_FIXED On devices with local memory `I915_MMAP_OFFSET_FIXED` is the only valid type. On devices without local memory, this caching mode is invalid. As caching mode when specifying `I915_MMAP_OFFSET_FIXED`, WC or WB will be used, depending on the object placement on creation. WB will be used when the object can only exist in system memory, WC otherwise. Userspace: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11888 - Reinstate the mmap ioctl for (already released) integrated Gen12 platforms Rationale: Otherwise media driver breaks eg. for ADL-P. Long term goal is still to sunset the IOCTL even for integrated and require using mmap_offset. - Reject caching/set_domain IOCTLs on discrete Expected to become immutable property of the BO - Disallow changing context parameters after first use on Gen12 and earlier - Require setting context parameters at creation on platforms after Gen12 Rationale (for both): Allow less dynamic changes to the context to simplify the implementation and avoid user shooting theirselves in the foot. - Drop I915_CONTEXT_PARAM_RINGSIZE Userspace PR for compute-driver has not been merged - Drop I915_CONTEXT_PARAM_NO_ZEROMAP Userspace PR for libdrm / Beignet was never landed - Drop CONTEXT_CLONE API Userspace PR for Mesa was never landed - Drop getparam support for I915_CONTEXT_PARAM_ENGINES Only existed for symmetry wrt. setparam, never used. - Disallow bonding of virtual engines Drop the prep work, no hardware has been released needing it. - (Implicit) Disable gpu relocations Media userspace was the last userspace to still use them. They have converted so performance can be regained with an update. Core Changes: - Merge topic branch 'topic/i915-ttm-2021-06-11' (from Maarten) - Merge topic branch 'topic/revid_steppings' (from Matt R) - Merge topic branch 'topic/xehp-dg2-definitions-2021-07-21' (from Matt R) - Backmerges drm-next (Rodrigo) Driver Changes: - Initial workarounds for ADL-P (Clint) - Preliminary code for XeHP/DG2 (Stuart, Umesh, Matt R, Prathap, Ram, Venkata, Akeem, Tvrtko, John, Lucas) - Fix ADL-S DMA mask size to 39 bits (Tejas) - Remove code for CNL (Lucas) - Add ADL-P GuC/HuC firmwares (John) - Update HuC to 7.9.3 for TGL/ADL-S/RKL (John) - Fix -EDEADLK handling regression (Ville) - Implement Wa_1508744258 for DG1 and Gen12 iGFX (Jose) - Extend Wa_1406941453 to ADL-S (Jose) - Drop unnecessary workarounds per stepping for SKL/BXT/ICL (Matt R) - Use fuse info to enable SFC on Gen12 (Venkata) - Unconditionally flush the pages on acquire on EHL/JSL (Matt A) - Probe existence of backing struct pages upon userptr creation (Chris, Matt A) - Add an intermediate GEM proto-context to delay real context creation (Jason) - Implement SINGLE_TIMELINE with a syncobj (Jason) - Set the watchdog timeout directly in intel_context_set_gem (Jason) - Disallow userspace from creating contexts with too many engines (Jason) - Revert "drm/i915/gem: Asynchronous cmdparser" (Jason) - Revert "drm/i915: Propagate errors on awaiting already signaled fences" (Jason) - Revert "drm/i915: Skip over MI_NOOP when parsing" (Jason) - Revert "drm/i915: Shrink the GEM kmem_caches upon idling" (Daniel) - Always let TTM handle object migration (Jason) - Correct the locking and pin pattern for dma-buf (Thomas H, Michael R, Jason) - Migrate to system at dma-buf attach time (Thomas, Michael R) - MAJOR refactoring of the GuC backend code to allow for enabling on Gen11+ (Matt B, John, Michal Wa., Fernando, Daniele, Vinay) - Update GuC firmware interface to v62.0.0 (John, Michal Wa., Matt B) - Add GuCRC feature to hand over the control of HW RC6 to the GuC on Gen12+ when GuC submission is enabled (Vinay, Sujaritha, Daniele, John, Tvrtko) - Use the correct IRQ during resume and eliminate DRM IRQ midlayer (Thomas Z) - Add pipelined page migration and clearing (Chris, Thomas H) - Use TTM for system memory on discrete (Thomas H) - Implement object migration for display vs. dma-buf (Thomas H) - Perform execbuffer object locking as a separate step (Thomas H) - Add support for explicit L3BANK steering (Matt, Daniele) - Remove duplicated call to ops->pread (Daniel) - Fix pagefault disabling in the first execbuf slowpath (Daniel) - Simplify userptr locking (Thomas H) - Improvements to the GuC CTB code (Matt B, John) - Make GT workaround upper bounds exclusive (Matt R) - Check for nomodeset in i915_init() first (Daniel) - Delete now unused gpu reloc code (Daniel) - Document RFC plans for GuC submission, DRM scheduler and new parallel submit uAPI (Matt B) - Reintroduce buddy allocator this time with TTM (Matt A) - Support forcing page size with LMEM (Matt A) - Add i915_sched_engine to abstract a submission queue between backends (Matt B) - Use accelerated move in TTM (Ram) - Fix memory leaks from TTM backend (Thomas H) - Introduce WW transaction helper (Thomas H) - Improve debug Kconfig texts a bit (Daniel) - Unify user object creation code (Jason) - Use a table for i915_init/exit (Jason) - Move slabs to module init/exit (Daniel) - Remove now unused i915_globals (Daniel) - Extract i915_module.c (Daniel) - Consistently use adl-p/adl-s in WA comments (Jose) - Finish INTEL_GEN and friends conversion (Lucas) - Correct variable/function namings (Lucas) - Code checker fixes (Wan, Matt A) - Tracepoint improvements (Matt B) - Kerneldoc improvements (Tvrtko, Jason, Matt A, Maarten) - Selftest improvements (Chris, Matt A, Tejas, Thomas H, John, Matt B, Rahul, Vinay) The following changes since commit e73f0f0ee7541171d89f2e2491130c7771ba58d3: Linux 5.14-rc1 (2021-07-11 15:07:40 -0700) are available in the Git repository at: git://anongit.freedesktop.org/drm/drm-intel tags/drm-intel-gt-next-2021-08-06-1 for you to fetch changes up to 927dfdd09d8c03ba100ed0c8c3915f8e1d1f5556: drm/i915/dg2: Add SQIDI steering (2021-08-05 08:07:25 -0700) ---------------------------------------------------------------- UAPI Changes: - Add I915_MMAP_OFFSET_FIXED On devices with local memory `I915_MMAP_OFFSET_FIXED` is the only valid type. On devices without local memory, this caching mode is invalid. As caching mode when specifying `I915_MMAP_OFFSET_FIXED`, WC or WB will be used, depending on the object placement on creation. WB will be used when the object can only exist in system memory, WC otherwise. Userspace: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11888 - Reinstate the mmap ioctl for (already released) integrated Gen12 platforms Rationale: Otherwise media driver breaks eg. for ADL-P. Long term goal is still to sunset the IOCTL even for integrated and require using mmap_offset. - Reject caching/set_domain IOCTLs on discrete Expected to become immutable property of the BO - Disallow changing context parameters after first use on Gen12 and earlier - Require setting context parameters at creation on platforms after Gen12 Rationale (for both): Allow less dynamic changes to the context to simplify the implementation and avoid user shooting theirselves in the foot. - Drop I915_CONTEXT_PARAM_RINGSIZE Userspace PR for compute-driver has not been merged - Drop I915_CONTEXT_PARAM_NO_ZEROMAP Userspace PR for libdrm / Beignet was never landed - Drop CONTEXT_CLONE API Userspace PR for Mesa was never landed - Drop getparam support for I915_CONTEXT_PARAM_ENGINES Only existed for symmetry wrt. setparam, never used. - Disallow bonding of virtual engines Drop the prep work, no hardware has been released needing it. - (Implicit) Disable gpu relocations Media userspace was the last userspace to still use them. They have converted so performance can be regained with an update. Core Changes: - Merge topic branch 'topic/i915-ttm-2021-06-11' (from Maarten) - Merge topic branch 'topic/revid_steppings' (from Matt R) - Merge topic branch 'topic/xehp-dg2-definitions-2021-07-21' (from Matt R) - Backmerges drm-next (Rodrigo) Driver Changes: - Initial workarounds for ADL-P (Clint) - Preliminary code for XeHP/DG2 (Stuart, Umesh, Matt R, Prathap, Ram, Venkata, Akeem, Tvrtko, John, Lucas) - Fix ADL-S DMA mask size to 39 bits (Tejas) - Remove code for CNL (Lucas) - Add ADL-P GuC/HuC firmwares (John) - Update HuC to 7.9.3 for TGL/ADL-S/RKL (John) - Fix -EDEADLK handling regression (Ville) - Implement Wa_1508744258 for DG1 and Gen12 iGFX (Jose) - Extend Wa_1406941453 to ADL-S (Jose) - Drop unnecessary workarounds per stepping for SKL/BXT/ICL (Matt R) - Use fuse info to enable SFC on Gen12 (Venkata) - Unconditionally flush the pages on acquire on EHL/JSL (Matt A) - Probe existence of backing struct pages upon userptr creation (Chris, Matt A) - Add an intermediate GEM proto-context to delay real context creation (Jason) - Implement SINGLE_TIMELINE with a syncobj (Jason) - Set the watchdog timeout directly in intel_context_set_gem (Jason) - Disallow userspace from creating contexts with too many engines (Jason) - Revert "drm/i915/gem: Asynchronous cmdparser" (Jason) - Revert "drm/i915: Propagate errors on awaiting already signaled fences" (Jason) - Revert "drm/i915: Skip over MI_NOOP when parsing" (Jason) - Revert "drm/i915: Shrink the GEM kmem_caches upon idling" (Daniel) - Always let TTM handle object migration (Jason) - Correct the locking and pin pattern for dma-buf (Thomas H, Michael R, Jason) - Migrate to system at dma-buf attach time (Thomas, Michael R) - MAJOR refactoring of the GuC backend code to allow for enabling on Gen11+ (Matt B, John, Michal Wa., Fernando, Daniele, Vinay) - Update GuC firmware interface to v62.0.0 (John, Michal Wa., Matt B) - Add GuCRC feature to hand over the control of HW RC6 to the GuC on Gen12+ when GuC submission is enabled (Vinay, Sujaritha, Daniele, John, Tvrtko) - Use the correct IRQ during resume and eliminate DRM IRQ midlayer (Thomas Z) - Add pipelined page migration and clearing (Chris, Thomas H) - Use TTM for system memory on discrete (Thomas H) - Implement object migration for display vs. dma-buf (Thomas H) - Perform execbuffer object locking as a separate step (Thomas H) - Add support for explicit L3BANK steering (Matt, Daniele) - Remove duplicated call to ops->pread (Daniel) - Fix pagefault disabling in the first execbuf slowpath (Daniel) - Simplify userptr locking (Thomas H) - Improvements to the GuC CTB code (Matt B, John) - Make GT workaround upper bounds exclusive (Matt R) - Check for nomodeset in i915_init() first (Daniel) - Delete now unused gpu reloc code (Daniel) - Document RFC plans for GuC submission, DRM scheduler and new parallel submit uAPI (Matt B) - Reintroduce buddy allocator this time with TTM (Matt A) - Support forcing page size with LMEM (Matt A) - Add i915_sched_engine to abstract a submission queue between backends (Matt B) - Use accelerated move in TTM (Ram) - Fix memory leaks from TTM backend (Thomas H) - Introduce WW transaction helper (Thomas H) - Improve debug Kconfig texts a bit (Daniel) - Unify user object creation code (Jason) - Use a table for i915_init/exit (Jason) - Move slabs to module init/exit (Daniel) - Remove now unused i915_globals (Daniel) - Extract i915_module.c (Daniel) - Consistently use adl-p/adl-s in WA comments (Jose) - Finish INTEL_GEN and friends conversion (Lucas) - Correct variable/function namings (Lucas) - Code checker fixes (Wan, Matt A) - Tracepoint improvements (Matt B) - Kerneldoc improvements (Tvrtko, Jason, Matt A, Maarten) - Selftest improvements (Chris, Matt A, Tejas, Thomas H, John, Matt B, Rahul, Vinay) ---------------------------------------------------------------- Anusha Srivatsa (1): drm/i915/step: s/<platform>_revid_tbl/<platform>_revids Chris Wilson (8): drm/i915/selftests: Reorder tasklet_disable vs local_bh_disable drm/i915/gt: Add an insert_entry for gen8_ppgtt drm/i915/gt: Add a routine to iterate over the pagetables of a GTT drm/i915/gt: Export the pinned context constructor and destructor drm/i915/gt: Pipelined page migration drm/i915/gt: Pipelined clear drm/i915/gt: Setup a default migration context on the GT drm/i915/userptr: Probe existence of backing struct pages upon creation Clint Taylor (1): drm/i915/adl_p: Add initial ADL_P Workarounds Daniel Vetter (17): drm/i915/gem: Remove duplicated call to ops->pread drm/i915/eb: Fix pagefault disabling in the first slowpath drm/i915: Improve debug Kconfig texts a bit drm/i915: Ditch i915 globals shrink infrastructure drm/i915: Check for nomodeset in i915_init() first drm/i915: move i915_active slab to direct module init/exit drm/i915: move i915_buddy slab to direct module init/exit drm/i915: move intel_context slab to direct module init/exit drm/i915: move gem_context slab to direct module init/exit drm/i915: move gem_objects slab to direct module init/exit drm/i915: move request slabs to direct module init/exit drm/i915: move scheduler slabs to direct module init/exit drm/i915: move vma slab to direct module init/exit drm/i915: Remove i915_globals drm/i915: Extract i915_module.c drm/i915: Disable gpu relocations drm/i915: delete gpu reloc code Daniele Ceraolo Spurio (3): drm/i915: extract steered reg access to common function drm/i915/guc: Unblock GuC submission on Gen11+ drm/i915/xehp: handle new steering options Jason Ekstrand (46): drm/i915: Drop I915_CONTEXT_PARAM_RINGSIZE drm/i915: Stop storing the ring size in the ring pointer (v3) drm/i915: Drop I915_CONTEXT_PARAM_NO_ZEROMAP drm/i915/gem: Set the watchdog timeout directly in intel_context_set_gem (v2) drm/i915/gem: Return void from context_apply_all drm/i915: Drop the CONTEXT_CLONE API (v2) drm/i915: Implement SINGLE_TIMELINE with a syncobj (v4) drm/i915: Drop getparam support for I915_CONTEXT_PARAM_ENGINES drm/i915/gem: Disallow bonding of virtual engines (v3) drm/i915/gem: Remove engine auto-magic with FENCE_SUBMIT (v2) drm/i915/request: Remove the hook from await_execution drm/i915/gem: Disallow creating contexts with too many engines drm/i915: Stop manually RCU banging in reset_stats_ioctl (v2) drm/i915/gem: Add a separate validate_priority helper drm/i915: Add gem/i915_gem_context.h to the docs drm/i915/gem: Add an intermediate proto_context struct (v5) drm/i915/gem: Rework error handling in default_engines drm/i915/gem: Optionally set SSEU in intel_context_set_gem drm/i915: Add an i915_gem_vm_lookup helper drm/i915/gem: Make an alignment check more sensible drm/i915/gem: Use the proto-context to handle create parameters (v5) drm/i915/gem: Return an error ptr from context_lookup drm/i915/gt: Drop i915_address_space::file (v2) drm/i915/gem: Delay context creation (v3) drm/i915/gem: Don't allow changing the VM on running contexts (v4) drm/i915/gem: Don't allow changing the engine set on running contexts (v3) drm/i915/selftests: Take a VM in kernel_context() i915/gem/selftests: Assign the VM at context creation in igt_shared_ctx_exec drm/i915/gem: Roll all of context creation together drm/i915: Finalize contexts in GEM_CONTEXT_CREATE on version 13+ drm/i915: Revert "drm/i915/gem: Asynchronous cmdparser" Revert "drm/i915: Propagate errors on awaiting already signaled fences" drm/i915: Remove allow_alloc from i915_gem_object_get_sg* drm/i915: Drop error handling from dma_fence_work Revert "drm/i915: Skip over MI_NOOP when parsing" drm/i915: Correct the docs for intel_engine_cmd_parser drm/i915: Call i915_globals_exit() after i915_pmu_exit() drm/i915: Call i915_globals_exit() if pci_register_device() fails drm/i915: Use a table for i915_init/exit (v2) drm/i915: Make the kmem slab for i915_buddy_block a global drm/i915/gem: Check object_can_migrate from object_migrate drm/i915/gem: Refactor placement setup for i915_gem_object_create* (v2) drm/i915/gem: Call i915_gem_flush_free_objects() in i915_gem_dumb_create() drm/i915/gem: Unify user object creation (v3) drm/i915/gem/ttm: Only call __i915_gem_object_set_pages if needed drm/i915/gem: Always call obj->ops->migrate unless can_migrate fails John Harrison (19): drm/i915/huc: Update TGL and friends to HuC 7.9.3 drm/i915/adlp: Add ADL-P GuC/HuC firmware files drm/i915/guc: Module load failure test for CT buffer creation drm/i915/selftests: Allow for larger engine counts drm/i915/xehp: Extra media engines - Part 1 (engine definitions) drm/i915/xehp: Extra media engines - Part 2 (interrupts) drm/i915/xehp: Extra media engines - Part 3 (reset) drm/i915/guc: Make hangcheck work with GuC virtual engines drm/i915/guc: Provide mmio list to be saved/restored on engine reset drm/i915/guc: Don't complain about reset races drm/i915/guc: Enable GuC engine reset drm/i915/guc: Fix for error capture after full GPU reset with GuC drm/i915/guc: Hook GuC scheduling policies up drm/i915/guc: Connect reset modparam updates to GuC policy flags drm/i915/guc: Include scheduling policies in the debugfs state dump drm/i915/guc: Add golden context to GuC ADS drm/i915/selftest: Better error reporting from hangcheck selftest drm/i915/selftest: Fix hangcheck self test for GuC submission drm/i915/selftest: Bump selftest timeouts for hangcheck Joonas Lahtinen (1): Merge tag 'topic/i915-ttm-2021-06-11' of git://anongit.freedesktop.org/drm/drm-misc into drm-intel-gt-next José Roberto de Souza (4): drm/i915: Settle on "adl-x" in WA comments drm/i915: Implement Wa_1508744258 drm/i915/adl_s: Extend Wa_1406941453 drm/i915: Extend Wa_1406941453 to adl-p Lucas De Marchi (14): drm/i915/gt: finish INTEL_GEN and friends conversion drm/i915: do not abbreviate version in debugfs drm/i915: Add release id version drm/i915: Add XE_HP initial definitions drm/i915/xehpsdv: add initial XeHP SDV definitions drm/i915/gt: fix platform prefix drm/i915/gt: nuke unused legacy engine hw_id drm/i915/gt: rename legacy engine->hw_id to engine->gen6_hw_id drm/i915/gt: nuke gen6_hw_id drm/i915/gt: remove explicit CNL handling from intel_mocs.c drm/i915/gt: remove explicit CNL handling from intel_sseu.c drm/i915/gt: rename CNL references in intel_engine.h drm/i915/gt: remove GRAPHICS_VER == 10 drm/i915/xehp: Fix missing sentinel on mcr_ranges_xehp Maarten Lankhorst (2): drm/i915: Fix missing docbook chapters for i915 uapi. drm/i915: Add TTM offset argument to mmap. Matt Roper (29): drm/i915: Add GT support for multiple types of multicast steering drm/i915: Add support for explicit L3BANK steering drm/i915: Make pre-production detection use direct revid comparison drm/i915/skl: Use revid->stepping tables drm/i915/kbl: Drop pre-production revision from stepping table drm/i915/bxt: Use revid->stepping tables drm/i915/glk: Use revid->stepping tables drm/i915/icl: Use revid->stepping tables drm/i915/jsl_ehl: Use revid->stepping tables drm/i915/rkl: Use revid->stepping tables drm/i915/dg1: Use revid->stepping tables drm/i915/cnl: Drop all workarounds drm/i915/icl: Drop workarounds that only apply to pre-production steppings Merge branch 'topic/revid_steppings' into drm-intel-gt-next drm/i915: Fix application of WaInPlaceDecompressionHang drm/i915/icl: Drop a couple unnecessary workarounds drm/i915: Program DFR enable/disable as a GT workaround drm/i915: Make GT workaround upper bounds exclusive drm/i915/dg2: add DG2 platform info Merge branch 'topic/xehp-dg2-definitions-2021-07-21' into drm-intel-gt-next drm/i915/xehp: Define multicast register ranges drm/i915/xehp: Xe_HP forcewake support drm/i915/xehpsdv: Correct parameters for IS_XEHPSDV_GT_STEP() drm/i915/dg2: Add forcewake table drm/i915/xehpsdv: Add maximum sseu limits drm/i915/dg2: DG2 uses the same sseu limits as XeHP SDV drm/i915/xehpsdv: Define steering tables drm/i915/dg2: Update steering tables drm/i915/dg2: Add SQIDI steering Matthew Auld (25): drm/i915/ttm: add ttm_buddy_man drm/i915/ttm: add i915_sg_from_buddy_resource drm/i915/ttm: pass along the I915_BO_ALLOC_CONTIGUOUS drm/i915/ttm: remove node usage in our naming drm/i915/ttm: switch over to ttm_buddy_man drm/i915/ttm: restore min_page_size behaviour drm/i915/ttm: remove unused function drm/i915/selftests: add back the selftest() hook for the buddy drm/i915/ttm: fix static warning drm/i915/gem: Introduce a selftest for the gem object migrate functionality drm/i915: support forcing the page size with lmem drm/i915/gtt: ignore min_page_size for paging structures drm/i915/selftests: fix smatch warning in igt_check_blocks drm/i915/selftests: fix smatch warning in mock_reserve drm/i915: use consistent CPU mappings for pin_map users drm/i915/uapi: convert drm_i915_gem_caching to kernel doc drm/i915/uapi: convert drm_i915_gem_set_domain to kernel doc drm/i915/gtt: drop the page table optimisation drm/i915/uapi: reject caching ioctls for discrete drm/i915/uapi: convert drm_i915_gem_userptr to kernel doc drm/i915/uapi: reject set_domain for discrete drm/i915: document caching related bits drm/i915/ehl: unconditionally flush the pages on acquire drm/i915/selftests: prefer the create_user helper drm/i915/xehp: Changes to ss/eu definitions Matthew Brost (52): drm/i915: Move priolist to new i915_sched_engine object drm/i915: Add i915_sched_engine_is_empty function drm/i915: Reset sched_engine.no_priolist immediately after dequeue drm/i915: Move active tracking to i915_sched_engine drm/i915: Move engine->schedule to i915_sched_engine drm/i915: Add kick_backend function to i915_sched_engine drm/i915: Update i915_scheduler to operate on i915_sched_engine drm/i915: Move submission tasklet to i915_sched_engine drm/doc/rfc: i915 GuC submission / DRM scheduler drm/doc/rfc: i915 new parallel submission uAPI plan drm/i915/guc: Relax CTB response timeout drm/i915/guc: Improve error message for unsolicited CT response drm/i915/guc: Increase size of CTB buffers drm/i915/guc: Add non blocking CTB send function drm/i915/guc: Add stall timer to non blocking CTB send function drm/i915/guc: Optimize CTB writes and reads drm/i915/guc: Add new GuC interface defines and structures drm/i915/guc: Remove GuC stage descriptor, add LRC descriptor drm/i915/guc: Add LRC descriptor context lookup array drm/i915/guc: Implement GuC submission tasklet drm/i915/guc: Add bypass tasklet submission path to GuC drm/i915/guc: Implement GuC context operations for new inteface drm/i915/guc: Insert fence on context when deregistering drm/i915/guc: Defer context unpin until scheduling is disabled drm/i915/guc: Disable engine barriers with GuC during unpin drm/i915/guc: Extend deregistration fence to schedule disable drm/i915: Disable preempt busywait when using GuC scheduling drm/i915/guc: Ensure request ordering via completion fences drm/i915/guc: Disable semaphores when using GuC scheduling drm/i915/guc: Ensure G2H response has space in buffer drm/i915/guc: Update intel_gt_wait_for_idle to work with GuC drm/i915/guc: Update GuC debugfs to support new GuC drm/i915/guc: Add trace point for GuC submit drm/i915: Add intel_context tracing drm/i915/guc: GuC virtual engines drm/i915: Hold reference to intel_context over life of i915_request drm/i915/guc: Disable bonding extension with GuC submission drm/i915/guc: Direct all breadcrumbs for a class to single breadcrumbs drm/i915: Add i915_sched_engine destroy vfunc drm/i915: Move active request tracking to a vfunc drm/i915/guc: Reset implementation for new GuC interface drm/i915: Reset GPU immediately if submission is disabled drm/i915/guc: Add disable interrupts to guc sanitize drm/i915/guc: Suspend/resume implementation for new interface drm/i915/guc: Handle context reset notification drm/i915/guc: Handle engine reset failure notification drm/i915/guc: Enable the timer expired interrupt for GuC drm/i915/guc: Capture error state on context reset drm/i915/guc: Implement banned contexts for GuC submission drm/i915/guc: Support request cancellation drm/i915/selftest: Increase some timeouts in live_requests drm/i915/guc: Implement GuC priority management Michal Wajdeczko (3): drm/i915/guc: Introduce unified HXG messages drm/i915/guc: Update firmware to v62.0.0 drm/i915/doc: Include GuC ABI documentation Prathap Kumar Valsan (1): drm/i915/xehp: New engine context offsets Rahul Kumar Singh (2): drm/i915/selftest: Fix workarounds selftest for GuC submission drm/i915/selftest: Fix MOCS selftest for GuC submission Ramalingam C (1): drm/i915/ttm: accelerated move implementation Rodrigo Vivi (1): Merge drm/drm-next into drm-intel-gt-next Stuart Summers (1): drm/i915/xehp: Handle new device context ID format Tejas Upadhyay (2): drm/i915/selftest: Extend ctx_timestamp ICL workaround to GEN11 drm/i915/adl_s: Fix dma_mask_size to 39 bit Thomas Hellström (18): drm/i915: Simplify userptr locking drm/i915/ttm: Fix memory leaks drm/i915/ttm: Calculate the object placement at get_pages time drm/i915: Reference objects on the ww object list drm/i915: Break out dma_resv ww locking utilities to separate files drm/i915: Introduce a ww transaction helper drm/i915/gem: Zap the client blt code drm/i915/gem: Zap the i915_gem_object_blt code drm/i915: Perform execbuffer object locking as a separate step drm/i915/ttm: Fix incorrect assumptions about ttm_bo_validate() semantics drm/i915: Update object placement flags to be mutable drm/i915/ttm: Adjust gem flags and caching settings after a move drm/i915/ttm: Use TTM for system memory drm/i915: Reinstate the mmap ioctl for some platforms drm/i915/gem: Implement object migration drm/i915/display: Migrate objects to LMEM if possible for display drm/i915/gem: Correct the locking and pin pattern for dma-buf (v8) drm/i915/gem: Migrate to system at dma-buf attach time (v7) Thomas Zimmermann (2): drm/i915: Use the correct IRQ during resume drm/i915: Drop all references to DRM IRQ midlayer Tvrtko Ursulin (3): drm/i915: Fix busy ioctl commentary drm/i915: Document the Virtual Engine uAPI drm/i915/xehp: VDBOX/VEBOX fusing registers are enable-based Venkata Sandeep Dhanalakota (1): drm/i915/gen12: Use fuse info to enable SFC Ville Syrjälä (1): drm/i915/gt: Fix -EDEADLK handling regression Vinay Belgaumkar (14): drm/i915/guc/slpc: Initial definitions for SLPC drm/i915/guc/slpc: Gate Host RPS when SLPC is enabled drm/i915/guc/slpc: Adding SLPC communication interfaces drm/i915/guc/slpc: Allocate, initialize and release SLPC drm/i915/guc/slpc: Enable SLPC and add related H2G events drm/i915/guc/slpc: Remove BUG_ON in guc_submission_disable drm/i915/guc/slpc: Add methods to set min/max frequency drm/i915/guc/slpc: Add get max/min freq hooks drm/i915/guc/slpc: Add debugfs for SLPC info drm/i915/guc/slpc: Enable ARAT timer interrupt drm/i915/guc/slpc: Cache platform frequency limits drm/i915/guc/slpc: Sysfs hooks for SLPC drm/i915/guc/slpc: Add SLPC selftest drm/i915/guc/rc: Setup and enable GuCRC feature Wan Jiabing (1): drm/i915: Remove duplicate include of intel_region_lmem.h Documentation/gpu/i915.rst | 15 + Documentation/gpu/rfc/i915_parallel_execbuf.h | 122 + Documentation/gpu/rfc/i915_scheduler.rst | 148 + Documentation/gpu/rfc/index.rst | 4 + drivers/gpu/drm/drm_gem.c | 9 - drivers/gpu/drm/i915/Kconfig.debug | 6 + drivers/gpu/drm/i915/Makefile | 14 +- drivers/gpu/drm/i915/display/intel_display.c | 5 +- drivers/gpu/drm/i915/display/intel_display_power.c | 2 +- drivers/gpu/drm/i915/display/intel_dpll_mgr.c | 6 +- drivers/gpu/drm/i915/display/intel_psr.c | 4 +- drivers/gpu/drm/i915/gem/i915_gem_clflush.c | 4 +- drivers/gpu/drm/i915/gem/i915_gem_client_blt.c | 355 --- drivers/gpu/drm/i915/gem/i915_gem_client_blt.h | 21 - drivers/gpu/drm/i915/gem/i915_gem_context.c | 2920 +++++++++----------- drivers/gpu/drm/i915/gem/i915_gem_context.h | 6 + drivers/gpu/drm/i915/gem/i915_gem_context_types.h | 196 +- drivers/gpu/drm/i915/gem/i915_gem_create.c | 188 +- drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c | 58 +- drivers/gpu/drm/i915/gem/i915_gem_domain.c | 11 +- drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 699 +---- drivers/gpu/drm/i915/gem/i915_gem_internal.c | 4 +- drivers/gpu/drm/i915/gem/i915_gem_lmem.c | 160 +- drivers/gpu/drm/i915/gem/i915_gem_lmem.h | 12 +- drivers/gpu/drm/i915/gem/i915_gem_mman.c | 107 +- drivers/gpu/drm/i915/gem/i915_gem_object.c | 350 ++- drivers/gpu/drm/i915/gem/i915_gem_object.h | 69 +- drivers/gpu/drm/i915/gem/i915_gem_object_blt.c | 461 --- drivers/gpu/drm/i915/gem/i915_gem_object_blt.h | 39 - drivers/gpu/drm/i915/gem/i915_gem_object_types.h | 255 +- drivers/gpu/drm/i915/gem/i915_gem_pages.c | 54 +- drivers/gpu/drm/i915/gem/i915_gem_phys.c | 2 +- drivers/gpu/drm/i915/gem/i915_gem_region.c | 23 +- drivers/gpu/drm/i915/gem/i915_gem_region.h | 1 + drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 30 +- drivers/gpu/drm/i915/gem/i915_gem_stolen.c | 3 +- drivers/gpu/drm/i915/gem/i915_gem_ttm.c | 965 +++++++ drivers/gpu/drm/i915/gem/i915_gem_ttm.h | 49 + drivers/gpu/drm/i915/gem/i915_gem_userptr.c | 117 +- drivers/gpu/drm/i915/gem/i915_gem_wait.c | 23 +- .../gpu/drm/i915/gem/selftests/huge_gem_object.c | 4 +- drivers/gpu/drm/i915/gem/selftests/huge_pages.c | 8 +- .../drm/i915/gem/selftests/i915_gem_client_blt.c | 114 +- .../gpu/drm/i915/gem/selftests/i915_gem_context.c | 127 +- .../gpu/drm/i915/gem/selftests/i915_gem_dmabuf.c | 190 +- .../drm/i915/gem/selftests/i915_gem_execbuffer.c | 4 + .../gpu/drm/i915/gem/selftests/i915_gem_migrate.c | 243 ++ drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c | 164 +- .../drm/i915/gem/selftests/i915_gem_object_blt.c | 597 ---- drivers/gpu/drm/i915/gem/selftests/i915_gem_phys.c | 3 +- drivers/gpu/drm/i915/gem/selftests/mock_context.c | 67 +- drivers/gpu/drm/i915/gem/selftests/mock_context.h | 4 +- drivers/gpu/drm/i915/gt/debugfs_gt_pm.c | 10 +- drivers/gpu/drm/i915/gt/gen8_engine_cs.c | 17 +- drivers/gpu/drm/i915/gt/gen8_ppgtt.c | 73 +- drivers/gpu/drm/i915/gt/intel_breadcrumbs.c | 44 +- drivers/gpu/drm/i915/gt/intel_breadcrumbs.h | 16 +- drivers/gpu/drm/i915/gt/intel_breadcrumbs_types.h | 7 + drivers/gpu/drm/i915/gt/intel_context.c | 88 +- drivers/gpu/drm/i915/gt/intel_context.h | 56 +- drivers/gpu/drm/i915/gt/intel_context_param.c | 63 - drivers/gpu/drm/i915/gt/intel_context_param.h | 6 +- drivers/gpu/drm/i915/gt/intel_context_types.h | 64 +- drivers/gpu/drm/i915/gt/intel_engine.h | 87 +- drivers/gpu/drm/i915/gt/intel_engine_cs.c | 420 +-- drivers/gpu/drm/i915/gt/intel_engine_heartbeat.c | 74 +- drivers/gpu/drm/i915/gt/intel_engine_heartbeat.h | 4 + drivers/gpu/drm/i915/gt/intel_engine_pm.c | 4 +- drivers/gpu/drm/i915/gt/intel_engine_types.h | 93 +- drivers/gpu/drm/i915/gt/intel_engine_user.c | 6 +- .../gpu/drm/i915/gt/intel_execlists_submission.c | 604 ++-- .../gpu/drm/i915/gt/intel_execlists_submission.h | 12 +- drivers/gpu/drm/i915/gt/intel_ggtt.c | 6 +- drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c | 2 +- drivers/gpu/drm/i915/gt/intel_gpu_commands.h | 2 + drivers/gpu/drm/i915/gt/intel_gt.c | 197 +- drivers/gpu/drm/i915/gt/intel_gt.h | 10 + drivers/gpu/drm/i915/gt/intel_gt_clock_utils.c | 10 +- drivers/gpu/drm/i915/gt/intel_gt_irq.c | 13 +- drivers/gpu/drm/i915/gt/intel_gt_pm.c | 11 +- drivers/gpu/drm/i915/gt/intel_gt_requests.c | 21 +- drivers/gpu/drm/i915/gt/intel_gt_requests.h | 9 +- drivers/gpu/drm/i915/gt/intel_gt_types.h | 37 + drivers/gpu/drm/i915/gt/intel_gtt.c | 20 +- drivers/gpu/drm/i915/gt/intel_gtt.h | 18 +- drivers/gpu/drm/i915/gt/intel_lrc.c | 117 +- drivers/gpu/drm/i915/gt/intel_lrc_reg.h | 3 +- drivers/gpu/drm/i915/gt/intel_migrate.c | 688 +++++ drivers/gpu/drm/i915/gt/intel_migrate.h | 65 + drivers/gpu/drm/i915/gt/intel_migrate_types.h | 15 + drivers/gpu/drm/i915/gt/intel_mocs.c | 2 +- drivers/gpu/drm/i915/gt/intel_rc6.c | 49 +- drivers/gpu/drm/i915/gt/intel_region_lmem.c | 7 +- drivers/gpu/drm/i915/gt/intel_renderstate.h | 1 + drivers/gpu/drm/i915/gt/intel_reset.c | 56 +- drivers/gpu/drm/i915/gt/intel_ring.h | 1 + drivers/gpu/drm/i915/gt/intel_ring_submission.c | 70 +- drivers/gpu/drm/i915/gt/intel_rps.c | 209 +- drivers/gpu/drm/i915/gt/intel_rps.h | 10 + drivers/gpu/drm/i915/gt/intel_sseu.c | 126 +- drivers/gpu/drm/i915/gt/intel_sseu.h | 10 +- drivers/gpu/drm/i915/gt/intel_sseu_debugfs.c | 8 +- drivers/gpu/drm/i915/gt/intel_workarounds.c | 498 ++-- drivers/gpu/drm/i915/gt/intel_workarounds_types.h | 1 + drivers/gpu/drm/i915/gt/mock_engine.c | 51 +- drivers/gpu/drm/i915/gt/selftest_context.c | 10 + .../gpu/drm/i915/gt/selftest_engine_heartbeat.c | 22 + .../gpu/drm/i915/gt/selftest_engine_heartbeat.h | 2 + drivers/gpu/drm/i915/gt/selftest_engine_pm.c | 4 +- drivers/gpu/drm/i915/gt/selftest_execlists.c | 307 +- drivers/gpu/drm/i915/gt/selftest_hangcheck.c | 330 ++- drivers/gpu/drm/i915/gt/selftest_lrc.c | 6 +- drivers/gpu/drm/i915/gt/selftest_migrate.c | 669 +++++ drivers/gpu/drm/i915/gt/selftest_mocs.c | 52 +- drivers/gpu/drm/i915/gt/selftest_reset.c | 2 +- drivers/gpu/drm/i915/gt/selftest_slpc.c | 311 +++ drivers/gpu/drm/i915/gt/selftest_timeline.c | 2 +- drivers/gpu/drm/i915/gt/selftest_workarounds.c | 162 +- drivers/gpu/drm/i915/gt/uc/abi/guc_actions_abi.h | 129 +- .../gpu/drm/i915/gt/uc/abi/guc_actions_slpc_abi.h | 235 ++ .../drm/i915/gt/uc/abi/guc_communication_ctb_abi.h | 127 +- .../i915/gt/uc/abi/guc_communication_mmio_abi.h | 65 +- drivers/gpu/drm/i915/gt/uc/abi/guc_messages_abi.h | 213 ++ drivers/gpu/drm/i915/gt/uc/intel_guc.c | 206 +- drivers/gpu/drm/i915/gt/uc/intel_guc.h | 119 +- drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c | 487 +++- drivers/gpu/drm/i915/gt/uc/intel_guc_ads.h | 4 + drivers/gpu/drm/i915/gt/uc/intel_guc_ct.c | 703 +++-- drivers/gpu/drm/i915/gt/uc/intel_guc_ct.h | 36 +- drivers/gpu/drm/i915/gt/uc/intel_guc_debugfs.c | 47 +- drivers/gpu/drm/i915/gt/uc/intel_guc_fwif.h | 167 +- drivers/gpu/drm/i915/gt/uc/intel_guc_log.c | 29 +- drivers/gpu/drm/i915/gt/uc/intel_guc_log.h | 6 +- drivers/gpu/drm/i915/gt/uc/intel_guc_rc.c | 80 + drivers/gpu/drm/i915/gt/uc/intel_guc_rc.h | 31 + drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c | 626 +++++ drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.h | 42 + drivers/gpu/drm/i915/gt/uc/intel_guc_slpc_types.h | 29 + drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c | 2895 +++++++++++++++++-- drivers/gpu/drm/i915/gt/uc/intel_guc_submission.h | 18 +- drivers/gpu/drm/i915/gt/uc/intel_uc.c | 126 +- drivers/gpu/drm/i915/gt/uc/intel_uc.h | 15 + drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c | 27 +- drivers/gpu/drm/i915/gvt/scheduler.c | 7 +- drivers/gpu/drm/i915/i915_active.c | 37 +- drivers/gpu/drm/i915/i915_active.h | 3 + drivers/gpu/drm/i915/i915_buddy.c | 421 +++ drivers/gpu/drm/i915/i915_buddy.h | 135 + drivers/gpu/drm/i915/i915_cmd_parser.c | 203 +- drivers/gpu/drm/i915/i915_debugfs_params.c | 32 + drivers/gpu/drm/i915/i915_drv.c | 9 +- drivers/gpu/drm/i915/i915_drv.h | 228 +- drivers/gpu/drm/i915/i915_gem.c | 63 +- drivers/gpu/drm/i915/i915_gem.h | 12 - drivers/gpu/drm/i915/i915_gem_evict.c | 1 + drivers/gpu/drm/i915/i915_gem_ww.c | 63 + drivers/gpu/drm/i915/i915_gem_ww.h | 50 + drivers/gpu/drm/i915/i915_getparam.c | 7 +- drivers/gpu/drm/i915/i915_globals.c | 160 -- drivers/gpu/drm/i915/i915_globals.h | 37 - drivers/gpu/drm/i915/i915_gpu_error.c | 27 +- drivers/gpu/drm/i915/i915_module.c | 113 + drivers/gpu/drm/i915/i915_pci.c | 129 +- drivers/gpu/drm/i915/i915_pci.h | 8 + drivers/gpu/drm/i915/i915_perf.c | 36 +- drivers/gpu/drm/i915/i915_perf.h | 2 +- drivers/gpu/drm/i915/i915_pmu.c | 6 +- drivers/gpu/drm/i915/i915_pmu.h | 4 +- drivers/gpu/drm/i915/i915_reg.h | 48 +- drivers/gpu/drm/i915/i915_request.c | 307 +- drivers/gpu/drm/i915/i915_request.h | 38 +- drivers/gpu/drm/i915/i915_scatterlist.c | 80 + drivers/gpu/drm/i915/i915_scatterlist.h | 5 + drivers/gpu/drm/i915/i915_scheduler.c | 220 +- drivers/gpu/drm/i915/i915_scheduler.h | 54 +- drivers/gpu/drm/i915/i915_scheduler_types.h | 111 + drivers/gpu/drm/i915/i915_sw_fence_work.c | 5 +- drivers/gpu/drm/i915/i915_sw_fence_work.h | 2 +- drivers/gpu/drm/i915/i915_sysfs.c | 83 +- drivers/gpu/drm/i915/i915_trace.h | 201 +- drivers/gpu/drm/i915/i915_ttm_buddy_manager.c | 258 ++ drivers/gpu/drm/i915/i915_ttm_buddy_manager.h | 56 + drivers/gpu/drm/i915/i915_vma.c | 34 +- drivers/gpu/drm/i915/i915_vma.h | 3 + drivers/gpu/drm/i915/intel_device_info.c | 16 +- drivers/gpu/drm/i915/intel_device_info.h | 12 +- drivers/gpu/drm/i915/intel_memory_region.c | 63 +- drivers/gpu/drm/i915/intel_memory_region.h | 30 +- drivers/gpu/drm/i915/intel_pm.c | 22 +- drivers/gpu/drm/i915/intel_region_ttm.c | 150 +- drivers/gpu/drm/i915/intel_region_ttm.h | 23 +- drivers/gpu/drm/i915/intel_step.c | 134 +- drivers/gpu/drm/i915/intel_step.h | 5 + drivers/gpu/drm/i915/intel_uncore.c | 422 ++- drivers/gpu/drm/i915/intel_uncore.h | 20 +- drivers/gpu/drm/i915/selftests/i915_buddy.c | 787 ++++++ .../gpu/drm/i915/selftests/i915_live_selftests.h | 5 +- .../gpu/drm/i915/selftests/i915_mock_selftests.h | 2 +- .../gpu/drm/i915/selftests/i915_perf_selftests.h | 2 +- drivers/gpu/drm/i915/selftests/i915_request.c | 4 +- drivers/gpu/drm/i915/selftests/i915_selftest.c | 4 +- drivers/gpu/drm/i915/selftests/igt_flush_test.c | 2 +- drivers/gpu/drm/i915/selftests/igt_live_test.c | 2 +- drivers/gpu/drm/i915/selftests/igt_mmap.c | 25 +- drivers/gpu/drm/i915/selftests/igt_mmap.h | 12 +- .../gpu/drm/i915/selftests/intel_memory_region.c | 257 +- .../drm/i915/selftests/intel_scheduler_helpers.c | 88 + .../drm/i915/selftests/intel_scheduler_helpers.h | 33 + drivers/gpu/drm/i915/selftests/intel_uncore.c | 2 + drivers/gpu/drm/i915/selftests/mock_gem_device.c | 3 +- drivers/gpu/drm/i915/selftests/mock_gtt.c | 1 - drivers/gpu/drm/i915/selftests/mock_region.c | 29 +- include/drm/drm_vma_manager.h | 2 +- include/uapi/drm/i915_drm.h | 498 +++- 214 files changed, 18965 insertions(+), 8462 deletions(-) create mode 100644 Documentation/gpu/rfc/i915_parallel_execbuf.h create mode 100644 Documentation/gpu/rfc/i915_scheduler.rst delete mode 100644 drivers/gpu/drm/i915/gem/i915_gem_client_blt.c delete mode 100644 drivers/gpu/drm/i915/gem/i915_gem_client_blt.h delete mode 100644 drivers/gpu/drm/i915/gem/i915_gem_object_blt.c delete mode 100644 drivers/gpu/drm/i915/gem/i915_gem_object_blt.h create mode 100644 drivers/gpu/drm/i915/gem/i915_gem_ttm.c create mode 100644 drivers/gpu/drm/i915/gem/i915_gem_ttm.h create mode 100644 drivers/gpu/drm/i915/gem/selftests/i915_gem_migrate.c delete mode 100644 drivers/gpu/drm/i915/gem/selftests/i915_gem_object_blt.c delete mode 100644 drivers/gpu/drm/i915/gt/intel_context_param.c create mode 100644 drivers/gpu/drm/i915/gt/intel_migrate.c create mode 100644 drivers/gpu/drm/i915/gt/intel_migrate.h create mode 100644 drivers/gpu/drm/i915/gt/intel_migrate_types.h create mode 100644 drivers/gpu/drm/i915/gt/selftest_migrate.c create mode 100644 drivers/gpu/drm/i915/gt/selftest_slpc.c create mode 100644 drivers/gpu/drm/i915/gt/uc/abi/guc_actions_slpc_abi.h create mode 100644 drivers/gpu/drm/i915/gt/uc/intel_guc_rc.c create mode 100644 drivers/gpu/drm/i915/gt/uc/intel_guc_rc.h create mode 100644 drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c create mode 100644 drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.h create mode 100644 drivers/gpu/drm/i915/gt/uc/intel_guc_slpc_types.h create mode 100644 drivers/gpu/drm/i915/i915_buddy.c create mode 100644 drivers/gpu/drm/i915/i915_buddy.h create mode 100644 drivers/gpu/drm/i915/i915_gem_ww.c create mode 100644 drivers/gpu/drm/i915/i915_gem_ww.h delete mode 100644 drivers/gpu/drm/i915/i915_globals.c delete mode 100644 drivers/gpu/drm/i915/i915_globals.h create mode 100644 drivers/gpu/drm/i915/i915_module.c create mode 100644 drivers/gpu/drm/i915/i915_pci.h create mode 100644 drivers/gpu/drm/i915/i915_ttm_buddy_manager.c create mode 100644 drivers/gpu/drm/i915/i915_ttm_buddy_manager.h create mode 100644 drivers/gpu/drm/i915/selftests/i915_buddy.c create mode 100644 drivers/gpu/drm/i915/selftests/intel_scheduler_helpers.c create mode 100644 drivers/gpu/drm/i915/selftests/intel_scheduler_helpers.h