Linux 6.19

Linux 6.19

Dopo due mesi di sviluppo, Linus Torvalds ha presentato ha rilasciato il kernel Linux 6.19. Tra le modifiche più significative ci sono: il sottosistema Live Update Orchestrator, il supporto alla crittografia PCIe Link, la chiamata di sistema listns, la modalità Zero-Copy Receive in io_uring, il supporto per l'estensione ARM MPAM, klp-build per la generazione di patch live, il supporto per l'architettura LoongArch32, QoS per s2idle, ottimizzazione del sottosistema di auditing, Intel LASS per la protezione contro Spectre, supporto per gli hash SHA-3 e BLAKE2b, meccanismo Confidential VMBus, ottimizzazioni TX nel sottosistema di rete, protocollo CAN XL, API per l'accelerazione hardware dell'uscita HDR.

Nell'annuncio del nuovo aggiornamento, Linus ha comunicato che alla prossima versione del kernel verrà assegnato il numero 7.0, poiché nella serie 6.x si è accumulato un numero sufficiente di rilascio per cambiare il primo numero nella versione (in passato la versione 6.0 è stata formata subito dopo la 5.19). Il cambiamento della numerazione avviene per motivazioni estetiche ed è un passo formale che allevia il disagio causato dall'accumulo di troppe versioni nella serie. Linus ha scherzato sul fatto che numeri così grandi lo confondono, tanto che non ha abbastanza dita delle mani e dei piedi. Tuttavia, esiste un motivo formale per un cambiamento significativo del numero di versione, poiché a partire da il prossimo rilascio sarà supportato Rust risolto trasferire dalle funzionalità sperimentali a quelle stabili del kernel.

Nella nuova versione sono stati apportati 15657 correttivi da 2237 sviluppatori, la dimensione della patch è di 52 MB (le modifiche hanno riguardato 13682 file, sono state aggiunte 794649 righe di codice e ne sono state eliminate 335498). Nella precedente versione c'erano 15035 correzioni da 2217 sviluppatori, la dimensione della patch era di 45 MB. Circa il 40% di tutte le modifiche presentate in 6.19 riguardano i driver di dispositivo, circa il 13% delle modifiche riguardano l'aggiornamento del codice specifico per le architetture hardware, il 12% è relativo allo stack di rete, il 5% ai file system e il 3% alle sottosistemi interni del kernel.

Le principali novità del kernel 6.19 (1, 2, 3):

  • Sottosistema disco, I/O e file system
    • In Btrfs i processi di verifica FS (scrub) e sostituzione dei dispositivi non bloccano più il passaggio del sistema alla modalità sleep (prima di andare in sleep viene salvato lo stato del controllo scrub; dopo il risveglio, il controllo scrub riprende e l'operazione di sostituzione dei dispositivi viene riavviata). È stata aggiunta al RAID56 il supporto per blocchi superiori alla dimensione della pagina di memoria. È stata effettuata la preparazione per supportare il passaggio del sistema in modalità sospensione (prima di andare in sospensione, viene salvato lo stato del controllo scrub; dopo il risveglio, il controllo scrub continua e l'operazione di sostituzione dei dispositivi viene riavviata). È stata aggiunta il supporto per blocchi più grandi della dimensione della pagina di memoria nell'implementazione di RAID56. È stata effettuata una preparazione per il supporto fscrypt. È stata migliorata la performance nella gestione dei blocchi durante le operazioni di allocazione dello spazio. Aggiunto supporto per l'operazione ioctl di shutdown, che consente di portare il FS in uno stato in cui si tenta di completare le operazioni già avviate, bloccando però tutte le nuove operazioni.
    • Nel file system Ext4 è inclusa supporto per blocchi di dimensioni superiori a quelle della pagina di memoria (>4KB sui sistemi x86). L'uso di blocchi di grandi dimensioni permette può aumentare le prestazioni delle operazioni di scrittura bufferizzata di circa il 50%, ma riduce le prestazioni dell'input/output diretto a causa dell'aumento del tempo di calcolo delle checksum. Nella nuova versione sono anche sono stati aggiunti ottimizzazioni che aumentano la larghezza di banda durante l'esecuzione della defragmentarizzazione online.
    • Nella sottosistema FUSE migliorato il supporto per la lettura bufferizzata quando si utilizzano grandi folio di memoria (large folios). Attraverso iomap è stata realizzata la possibilità di monitorare i folios parzialmente attuali per caricare solo i dati che mancano nel buffer.
    • In VFS aggiunto supporto per la delegazione delle directory richiamabile (recallable directory delegation), che consente di implementare in NFS delegare il controllo della directory dal server al cliente, in modo che il client NFS possa monitorare autonomamente lo stato della directory basandosi sulla cache locale, senza rivolgersi al server NFS. Se un altro client NFS apporta modifiche relative a questa directory, la delega del controllo sarà revocata al primo cliente.
    • Per NFS aggiunta supporto per la lettura in modalità direct I/O. Implementati impostazioni /sys/kernel/debug/nfsd/io_cache_read e /sys/kernel/debug/nfsd/io_cache_write per gestire l'attivazione della cache e le operazioni di direct I/O. Manipolare queste impostazioni aiuta a ridurre il carico sul cliente NFS durante l'esecuzione di grandi operazioni di I/O.
    • In NTFS supporto dell'operazione ioctl di shutdown implementato, sono inclusi opzioni di montaggio acl e prealloc per impostazione predefinita, aggiunto supporto fino al 1 gennaio 1970.
    • Per dispositivi a blocchi e FS incluso per impostazione predefinita, la cache degli oggetti è separata per ogni CPUbio(Block I/O), che definiscono le operazioni attive di I/O.
  • Memoria e servizi di sistema
    • Nel kernel è inclusa sottosistema Live Update Orchestrator (LUO), che consente di riavviare e aggiornare il kernel senza interrompere le operazioni e senza perdere lo stato del sistema, dei dispositivi e dei processi. Il sottosistema LUO si basa su un meccanismo precedentemente integrato nel kernel. KHO (Kexec HandOver) e, oltre alla possibilità di avviare un nuovo kernel da un vecchio senza perdere lo stato del sistema, affronta compiti quali il salvataggio dello stato dei dispositivi e della memoria operativa, nonché garantire la continuità delle operazioni relative a DMA e gestione delle interruzioni. Lo stato viene salvato fino al passaggio al nuovo kernel e ripristinato dopo l'attivazione del nuovo kernel senza interrompere le operazioni continue con i dispositivi eseguite dal sistema e dalle applicazioni nello spazio utente.

    • Aggiunto chiamata di sistema listns() per visualizzare un elenco degli spazi dei nomi esistenti nel sistema senza la necessità di scorrere /proc//ns/ per tutti i processi.

    • Nel sistema di input/output asincrono io_uring è stata aggiunta la supporto per il posizionamento di elementi di dimensioni diverse nella coda di invio (SQE, Submission Queue Entry), analogamente a quanto è stato consentito nella scorsa versione per la miscelazione delle dimensioni del contenuto degli eventi della coda di completamento (CQE, Completion Queue Event). Prima di questo, tutti gli elementi nella coda dovevano avere una dimensione uniforme, il che portava a un consumo eccessivo di memoria a causa della necessità di utilizzare la dimensione massima per tutti gli elementi nella coda.

      In io_uring è stata inoltre aggiunta la supporto per il meccanismo zcrx (Zero-Copy Receive) per ricevere dati senza copiare tra il kernel e lo spazio utente. È stata aggiunta la supporto per le richieste di mappatura della memoria per le code SQ (Submission Queue) e CQ (Completion Queue), che consentono di ottenere informazioni sulla dimensione del buffer circolare necessaria durante l'allocazione di memoria da parte dell'utente utilizzando i flag IORING_SETUP_NO_MMAP e IORING_MEM_REGION_TYPE_USER.

    • Per una rapida tracciatura dello stack utilizzando strumenti come perf, è stata aggiunta la supporto per il formato SFrame con informazioni sullo srotolamento dello stack delle chiamate (unwind). SFrame è già supportato in GCC e binutils, non riduce le performance e, a differenza del formato DWARF, contiene solo il set minimo di informazioni necessarie per la tracciatura dello stack.

    • Nell'utilità perf aggiunta è stata introdotta la supporto per la descrizione unificata delle metriche e degli eventi in formato JSON, così come lo srotolamento ritardato (deferred unwinding) dello stack delle chiamate nello spazio utente.

    • Per dei processori AMD è stato implementato un meccanismo di sostituzione dei dati nella cache, che consente ai dispositivi di input/output di inserire direttamente i dati nella cache L3 della CPU senza doverli prima collocare nella RAM.

    • Aggiunto supporto per MPAM (Memory System Resource Partitioning and Monitoring), estensioni dell'architettura del set di istruzioni ARMv8-A per contrassegnare ogni accesso alla memoria con un identificativo di sezione (PARTID, Partition ID) e un identificativo di gruppo di monitoraggio (PMG, Monitoring Group ID). Associato al PARTID, è possibile limitare il consumo di risorse come la larghezza di banda della memoria o la dimensione della cache, affinché un gruppo di processi non occupi tutte le risorse. Nel contesto del monitoraggio, la combinazione di PMG e PARTID può essere utilizzata per monitorare il consumo di risorse di memoria in base a determinati tipi di carico.

    • In caso di terminazione anomala del processo dopo aver ricevuto un segnale, un altro processo che possiede il pidfd del processo terminato può ora determinare il numero del segnale che ha causato la terminazione del processo.

    • Ristrutturata l'implementazione delle sequenze riavviabili (restartable sequences), che consentono alle applicazioni di organizzare l'esecuzione pseudo-atomica non interrotta di un gruppo di istruzioni (in caso di interruzione da un altro thread, viene effettuato un tentativo di riesecuzione della sequenza). La nuova implementazione offre prestazioni superiori.

    • Per programmi BPF sono state implementate istruzioni BPF_JMP, BPF_X e BPF_JA per effettuare salti indiretti a una posizione specifica nella tabella dei salti. Aggiunta la concezione di puntatori dinamici (dynptr), che consentono di leggere i dati da file strutturati. Aggiunto possibilità di allegare a pacchetti di rete più byte con metadati.

    • Moduli in linguaggio Python, utilizzati per elaborare la documentazione del kernel, spostati in una cartella separata tools/lib/python.

    • È stata aggiunta una funzione mempool_alloc_bulk() per l'allocazione sicura di elementi da un pool di memoria per più oggetti contemporaneamente.

    • Continuato il trasferimento delle modifiche dal ramo Rust-for-Linux, relativo all'uso del linguaggio Rust come secondo linguaggio per lo sviluppo di driver e moduli del kernel (il supporto per Rust non è attivo per impostazione predefinita e non comporta l'inclusione di Rust tra le dipendenze di compilazione obbligatorie del kernel). Nella nuova versione è integrata la libreria « synsyn» con un parser di codice Rust che semplifica la scrittura di macro complesse. Le librerie kernel, pin-init e rbtree hanno ricevuto potenziamenti. È stata aggiunta la libreria num con il trait Integer per la manipolazione di numeri interi. La macro module! ora supporta parametri interi. È stata implementata la possibilità di specificare parametri durante il caricamento di moduli del kernel scritti in Rust. Sono state realizzate astrazioni per sotto-sistemi. I2C e PWM (Modulazione di larghezza d'impulso).

    • Aggiunto macro at_least (ad esempio, param[at_least 7], che indica la dimensione minima consentita dell'array passato alla funzione. Se viene passato un array con meno elementi, il compilatore genererà un avviso.

    • Include incluso lo script klp-build per generare moduli del kernel, che apportano modifiche al kernel in esecuzione (livepatch), basato su un file patch. Sono state apportate modifiche all'utilità objtool necessarie per creare live-patch.

    • In Linux in modalità utente (esecuzione del kernel come processo utente) è stata aggiunta un supporto limitato per la multiprocessazione, ma i thread all'interno di un singolo processo non possono ancora essere eseguiti contemporaneamente. È iniziato porting di Linux in modalità utente sulla libreria nolibc.

    • Aggiunto supporto per l'architettura LoongArch32 (LA32R, LA32S) oltre a LoongArch64.

    • Aggiunto possibilità di impostare limiti QoS sull'intensità di risveglio del processore in modalità risparmio energetico s2idle (Suspend-To-Idle), che sospende l'esecuzione dei processi nello spazio utente, ma lascia attivi alcuni gestori nel kernel.

    • Aggiunto supporto per la gestione delle tabelle delle pagine di memoria per i controller IOMMU (Input-Output Memory Management Unit), che eseguono la traduzione degli indirizzi virtuali visibili all'hardware in indirizzi fisici, con la possibilità di filtrare le operazioni DMA per indirizzi virtuali e anche di limitare e isolare le operazioni di input/output.

    • Nelle tracce degli eventi delle chiamate di sistema è stata implementata la possibilità di leggere i buffer dallo spazio utente e di includerne il contenuto (ad esempio, i nomi dei file) nel risultato della traccia.

    • **Pagine di guardia della memoria(( (guard page), l'accesso alle quali genera un'eccezione e termina il processo (SIGSEGV), ora sono contrassegnate da un'etichetta speciale nel file /proc/PID/smaps.

    • Aggiunto possibilità di gestire grandi pagine di memoria (transparent huge page) nella memoria privata dei dispositivi zonati.

    • Nel dispositivo zram, utilizzato per la compressione della memoria della pagina swap, è stata realizzata supporto per l'espulsione di più strutture «bio» (Block I/O) in modalità batch (writeback batching).

    • Include il font «Terminus 10×18», che migliora la leggibilità delle informazioni dalla console su schermi di laptop con risoluzione media (1440×900).

    • Significativamente ottimizzato funzionamento del sottosistema di audit — si osserva una riduzione della sovraccarico di due volte.

  • Virtualizzazione e sicurezza
    • Aggiunto il supporto per la funzionalità fornita dai processori Intel per separazione dello spazio degli indirizzi (LASS, separazione lineare dello spazio indirizzi), che consente di separare a livello hardware i range di indirizzi tra lo spazio utente e il kernel per aumentare la sicurezza. Lo spazio degli indirizzi è separato dal bit più significativo dell'indirizzo: la metà dello spazio indirizzi con il bit più significativo impostato è utilizzata per il kernel, mentre la parte inferiore è destinata allo spazio utente. In una fase precoce dell'esecuzione delle istruzioni (prima dell'esecuzione speculativa), viene effettuato un controllo sulla validità dell'accesso dallo spazio utente agli indirizzi con il bit più significativo impostato e viceversa. Questa separazione consente di bloccare le perdite di memoria del kernel nello spazio utente attraverso canali laterali anche durante l'esecuzione speculativa delle istruzioni, permettendo l'uso di LASS per proteggere contro attacchi come Meltdown e Spectre, senza comportare grandi sovraccarichi.
    • È stata aggiunta la possibilità di attivare estensioni rafforzamento della sicurezza del bus PCI Express – crittografia del link PCIe e autenticazione del dispositivo PCIe, che consentono di verificare l'autenticità e crittografare il canale di comunicazione tra il dispositivo PCIe e la macchina virtuale, protetta tramite meccanismi Intel TDX (Trusted Domain Extensions) e AMD SEV-SNP (Secure Nested Paging). Le tecnologie implementate impediscono l'intercettazione, l'analisi e l'inserimento di dati nel traffico DMA in presenza di accesso al sistema host o ad altri dispositivi.
    • Nella libreria crittografica integrata aggiunta supporto per gli algoritmi SHA-3 (SHA3-224, SHA3-256, SHA3-384, SHA3-512), SHAKE128, SHAKE256 e BLAKE2b.
    • Per i moduli LSM (Linux Security Modules) e, in particolare, per SELinux, è stata realizzata possibilità di monitorare la creazione di descrittori memfd per applicare politiche di sicurezza agli oggetti a essi associati.
    • Nel modulo LSM IPE (Esecuzione della Politica di Integrità), che definisce la politica generale di garanzia dell'integrità per l'intero sistema, è stato aggiunto il supporto per il flag AT_EXECVE_CHECK nella funzione execveat(), che include il controllo dell'integrità dello script prima della sua esecuzione da parte dell'interprete.
    • Aggiunti i primitivi scoped_user_read_access(), scoped_user_write_access e scoped_user_rw_access() per un accesso limitato ai dati nello spazio utente con protezione contro attacchi speculativi.
    • Aggiunto supporto del meccanismo VMBus riservato, utilizzato nell'iper-v di HyperV per l'interazione protetta contro l'interferenza dell'iper-v tra il sistema operativo ospite, eseguito in modalità riservata (con crittografia della memoria e isolamento dei registri basato sulle tecnologie AMD SNP e Intel TDX), e il paravisor responsabile dell'accesso ai dispositivi che gestiscono dati riservati.
    • Aggiunto possibilità di trasmettere informazioni su un processo terminato in modo anomalo (per generare un coredump) tramite il meccanismo pidfd. L'identificatore PIDFD è legato a un processo specifico e non cambia, mentre il PID può essere associato a un altro processo dopo la terminazione dell'attuale processo associato a quel PID. L'uso di pidfd consente di bloccare la sostituzione attacchi del processo suid terminato in modo anomalo con un altro processo, raggiungendo una condizione di race nel momento dopo l'inizio della gestione del kernel dell'accaduto anomalo, ma prima che il gestore controlli nel processo utente i parametri del processo.
  • Sottosistema di rete
    • Nel sottosistema di rete sono stati apportati ottimizzazioni per migliorare l'efficienza della trasmissione dei dati (TX). Eliminazione della funzione __dev_queue_xmit() dallo spin-lock e utilizzo di una struttura llist senza lock ha permesso di aumentare le prestazioni di 4 volte sotto carico pesante e raddoppiare l'intensità di invio dei pacchetti riducendo al contempo il carico sulla CPU del 50%.
    • Fornito possibilità disconnettere per i singoli socket di rete, ci sono limiti di utilizzo della memoria (in questo caso verranno utilizzati i limiti generali di memoria impostati per singoli contenitori). È stato proposto sysctl net.core.bypass_prot_mem e il flag SK_BPF_BYPASS_PROT_MEM nella funzione bpf_setsockopt per gestire la disabilitazione dei limiti.
    • Aggiunto supporto per l'estensione RFC 5837, che aggiunge ai messaggi ICMP Time Exceeded, restituiti al termine del tempo di vita (TTL) di un pacchetto, informazioni sulle interfacce di rete in entrata per ottenere dettagli più precisi durante il tracciamento dei percorsi con lo strumento traceroute.
    • Aggiunto supporto per il polling attivo continuo (busy polling) in un thread separato del kernel al fine di estrarre i descrittori dalle code RX/TX per applicazioni che richiedono latenze minime.
    • Aggiunto supporto per il protocollo CAN XL (Controller Area Network eXtended Length), in cui la dimensione del campo dati è stata aumentata a 2048 byte per garantire l'integrazione con le reti TCP/IP, è stata implementata la possibilità di incapsulamento di frame Ethernet e aggiunta la supporto modulazione di larghezza di impulso, consentendo di trasmettere dati a velocità di 20 Mbit/s e oltre.
    • Aggiunto supporto della struttura sockaddr_unsized, una variante della struttura sockaddr che utilizza un array di elementi flessibili anziché un array di dimensione fissa (sa_data[] invece di sa_data[14], che era essenzialmente utilizzato per riferimenti ad altre strutture di dimensioni maggiori).
    • È stata aggiunta la possibilità di utilizzare le funzionalità getsockname e getpeername tramite il sottosistema io_uring.
    • Aggiunti sysctl net.ipv4.tcp_rcvbuf_low_rtt e net.ipv4.tcp_comp_sack_rtt_percent per l'ottimizzazione del TCP.
    • Aggiunto supporto per collegamenti con larghezza di banda di 1600 Gbps (1.6T).
  • Attrezzature
    • Nella sottosistema DRM (Direct Rendering Manager) è stata aggiunta un'API per sfruttare le capacità hardware di conversione del colore, consentendo di evitare tali trasformazioni tramite shader o codice CPU. Per l'output su monitor HDR, le complesse conversioni di colore possono ora essere eseguite dal controller del display nelle fasi prima e dopo la miscelazione dei livelli (blending), invece che tramite compositing software dei contenuti nel buffer finale di visualizzazione. Oltre a ridurre i costi e il consumo energetico nella gestione dell'output HDR, la funzionalità proposta può essere utilizzata per una corretta riproduzione dei colori in editor video o di immagini.
    • Aggiunto Driver ethosu per le NPU Arm Ethos U65 e U85, progettato per l'accelerazione hardware dell'esecuzione dei modelli AI.
    • Nel driver i915 per GPU Lunar Lake e versioni più recenti è stata aggiunta la supporto per l'aumento della nitidezza dell'immagine (Sharpening).
    • Continuato lavoro sul driver drm (Direct Rendering Manager) Xe per GPU basate sull'architettura Intel Xe, utilizzate nelle schede grafiche Intel della famiglia Arc e nella grafica integrata, a partire dai processori Tiger Lake. È stato aggiunto il supporto iniziale per l'architettura Xe3P, utilizzata nelle GPU Crescent Island e nelle famiglie di processori con grafica integrata Nova Lake.
    • Nel driver AMDGPU è stato implementato un supporto completo per le schede grafiche AMD delle famiglie GCN 1.0 "Southern Island" e 1.1 "Sea Islands", per le quali in precedenza si utilizzava il driver Radeon. Il driver AMDGPU è stato portato a parità di funzionalità con il driver Radeon e attivato per le GPU indicate come predefinito. Le schede GCN 1.x sono state rilasciate dal 2012 al 2019 e includono modelli come Radeon HD 77xx/78xx/79xx/87xx/88xx/89xx, Radeon R9 280, FirePro W4000-W9000, Radeon Sky 700/900, Radeon R9 265/270/370, Radeon R9 290/390, HD 7790/8870 e altre schede grafiche delle famiglie Radeon Rx 200/Rx 300. Oltre a aumento della performance in media del 24%, il passaggio a AMDGPU ha permesso di implementare per queste GPU il supporto per l'API grafica Vulkan 1.3. Inoltre, in AMDGPU è stato aggiunto il supporto per connettori analogici e Video Coding Engine 1.0, ed è stato attivato per default lo stack DC (Display Core) per GPU basate sull'architettura Bonaire (Radeon HD 7790).
    • Nel driver Nouveau è stata realizzata supporto dell'acceleratore hardware NVJPG, presente nel SoC Tegra210.
    • Nel driver Panthor aggiunta supporto per la GPU Mali-G1 e supporto iniziale per il chip MediaTek MT8196.
    • Aggiunto supporto per il sistema audio dei chip Intel Nova Lake S, notebook HP con HDA CS35L41, e interfacce audio CIX IPBLOQ HD e Onkyo SE-300PCIE.
    • Continua l'integrazione dei componenti del driver Nova per GPU NVIDIA, dotate di firmware GSP, utilizzate a partire dalla serie NVIDIA GeForce RTX 2000 basata sull'architettura Turing. Il driver è scritto in Rust. Nella nuova versione è iniziato il lavoro su RPC e completata l'implementazione del caricamento del coprocessore GSP (GPU System Processor).
    • Aggiunto supporto per schede ARM, SoC e dispositivi: Bananapi r4 pro, LinkEase EasePi R1, Qualcomm MSM8937 (Snapdragon 430), Renesas R-Car X5H, FriendlyElec NanoPi R76S, TI AM62L, Black Sesame Technologies C1200, Aspeed AST2600, Genio 1200 EVK, grinn geniosbc-510/700, Tanix TX9 Pro, Radxa Dragon Q6A, Tinker Board 3/3S, Aquila AM69, phyBOARD-Segin-i.MX91, i.MX 95 Verdin Evaluation Kit, Toradex SMARC iMX95, VIDIA Jetson Nano 2GB, Renesas rz/g3s, Indiedroid Nova, 24 varianti di schede Enclustra Mercury.
    • Aggiunto supporto per smartphone e tablet basati su SoC Mediatek MT6582 (Alcatel yarisxl), Nvidia Tegra124 (Xiaomi Mi Pad) e Qualcomm MSM8939 (ASUS ZenFone 2). Aggiunto supporto per notebook basati su SoC Qualcomm sdm850, come Huawei MateBook E 2019.
    • È stata aggiunta la supporto per SoC e schede basate sull'architettura RISC-V: OrangePi R2S, OrangePi RV, Anlogic dr1v90, Tenstorrent Blackhole.

Fondazione per il software libero dell'America Latina ha formato una variante completamente libero kernel 6.19Linux-libre 6.19-gnu, ripulito da elementi di firmware e driver contenenti componenti o porzioni di codice non liberi, la cui applicazione è limitata dal produttore. Nel rilascio 6.19, è stato rimosso il codice per il caricamento di firmware binari dal sottosistema audio SDCA. Aggiornato il codice di pulizia dei blob nei driver Intel XE, Nova-Core, Qualcomm Iris, Venus e Q6V5, TI PRUeth, Intel iwlwifi, Marvell mwifiex, FourSemi fs210x, Realtek rt1320 e codec audio TI tas2783. È stata effettuata una pulizia dei nomi dei blob nei file dts (devicetree) per i chip ARM. È stata interrotta la pulizia del driver STM C8SECTPFE DVB, rimosso dal kernel.

Fonte: linux.org.ru

Acquista un hosting affidabile per siti con protezione DDoS, server VPS VDS 🔥 Acquista un hosting affidabile per siti con protezione DDoS, server VPS VDS | ProHoster