Linux 7.1 Released
Linux 7.1 Released
Linux 7.1 has been tagged and released, closing this development cycle with over 15,000 commits.
This second release in the 7.x cycle brings quite a few noteworthy things: a brand-new NTFS driver, proper battery metrics on MacBook laptops with the Apple SMC driver, and several improvements across the graphics and DRM stack. It also continues the ongoing cleanup of older and unmaintained drivers, dropping support for things like ISDN and ham radio. Notably, Linux 7.1 begins the process for retiring Intel 486 CPU support (“i486”) in the future. For more details and a full list of changes, check the corresponding KernelNewbies page.
As usual, Igalia has been busy contributing fixes and improvements to different areas during this release. Below are some of our highlights from this cycle.
Igalia Changelog
V3D and VC4 fixes and improvements
The V3D and VC4 drivers saw several robustness and maintainability improvements this cycle. As part of the Raspberry Pi 5 upstreaming effort, we added the V3D GPU device-tree node for BCM2712, enabling V3D support on fully upstream kernels.
We also continued improving the V3D interface by migrating performance monitor tracking from IDR to XArray in both V3D and VC4. In parallel, a series of fixes addressed reference counting, scheduler integration, cache synchroniztion, and error handling issues in V3D’s compute intrastructure, improving the stability of CPU job execution paths.
On the power-management side, we refined Raspberry Pi firmware clock handling by moving clock rate management into prepare/unprepare callbacks. These changes reduce unnecessary power consumption for clock users and lay the groundwork for V3D Runtime PM support, which will land in the next kernel release.
AMDGPU User Queue Cleanup
On the AMD side, we continued our efforts to clean up the user queue submission code. This cycle, we focused on removing resource leaks in the wait and signal ioctls, consolidating exit paths to prevent deadlocks, and ensuring that userspace cannot trivially trigger kernel warnings. These changes improve the overall security and stability of the amdgpu driver when interacting with complex user-space workloads.
AuxCCS Support for Intel Xe Driver
We finalized Alderlake support for AuxCCS (Auxiliary Color Compression Support) in the Intel Xe driver. This includes adding support for frame buffer modifiers, ensuring proper invalidation of auxiliary tables, and quiescing memory traffic during cache invalidation. These changes reduce the memory bandwith consumed by UI composition and graphical rendering, improving power efficiency and overall performance on this platform.
DMA-Fence improvements for module unload scenarios
Building on the cross-system dma-fence work we did for the 6.17 kernel release, we helped upstream extend this protection to module unload scenarios. We’ve also fixed warnings related to __rcu annotations to keep the codebase clean and static-analysis friendly.
Debugging Infrastructure improvements
For developers relying on pstore and ftrace, Linux 7.1 brings important fixes. Previously, systems with KASLR enabled would cause offsets saved in debug sessions to be bogus when decoded. This has been fixed along with other pstore improvements, and an improved debugfs interface for the reserve_mem parameter. These changes should provide better visibility into memory reservation states and improve the overall state of these subsystems for debugging kernel crashes or hangs.
Another round of general fixes and cleanup
Beyond the major subsystem updates, Igalia also helped with several “odd fixes” and general maintenance work to keep the kernel healthy.
In the filesystems area, we fixed a null pointer dereference in JFS during unmount and resolved an uninitialized value issue in the FUSE layer.
For Bluetooth, we reworked the reset path in the HCI core to ensure clean adapter teardown, preventing protocol issues caused by pending work.
On the peripherals side, we implemented proper URB tracking in the libertas Wi-Fi driver to prevent use-after-free issues, and added stricter validation checks for USBTMC endpoints.
We also investigated a data race in the Real Time Clock (RTC) subsystem reported by syzbot and detected by the Kernel Concurrency Sanitizer (KCSAN). The race was determined to be safe, and the code was annotated to prevent future false-positive reports.
Finally, we’ve improved documentation for ttm_bo_swapout and implemented the corresponding KUnit tests.
Authored (76)
Alberto Garcia
Guilherme G. Piccoli
- pstore/ramoops: Remove useless memblock header
- pstore/ramoops: Fix ECC parameter help text
- pstore/ftrace: Keep ftrace module parameter and debugfs switch in sync
- memblock: Print out errors on reserve_mem parser
- memblock: Add reserve_mem debugfs info
- pstore/ftrace: Factor KASLR offset in the core kernel instruction addresses
- ASoC: amd: acp: Add DMI quirk for Valve Steam Deck OLED
Heitor Alves de Siqueira
- wifi: libertas: use USB anchors for tracking in-flight URBs
- wifi: libertas: don’t kill URBs in interrupt context
- usb: usbtmc: check URB actual_length for interrupt-IN notifications
- usb: usbtmc: reject interrupt endpoints with small wMaxPacketSize
- Bluetooth: hci_core: Rework hci_dev_do_reset() to use hci_sync functions
- Bluetooth: hci_sync: Set HCI_CMD_DRAIN_WORKQUEUE during device close
- Bluetooth: hci_sync: Reset device counters in hci_dev_close_sync()
Helen Koike
- jfs: hold LOG_LOCK on umount to avoid null-ptr-deref
- debugobjects: Do not fill_pool() if pi_blocked_on
Luis Henriques
- fuse: drop unnecessary argument from fuse_lookup_init()
- fuse: fix uninit-value in fuse_dentry_revalidate()
Mauricio Faria de Oliveira
Maíra Canal
- drm/panel: ilitek-ili9882t: Select DRM_DISPLAY_DSC_HELPER
- drm/v3d: Replace IDR with XArray for perfmon tracking
- drm/vc4: Replace IDR with XArray for perfmon tracking
- drm/v3d: Handle error from drm_sched_entity_init()
- drm/v3d: Remove dedicated fence_lock
- arm64: dts: broadcom: bcm2712: Add V3D device node
- clk: bcm: rpi: Manage clock rate in prepare/unprepare callbacks
- pmdomain: bcm: bcm2835-power: Replace open-coded polling with readl_poll_timeout_atomic()
- clk: bcm: rpi: Mark VEC clock as CLK_IGNORE_UNUSED
- drm/etnaviv: Fix armed job not being pushed to the DRM scheduler
- drm/v3d: Fix use-after-free of CPU job query arrays on error path
- drm/v3d: Release indirect CSD GEM reference on CPU job free
- drm/v3d: Wait for pending L2T flush before cleaning caches
- drm/v3d: Fix vaddr leak when indirect CSD has zeroed workgroups
- drm/v3d: Skip CSD when it has zeroed workgroups
- drm/v3d: Fix global performance monitor reference counting
Melissa Wen
- drm/drm_atomic: duplicate colorop states if plane color pipeline in use
- drm/colorop: make lut(1/3)d_interpolation props correctly behave as mutable
- drm/atomic: track individual colorop updates
- drm/amd/display: use plane color_mgmt_changed to track colorop changes
Thadeu Lima de Souza Cascardo
- drm/ttm: document that ttm_bo_swapout deals with pages
- drm/ttm/tests: add a test to exercise ttm_bo_swapout
- cgroup/dmem: remove region parameter from dmemcg_parse_limit
- drm/vram: remove DRM_VRAM_MM_FILE_OPERATIONS from docs
Tvrtko Ursulin
- drm/xe/xelp: Fix Wa_18022495364
- dma-fence: Fix sparse warnings due __rcu annotations
- drm/amdgpu: Remove a few holes from struct amdgpu_ctx
- drm/amdgpu: Remove duplicate struct member
- drm/amdgpu/userq: Use memdup_array_user in amdgpu_userq_wait_ioctl
- drm/amdgpu/userq: Use memdup_array_user in amdgpu_userq_signal_ioctl
- drm/amdgpu/userq: Fix reference leak in amdgpu_userq_wait_ioctl
- drm/amdgpu/userq: Do not allow userspace to trivially triger kernel warnings
- drm/amdgpu/userq: Consolidate wait ioctl exit path
- drm/amdgpu/userq: Use drm_gem_objects_lookup in amdgpu_userq_signal_ioctl
- drm/amdgpu/userq: Use drm_gem_objects_lookup in amdgpu_userq_wait_ioctl
- drm/amdgpu: Reject impossible entities early
- drm/amdgpu: Remove redundant missing hw ip handling
- drm/v3d: Use raw seqcount helpers instead of fighting with lockdep
- drm/v3d: Refcount v3d_stats
- drm/v3d: Hold v3d_stats references in each job
- drm/v3d: Attach per-fd reset counters to v3d_stats
- drm/xe: Rename XE_BO_FLAG_SCANOUT to XE_BO_FLAG_FORCE_WC
- drm/xe: Use write-combine mapping when populating DPT
- drm/xe/xelpg: Limit AuxCCS ring buffer programming to Alderlake
- drm/xe/xelp: Quiesce memory traffic before invalidating AuxCCS
- drm/xe/xelp: Wait for AuxCCS invalidation to complete
- drm/xe: Move aux table invalidation to ring ops
- drm/xe/xelp: Add AuxCCS invalidation to the indirect context workarounds
- drm/xe/display: Move remapped plane loop out of __xe_pin_fb_vma_dpt
- drm/xe/display: Change write_dpt_remapped_tiled function signature
- drm/xe/display: Respect remapped plane alignment
- drm/xe/display: Add support for AuxCCS
- drm/xe/xelp: Expose AuxCCS frame buffer modifiers on Alderlake-P
- drm/gem: Improve drm_gem_objects_lookup() kerneldoc
- dma-fence: Silence sparse warning in dma_fence_describe
- drm/xe/xelp: Fix Wa_18022495364
Co-developed (4)
Maíra Canal
- drm/v3d: Use raw seqcount helpers instead of fighting with lockdep
- drm/v3d: Refcount v3d_stats
- drm/v3d: Hold v3d_stats references in each job
- drm/v3d: Attach per-fd reset counters to v3d_stats
Reviewed (45)
Iago Toral Quiroga
- drm/v3d: Replace IDR with XArray for perfmon tracking
- drm/vc4: Replace IDR with XArray for perfmon tracking
- drm/v3d: Handle error from drm_sched_entity_init()
- drm/v3d: Use raw seqcount helpers instead of fighting with lockdep
- drm/v3d: Refcount v3d_stats
- drm/v3d: Hold v3d_stats references in each job
- drm/v3d: Attach per-fd reset counters to v3d_stats
- drm/v3d: Remove dedicated fence_lock
- drm/v3d: Fix use-after-free of CPU job query arrays on error path
- drm/v3d: Release indirect CSD GEM reference on CPU job free
- drm/v3d: Wait for pending L2T flush before cleaning caches
- drm/v3d: Fix vaddr leak when indirect CSD has zeroed workgroups
- drm/v3d: Skip CSD when it has zeroed workgroups
- drm/v3d: Fix global performance monitor reference counting
Maíra Canal
- drm/vc4: Switch private_obj initialization to atomic_create_state
- drm/vc4: hdmi: replace use of system_wq with system_percpu_wq
- drm/vc4: Test for imported buffers with drm_gem_is_imported()
- drm/atomic: Remove state argument to drm_atomic_private_obj_init
Melissa Wen
- drm/amd/display: Use mpc.preblend flag to indicate 3D LUT
- drm/amd/display: Enable DEGAMMA and reject COLOR_PIPELINE+DEGAMMA_LUT
- drm/amdgpu: Fix kernel-doc comments for some LUT properties
- drm/amd/display: Fix gamma 2.2 colorop TFs
Rodrigo Siqueira
- drm/amd/display: Use dce_audio_create for DCE 6
- drm/amd/display: Delete unused dce_clk_mgr.c
- drm/amd/display: Remove unused dce60_clk_mgr register definitions
- drm/amd/display: Handle DCE 6 in dce_clk_mgr.c
Tvrtko Ursulin
- drm/v3d: Replace IDR with XArray for perfmon tracking
- drm/vc4: Replace IDR with XArray for perfmon tracking
- dma-buf: add dma_fence_was_initialized function v2
- drm/gem: Make drm_gem_objects_lookup() self-cleaning on failure v6
- dma-buf: protected fence ops by RCU v8
- dma-buf: detach fence ops on signal v3
- dma-buf: abstract fence locking v2
- dma-buf/selftests: test RCU ops and inline lock v2
- dma-buf: use inline lock for the stub fence v2
- dma-buf: use inline lock for the dma-fence-array
- dma-buf: use inline lock for the dma-fence-chain
- drm/tests: Mark slow tests as slow
- drm/i915: Test for imported buffers with drm_gem_is_imported()
- drm/ttm/tests: add a test to exercise ttm_bo_swapout
- drm/amdgpu/userq: Use kvfree instead of kfree in amdgpu_userq_wait_ioctl
- drm/amdgpu/userq: Use kvfree instead of kfree in amdgpu_userq_signal_ioctl
- drm/amdgpu/userq: fix dma_fence refcount underflow in userq path
- drm/amdgpu: Move amdgpu_vm_is_bo_always_valid() before first use
- drm/i915/gem: Fix phys BO pread/pwrite with offset
Tested (4)
Guilherme G. Piccoli
Melissa Wen
Umang Jain
Reported (1)
Tvrtko Ursulin
Maintainer SoB (7)
Christian Gmeiner
Maíra Canal
- drm/vc4: hdmi: replace use of system_wq with system_percpu_wq
- drm/vc4: platform_get_irq_byname() returns an int
- drm/v3d: Reject empty multisync extension to prevent infinite loop
- drm/vc4: fix krealloc() memory leak