După două luni de dezvoltare, Linus Torvalds a prezentat lansarea nucleului Linux 7.3. Printre cele mai notabile schimbări se numără: un mecanism de izolare a FS-ului bazat pe pseudo-FS failfs și apelul de sistem fchroot(), suport pentru crearea planificatorilor înglobați SCHED_EXT, handleri BPF pentru executabile, fluxuri alternative de date în NTFS3, optimizări de performanță pentru FUSE, Btrfs și Ext4, suport pentru Apple Time Machine în ksmbd, eliminarea FS-ului EFS și FreeVxFS, modul de acces direct la dispozitivele de stocare, îmbunătățirea gestionării lipsei de memorie video, urmărirea accesărilor la memoria sistemului gazdă prin userfaultfd, comprimarea regulilor AppArmor, restricționarea accesului la AF_ALG, suport pentru cipurile Apple M3 Pro, Max și Ultra.
Noua versiune include 20260 de corecturi de la 3171 de dezvoltatori, dintre care 807 au trimis pentru prima dată modificările lor în nucleu. Dimensiunea patch-ului este de 63 MB (modificările au afectat 14923 de fișiere, s-au adăugat 943849 de linii de cod,
s-au eliminat 297515 de linii). În ediția anterioară au fost 17833 de corecturi de la 2766 de dezvoltatori, dimensiunea patch-ului este de 68 MB. Aproape 44% din toate modificările prezentate în 7.3 sunt legate de driverele dispozitivelor, aproximativ 12% din modificări se referă la actualizarea codului specific arhitecturilor hardware, 12% sunt legate de stiva de rețea, 5% de sistemele de fișiere și 3% de subsistemele interne ale nucleului.
Principalele noutăți din nucleul 7.3 (1, 2, 3):
- Subsistemul de disc, I/O și sistemele de fișiere
- A fost efectuată o optimizare a performanței FS-ului Btrfs. Pentru unitățile de stocare care nu sunt SSD au fost eliminate întârzierile inutile, ceea ce a dus la o creștere de cinci ori a lățimii de bandă pentru sarcinile care folosesc activ funcția fsync, cum ar fi scrierea jurnalelor. În fsync a fost dezactivată determinarea golurilor în fișierele cu un număr mare de extenturi și fără goluri, ceea ce a accelerat executarea unor teste specifice de până la 5 ori.
La urmărirea bufferelor de extenturi necache-uite, structura xarray a fost înlocuită cu o listă LRU locală, ceea ce a dus la creșterea performanței acestor operațiuni de 3 ori. Au fost eliminate scăderile de performanță în modul de intrare/ieșire directă, cauzate de regresii în lansările anterioare ale nucleului. Au fost reduse blocajele în timpul citirii anticipate a extenturilor, ceea ce a diminuat cheltuielile generale atunci când diferite sarcini accesează zonele care se suprapun.
- În Btrfs, suportul pentru prima versiune a cache-ului cu informații despre spațiul liber a fost eliminat. Sistemele de fișiere create pe sistemele vechi trebuie să fie migrate la a doua versiune a cache-ului folosind utilitarul btrfstune, altfel vor funcționa mai lent. De asemenea, opțiunea de montare „usebackuproot” a fost eliminată, iar în locul acesteia se recomandă utilizarea „rescue=usebackuproot”.
- În sistemul de fișiere Ext4, performanța operațiunilor paralele de scriere a fost îmbunătățită la intrare/ieșire directă (Direct I/O) și a fost accelerată rezervarea zonelor goale prin apelul fallocate(). A fost eliminată o regresie care reducea performanța în cazul scrierii tamponate.
- În sistemul de fișiere Ext4, modul de montare „data=journal” a fost declarat obsolet. Suportul pentru această opțiune de montare va fi oprit în anul 2028. Opțiunea „data=journal” activează modul de jurnalizare completă, în care sunt stocate în jurnal nu doar metadatele, ci și datele în sine, ceea ce asigură o rezistență ridicată în caz de erori, dar complică întreținerea codului și conduce la o scădere semnificativă a performanței comparativ cu modurile „data=ordered” și „data=writeback”.
- Sistemul de fișiere EFS a fost eliminat, acesta fiind utilizat în versiunile anterioare ale sistemului de operare IRIX, nu a mai fost folosit de aproximativ 30 de ani și nu a fost întreținut de mai bine de 20 de ani. Pentru cei care au nevoie de acces la partițiile EFS, există utilitare care funcționează în spațiul utilizatorului.
- Sistemul de fișiere FreeVxFS, care implementa formatul FS VERITAS VxFS folosit în SCO UnixWare în anii 1990, a fost eliminat, acesta fiind învechit și neutilizat în practică.
- În mecanismul de creare a sistemelor de fișiere în spațiul utilizatorului FUSE, performanța a fost îmbunătățită și consumul de memorie a fost redus prin utilizarea sistemului de intrare/ieșire asincron io_uring. Accelerarea a fost obținută prin adăugarea capacității de a transmite grupuri de bufferi din spațiul utilizatorului către kernel și eliminarea tamponării inutile (zero-copy) atunci când serverul FUSE accesează paginile de memorie ale procesului client sau cache-ul pe pagini.
- Pentru dispozitivele bloc, a fost implementat un flag RWF_DONTCACHE, similar cu modul de intrare/ieșire directă.
(Direct I/O), care poate fi utilizat în funcțiile preadv2() și pwritev2() sau în cererile de citire și scriere prin io_uring pentru accesul la dispozitivele de bloc, ocolind cache-ul pe pagini. De exemplu, acest flag poate fi utilizat în SGBD-uri pentru lucrul la un nivel joasă cu dispozitivele de bloc. - În FS overlayfs a fost adăugată suport pentru maparea identificatorilor de utilizatori, utilizată pentru a corela fișierele unui anumit utilizator pe o partiție străină montată cu un alt utilizator în sistemul actual.
- A fost îmbunătățită suportul pentru montarea mai multor FS de pe un singur dispozitiv de bloc.
- În driverul ntfs3 a fost implementat un suport inițial pentru fluxuri alternative de date, partajate prin două puncte în numele fișierului. Pentru a crea un nou flux alternativ, se poate utiliza comanda „touch file:flux”, pentru citire — „cat file:flux”, pentru ștergere — „rm file:flux”, iar pentru a lista fluxurile disponibile — „cat file:query_streams”.
- În noua implementare NTFS (ntfsplus) în modul doar lectura a apărut suport pentru tehnologia de compresie transparentă a fișierelor folosind filtrele de overlay WOF (Windows Overlay Filter).
- În serverul NFS a fost adăugat suport pentru operația CB_NOTIFY, care permite clientului să cacheze metadatele directoarelor pe partea sa, primind notificări despre modificări de la server.
- În FS F2FS a fost adăugat suport pentru ștergerea dinamică (fără a demonta FS) a partițiilor dintr-un pool comun cu mutarea automată a datelor pe alte partiții și revenirea înapoi (de exemplu, un dispozitiv poate fi temporar scos pentru alte necesități).
- În XFS a fost adăugat suport pentru flag-ul FALLOC_FL_WRITE_ZEROES în apelul de sistem fallocate(), permițând umplerea cu zerouri a unui interval specificat în fișier, folosind comanda WRITE_ZERO suportată de anumite SSD-uri, care efectuează anularea fără operațiuni de intrare/ieșire.
- A fost efectuată o optimizare a performanței FS-ului Btrfs. Pentru unitățile de stocare care nu sunt SSD au fost eliminate întârzierile inutile, ceea ce a dus la o creștere de cinci ori a lățimii de bandă pentru sarcinile care folosesc activ funcția fsync, cum ar fi scrierea jurnalelor. În fsync a fost dezactivată determinarea golurilor în fișierele cu un număr mare de extenturi și fără goluri, ceea ce a accelerat executarea unor teste specifice de până la 5 ori.
- Memorie și servicii de sistem
- A fost îmbunătățită gestionarea lipsei de memorie video. În situația în care memoria video liberă este epuizată, nucleul încearcă acum să mute din memoria video în memoria sistemului (GTT) buferele aplicațiilor care nu au o cotă de memorie garantată (cgroup dmem), în loc să refuze imediat alocarea memoriei video. Această abordare garantează alocarea resurselor aplicației pentru care sistemul a rezervat o anumită cantitate de memorie video, chiar dacă memoria este deja alocată altor aplicații. Anterior, dacă unei aplicații fără cotă i se alocase deja memorie video, în situația de lipsă de memorie video, aplicația cu cote garantate nu putea obține memorie video, și în loc de memorie video, prin subsistemul TTM (Translation Table Maps), aplicației i se aloca o memorie RAM sistemică mai lentă, adresată de GPU (GTT).
Suportul pentru cgroup dmem a fost implementat pentru driverele nouveau, xe și amdgpu. - În mecanismul SCHED_EXT, care permite utilizarea BPF pentru crearea programatorilor CPU, a fost finalizată munca asupra capacității de a crea programatori încorporați (sub-scheduler), prin care fiecare cgroup poate avea propriul programator de sarcini.
- În programatorul de sarcini au fost aduse îmbunătățiri legate de gestionarea cgroup și soluționarea problemelor de distribuire a greutăților, care cauzau costuri suplimentare și întârzieri. Au fost propuse mai multe metode de distribuire a greutăților pentru cgroup - 'up', 'max', 'concur' și 'tasks', setate prin parametrul cgroup_mode. A fost activată o coadă unică de execuție (runqueue) pentru programarea sarcinilor în cadrul cgroup-ului. Întârzierile în programarea sarcinilor care primesc quantum-uri scurte de timp de procesor au fost reduse prin
posibilitatea de a anula, actualiza sau minimiza timpul de execuție al sarcinilor, protejate împotriva înlocuirii. - În mecanismul binfmt_misc (\proc\sys\fs\binfmt_misc) a fost implementată
posibilitatea de a conecta handlers BPF pentru a adăuga suport pentru noi formate de fișiere executabile. Modificarea permite analizarea programatică a tipului de fișier executabil la fiecare pornire și selectarea interpretului sau a încărcătorului dinamic corespunzător, fără hacks de tipul utilizării utilității patchelf și a scripturilor de legare. De exemplu, într-un program BPF, se pot defini fișiere executabile pentru alte arhitecturi sau platforme și se pot rula emulatori corespunzători sau Wine, de asemenea, se simplifică organizarea lansării fișierelor executabile în pachete instalate în directoare diferite în sistemele cu manager de pachete Nix. - Continuarea transferului modificărilor din ramura Rust-for-Linux, legate de utilizarea limbajului Rust ca a doua limbă pentru dezvoltarea driverelor și modulelor nucleului (suportul Rust nu este activat implicit și nu duce la includerea Rust ca o dependență de compilare obligatorie pentru nucleu). A apărut posibilitatea utilizării Rust pentru arhitectura PowerPC. Au fost implementate: modul pentru conversii întregi fără pierderi, modul de înregistrare obfuscat a valorilor pointerilor pentru prevenirea scurgerii informațiilor despre spațiul de adrese, un wrapper pentru funcția synchronize_rcu(), bariere de memorie, modul interrupt pentru activarea/dezactivarea întreruperilor, tipuri pentru intrare/ieșire, wrapperi pentru fwctl, mecanismul SRCU (sleepable read-copy-update), wrapperi pentru gem shmem,
bike-lock-uri SpinLockIrq, care nu permit întreruperi în secțiunile critice. - Adăugat parametru sysctl syscall_user_dispatch pentru a controla activarea modului de dispatch al apelurilor de sistem în spațiul utilizatorului, permițând unui proces să intercepteze apelurile de sistem ale altui proces (utilizat în Wine pentru a emula apelurile de sistem Windows).
- În BPF a fost adăugată funcția bpf_sock_read_xattr(), prin care programele BPF pot citi atributele extinse setate de utilizator
(user.*) din inode-urile socket-urilor. În aplicațiile BPF a apărut posibilitatea definirea variabilelor globale legate de CPU. În verificatorul programelor BPF au fost oferite informații suplimentare despre erorile descoperite, facilitând determinarea cauzelor problemelor. - Mecanismele de analiză kprobes, uprobes și fprobes au implementat suport pentru conversia tipurilor, utilizând date BTF (BPF Type Format) cu informații pentru verificarea tipurilor în pseudocodul BPF, precum și a îmbunătățit extragerea informațiilor despre variabile.
- În subsistemul DAMON (Data Access MONitor), care permite monitorizarea accesului procesului la date în memoria operativă (de exemplu, se poate afla la ce zone de memorie a accesat procesul și ce zone de memorie au rămas neutilizate), a fost adăugată capacitatea de a monitoriza modificările atributelor datelor (memorie anonimă, fișiere mapate în memorie, acces doar pentru citire, lipsa accesărilor la memorie etc.).
- În mecanismul KHO (Kexec HandOver), folosit pentru a lansa un nou nucleu dintr-un vechi fără a pierde starea sistemului, a fost asigurată contabilizarea alocării paginilor mari de memorie (huge pages) în timpul bootării. Aceste pagini de memorie sunt acum marcate și salvate după lansarea noului nucleu.
- Codul de bază al sistemului de swapping a fost translatat pe o nouă structură de date de bază swap_ops, care a simplificat întreținerea codului și a implementat abtracții necesare pentru extinderea funcționalității în viitor.
- Au fost adăugate comenzi ioctl ALLOCINFO_IOC_CONTENT_ID, ALLOCINFO_IOC_GET_AT și ALLOCINFO_IOC_GET_NEXT, care permit transmiterea selectivă către spațiul utilizatorului a datelor de profilare a alocării memoriei. Comparativ cu interfata anterioară /proc/allocinfo, apelurile ioctl propuse pot îmbunătăți performanța cererilor de profilare de până la 20 de ori prin filtrarea datelor necorespunzătoare.
- A fost îmbunătățită gestionarea lipsei de memorie video. În situația în care memoria video liberă este epuizată, nucleul încearcă acum să mute din memoria video în memoria sistemului (GTT) buferele aplicațiilor care nu au o cotă de memorie garantată (cgroup dmem), în loc să refuze imediat alocarea memoriei video. Această abordare garantează alocarea resurselor aplicației pentru care sistemul a rezervat o anumită cantitate de memorie video, chiar dacă memoria este deja alocată altor aplicații. Anterior, dacă unei aplicații fără cotă i se alocase deja memorie video, în situația de lipsă de memorie video, aplicația cu cote garantate nu putea obține memorie video, și în loc de memorie video, prin subsistemul TTM (Translation Table Maps), aplicației i se aloca o memorie RAM sistemică mai lentă, adresată de GPU (GTT).
- Virtualizare și securitate
- A fost propus un nou mecanism de izolare, care blochează accesul la conținutul sistemelor de fișiere, cu excepția resurselor care sunt explicit transmise în mediu de tip sandbox prin intermediul descriptorilor de fișiere. Mecanismul este implementat cu ajutorul pseudo-FS failfs și a apelului de sistem fchroot.
Sistemul de fișiere pseudo failfs este similar cu sistemul de fișiere nullfs, dar spre deosebire de acesta din urmă, implementează principiul "nimic nu este susținut" în loc de "nimic nu este stocat". Această caracteristică nu permite montarea nimic deasupra failfs, clonarea sistemului de fișiere și urmărirea stării prin statmount(), listmount(), /proc//mountinfo și /proc/filesystems. Dacă directorul rădăcină sau directorul de lucru al procesului se află în failfs, se blochează orice încercare de navigare prin sistemul de fișiere folosind căi absolute, linkuri simbolice și căi relative, care depind de directorul de lucru curent. Procesului îi rămâne doar posibilitatea de a accesa un anumit director prin descriptorii de fișiere deschiși înainte de izolare.
Pentru a trece în noul mod de izolare, a fost adăugat apelul de sistem fchroot, similar apelului de sistem chroot, dar care funcționează la nivelul descriptorilor de fișiere. Apelul de sistem fchdir a fost dotat cu sigla FD_FAILFS_ROOT pentru a muta directorul de lucru al procesului în sistemul de fișiere failfs.
O siglă similară este disponibilă în apelul de sistem fchroot. - A fost adăugată posibilitatea de a urmări accesările la memoria sistemului gazdă prin intermediul mecanismului userfaultfd, care permite crearea de handleri pentru accesările la paginile de memorie nealocate sau protejate în spațiul utilizatorului. În practică, posibilitatea propusă permite hypervisor-ului să determine paginile de memorie la care nu s-a accesat în mașina virtuală, pentru a le înlocui cu memorie mai lentă sau cu stocare externă. Pentru a urmări violările restricției de citire și scriere în zona de memorie monitorizată, a fost adăugată sigla UFFDIO_REGISTER_MODE_RWP, care poate fi utilizată ca un analog de înaltă performanță al aplicării mprotect(PROT_NONE) împreună cu un handler de semnal generat la accesarea memoriei pentru care a fost impusă interdicția de citire și scriere (în cazul userfaultfd, se generează o excepție, care este gestionată în spațiul utilizatorului). Modificarea a fost realizată cu ajutorul AI ("Assisted-by: Claude:claude-opus-4-6").
- A fost întărită separarea între firele de kernel (kthread) și procesul init (PID 1). Anterior, firele de kernel și PID 1 împărtășeau un stat comun al sistemului de fișiere.
ceea ce permite prin apelul pivot_root() să redefinească starea FS pentru toate firele nucleului. În noua versiune, în PID 1 este implicată o structură fs_struct complet separată, iar firele nucleului sunt izolate într-un punct de montare separat cu nullfs. - Biblioteca criptografică încorporată (libcrypto) a fost îmbogățită cu suport pentru modurile de criptare AES — ECB, CBC, CBC-CTS, CTR, XCTR, XTS, GCM și CCM.
- În sistemul de gestionare a accesului mandat AppArmor a fost implementată posibilitatea de a încărca seturi de reguli comprimate și a fost adăugat un mod de audit.
- A fost adăugat parametrul sysctl af_alg_restrict, care controlează activarea accesului la API-ul criptografic AF_ALG din spațiul utilizatorului. AF_ALG permite utilizarea acceleratoarelor hardware pentru calcule criptografice în Crypto API-ul nucleului, dar este utilizat în situații destul de specifice și nu întotdeauna oferă un câștig de performanță comparativ cu implementarea accelerării în spațiul utilizatorului. Cu toate acestea, în handlerii asociați cu AF_ALG au fost identificate o serie de vulnerabilități, cum ar fi Copy Fail, care permit modificarea datelor în cache-ul paginilor. Pentru a reduce suprafața de atac, implicit accesul la AF_ALG este parțial restricționat. Se ia în considerare posibilitatea eliminării AF_ALG în una dintre versiunile viitoare.
- Verificarea programelor BPF semnate digital a fost întărită. A fost adăugată o verificare a integrității metadatelor programului BPF înainte de încărcarea acestuia.
- În apelul de sistem landlock_restrict_self(), utilizat pentru activarea blocajelor Landlock, a fost adăugat un flag
LANDLOCK_RESTRICT_SELF_NO_NEW_PRIVS, care interzice procesului curent obținerea oricăror privilegii noi. Mecanismul Landlock permite programelor neprivilegiate să renunțe la privilegiile inutile pentru funcționare, limitând astfel accesul lor ulterior la sistem în scopuri de securitate, de exemplu, pentru a se proteja în cazul unor încercări de exploatare a vulnerabilităților din program. - În driverul VirtIO-GPU, care asigură funcționarea GPU-ului virtual, a fost adăugat suport pentru modul de somn S4 (hibernare).
- A fost propus un nou mecanism de izolare, care blochează accesul la conținutul sistemelor de fișiere, cu excepția resurselor care sunt explicit transmise în mediu de tip sandbox prin intermediul descriptorilor de fișiere. Mecanismul este implementat cu ajutorul pseudo-FS failfs și a apelului de sistem fchroot.
- Subsystema de rețea
- În ksmbd, serverul integrat în nucleul pentru protocolul SMB, a fost adăugată suport pentru extensiile Apple Time Machine pentru stocarea copiilor de rezervă, create în macOS prin această aplicație. A fost implementat un mecanism de izolare a secvențelor de comenzi SMB în legătură cu MessageId pentru blocarea atacurilor prin trimiterea de cereri invalide sau duplicate. A fost adăugată suport pentru retrimiterea cererilor prin protocolul SMB3 fără a afecta starea sesiuni, dacă cererea anterioară a fost pierdută. În SMB3 a fost implementată posibilitatea criptării la nivelul unor resurse partajate (share). A fost adăugată suport pentru criptarea canalului de comunicație SMB Direct, care folosește tehnologia RDMA (Remote Direct Memory Access).
- A fost realizată posibilitatea utilizării pachetelor TCP cu extensia BIG TCP, care permite creșterea dimensiunii maxime a pachetului TCP la 4GB, în tuneluri UDP bazate pe protocoalele VXLAN și GENEVE.
- A fost adăugată suport pentru tunelarea protocolului MCTP (Management Component Transport Protocol) peste USB (MCTP-over-USB 1.1).
- A fost oferită posibilitatea de dezactivare (unregistration) a dispozitivelor de rețea (netkit, veth, vxcan, bareudp, geneve, ipvlan, macvlan etc.) pentru spațiile de nume selectate.
- Pentru Bluetooth 6.2+ a fost implementat suportul pentru mecanismul SCI (Shorter Connection Interval) pentru a reduce întârzierile la transmiterea datelor în modul Bluetooth LE (Low Energy).
- În API nl80211 a fost adăugat un mecanism unificat (NL80211_CMD_PROBE_PEER) pentru verificarea perechilor conectate, funcționând atât în punctele de acces wireless, cât și pe partea clientului.
- Echipament
- Vechele platforme ARM care aproape nu mai sunt utilizate și afectează întreținerea subsistemelor actuale au fost declarate învechite și planificate pentru eliminare în nucleul 7.5. Aproximativ 55 de mii de linii de cod asociate cu suportul platformelor sa1100, omap24xx, i.MX31, samv7, lpc18xx, riscpc, axxia, footbridge, plăci vechi pxa, orion, dove și mv78xx0, cipuri fără unitate de gestionare a memoriei (MMU) și microcontrolere stm32f4/f7/h7 sunt incluse în planul de eliminare.
- A fost adăugată suport inițial pentru cipurile Apple M3 Pro, Max și Ultra. A fost implementată gestionarea stării consumului de energie pentru SoC Apple.
- În subsistemul DRM (Direct Rendering Manager) a fost adăugat atributul „color format”, care permite utilizatorului să comute formatul de redare a culorilor pentru dispozitivul de ieșire. Atributul este implementat pentru driverele GPU i915 (HDMI, DP), amdgpu (HDMI, DP) și rockchip (HDMI). Pentru testare, se poate folosi o comandă de tipul „modetest -s 115:1920×1080-60@NV12 -w 115:’color format’:4”, unde 115 este identificatorul conectorului, iar ‘4’ este numărul formatului YUV420.
- Driverul amdgpu a adăugat suport pentru modificatorii DRM pentru GPU-urile AMD din seriile GFX6-8 (Southern Islands, Sea Islands și Volcanic Islands). A fost implementat suportul inițial pentru DCN 6.0.0 (Display Core Next). A fost curățat codul depășit.
A fost activat suportul CACP (Content Adaptive Contrast and Power), care permite reducerea consumului de energie al panourilor OLED. Pentru motoarele de afișare pe arhitectura DCN4, a fost activat mecanismul IPS (Idle Power State) pentru a reduce consumul de energie în timpul inactivității. Suport adăugat pentru plăcile video AMD Barco. - În driverul i915, codul pentru determinarea capabilităților și recuperarea stării conectorilor DisplayPort a fost refăcut. Suportul CMTG (Common mode timing generator) și DC3DO (Display C3 with Clock Off) a fost adăugat pentru GPU-urile Novalake (NVL).
- Continuăm lucrările la driverul drm (Direct Rendering Manager) Xe pentru GPU-urile bazate pe arhitectura Intel Xe, utilizată în plăcile video Intel din familia Arc și grafica integrată, începând cu procesoarele Tiger Lake. Au fost adăugate noi identificatoare de dispozitive acceptate. În configfs, atributul ‘enable_multi_queue’ a fost implementat pentru a dezactiva utilizarea simultană a mai multor cozi de predare a comenzilor. A fost îmbunătățit suportul pentru trecerea în modul de odihnă.
- Continuăm integrarea componentelor driverului Nova pentru GPU-urile NVIDIA echipate cu firmware GSP, utilizate începând cu seria NVIDIA GeForce RTX 2000 bazată pe microarhitectura Turing. Driverul este scris în Rust. În noua versiune, s-a realizat trecerea la noile imagini de firmware TLV, în locul versiunilor mai vechi utilizate în driverul Nouveau. A fost adăugat suport pentru
lansarea firmware-ului pentru chipul GSP (GPU System Processor) cu activarea vGPU. A fost adăugat un API pentru obținerea informațiilor despre dimensiunea memoriei video. - În driverul Tyr, scris în Rust și care asigură funcționarea cu GPU-urile ARM Mali, a fost adăugată posibilitatea de a încărca firmware-uri în format Mali CSF, activarea memoriei virtuale GPU și pornirea MCU.
- În driverul msm a fost adăugat suport pentru GPU-ul Adreno Shikra (A704) și Eliza (722).
- A fost adăugat suport pentru dispozitivele 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. - A fost adăugat suport pentru Steam Controller (model 2026); mouse-uri Logitech G502 X Plus și G502 X Lightspeed; tastaturi Endorfy Thock TKL, Zenbook A16; căști Nova 5X, Nova 7 și Arctis 7; volan de joc Turtle Beach VelocityOne Race; gamepad MSI Claw.
- A fost îmbunătățit suportul audio pentru dispozitivele ASUS VivoBook M515DA/X515DAP.
LG gram 16 (16Z90TR), Minisforum AI X1 Pro, HP Pavilion 15-eh2xxx, HP Laptop 15-dy0xxx și HP Spectre x360 16-aa0xxx, HP EliteBook 6 G1, HP OmniBook X Flip 14, Lenovo Yoga Pro 7, Huawei Matebook,
ThinkPad X1 Carbon 6th, HP ProBook 440 G5, Acer Aspire A515-57. - A fost adăugată suport pentru smartphone-uri, tablete și laptopuri: 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.
- A fost adăugată suport pentru platformele ARM și SoC Samsung Exynos 1580 (utilizat în smartphone-urile de vârf din 2024), Orange Pi 5 pro, Sophgo SG2000 (hibrid 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 și plăcile Sonata/Symphony pe care se bazează, 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.
În același timp, Fundația de software liber din America Latină a format
o variantă complet liberă a nucleului 7.3 — Linux-libre 7.3-gnu, curățat de elemente de firmware și drivere care conțin componente nesigure sau porțiuni de cod, a căror utilizare este limitată de producător. În versiunea 7.3 a fost efectuată curățarea de blob-uri noi pentru driverele GPU Mali Tyr, Morse Micro mm81x wi-fi, NXP wi-fi, și pentru cardurile de rețea cu cipuri Realtek. Codul de curățare a fost actualizat în driverele nova-core, amdgpu, adreno, tegra, iris, rtw89 și mt76 wifi, Qualcomm Q6V5 PAS, qla2xxx scsi și codec-uri audio aw88399. A fost realizată curățarea numelui blob-urilor în fișierele dts (devicetree) pentru cipurile ARM Qualcomm.
Sursa: opennet.ro
