The Linux 6.15 has just been released, bringing a lot of new features:
- nova-core, the “base” driver for the new NVIDIA GPU driver, written in Rust. nova project will eventually replace Nouveau driver for all GSP-based GPUs.
- RISC-V gained support for some extensions: BFloat16 floating-point, Zaamo, Zalrsc and ZBKB.
- The fwctl subsystem has been merged. This new family of drivers acts as a transport layer between userspace and complex firmware. To understand more about its controversies and how it got merged, check out this LWN article.
- Support for MacBook touch bars, both as a DRM driver and input source.
- Support for Adreno 623 GPU.
As always, I suggest to have a look at the Kernel Newbies summary. Now, let’s have a look at Igalia’s contributions.
DRM wedged events
In 3D graphics APIs such Vulkan and OpenGL, there are some mechanisms that applications can rely to check if the GPU had reset (you can read more about this in the kernel documentation). However, there was no generic mechanism to inform userspace that a GPU reset has happened. This is useful because in some cases the reset affected not only the app involved in the reset, but the whole graphic stack and thus needs some action to recover, like doing a module rebind or even bus reset to recovery the hardware. For this release, we helped to add an userspace event for this, so a daemon or the compositor can listen to it and trigger some recovery measure after the GPU has reset. Read more in the kernel docs.
DRM scheduler work
In the DRM scheduler area, in preparation for the future scheduling improvements, we worked on cleaning up the code base, better separation of the internal and external interfaces, and adding formal interfaces at places where individual drivers had too much knowledge of the scheduler internals.
General GPU/DRM stack
In the wider GPU stack area we optimised the most frequent dma-fence single fence merge operation to avoid memory allocations and array sorting. This should slightly reduce the CPU utilisation with workloads which use the DRM sync objects heavily, such as the modern composited desktops using Vulkan explicit sync.
Some releases ago, we helped to enable async page flips in the atomic DRM uAPI. So far, this feature was only enabled for the primary plane. In this release, we added a mechanism for the driver to decide which plane can perform async flips. We used this to enable overlay planes to do async flips in AMDGPU driver.
We also fixed a bug in the DRM fdinfo common layer which could cause use after free after driver unbind.
Intel Xe driver improvements
On the Intel GPU specific front we worked on adding better Alderlake-P support to the new Intel Xe driver by identifying and adding missing hardware workarounds, fixed the workaround application in general and also made some other smaller improvements.
sched_ext
When developing and optimizing a sched_ext
-based scheduler, it is important to understand the interactions between the BPF scheduler and the in-kernel sched_ext
core. If there is a mismatch between what the BPF scheduler developer expects and how the sched_ext
core actually works, such a mismatch could often be the source of bugs or performance issues.
To address such a problem, we added a mechanism to count and report the internal events of the sched_ext
core. This significantly improves the visibility of subtle edge cases, which might easily slip off. So far, eight events have been added, and the events can be monitored through a BPF program, sysfs, and a tracepoint.
A few less bugs
As usual, as part of our work on diverse projects, we keep an eye on automated test results to look for potential security and stability issues in different kernel areas. We’re happy to have contributed to making this release a bit more robust by fixing bugs in memory management, network (SCTP), ext4, suspend/resume and other subsystems.
This is the complete list of Igalia’s contributions for this release:
Authored (75)
André Almeida
- drm/amdgpu: Use device wedged event
- drm/atomic: Let drivers decide which planes to async flip
- drm/amdgpu: Enable async flip on overlay planes
- drm/amdgpu: Log the creation of a coredump file
- drm/amdgpu: Log after a successful ring reset
- drm/amdgpu: Create a debug option to disable ring reset
- drm/amdgpu: Trigger a wedged event for ring reset
Angelos Oikonomopoulos
Bhupesh
Changwoo Min
- sched_ext: Implement event counter infrastructure
- sched_ext: Add an event, SCX_EV_SELECT_CPU_FALLBACK
- sched_ext: Add an event, SCX_EV_DISPATCH_LOCAL_DSQ_OFFLINE
- sched_ext: Add an event, SCX_EV_DISPATCH_KEEP_LAST
- sched_ext: Add an event, SCX_EV_ENQ_SKIP_EXITING
- sched_ext: Add an event, SCX_EV_BYPASS_ACTIVATE
- sched_ext: Add an event, SCX_EV_BYPASS_DISPATCH
- sched_ext: Add an event, SCX_EV_BYPASS_DURATION
- sched_ext: Add scx_bpf_events() and scx_read_event() for BPF schedulers
- sched_ext: Print core event count in scx_central scheduler
- sched_ext: Print core event count in scx_qmap scheduler
- sched_ext: Add an event, SCX_EV_ENQ_SLICE_DFL
- sched_ext: Print an event, SCX_EV_ENQ_SLICE_DFL, in scx_qmap/central
- tools/sched_ext: Compatible testing of SCX_ENQ_CPU_SELECTED
- tools/sched_ext: Update enum_defs.autogen.h
- sched_ext: Provides a sysfs ‘events’ to expose core event counters
- sched_ext: Change the event type from u64 to s64
- sched_ext: Add trace point to track sched_ext core events
Gavin Guo
Guilherme G. Piccoli
- x86/tsc: Always save/restore TSC sched_clock() on suspend/resume
- scripts: add script to extract built-in firmware blobs
Luis Henriques
Maíra Canal
- drm/v3d: Remove
v3d->cpu_job
- drm/vc4: Use DRM Execution Contexts
- drm/vc4: Use DMA Resv to implement VC4 wait BO IOCTL
- drm/vc4: Remove BOs seqnos
- drm/v3d: Fix Indirect Dispatch configuration for V3D 7.1.6 and later
- drm/v3d: Add job to pending list if the reset was skipped
Melissa Wen
- drm/amd/display: restore edid reading from a given i2c adapter
- drm/amd/display: Fix null check of pipe_ctx->plane_state for update_dchubp_dpp
- Revert “drm/amd/display: Hardware cursor changes color when switched to software cursor”
Ricardo Cañuelo Navarro
- sctp: detect and prevent references to a freed transport in sendmsg
- mm: fix copy_vma() error handling for hugetlb mappings
Rodrigo Siqueira
- Documentation/gpu: Add acronyms for some firmware components
- MAINTAINERS: Change my role from Maintainer to Reviewer
- mailmap: Add entry for Rodrigo Siqueira
Thadeu Lima de Souza Cascardo
- dlm: prevent NPD when writing a positive value to event_done
- char: misc: improve testing Kconfig description
- parisc: perf: use named initializers for struct miscdevice
- drm/amd/display: avoid NPD when ASIC does not support DMUB
- tpm: do not start chip while suspended
- i2c: cros-ec-tunnel: defer probe if parent EC is not present
- char: misc: register chrdev region with all possible minors
Tvrtko Ursulin
- dma-fence: Add a single fence fast path for fence merging
- dma-fence: Add some more fence-merge-unwrap tests
- drm/sched: Delete unused update_job_credits
- drm/sched: Remove weak paused submission checks
- drm/sched: Add helper to check job dependencies
- drm/imagination: Use the drm_sched_job_has_dependency helper
- drm/scheduler: Remove some unused prototypes
- drm/sched: Add internal job peek/pop API
- drm/amdgpu: Pop jobs from the queue more robustly
- drm/sched: Remove a hole from struct drm_sched_job
- drm/sched: Move drm_sched_entity_is_ready to internal header
- drm/sched: Move internal prototypes to internal header
- drm/sched: Group exported prototypes by object type
- drm/xe: Fix GT “for each engine” workarounds
- drm/xe/xelp: Move Wa_16011163337 from tunings to workarounds
- drm/xe/xelp: Add Wa_1604555607
- drm/xe/xelp: L3 recommended hashing mask
- drm/xe: Add performance tunings to debugfs
- drm/xe: Fix MOCS debugfs LNCF readout
- drm/xe: Fix ring flush invalidation
- drm/xe: Pass flags directly to emit_flush_imm_ggtt
- drm/xe: Use correct type width for alignment in fb pinning code
- drm/fdinfo: Protect against driver unbind
Reviewed (30)
André Almeida
- drm: Introduce device wedged event
- drm/doc: Document device wedged event
- selftests/futex: futex_waitv wouldblock test should fail
- drm: Fix potential overflow issue in event_string array
Christian Gmeiner
Iago Toral Quiroga
- drm/v3d: Fix Indirect Dispatch configuration for V3D 7.1.6 and later
- drm/v3d: Add job to pending list if the reset was skipped
Jose Maria Casanova Crespo
Luis Henriques
Maíra Canal
- drm/vkms: Switch to managed for connector
- drm/vkms: Switch to managed for encoder
- drm/sched: Use struct for drm_sched_init() params
- drm/v3d: Add clock handling
Melissa Wen
- drm/vc4: Use DRM Execution Contexts
- drm/vc4: Use DMA Resv to implement VC4 wait BO IOCTL
- drm/vc4: Remove BOs seqnos
Rodrigo Siqueira
- Documentation/gpu: remove duplicate entries in different glossaries
- drm/amd/display: change kzalloc to kcalloc in dcn30_validate_bandwidth()
- drm/amd/display: change kzalloc to kcalloc in dcn31_validate_bandwidth()
- drm/amd/display: change kzalloc to kcalloc in dcn314_validate_bandwidth()
- drm/amd/display: change kzalloc to kcalloc in dml1_validate()
- drm/amd/display: Remove incorrect macro guard
- drm/amd/display: avoid NPD when ASIC does not support DMUB
Thadeu Lima de Souza Cascardo
Tvrtko Ursulin
- dma-buf: add selftest for fence order after merge
- drm/i915/pmu: Drop custom hotplug code
- drm/file: Add fdinfo helper for printing regions with prefix
- drm/sched: Use struct for drm_sched_init() params
- drm/sched: drm_sched_job_cleanup(): correct false doc
- drm/xe/rtp: Drop sentinels from arg to xe_rtp_process_to_sr()
Tested (2)
Changwoo Min
Guilherme G. Piccoli
Acked (12)
Changwoo Min
- tool/sched_ext: Event counter dumping updates
- sched_ext: Count SCX_EV_DISPATCH_LOCAL_DSQ_OFFLINE in the right spot
- sched_ext: Add SCX_EV_ENQ_SKIP_MIGRATION_DISABLED
- sched_ext: Take NUMA node into account when allocating per-CPU cpumasks
- tools/sched_ext: Provide consistent access to scx flags
- sched_ext: Track currently locked rq
- sched_ext: Fix missing rq lock in scx_bpf_cpuperf_set()
Maíra Canal
Tvrtko Ursulin
- Documentation/gpu: Clarify format of driver-specific fidnfo keys
- drm/i915: Use device wedged event
- drm/doc: Document KUnit expectations
- drm/v3d: Add job to pending list if the reset was skipped