Dopo due mesi di sviluppo, Linus Torvalds ha presentato il rilascio del kernel Linux 6.19. Tra le modifiche più significative ci sono: il sottosistema Live Update Orchestrator, supporto per la crittografia del link PCIe, la chiamata di sistema listns, la modalità Zero-Copy Receive in io_uring, supporto per l'estensione ARM MPAM, klp-build per la generazione di live-patch, supporto per l'architettura LoongArch32, QoS per s2idle, ottimizzazione del sottosistema di auditing, Intel LASS per protezione da 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.
Nel suo annuncio della nuova versione, Linus ha detto che al prossimo rilascio del kernel sarà assegnato il numero 7.0, poiché nella branch 6.x si sono accumulati sufficienti rilasci per cambiare il primo numero nella versione (in passato, il rilascio 6.0 è stato creato subito dopo il 5.19). Il cambiamento della numerazione viene effettuato per motivi estetici ed è un passo formale che allevia il disagio causato dall'accumulo di un gran numero di rilasci nella serie. Linus ha scherzato dicendo che viene confuso da numeri grandi per i quali non ha abbastanza dita sulle mani e sui piedi. Tuttavia, formalmente c'è un motivo per un cambiamento significativo del numero di versione, poiché a partire dal prossimo rilascio il supporto per Rust sarà spostato da sperimentale a funzionalità principali del kernel.
Nella nuova versione sono stati inclusi 15657 fix da 2237 sviluppatori, la dimensione del patch è di 52 MB (le modifiche hanno interessato 13682 file, sono state aggiunte 794649 righe di codice e eliminate 335498 righe). Nel rilascio precedente c'erano 15035 fix da 2217 sviluppatori, la dimensione del patch era di 45 MB. Circa il 40% di tutte le modifiche presentate in 6.19 riguardano i driver dei dispositivi, circa il 13% delle modifiche si riferisce all'aggiornamento del codice specifico per le architetture hardware, il 12% è legato allo stack di rete, il 5% ai file system e il 3% ai sotto-sistemi interni del kernel.
Le principali novità nel kernel 6.19 (1, 2, 3):
- Sottosistema di disco, input/output e file system
- In Btrfs, i processi di controllo del file system (scrub) e la sostituzione dei dispositivi non bloccano più il passaggio del sistema alla modalità di sospensione (prima di andare in sospensione viene salvato lo stato della verifica scrub; dopo il risveglio, la verifica scrub continua e l'operazione di sostituzione dei dispositivi viene riavviata). È stata aggiunta la supporto per blocchi di dimensioni superiori alla dimensione della pagina di memoria nell'implementazione RAID56. È stata effettuata la preparazione per il supporto di fscrypt. È stata migliorata la gestione dei blocchi durante le operazioni di riservazione dello spazio. È stata aggiunta la supporto alla operazione ioctl "shutdown", che consente di mettere il file system in uno stato in cui vengono tentati di completare le operazioni già avviate, mentre vengono bloccate tutte le nuove operazioni.
- Nel file system Ext4 è stata implementata la supporto per blocchi di dimensioni superiori alla dimensione della pagina di memoria (>4KB sui sistemi x86). L'uso di grandi blocchi migliora le prestazioni delle operazioni di scrittura in buffer di circa il 50%, ma riduce le prestazioni dell'input/output diretto a causa dell'aumento del tempo di calcolo delle somme di controllo. Nella nuova versione sono state aggiunte anche ottimizzazioni che hanno aumentato la larghezza di banda durante l'esecuzione della deframmentazione online.
- Nella sotto-sistema FUSE è stato migliorato il supporto per la lettura in buffer utilizzando grandi folii di pagine di memoria. Attraverso iomap è stata implementata la possibilità di monitorare i folii parzialmente attuali per caricare solo i dati non presenti nel buffer.
- Nel VFS è stata aggiunta la supporto per la delega di gestione delle directory richiamabile (recallable directory delegation), che consente di implementare in NFS il trasferimento di gestione delle directory da server al cliente, in modo che il client NFS possa tenere traccia dello stato della directory basandosi sulla cache locale senza effettuare richieste al server NFS. Se un altro client NFS apporta modifiche relative a questa directory, la delega della gestione verrà revocata al primo cliente.
- Per NFS è stata aggiunta la supporto per la lettura in modalità di input/output diretto (direct I/O). Sono state implementate le impostazioni /sys/kernel/debug/nfsd/io_cache_read e /sys/kernel/debug/nfsd/io_cache_write per gestire l'attivazione della cache e delle operazioni di input/output diretto, la manipolazione di queste impostazioni consente di ridurre il sovraccarico sul lato del client NFS durante l'esecuzione di grandi operazioni di input/output.
- In NTFS è stata implementata la supporto per l'operazione ioctl di spegnimento, sono state attivate di default le opzioni di montaggio «acl» e «prealloc», è stata aggiunta la supporto per date fino al 1 gennaio 1970.
- Per i dispositivi a blocchi e i file system è stata attivata di default la cache separata per ogni CPU degli oggetti «bio» (Block I/O), che definiscono le operazioni attive di input/output.
- Memoria e servizi di sistema
- Nel kernel è stata inclusa la sottosistema Live Update Orchestrator (LUO), che consente di riavviare e aggiornare il kernel senza fermare il lavoro e senza perdere lo stato del sistema, dei dispositivi e dei processi. La sottosistema LUO si basa sul meccanismo KHO (Kexec HandOver) precedentemente aggiunto al kernel e, oltre alla possibilità di avviare un nuovo kernel da uno vecchio senza perdere lo stato del sistema, affronta anche compiti come il salvataggio dello stato dei dispositivi e della memoria operativa, e garantisce la continuità delle operazioni legate a DMA e gestione delle interruzioni. Lo stato viene salvato prima del 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.
- È stata aggiunta la 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 la collocazione di elementi di dimensioni diverse nella coda di invio (SQE, Submission Queue Entry), in analogia a quanto era stato consentito nella precedente versione per il mescolamento delle dimensioni del contenuto della coda dei risultati (CQE, Completion Queue Event). Prima di questo, tutti gli elementi nella coda dovevano avere una dimensione uniforme, il che comportava un consumo eccessivo di memoria a causa della necessità di utilizzare la dimensione massima per tutti gli elementi nella coda.
In io_uring è stata aggiunta anche la supporto per il meccanismo zcrx (Zero-Copy Receive) per ricevere dati senza copie tra il kernel e lo spazio utente. È stato aggiunto il 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 necessarie per l'allocazione della memoria da parte dell'utente tramite i flag IORING_SETUP_NO_MMAP e IORING_MEM_REGION_TYPE_USER.
- Per una rapida tracciatura dello stack utilizzando strumenti come perf, è stato aggiunto il supporto per il formato SFrame con informazioni sullo srotolamento dello stack delle chiamate (unwind). SFrame è già supportato in GCC e binutils, non porta a una diminuzione delle prestazioni e, a differenza del formato DWARF, contiene solo il set minimo di informazioni necessarie per la tracciatura dello stack.
- Nell'utilità perf è stato aggiunto il supporto per la descrizione unificata di metriche ed eventi in formato JSON, nonché per lo srotolamento posticipato (deferred unwinding) dello stack delle chiamate nello spazio utente.
- Per i 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 caricare prima nella RAM.
- È stata aggiunta la supporto per MPAM (Memory System Resource Partitioning and Monitoring), un'estensione dell'architettura del set di istruzioni ARMv8-A per contrassegnare ogni accesso alla memoria con un identificatore di sezione (PARTID, Partition ID) e un identificatore di gruppo di monitoraggio (PMG, Monitoring Group ID). In relazione al PARTID è possibile limitare il consumo di risorse, come la larghezza di banda della memoria o la dimensione della cache, affinché un certo gruppo di task non occupi tutte le risorse. Nel contesto del monitoraggio, la combinazione di PMG e PARTID può essere utilizzata per tracciare il consumo di risorse della memoria durante determinate tipologie di carico.
- In caso di chiusura anomala del processo dopo aver ricevuto un segnale, un altro processo che ha il pidfd del processo terminato può ora determinare il numero del segnale che ha portato alla chiusura del processo.
- È stata rielaborata l'implementazione delle sequenze ripristinabili (restartable sequences), consentendo alle applicazioni di organizzare un'esecuzione pseudo-atomica non interrotta di un gruppo di istruzioni (in caso di interruzione da un altro thread, si tenta nuovamente di eseguire la sequenza). La nuova implementazione si distingue per una maggiore prestazione.
- Per i programmi BPF sono state implementate le istruzioni BPF_JMP, BPF_X e BPF_JA per effettuare salti indiretti a posizioni specifiche nella tabella dei salti. È stata aggiunta la concetto di puntatori dinamici (dynptr), che consente di leggere dati da file strutturati. È stata aggiunta la possibilità di allegare più byte di metadati ai pacchetti di rete.
- I moduli in linguaggio Python, utilizzati per la documentazione del kernel, sono stati spostati in una directory separata tools/lib/python.
- È stata aggiunta la funzione mempool_alloc_bulk() per l'allocazione sicura di elementi dal pool di memoria per più oggetti contemporaneamente.
- Continua il trasferimento delle modifiche dalla branch Rust-for-Linux, relative 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 porta all'inclusione di Rust tra le dipendenze di build obbligatorie del kernel). Nella nuova versione, nel kernel è stata integrata la libreria 'syn' con un parser di codice Rust che semplifica la scrittura di macro complesse. Le capacità delle librerie kernel, pin-init e rbtree sono state ampliate. È stata aggiunta la libreria 'num' con il tipo Integer per la manipolazione dei numeri interi. Al macro 'module!' è stato aggiunto il supporto per parametri interi. È stata implementata la possibilità di specificare parametri al caricamento di moduli del kernel scritti in Rust. Sono state implementate le astrazioni per le sottosistemi I2C e PWM (Pulse Width Modulation).
- È stato aggiunto il macro 'at_least' (ad esempio, 'param[at_least 7]'), che indica la dimensione minima consentita dell'array passato alla funzione. Se alla funzione viene passato un array con un numero inferiore di elementi, il compilatore emetterà un avviso.
- È stato incluso uno script klp-build per generare moduli del kernel che apportano modifiche al kernel attivo (livepatch), a partire da un file di patch. Sono state apportate modifiche all'utilità objtool necessarie per la creazione di live-patch.
- In User-mode Linux (esecuzione del kernel come processo utente) è stato aggiunto un supporto limitato per la multiprocessorità, ma i thread all'interno di un singolo processo non possono ancora essere eseguiti simultaneamente. È iniziato il porting di User-mode Linux sulla libreria nolibc.
- È stato aggiunto il supporto per l'architettura LoongArch32 (LA32R, LA32S) oltre a LoongArch64.
- È stata aggiunta la possibilità di impostare limiti di QoS sull'intensità di risveglio del processore in modalità risparmio energetico s2idle (Suspend-To-Idle), che interrompe l'esecuzione dei processi nello spazio utente, ma mantiene attivi alcuni gestori nel kernel.
- È stata aggiunta la 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 alle periferiche hardware negli indirizzi fisici, con la possibilità di filtrare le operazioni DMA per indirizzi virtuali, oltre a limitare e isolare le operazioni di input-output.
- Negli eventi di tracciamento delle chiamate di sistema è stata implementata la possibilità di leggere i buffer dallo spazio utente e di includere il loro contenuto (ad esempio, i nomi dei file) nel risultato della tracciatura.
- Le pagine di guardia della memoria (guard page), il cui accesso provoca un'eccezione e la terminazione del processo (SIGSEGV), sono ora contrassegnate con un'etichetta speciale nel file /proc/PID/smaps.
- È stata aggiunta la possibilità di gestire le pagine di grandi dimensioni (transparent huge page) nella memoria privata degli dispositivi zonati.
- Nel dispositivo zram, utilizzato per la memorizzazione compressa delle partizioni di swap in memoria, è stata implementata la supporto per la cessione di più strutture «bio» (Block I/O) in modalità batch (writeback batching).
- È stato incluso il font «Terminus 10×18», che migliora la leggibilità delle informazioni dalla console sugli schermi dei notebook a risoluzione media (1440×900).
- È stata significativamente ottimizzata l'operatività del sottosistema di auditing — si segnala una riduzione delle spese generali del 50%.
- Virtualizzazione e sicurezza
- È stata aggiunta la supporto della funzionalità di separazione dello spazio degli indirizzi lineari (LASS, linear address-space separation) fornita dai processori Intel, che consente di separare a livello hardware i range di indirizzi dello spazio utente e del kernel per migliorare la sicurezza. Lo spazio degli indirizzi è separato dal bit più significativo dell'indirizzo: metà dello spazio degli indirizzi con il bit più significativo impostato è utilizzata per il kernel, mentre la parte inferiore è riservata allo spazio utente. In una fase iniziale di esecuzione delle istruzioni (nella fase precedente all'esecuzione speculativa) viene effettuato un controllo sulla validità dell'accesso dallo spazio utente agli indirizzi con il bit più significativo impostato e viceversa. Tale separazione consente di bloccare le perdite di memoria del kernel nello spazio utente tramite canali esterni anche durante l'esecuzione speculativa delle istruzioni, permettendo di utilizzare LASS per proteggere dagli attacchi di tipo Meltdown e Spectre, senza comportare elevati sovraccarichi.
- È stata aggiunta la possibilità di attivare le estensioni di sicurezza del bus PCI Express — PCIe Link Encryption e PCIe Device Authentication, che consentono di autenticare e criptare il canale di comunicazione tra un dispositivo PCIe e una macchina virtuale, protetta attraverso i meccanismi Intel TDX (Trusted Domain Extensions) e AMD SEV-SNP (Secure Nested Paging). Le tecnologie implementate non consentono di intercettare, analizzare e sostituire i dati nel traffico DMA in presenza di accesso al sistema host o ad altri dispositivi.
- È stata aggiunta al library crittografica incorporata il 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 implementata la possibilità di monitorare la creazione di descrittori memfd per applicare politiche di sicurezza agli oggetti ad essi associati.
- Nel modulo LSM IPE (Integrity Policy Enforcement), che definisce la politica di integrità per l'intero sistema, è stata aggiunta la supporto per il flag AT_EXECVE_CHECK nella funzione execveat(), che attiva il controllo dell'integrità dello script prima della sua esecuzione da parte dell'interprete.
- Sono stati 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.
- È stata aggiunta la supporto per il meccanismo Confidential VMBus, utilizzato in Hypervisor HyperV per interazioni protette contro le manomissioni tra il sistema operativo guest, in esecuzione in modalità confidenziale (con crittografia della memoria e isolamento dei registri basato su tecnologie AMD SNP e Intel TDX), e il paravisore, responsabile dell'accesso ai dispositivi che elaborano dati riservati.
- È stata aggiunta la possibilità di trasmettere informazioni su un processo terminato in modo anomalo (per la generazione di coredump) tramite il meccanismo pidfd. L'identificatore PIDFD è collegato a un determinato processo e non cambia, mentre il PID può essere associato a un altro processo dopo la terminazione del processo attuale associato a quel PID. L'uso di pidfd consente di prevenire attacchi di sostituzione di un processo suid terminato in modo anomalo con un altro processo, creando una condizione di race dopo l'inizio del trattamento da parte del kernel dell'errore critico, ma prima che il gestore controlli i parametri del processo nello spazio utente.
- Sottosistema di rete
- Sono state apportate ottimizzazioni alla sottosistema di rete per migliorare l'efficienza nella trasmissione dei dati (TX). L'eliminazione della spinlock dalla funzione __dev_queue_xmit() e l'uso di una struttura llist senza lock hanno consentito di aumentare di quattro volte le prestazioni sotto carichi elevati e di raddoppiare l'intensità di invio dei pacchetti, riducendo al contempo il carico sulla CPU di due volte.
- È stata fornita la possibilità di disabilitare i limiti di utilizzo della memoria per singoli socket di rete (in questo caso verranno utilizzati i limiti di memoria generali impostati per singoli contenitori). Per gestire la disattivazione dei limiti è stato proposto il sysctl net.core.bypass_prot_mem e il flag SK_BPF_BYPASS_PROT_MEM nella funzione bpf_setsockopt.
- È stata aggiunta la 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 ingresso per ottenere dettagli più accurati durante il tracciamento dei percorsi con l'utility traceroute.
- È stata aggiunta la 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.
- Aggiunta la supporto al protocollo CAN XL (Controller Area Network eXtended Length), in cui la dimensione del campo dati è stata aumentata fino a 2048 byte per garantire l'integrazione con le reti TCP/IP, realizzata la possibilità di tunneling dei frame Ethernet e aggiunto il supporto per la modulazione di larghezza di impulso, consentendo la trasmissione di dati a velocità di 20 Mbit/s e superiori.
- Aggiunto il supporto per la struttura sockaddr_unsized, una variante della struttura sockaddr, che utilizza un array con elementi flessibili al posto di un array di dimensioni fisse (sa_data[] invece di sa_data[14], che essenzialmente veniva utilizzato per fare riferimento ad altre strutture di dimensioni maggiori).
- Aggiunta la possibilità di utilizzare le funzionalità getsockname e getpeername tramite la sottosistema io_uring.
- Aggiunti sysctl net.ipv4.tcp_rcvbuf_low_rtt e net.ipv4.tcp_comp_sack_rtt_percent per ottimizzare TCP.
- Aggiunto il supporto per collegamenti con una larghezza di banda di 1600 Gbps (1.6T).
- Apparecchiatura
- Nella sottosistema DRM (Direct Rendering Manager) è stato aggiunto un API per utilizzare le capacità hardware di conversione del colore, che consentono di evitare esecuzioni di tali conversioni tramite shader o l'esecuzione di codice sulla CPU. Per l'uscita del contenuto su monitor HDR, ora complessi convertimenti di colore possono essere eseguiti dal controller di visualizzazione nelle fasi prima e dopo la fusione dei strati (blending), al posto del compositing software dei contenuti nel buffer finale di visualizzazione. Oltre a ridurre i costi e il consumo energetico nella gestione dell'uscita in HDR, le funzionalità proposte possono essere utilizzate per una corretta riproduzione del colore in editor video o di immagini.
- Aggiunto il driver «ethosu» per NPU Arm Ethos U65 e U85, destinati all'accelerazione hardware dell'esecuzione di modelli AI.
- Nel driver i915 per GPU Lunar Lake e versioni successive è stata aggiunta la supporto per l'aumento hardware della nitidezza dell'immagine (Sharpening).
- Proseguita la lavorazione sul driver drm (Direct Rendering Manager) Xe per GPU basate sull'architettura Intel Xe, utilizzata nelle schede grafiche Intel della famiglia Arc e grafica integrata, a partire dai processori Tiger Lake. Aggiunto il supporto iniziale per l'architettura Xe3P, utilizzata nelle GPU Crescent Island e nella famiglia di processori con grafica integrata Nova Lake.
- Il driver AMDGPU offre un supporto completo per le schede grafiche AMD della famiglia GCN 1.0 "Southern Island" e 1.1 "Sea Islands", per le quali in precedenza era utilizzato il driver Radeon. Il driver AMDGPU è stato portato a parità di funzionalità con il driver Radeon ed è attivato di default per le GPU indicate. Le schede GCN 1.x sono state prodotte 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 un aumento delle prestazioni medio del 24%, il passaggio a AMDGPU ha consentito il supporto dell'API grafica Vulkan 1.3 per queste GPU. Inoltre, è stato aggiunto il supporto per connettori analogici e Video Coding Engine 1.0, e è stato utilizzato di default lo stack DC (Display Core) per le GPU basate sull'architettura Bonaire (Radeon HD 7700).
- Nel driver Nouveau è stato implementato il supporto per l'acceleratore hardware NVJPG, presente nel SoC Tegra210.
- Nel driver Panthor è stato aggiunto il supporto per la GPU Mali-G1 e il supporto iniziale per il chip MediaTek MT8196.
- È stato aggiunto il supporto per il sottosistema audio dei chip Intel Nova Lake S, dei laptop HP con HDA CS35L41, così come per le interfacce audio CIX IPBLOQ HD e Onkyo SE-300PCIE.
- È proseguita l'integrazione dei componenti del driver Nova per le GPU NVIDIA dotate di firmware GSP, utilizzati fin dalla serie NVIDIA GeForce RTX 2000 basata sull'architettura Turing. Il driver è scritto in Rust. Nella nuova versione è iniziato il lavoro su RPC ed è stata completata l'implementazione del caricamento del coprocessore GSP (GPU System Processor).
- È stato aggiunto il supporto per piattaforme 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.
- È stato aggiunto il supporto per smartphone e tablet basati su SoC Mediatek MT6582 (Alcatel yarisxl), Nvidia Tegra124 (Xiaomi Mi Pad) e Qualcomm MSM8939 (ASUS ZenFone 2). È stato aggiunto il supporto per laptop su SoC Qualcomm sdm850, come Huawei MateBook E 2019.
- È stato aggiunto il supporto per SoC e schede basati sull'architettura RISC-V: OrangePi R2S, OrangePi RV, Anlogic dr1v90, Tenstorrent Blackhole.
Contemporaneamente, il Fondo per il Software Libero dell'America Latina ha creato una versione completamente libera del kernel 6.19 — Linux-libre 6.19-gnu, depurata da elementi di firmware e driver contenenti componenti o porzioni di codice non liberi, il cui ambito di applicazione è limitato dal produttore. Nella versione 6.19, il codice per il caricamento di firmware binari è stato rimosso dal sottosistema audio SDCA. È stato aggiornato il codice per la 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 eseguita la 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: opennet.ru
