Dopu à dui mesi di sviluppu, Linus Torvalds hà publicatu u kernel. Linux 5.12. Frà i cambiamenti i più notevuli: u supportu per i dispusitivi à blocchi zonificati in Btrfs, a capacità di mappà l'ID di l'utilizatori à i sistemi di fugliali, a pulizia di l'architetture ARM legacy, a modalità di scrittura impaziente in NFS, u mecanismu LOOKUP_CACHED per determinà i percorsi di fugliali da a cache, u supportu per l'istruzzioni atomiche in BPF, u sistema di debugging KFENCE per rilevà errori in a gestione di a memoria, una modalità di polling NAPI in a pila di rete chì funziona in un thread di kernel separatu, l'ipervisore ACRN, a capacità di cambià u mudellu di preempt in tempu reale in u pianificatore di attività è u supportu per l'ottimisazioni LTO durante a custruzzione in Clang.
A nova versione include 14170 (in a versione precedente 15480) correzioni da 1946 (1991) sviluppatori, a dimensione di u patch hè 38 MB (i cambiamenti affettati 12102 (12090) schedarii, 538599 (868025) linee di codice sò state aghjunte, 333377 (261456) e linee sò state eliminate). Circa u 43% di tutti i cambiamenti introdotti in 5.12 sò ligati à i drivers di u dispositivu, circa 17% di i cambiamenti sò ligati à l'aghjurnamentu di u codice specificu à l'architetture hardware, u 12% sò ligati à a pila di rete, u 5% sò ligati à i sistemi di fugliali è u 4% sò ligati à i sottosistemi interni di u kernel.
Innuvazioni principali:
- Sottosistema di discu, I / O è sistemi di fugliale
- L'abilità di mape l'ID di l'utilizatori per i sistemi di fugliale muntati hè stata implementata (pudete mape i schedarii di un utilizatore nantu à una partizione straniera muntata cù un altru utilizatore in u sistema attuale). A mappatura hè supportata per i sistemi di fugliale FAT, ext4 è XFS. A funziunalità pruposta rende più faciule per sparta i fugliali trà utilizatori diversi è in computer diversi, cumpresa a mappatura serà aduprata in u mecanismu di repertoriu di casa portatili systemd-homed, chì permette à l'utilizatori di spustà i so cartulari di casa à media esterni è l'utilizanu in diversi computer, mapping. ID d'utilizatore à quale ùn currisponde micca. Un'altra applicazione utile hè di urganizà a prestazione di l'accessu spartutu à i schedari da un host esternu, senza veramente cambià e dati nantu à i pruprietarii di i schedari in u sistema di schedari.
- I patch LOOKUP_CCHED sò stati aduttati in u kernel, chì permettenu l'operazioni per determinà una strada di u schedariu da u spaziu di l'utilizatori senza bluccà, solu basatu nantu à e dati dispunibuli in u cache. U modu LOOKUP_CACHED hè attivatu in a chjama openat2 () passendu a bandiera RESOLVE_CACHED, in quale i dati sò servuti solu da u cache, è se a determinazione di u percorsu richiede l'accessu à l'unità, l'errore EAGAIN hè tornatu.
- U sistema di schedari Btrfs hà aghjustatu supportu iniziale per i dispositi di blocchi zonati (dispositivi nantu à dischi magnetici duri o SSD NVMe, u spaziu di almacenamiento in quale hè divisu in zoni chì custituiscenu gruppi di blocchi o settori, à quale solu l'aghjunzione sequenziale di dati hè permessa, aghjurnà tuttu u gruppu di blocchi). In modu di sola lettura, u supportu per i blocchi cù metadati è dati più chjuchi di una pagina (sottopagina) hè implementatu.
- In u sistema di schedari F2FS, a capacità di selezziunà l'algoritmu è u livellu di cumpressione hè stata aghjunta. Aghjunghje supportu per a cumpressione di altu livellu per l'algoritmu LZ4. Implementatu l'opzione di muntazione checkpoint_merge.
- Un novu cumandamentu ioctl FS_IOC_READ_VERITY_METADATA hè statu implementatu per leghje metadata da i schedarii prutetti cù fs-verity.
- U cliente NFS implementa un modu di scrittura "eager" (scrittura = ansiosu), quandu hè attivatu, l'operazioni di scrittura à un schedariu sò immediatamente trasferite à u servitore, sguassendu a cache di a pagina. Stu modu permette di riduce u cunsumu di memoria, furnisce l'istantanea di infurmazione nantu à a fine di u spaziu liberu in u sistema di fugliale, è in certi situazioni permette di ottene un rendimentu aumentatu.
- Nuvelle opzioni di muntagna sò state aghjunte à CIFS (SMB): acregmax per cuntrullà u caching di i schedari è acdirmax per cuntrullà a caching di metadata di u repertoriu.
- In XFS, u modu di cuntrollu di quota multi-threaded hè statu attivatu, l'esekzione fsync hè stata accelerata, è u codice growfs hè statu preparatu per implementà a funzione di riduce a dimensione di u sistema di fugliale.
- Memoria è servizii di sistema
- U subsistema DTMP (Dynamic Thermal Power Management) hè statu aghjuntu, chì vi permette di regulà dinamicamente u cunsumu d'energia di diversi dispositi basati nantu à i limiti di temperatura generale stabiliti.
- A capacità di custruisce u kernel cù u compilatore Clang cù l'inclusione di ottimisazioni in u stadiu di ligame (LTO, Link Time Optimization) hè stata implementata. L'ottimisazioni LTO sò diffirenti per piglià in contu u statu di tutti i fugliali implicati in u prucessu di custruzzione, mentre chì i modi tradiziunali di ottimisazione ottimisanu ogni schedariu separatamente è ùn anu micca cunsideratu e cundizioni per chjamà funzioni definite in altri schedari. Per esempiu, cù LTO, l'implementazione in linea hè pussibule per e funzioni da altri schedari, u codice inutilizatu ùn hè micca inclusu in u schedariu eseguibile, a verificazione di u tipu è l'ottimisazione generale sò realizati à u livellu di u prughjettu in tuttu. U supportu LTO hè attualmente limitatu à l'architetture x86 è ARM64.
- A capacità di selezziunà i modi di prelazione (PREEMPT) hè avà dispunibule in u pianificatore di attività à l'avviu (preempt=none/voluntary/full) o durante l'esecuzione via debugfs (/debug/sched_debug), se l'impostazione PREEMPT_DYNAMIC hè stata specificata durante a compilazione di u kernel. Prima, u modu di prelazione pudia esse specificatu solu à u livellu di i parametri di compilazione. Questa mudificazione permette à e distribuzioni di spedisce i kernel cù PREEMPT attivatu, chì furnisce una latenza minima per i desktop à u costu di una ligera diminuzione di u rendimentu, è, se necessariu, di vultà à PREEMPT_VOLUNTARY (un modu intermediu per i desktop) o PREEMPT_NONE (chì furnisce un rendimentu massimu per servitori).
- U supportu per l'operazioni atomiche BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG è BPF_CMPXCHG hè statu aghjuntu à u subsistema BPF.
- I prugrammi BPF sò datu l'abilità di accede à e dati nantu à a pila utilizendu punters cù offsets variabili. Per esempiu, se prima pudete aduprà solu un indice d'elementu constantu per accede à un array nantu à a pila, avà pudete aduprà un cambiante. U cuntrollu di l'accessu solu in i limiti esistenti hè realizatu da u verificatore BPF. Questa funzione hè dispunibule solu per i prugrammi privilegiati per via di preoccupazioni per l'esplosione di e vulnerabilità di esecuzione di codice speculativu.
- Aggiunta l'abilità di attaccà i prugrammi BPF à i punti di traccia nudi chì ùn sò micca assuciati cù eventi di traccia visibili in u spaziu di l'utilizatori (a preservazione ABI ùn hè micca garantita per tali punti di traccia).
- U supportu per l'autobus CXL 2.0 (Compute Express Link) hè statu implementatu, chì hè utilizatu per urganizà l'interazzione à alta velocità trà u CPU è i dispositi di memoria (permette di utilizà i dispositi di memoria esterni cum'è parte di RAM o memoria permanente, cum'è s'ellu sta memoria). sò stati cunnessi attraversu un controller di memoria standard in u CPU).
- Aghjuntu u driver nvmem per recuperà dati da e zone di memoria riservate à u firmware chì ùn sò micca direttamente accessibili Linux (per esempiu, a memoria EEPROM chì hè fisicamente accessibile solu à u firmware, o dati chì sò accessibili solu in una fase iniziale di l'avvio).
- U supportu per u sistema di profilazione "oprofile" hè statu sguassatu, chì ùn era micca largamente utilizatu è hè statu rimpiazzatu da u mecanismu perf più mudernu.
- L'interfaccia I/O asincrona io_uring furnisce integrazione cù cgroups chì cuntrolanu l'usu di memoria.
- L'architettura RISC-V supporta i sistemi NUMA, è ancu i meccanismi kprobes è uprobes.
- Aggiunta l'abilità di utilizà a chjama di u sistema kcmp () indipendentemente da a funziunalità di i snapshots di u statu di prucessu (checkpoint / ristore).
- I macros EXPORT_UNUSED_SYMBOL() è EXPORT_SYMBOL_GPL_FUTURE(), chì ùn sò micca stati usati in pratica per parechji anni, sò stati eliminati.
- Virtualizazione è Sicurezza
- Meccanisimu di prutezzione KFence (Kernel Electric Fence) aghjuntu, chì cattura errori quandu travaglia cù memoria, cum'è u buffer overruns è l'accessu dopu a liberazione di memoria. A cuntrariu di u mecanismu di debugging KASAN, u subsistema di KFence hè carattarizatu da una alta velocità di operazione è una bassa overhead, chì permette di catturà errori di memoria chì appariscenu solu nantu à i sistemi di travagliu o durante u travagliu longu.
- Aghjuntu u supportu per l'ipervisore ACRN, scrittu cù a prontezza in tempu reale è l'adattabilità à a missione critica in mente. ACRN furnisce un overhead minimu, garantisce una bassa latenza è una reattività adeguata quandu interagisce cù l'hardware. Supporta a virtualizazione di e risorse CPU, I/O, rete, grafiche è audio. ACRN pò esse adupratu per eseguisce parechje istanze isolate. macchine virtuali in unità di cuntrollu elettroniche, quadri di strumenti, sistemi d'infurmazione automobilistici, dispositivi IoT di cunsumu è altre tecnulugie integrate. ACRN supporta dui tipi di sistemi ospiti: VM di serviziu privilegiate, chì sò aduprate per gestisce e risorse di sistema (CPU, memoria, I/O, ecc.), è VM di l'utente, chì ponu esse eseguite Linux-distribuzioni, Android и Windows.
- U sottosistema IMA (Integrity Measurement Architecture), chì mantene una basa di dati hash per verificà l'integrità di i fugliali è i metadati assuciati, hà avà a capacità di verificà l'integrità di i dati di u kernel stessu, per esempiu, per seguità i cambiamenti in e regule SE.Linux.
- L'abilità di intercepte l'hypercalls Xen è di trasmette à l'emulatore chì funziona in u spaziu di l'utilizatori hè stata aghjunta à l'ipervisore KVM.
- Aggiunta a capacità di utilizà Linux cum'è l'ambiente root per l'ipervisore Hyper-V. L'ambiente root hà accessu direttu à l'hardware è hè adupratu per lancià i sistemi ospiti (simile à Dom0 in Xen). Finu à avà, Hyper-V (Microsoft Hypervisor) supportava Linux solu in ambienti invitati, ma l'ipervisore stessu era cuntrullatu da l'ambiente ospitante Windows.
- Aggiuntu supportu per a criptografia in linea per e carte eMMC, chì vi permette di utilizà meccanismi di criptografia integrati in u controller di unità chì cifrite è decifrate I / O in modu trasparente.
- U supportu per l'hash RIPE-MD 128/256/320 è Tiger 128/160/192, chì ùn sò micca usati in u core, è ancu u cifru di flussu Salsa20, chì hè statu rimpiazzatu da l'algoritmu ChaCha20, hè statu eliminatu da u sottosistema criptu. L'algoritmu blake2 hè statu aghjurnatu per implementà blake2s.
- Sottusistema di rete
- Aggiunta a capacità di trasfurmà u gestore di polling NAPI per i dispositi di rete à un filu di kernel separatu, chì permette un rendimentu migliuratu per certi tipi di carichi di travagliu. In precedenza, u sondaghju era realizatu in u cuntestu di softirq è ùn era micca cupartu da u pianificatore di u travagliu, chì hà fattu difficiule di realizà ottimisazioni fine per ottene u massimu rendiment. Esecuzione in un filu di kernel separatu permette à u gestore di polling per esse osservatu da u spaziu di l'utilizatori, attaccatu à i nuclei di CPU individuali, è pigliati in contu quandu pianificate u cambiamentu di u travagliu. Per attivà u novu modu in sysfs, u paràmetru /sys/class/net/ hè prupostu / filatu.
- Integrazione in u core di MPTCP (MultiPath TCP), una estensione di u protocolu TCP per urganizà u funziunamentu di una cunnessione TCP cù a consegna di pacchetti simultaneamente longu parechje rotte attraversu diverse interfacce di rete associate cù diversi indirizzi IP. A nova versione aghjusta l'abilità di assignà a priorità à certi fili, chì permette, per esempiu, di urganizà u travagliu di filamenti di salvezza chì s'accendenu solu s'ellu ci sò prublemi cù u filu primariu.
- IGMPv3 aghjunghjenu supportu per u mecanismu EHT (Explicit Host Tracking).
- U mutore di filtru di pacchetti di Netfilter furnisce l'abilità di pussede certe tavule per acquistà un cuntrollu esclusivu (per esempiu, un prucessu di firewall di fondo pò piglià a pruprietà di certe tavule, impediscendu à qualcunu di interferiscenu cun elli).
- Equipment
- Avemu pulitu e piattaforme ARM obsolete è senza mantenimentu. U codice per e piattaforme efm32, picoxcell, prima2, tango, u300, zx è c6x, è ancu i so driver associati, hè statu eliminatu.
- U driver amdgpu furnisce a capacità di overclock (OverDrive) carte basate nantu à a GPU Sienna Cichlid (Navi 22, Radeon RX 6xxx). Aghjunghje supportu per u formatu di pixel FP16 per DCE (mutore di cuntrollu di display) da 8a à 11a generazione. Per GPU Navy Flounder (Navi 21) è APU Van Gogh, a capacità di resettate a GPU hè stata implementata.
- U driver i915 per i carte gràfiche Intel implementa u paràmetru i915.mitigations per disattivà i meccanismi di isolamentu è prutezzione in favore di un rendimentu mejoratu. Per i chips chì partenu da Tiger Lake, u supportu per u mecanismu VRR (Variable Rate Refresh) hè inclusu, chì vi permette di cambià in modu adattatu a freccia di rinfrescante di u monitor per assicurà a fluidità è senza spazii durante i ghjoculi. U supportu per a tecnulugia Intel Clear Color hè inclusu per una precisione di culore mejorata. Supportu aghjuntu per DP-HDMI 2.1. A capacità di cuntrullà a retroilluminazione di i pannelli eDP hè stata implementata. Per i GPU Gen9 cù supportu LSPCON (Level Shifter and Protocol Converter), u supportu HDR hè attivatu.
- U driver nouveau aghjusta un supportu iniziale per i GPU NVIDIA basati nantu à l'architettura GA100 (Ampere).
- U driver msm aghjunghjenu supportu per Adreno 508, 509 è 512 GPU utilizati in SDM (Snapdragon) 630, 636 è 660 chips.
- Aggiuntu supportu per e carte sonu Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s è Pioneer DJM-750. Aghjunghje supportu per u sottosistema audio Intel Alder Lake PCH-P. U supportu per a simulazione di u software di cunnessione è scollegamentu di un connettore audio hè statu implementatu per i gestori di debugging in u spaziu di l'utilizatori.
- Aggiuntu u supportu per e console di ghjocu Nintendo 64 publicate trà u 1996 è u 2003 (tentativi precedenti di portu) Linux (U portu di Nintendo 64 ùn hè mai statu cumpletatu è hè statu relegatu à u statutu di Vaporware.) A motivazione per creà un novu portu per a piattaforma invechjata, chì hè stata fora di pruduzzione per quasi vinti anni, si dice chì hè u desideriu di stimulà u sviluppu di emulatori è simplificà u portu di ghjochi.
- Un driver aghjuntu per u controller di ghjocu Sony PlayStation 5 DualSense.
- Aghjunghje supportu per schede, dispositivi è piattaforme ARM: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M M4B, NanoPi MXNUMXB.
- Supportu aghjuntu per Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070 smartphones.
- Aggiuntu driver bcm-vk per schede di accelerazione Broadcom VK (per esempiu, schede PCIe Valkyrie è Viper), chì ponu esse aduprate per scaricate l'operazioni di trasfurmazione di l'audio, video è imaghjini, è ancu operazioni di criptografia, in un dispositivu separatu.
- Aghjunghje supportu per a piattaforma Lenovo IdeaPad cù a capacità di cuntrullà a carica constante è a retroilluminazione di u teclatu. Hè furnitu ancu supportu per u prufilu ACPI di a piattaforma ThinkPad cù a capacità di cuntrullà i modi di cunsumu di energia. Aggiuntu driver per Lenovo ThinkPad X1 Tablet Gen 2 sottosistema HID.
- Aggiuntu driver ov5647 cù supportu per u modulu di càmera per Raspberry Pi.
- Supportu aghjuntu per RISC-V SoC FU740 è schede HiFive Unleashed. Un novu driver per u chip Kendryte K210 hè statu ancu aghjuntu.
Source: opennet.ru
