Po dwóch miesiącach pracy Linus Torvalds zaprezentował wydanie jądra Linux 7.3. Do najbardziej zauważalnych zmian należy mechanizm izolacji systemu plików oparty na pseudo-systemie plików failfs i wywołaniu systemowym fchroot(), wsparcie dla tworzenia zagnieżdżonych planistów SCHED_EXT, uruchamianie plików wykonywalnych za pomocą BPF, alternatywne strumienie danych w NTFS3, optymalizacje wydajności FUSE, Btrfs i Ext4, wsparcie dla Apple Time Machine w ksmbd, usunięcie systemów plików EFS i FreeVxFS, tryb dostępu bezpośredniego do urządzeń blokowych, poprawa obsługi braku pamięci wideo, śledzenie odwołań do pamięci systemu gościa za pomocą userfaultfd, kompresja reguł AppArmor, ograniczenie dostępu do AF_ALG, wsparcie dla chipów Apple M3 Pro, Max i Ultra.
W nowej wersji uwzględniono 20260 poprawek od 3171 programisty, z których 807 po raz pierwszy przesłało swoje zmiany do jądra. Rozmiar łatki wynosi 63 MB (zmiany dotyczyły 14923 plików, dodano 943849 linii kodu,
usunięto 297515 linii). W poprzednim wydaniu było 17833 poprawek od 2766 programistów, rozmiar łatki wynosił 68 MB. Około 44% wszystkich zmian w 7.3 dotyczyło sterowników urządzeń, około 12% zmian związanych było z aktualizacją kodu specyficznego dla architektur sprzętowych, 12% dotyczyło stosu sieciowego, 5% dotyczyło systemów plików, a 3% wewnętrznych podsystemów jądra.
Główne nowości w jądrze 7.3 (1, 2, 3):
- Podsystem dyskowy, wejście/wyjście i systemy plików
- Zoptymalizowano wydajność systemu plików Btrfs. Dla nośników nie-SSD usunięto niepotrzebne opóźnienie, co doprowadziło do pięciokrotnego zwiększenia przepustowości dla obciążeń intensywnie wykorzystujących funkcję fsync, takich jak zapis logów. W fsync wyłączono określanie pustek w plikach z dużą liczbą ekstensji i bez pustek, co przyspieszyło wykonanie niektórych specyficznych testów pięciokrotnie.
Podczas śledzenia niecache'owanych buforów ekstensji struktura xarray została zastąpiona lokalną listą LRU, co przyczyniło się do trzykrotnego zwiększenia wydajności tych operacji. Usunięto spadki wydajności podczas korzystania z trybu bezpośredniego we/wy, spowodowane regresjami w poprzednich wydaniach jądra. Zredukowano blokady przy wstępnym czytaniu ekstensji, co zmniejszyło koszty przy dostępie różnych zadań do nakładających się obszarów.
- W Btrfs usunięto wsparcie dla pierwszej wersji cache z informacjami o wolnym miejscu. Systemy plików utworzone na starszych systemach muszą być przekształcone na drugą wersję cache za pomocą narzędzia btrfstune, w przeciwnym razie będą działały wolniej. Usunięto również opcję montowania „usebackuproot”, którą należy zastąpić „rescue=usebackuproot”.
- W systemie plików Ext4 poprawiono wydajność równoległych operacji zapisu przy użyciu bezpośredniego wejścia/wyjścia (Direct I/O) oraz przyspieszono rezerwację pustych obszarów za pomocą wywołania fallocate(). Usunięto regresję, która obniżała wydajność podczas buforowanego zapisu.
- W systemie plików Ext4 tryb montowania „data=journal” został uznany za przestarzały. Wsparcie dla tej opcji montowania planowane jest do zakończenia w 2028 roku. Opcja „data=journal” włącza tryb pełnego journalingu, w którym do dziennika zapisywane są nie tylko metadane, ale również same dane, co zapewnia wysoką odporność w przypadku awarii, lecz komplikuje utrzymanie kodu i prowadzi do znacznego obniżenia wydajności w porównaniu do trybów „data=ordered” i „data=writeback”.
- Usunięto system plików EFS, który był stosowany w wczesnych wersjach systemu operacyjnego IRIX, zaprzestano go używać około 30 lat temu i od ponad 20 lat nie jest on wspierany. Dla tych, którzy potrzebują dostępu do partycji z EFS, istnieją narzędzia działające w przestrzeni użytkownika.
- Usunięto system plików FreeVxFS, realizujący format systemu plików VERITAS VxFS, stosowany w SCO UnixWare w latach 90-tych i od dawna nieużywany w praktyce.
- W mechanizmie tworzenia systemów plików w przestrzeni użytkownika FUSE poprawiono wydajność i zmniejszono zużycie pamięci przy użyciu systemu asynchronicznego wejścia/wyjścia io_uring. Przyspieszenie uzyskano dzięki dodaniu możliwości przesyłania pul buforów z przestrzeni użytkownika do jądra oraz wykluczeniu zbędnego buforowania (zero-copy) podczas dostępu serwera FUSE do stron pamięci procesu klienckiego lub do pamięci podręcznej stron.
- Dla urządzeń blokowych wprowadzono flaga RWF_DONTCACHE, podobną do trybu bezpośredniego wejścia/wyjścia.
(Direct I/O), który można wykorzystać w funkcjach preadv2() i pwritev2() lub w zapytaniach o odczyt i zapis przez io_uring, aby uzyskać dostęp do urządzenia blokowego z pominięciem pamięci podręcznej stron. Na przykład flaga może być stosowana w DBMS do niskopoziomowej pracy z urządzeniami blokowymi. - W systemie plików overlayfs dodano wsparcie dla mapowania identyfikatorów użytkowników, stosowane w celu dopasowania plików danego użytkownika w zamontowanej obcej partycji z innym użytkownikiem w bieżącym systemie.
- Poprawiono wsparcie dla montowania wielu systemów plików z jednego urządzenia blokowego.
- W sterowniku ntfs3 wdrożono wstępne wsparcie dla alternatywnych strumieni danych, dzielonych przez dwukropek w nazwie pliku. Aby utworzyć nowy alternatywny strumień, można użyć polecenia 'touch file:strumień', aby go odczytać — 'cat file:strumień', aby go usunąć — 'rm file:strumień', aby wyświetlić dostępne strumienie — 'cat file:query_streams'.
- W nowej implementacji NTFS (ntfsplus) w trybie tylko do odczytu dodano wsparcie dla technologii transparentnego kompresowania plików z wykorzystaniem filtrów nakładkowych WOF (Windows Overlay Filter).
- W serwerze NFS dodano wsparcie dla operacji CB_NOTIFY, pozwalającej klientowi na cachowanie metadanych katalogów po swojej stronie, otrzymując powiadomienia o zmianach od serwera.
- W systemie plików F2FS dodano wsparcie dla dynamicznego (bez odmontowywania systemu plików) usuwania partycji z wspólnego puli z automatycznym przenoszeniem danych do innych partycji i ich powrotem (na przykład można tymczasowo wycofać urządzenie do innych celów).
- W XFS dodano wsparcie dla flagi FALLOC_FL_WRITE_ZEROES w wywołaniu systemowym fallocate(), co pozwala na wypełnienie zerami określonego zakresu w pliku, wykorzystując wspieraną przez niektóre napędy SSD komendę WRITE_ZERO, która wykonuje zerowanie bez operacji wejścia/wyjścia.
- Zoptymalizowano wydajność systemu plików Btrfs. Dla nośników nie-SSD usunięto niepotrzebne opóźnienie, co doprowadziło do pięciokrotnego zwiększenia przepustowości dla obciążeń intensywnie wykorzystujących funkcję fsync, takich jak zapis logów. W fsync wyłączono określanie pustek w plikach z dużą liczbą ekstensji i bez pustek, co przyspieszyło wykonanie niektórych specyficznych testów pięciokrotnie.
- Pamięć i usługi systemowe
- Poprawiono obsługę braku pamięci wideo. W sytuacji wyczerpania dostępnej pamięci wideo jądro teraz próbuje przenieść bufory aplikacji, które nie mają gwarantowanej kwoty pamięci (dmem cgroup), z pamięci wideo do pamięci systemowej (GTT), zamiast od razu odmawiać przydziału pamięci wideo. Takie podejście zapewnia przydzielenie zasobów aplikacji, dla której system zarezerwował określoną ilość pamięci wideo, nawet jeśli pamięć już została przydzielona innym aplikacjom. Wcześniej, gdy aplikacji bez kwot już przydzielono pamięć wideo, w sytuacji braku pamięci wideo aplikacja z gwarantowanymi kwotami nie mogła jej uzyskać, a zamiast pamięci wideo przez podsystem TTM (Translation Table Maps) przydzielano jej wolniejszą pamięć systemową, adresowaną z GPU (GTT).
Wsparcie dla dmem cgroup zostało wdrożone dla sterowników nouveau, xe oraz amdgpu. - W mechanizmie SCHED_EXT, który pozwala na wykorzystanie BPF do tworzenia planistów CPU, zakończono prace nad możliwością tworzenia zagnieżdżonych planistów (sub-scheduler), dzięki którym dla każdej cgroup można wykorzystać własny planer zadań.
- Do planisty zadań wprowadzono ulepszenia związane z obsługą cgroup oraz rozwiązaniami problemów z przydzielaniem wag, które powodowały dodatkowe koszty i opóźnienia. Zaproponowano kilka metod przydzielania wag dla cgroup — 'up', 'max', 'concur' i 'tasks', ustawianych przez parametr cgroup_mode. Wykorzystano jedną kolejkę wykonania (runqueue) do planowania zadań wewnątrz cgroup. Skrócono opóźnienia w planowaniu zadań, którym przydzielane są krótkie kwanty czasu procesora, dzięki
możliwości w razie potrzeby anulowania, aktualizowania lub minimalizowania czasu wykonywania zadań, chronionych przed wypychaniem. - W mechanizmie binfmt_misc (\/proc\/sys\/fs\/binfmt_misc) wdrożono
możliwość podłączenia obsługi BPF do dodawania wsparcia dla nowych formatów plików wykonywalnych. Zmiana umożliwia programowe analizowanie typu pliku wykonywalnego w chwili każdego uruchomienia oraz wybieranie dla niego interpretera lub dynamicznego ładowacza bez użycia hacków takich jak narzędzie patchelf i skryptowych nakładek. Na przykład, w programie BPF można definiować pliki wykonywalne dla innych architektur lub platform oraz uruchamiać odpowiednie emulatory lub Wine, a także uprościć organizację uruchamiania plików wykonywalnych w pakietach zainstalowanych w różnych katalogach w systemach z menedżerem pakietów Nix. - Kontynuowano przenoszenie zmian z gałęzi Rust-for-Linux związanych z wykorzystaniem języka Rust jako drugiego języka do tworzenia sterowników i modułów jądra (wsparcie dla Rust nie jest aktywne domyślnie i nie prowadzi do włączenia Rust jako obowiązkowego zależności budowlanej jądra). Pojawiła się możliwość użycia Rust dla architektury PowerPC. Zrealizowano: moduł do bezstratnych przekształceń całkowitych, tryb zafałszowanego logowania wartości wskaźników w celu zapobiegania wyciekowi informacji o przestrzeni adresowej, opakowanie nad funkcją synchronize_rcu(), bariery pamięci, moduł interrupt do włączania/wyłączania przerwań, typy dla wejścia/wyjścia, opakowania nad fwctl, mechanizm SRCU (sleepable read-copy-update), opakowania nad gem shmem,
spinlocki typu SpinLockIrq, które nie dopuszczają przerwań w krytycznych sekcjach. - Dodano parametr sysctl syscall_user_dispatch do zarządzania włączaniem trybu dispatchingu systemowych wywołań w przestrzeni użytkownika, umożliwiający jednemu procesowi przechwytywanie systemowych wywołań innego procesu (stosowane w Wine do emulacji systemowych wywołań Windows).
- W BPF dodano funkcję bpf_sock_read_xattr(), dzięki której programy BPF mogą odczytywać ustawiane przez użytkownika rozszerzone atrybuty
(user.*) z inode soketów. W aplikacjach BPF pojawiła się możliwość definiowania zmiennych globalnych związanych z CPU. W weryfikatorze programów BPF dostarczono dodatkowe informacje o zidentyfikowanych błędach, ułatwiające określenie przyczyn problemów. - W mechanizmach śledzenia kprobes, uprobes i fprobes wprowadzono wsparcie dla konwersji typów, wykorzystując dane BTF (BPF Type Format) zawierające informacje do sprawdzania typów w pseudokodzie BPF, a także usprawniono wydobywanie informacji o zmiennych.
- W subsystemie DAMON (Data Access MONitor), który umożliwia monitorowanie dostępu procesów do danych w pamięci RAM (np. można ustalić, do jakich obszarów pamięci uzyskiwał dostęp proces, a które obszary pamięci pozostały nieużywane), dodano możliwość monitorowania zmian atrybutów danych (pamięć anonimowa, pliki mapowane w pamięci, dostęp tylko do odczytu, brak odwołań do pamięci itp.).
- W mechanizmie KHO (Kexec HandOver), stosowanym do uruchamiania nowego jądra z poprzedniego bez utraty stanu systemu, uwzględniono alokację dużych stron pamięci (huge pages) podczas rozruchu. Takie strony pamięci są teraz oznaczane i przechowywane po uruchomieniu nowego jądra.
- Kod niskopoziomowy systemu swap został przeniesiony do nowej niskopoziomowej struktury danych swap_ops, co uprościło konserwację kodu i wprowadziło abstrakcje, które będą potrzebne do rozszerzenia funkcjonalności w przyszłości.
- Dodano komendy ioctl ALLOCINFO_IOC_CONTENT_ID, ALLOCINFO_IOC_GET_AT i ALLOCINFO_IOC_GET_NEXT, które umożliwiają selektywne przekazywanie danych profilowania alokacji pamięci do przestrzeni użytkownika. W porównaniu z wcześniej dostępnym interfejsem /proc/allocinfo, proponowane wywołania ioctl pozwalają na zwiększenie wydajności zapytań profilowania nawet 20 razy dzięki filtracji zbędnych danych.
- Poprawiono obsługę braku pamięci wideo. W sytuacji wyczerpania dostępnej pamięci wideo jądro teraz próbuje przenieść bufory aplikacji, które nie mają gwarantowanej kwoty pamięci (dmem cgroup), z pamięci wideo do pamięci systemowej (GTT), zamiast od razu odmawiać przydziału pamięci wideo. Takie podejście zapewnia przydzielenie zasobów aplikacji, dla której system zarezerwował określoną ilość pamięci wideo, nawet jeśli pamięć już została przydzielona innym aplikacjom. Wcześniej, gdy aplikacji bez kwot już przydzielono pamięć wideo, w sytuacji braku pamięci wideo aplikacja z gwarantowanymi kwotami nie mogła jej uzyskać, a zamiast pamięci wideo przez podsystem TTM (Translation Table Maps) przydzielano jej wolniejszą pamięć systemową, adresowaną z GPU (GTT).
- Wirtualizacja i bezpieczeństwo
- Zaprezentowano nowy mechanizm izolacji, który blokuje dostęp do zawartości systemu plików, z wyjątkiem zasobów jawnie przekazywanych do środowiska sandbox przez deskryptory plików. Mechanizm ten został zrealizowany za pomocą pseudo-systemu plików failfs i wywołania systemowego fchroot.
Pseodo-FS failfs przypomina FS nullfs, ale w przeciwieństwie do niej wprowadza zasadę „nic nie jest wspierane” zamiast „nic nie jest przechowywane”. Taka właściwość uniemożliwia montowanie czegokolwiek na failfs, klonowanie FS oraz monitorowanie stanu za pomocą statmount(), listmount(), /proc//mountinfo i /proc/filesystems. Jeśli katalog główny lub roboczy procesu znajduje się w failfs, to blokowane są wszelkie próby nawigacji po FS z wykorzystaniem bezwzględnych ścieżek plików, linków symbolicznych i względnych ścieżek uzależnionych od bieżącego katalogu roboczego. Proces ma jedynie możliwość odnoszenia się do określonego katalogu za pomocą deskryptorów plików otwartych przed izolacją.
Aby przejść do nowego trybu izolacji, dodano wywołanie systemowe fchroot, podobne do wywołania chroot, ale działające na poziomie deskryptorów plików. W wywołaniach systemowych fchdir dodano flagę FD_FAILFS_ROOT w celu przeniesienia katalogu roboczego procesu do FS failfs.
Podobna flaga jest dostępna w wywołaniu systemowym fchroot. - Dodano możliwość monitorowania dostępu do pamięci systemu gościa za pomocą mechanizmu userfaultfd, który umożliwia tworzenie handlerów dla odwołań do niewydzielonych lub chronionych stron pamięci w przestrzeni użytkownika. W praktyce oferowana możliwość pozwala hyperwizorowi określać strony pamięci, do których w wirtualnej maszynie nie było odwołań, w celu ich przeniesienia do wolniejszej pamięci lub zewnętrznego magazynu. W celu monitorowania naruszeń ustawionego zakazu odczytu i zapisu w monitorowanej przestrzeni pamięci dodano flagę UFFDIO_REGISTER_MODE_RWP, która może być używana jako wydajniejszy odpowiednik zastosowania mprotect(PROT_NONE) wraz z handlerem sygnału, generowanego przy odwołaniu do pamięci, dla której ustawiono zakaz odczytu i zapisu (w przypadku userfaultfd generowane jest wyjątek, który jest przetwarzany w przestrzeni użytkownika). Zmiana przygotowana przy pomocy AI („Assisted-by: Claude:claude-opus-4-6”).
- Wzmocniono rozdzielenie między wątkami jądra (kthread) a procesem init (PID 1). Wcześniej wątkami jądra i w PID 1 wspólnie wykorzystywano wspólny stan systemu plików.
co umożliwia przez wywołanie pivot_root() nadpisanie stanu FS dla wszystkich wątków jądra. W nowej wersji w PID 1 zaangażowana jest całkowicie oddzielna struktura fs_struct, a wątki jądra są izolowane w osobnym punkcie montowania z nullfs. - Do wbudowanej biblioteki kryptograficznej (libcrypto) dodano wsparcie dla trybów szyfrowania AES — ECB, CBC, CBC-CTS, CTR, XCTR, XTS, GCM i CCM.
- W systemie mandatowego zarządzania dostępem AppArmor wdrożono możliwość ładowania skompresowanych zestawów reguł oraz dodano tryb audytu.
- Dodano parametr sysctl af_alg_restrict, kontrolujący włączenie dostępu do kryptograficznego API AF_ALG z przestrzeni użytkownika. AF_ALG pozwala na wykorzystanie sprzętowych akceleratorów do obliczeń kryptograficznych w Crypto API jądra, ale stosowane jest w dość specyficznych sytuacjach i nie zawsze daje zwiększoną wydajność w porównaniu do realizacji przyspieszenia w przestrzeni użytkownika. Przy tym w związanych z AF_ALG obsługach zidentyfikowano szereg luk zabezpieczeń, takich jak Copy Fail, które umożliwiają modyfikację danych w pamięci podręcznej stron. W celu zmniejszenia powierzchni ataku dostęp do AF_ALG jest domyślnie częściowo ograniczony. Rozważana jest możliwość usunięcia AF_ALG w jednej z przyszłych wersji.
- Zaostrzono weryfikację programów BPF, sygnowanych podpisem cyfrowym. Dodano sprawdzenie integralności metadanych programu BPF przed jego załadowaniem.
- Do wywołania systemowego landlock_restrict_self(), stosowanego do aktywacji blokad Landlock, dodano flagę
LANDLOCK_RESTRICT_SELF_NO_NEW_PRIVS, która uniemożliwia bieżącemu procesowi uzyskanie jakichkolwiek nowych przywilejów. Mechanizm Landlock pozwala nieuprzywilejowanym programom na rezygnację z niepotrzebnych przywilejów, dobrowolnie ograniczając ich dalszy dostęp do systemu w celu zwiększenia bezpieczeństwa, na przykład w celu ochrony przed próbami wykorzystania luk w programie. - W sterowniku VirtIO-GPU, zapewniającym działanie wirtualnego GPU, dodano wsparcie dla trybu uśpienia S4 (hibernacja).
- Zaprezentowano nowy mechanizm izolacji, który blokuje dostęp do zawartości systemu plików, z wyjątkiem zasobów jawnie przekazywanych do środowiska sandbox przez deskryptory plików. Mechanizm ten został zrealizowany za pomocą pseudo-systemu plików failfs i wywołania systemowego fchroot.
- Subsystem sieciowy
- W ksmbd, wbudowany w jądro serwera dla protokołu SMB, dodano wsparcie dla rozszerzeń Apple Time Machine do przechowywania kopii zapasowych tworzonych w macOS przez tę aplikację. Zrealizowano mechanizm izolacji sekwencji poleceń SMB związany z MessageId, aby zablokować ataki poprzez wysyłanie nieprawidłowych lub zduplikowanych żądań. Dodano wsparcie dla ponownego wysyłania żądań przez protokół SMB3 bez zakłócania stanu sesji, jeśli poprzednie żądanie zostało utracone. W SMB3 wprowadzono możliwość szyfrowania na poziomie poszczególnych współdzielonych zasobów (share). Dodano wsparcie dla szyfrowania kanału komunikacyjnego SMB Direct, wykorzystującego technologię RDMA (Remote Direct Memory Access).
- Zrealizowano możliwość korzystania z pakietów TCP z rozszerzeniem BIG TCP, które umożliwia zwiększenie maksymalnego rozmiaru pakietu TCP do 4 GB, w tunelach UDP opartych na protokołach VXLAN i GENEVE.
- Dodano wsparcie dla protokołu MCTP (Management Component Transport Protocol) przez USB (MCTP-over-USB 1.1).
- Zapewniono możliwość wyłączania (unregistration) urządzeń sieciowych (netkit, veth, vxcan, bareudp, geneve, ipvlan, macvlan itd.) dla wybranych przestrzeni nazw.
- Dla Bluetooth 6.2+ zrealizowano wsparcie dla mechanizmu SCI (Shorter Connection Interval) w celu zmniejszenia opóźnień podczas transmisji danych w trybie Bluetooth LE (Low Energy).
- W API nl80211 dodano zunifikowany mechanizm (NL80211_CMD_PROBE_PEER) do sprawdzania połączonych peerów, działający zarówno w punktach dostępu bezprzewodowego, jak i po stronie klienta.
- Sprzęt
- Ogłoszono ostatecznie przestarzałymi i planowanymi do usunięcia w jądrze 7.5 stare platformy ARM, które są niemal nieużywane i utrudniają utrzymanie aktualnych podsystemów. Do usunięcia planuje się około 55 tysięcy linii kodu związanego z obsługą platform sa1100, omap24xx, i.MX31, samv7, lpc18xx, riscpc, axxia, footbridge, starych płyt pxa, orion, dove i mv78xx0, chipów bez jednostki zarządzania pamięcią (MMU) oraz mikrokontrolerów stm32f4/f7/h7.
- Dodano wstępne wsparcie dla chipów Apple M3 Pro, Max i Ultra. Zrealizowano zarządzanie stanem zużycia energii dla SoC Apple.
- W podsystemie DRM (Direct Rendering Manager) dodano właściwość 'color format', która pozwala użytkownikowi na przełączanie formatu reprezentacji koloru dla urządzenia wyjściowego. Właściwość ta została zrealizowana dla sterowników GPU i915 (HDMI, DP), amdgpu (HDMI, DP) oraz rockchip (HDMI). Do testowania można użyć komendy w formie 'modetest -s 115:1920×1080-60@NV12 -w 115:'color format':4', w której 115 to identyfikator złącza, a '4' to numer formatu YUV420.
- W sterowniku amdgpu dodano obsługę modyfikatorów DRM dla GPU AMD serii GFX6-8 (Southern Islands, Sea Islands i Volcanic Islands). Wprowadzono wstępną obsługę DCN 6.0.0 (Display Core Next). Przeprowadzono czyszczenie przestarzałego kodu.
Włączono obsługę CACP (Content Adaptive Contrast and Power), co pozwala na zmniejszenie zużycia energii przez panele OLED. Dla silników wyświetlaczy opartych na architekturze DCN4 dodano wsparcie dla mechanizmu IPS (Idle Power State) w celu redukcji zużycia energii podczas nieaktywności. Dodano wsparcie dla kart graficznych AMD Barco. - W sterowniku i915 przerobiono kod służący do określania możliwości i przywracania stanu złączy DisplayPort. Dla GPU Novalake (NVL) dodano wsparcie CMTG (Common mode timing generator) oraz DC3DO (Display C3 z Clock Off).
- Kontynuowane są prace nad sterownikiem drm (Direct Rendering Manager) Xe dla GPU opartego na architekturze Intel Xe, stosowanej w kartach graficznych Intel z rodziny Arc oraz w grafice zintegrowanej, zaczynając od procesorów Tiger Lake. Dodano nowe identyfikatory wspieranych urządzeń. W configfs zrealizowano atrybut 'enable_multi_queue' do wyłączenia jednoczesnego użycia wielu kolejek przesyłania komend. Ulepszono wsparcie dla przejścia w tryb uśpienia.
- Kontynuowana jest integracja komponentów sterownika Nova dla GPU NVIDIA wyposażonych w oprogramowanie GSP, stosowanym od serii NVIDIA GeForce RTX 2000 opartej na mikroarchitekturze Turing. Sterownik napisano w języku Rust. W nowej wersji nastąpiła aktualizacja do nowych obrazów oprogramowania TLV, zamiast wcześniejszych wersji używanych w sterowniku Nouveau. Dodano wsparcie
uruchamiania oprogramowania dla chipu GSP (GPU System Processor) z włączonym vGPU. Dodano API do uzyskiwania informacji o rozmiarze pamięci wideo. - W sterowniku Tyr, napisanym w języku Rust i odpowiedzialnym za obsługę GPU ARM Mali, dodano możliwość ładowania oprogramowań w formacie Mali CSF, aktywacji pamięci wirtualnej GPU oraz uruchamiania MCU.
- W sterowniku msm dodano wsparcie dla GPU Adreno Shikra (A704) i Eliza (722).
- Dodano wsparcie dla urządzeń audio i ASoC: Pioneer DJ DJM-S11,
AW88399 (Lenovo Legion Pro), AW88399 (Lenovo Legion), Lisuan, ALC235, RME HDSPe AIO, RT766/RT767 SDCA, Maili, Hawi, CS35L62 (SoundWire), RT766/RT767 VA1. - Dodano wsparcie dla Steam Controller (model z 2026 roku); myszy Logitech G502 X Plus i G502 X Lightspeed; klawiatur Endorfy Thock TKL, Zenbook A16; zestawów słuchawkowych Nova 5X, Nova 7 oraz Arctis 7; kierownicy wyścigowej Turtle Beach VelocityOne Race; kontrolera MSI Claw.
- Ulepszono wsparcie dźwięku na urządzeniach ASUS VivoBook M515DA/X515DAP.
LG gram 16 (16Z90TR), Minisforum AI X1 Pro, HP Pavilion 15-eh2xxx, HP Laptop 15-dy0xxx oraz HP Spectre x360 16-aa0xxx, HP EliteBook 6 G1, HP OmniBook X Flip 14, Lenovo Yoga Pro 7, Huawei Matebook,
ThinkPad X1 Carbon 6. generacji, HP ProBook 440 G5, Acer Aspire A515-57. - Dodano wsparcie dla smartfonów, tabletów i laptopów: Motorola Edge 30, Motorola Moto G2, Xiaomi 12 Lite 5G, Microsoft Surface Pro, Honor MagicBook art 1412in, Sony Xperia M2, Vicharak Axon, Axon Mini i Vaaman2, Asus Zenbook A16, Lenovo Thinkedge se70.
- Dodano wsparcie dla platform ARM i SoC Samsung Exynos 1580 (używany w flagowych smartfonach od 2024 roku), Orange Pi 5 pro, Sophgo SG2000 (hybryda Arm/RISC-V), BeagleBadge, Qualcomm „Shikra” i „Altera” (Cortex-A78C), Agilex72 (Cortex-A720), Alientek ATK-DLRV1126, Variscite SoC DART-MX8M-PLUS, DART-MX8M-MINI, VAR-SOM-MX8QM oraz płyty Sonata/Symphony na ich podstawie, 9Tripod X3568 v4, Youyeetoo YY3588, milk-v duo, ArmSoM CM5, Freescale Verdin iMX8M Mini, Anbernic rg vita-pro, Embedfire lubancat 4, Vicharak Vaaman, LincStation E1, HINLINK H28K.
Jednocześnie latynoamerykańska Fundacja Wolnego Oprogramowania utworzyła
wersję całkowicie wolnego jądra 7.3 — Linux-libre 7.3-gnu, oczyszczoną z elementów firmware i sterowników zawierających nienautralne komponenty lub fragmenty kodu, których zastosowanie jest ograniczone przez producenta. W wydaniu 7.3 przeprowadzono oczyszczenie z blobów nowych sterowników dla GPU Mali Tyr, Morse Micro mm81x wi-fi, NXP wi-fi, oraz kart sieciowych na chipach Realtek. Zaktualizowano kod oczyszczania w sterownikach nova-core, amdgpu, adreno, tegra, iris, rtw89 i mt76 wifi, Qualcomm Q6V5 PAS, qla2xxx scsi oraz kodekach dźwiękowych aw88399. Przeprowadzono oczyszczanie nazw blobów w plikach dts (devicetree) dla chipów ARM Qualcomm.
Źródło: opennet.ru
