After two months of development, Linus Torvalds has announced the release of Linux Kernel 5.19. Among the most notable changes are: support for the LoongArch processor architecture, integration of 'BIG TCP' patches, an 'on-demand' mode in fscache, removal of code for a.out format support, the ability to apply ZSTD for firmware compression, an interface for managing memory eviction from user space, improved reliability and performance of the random number generator, support for Intel IFS (In-Field Scan), AMD SEV-SNP (Secure Nested Paging), Intel TDX (Trusted Domain Extensions), and ARM SME (Scalable Matrix Extension).
In the announcement, Linus stated that the next kernel release will likely be assigned the number 6.0, as the 5.x branch has accumulated enough releases to change the first digit in the version number. The renumbering is done for aesthetic reasons and is a formal step to alleviate discomfort from the accumulation of a large number of releases in the series.
Linus also mentioned that he used an Apple notebook based on ARM64 architecture (Apple Silicon) with a Linux environment from the Asahi Linux distribution to form the release. This is not Linus' main workstation, but he used this platform to verify its suitability for working on the kernel and to ensure he could produce kernel releases while traveling, with a lightweight laptop in hand. Many years ago, Linus had experience using Apple hardware for development â he once used a computer based on CPU ppc970 and a MacBook Air.
The new version includes 16,401 fixes from 2,190 developers (the previous release had 16,206 fixes from 2,127 developers), with a patch size of 90 MB (the changes affected 13,847 files, added 1,149,456 lines of code, and removed 349,177 lines). About 39% of all changes in 5.19 are related to device drivers, approximately 21% pertain to updating architecture-specific code, 11% relates to the network stack, 4% to file systems, and 3% to internal kernel subsystems.
Key features in Kernel 5.19:
- Disksubsystem, in- och utmatning och filsystem
- Filsystemet EROFS (Enhanced Read-Only File System), avsett för anvĂ€ndning pĂ„ partitioner som Ă€r tillgĂ€ngliga i skrivskyddat lĂ€ge, har övergĂ„tt till att anvĂ€nda fscache-subsystemet, vilket möjliggör datacaching. Ăndringen har haft en betydande effekt pĂ„ prestandan i system dĂ€r ett stort antal containrar startas frĂ„n en EROFS-baserad avbild.
- I fscache-subsystemet har en begÀran om lÀsning on-demand lagts till, som aktiveras för att optimera EROFS. Det nya lÀget möjliggör lÀsning frÄn cache av filsystembilder som finns i det lokala systemet. Till skillnad frÄn det ursprungligen tillgÀngliga arbetssÀttet, som fokuserade pÄ caching av data som överfördes via nÀtverksfilsystem, delegerar lÀget on-demand funktionerna för datautvinning och skriving till cache till en separat bakgrundsprocess som körs i anvÀndarutrymme.
- I XFS har möjligheten införts för att lagra miljarder avancerade attribut i i-noder. Det maximala antalet extent för en fil har ökat frÄn 4 miljarder till 247. En funktion för atomÀr uppdatering av flera avancerade filattribut har implementerats.
- I Btrfs-filsystemet har arbetet med lĂ„sningar optimerats, vilket har resulterat i en ökning av prestandan med cirka 7 % vid direkt skrivning utan vĂ€ntan. Prestandan för operationer i NOCOW-lĂ€ge (utan copy-on-write) har förbĂ€ttrats med cirka 3 %. Belastningen pĂ„ sidcache under kommando «send» har minskat. Den minimi storleken pĂ„ under-sidor har sĂ€nkts frĂ„n 64K till 4K (det Ă€r nu möjligt att anvĂ€nda under-sidor som Ă€r mindre Ă€n kĂ€rnans sidor). ĂvergĂ„ngen frĂ„n att anvĂ€nda ett radix-trĂ€d till algoritmen XArrays har genomförts.
- I NFS-servern har ett lÀge för att förlÀnga kvarhÄllande av en lÄs som stÀllts in av en klient, som har slutat svara pÄ förfrÄgningar, lagts till. Det nya lÀget tillÄter att rensning av lÄset fördröjs i upp till ett dygn om en annan klient inte begÀr en konkurrerande lÄs. I standardlÀge rensas lÄset efter 90 sekunder nÀr klienten slutat svara.
- I subsystemet för hÀndelsespÄrning i FS fanotify har flaggan FAN_MARK_EVICTABLE implementerats, med vilken det gÄr att inaktivera lÄsningen av mÄlinoden i cache, exempelvis för att ignorera grenar utan att lÄsa deras delar i cache.
- I drivrutinen för FAT32 har stöd för att hÀmta information om filens skapelsedatum lagts till via systemanropet statx, med en mer effektiv och funktionell version av stat() som returnerar utökad information om filen.
- Betydande optimeringar har införts i drivrutinen för exFAT, relaterade till samtidig rensning av en grupp sektorer i aktivt 'dirsync'-lÀge, istÀllet för sekventiell sektorrensning. Genom att minska antalet blockförfrÄgningar efter optimeringen har prestandan vid skapandet av ett stort antal kataloger pÄ SD-kort ökat med över 73-85% beroende pÄ klustrets storlek.
- Det första korrigerande uppdateringen av drivrutinen ntfs3 har inkluderats i kÀrnan. Sedan ntfs3 infördes i kÀrnverson 5.15 i oktober förra Äret har drivrutinen inte uppdaterats, och kontakten med utvecklarna har gÄtt förlorad, men nu har utvecklarna Äterupptagit publiceringen av Àndringar. I de föreslagna patcharna har fel som leder till minneslÀckor och krascher ÄtgÀrdats, problem med exekveringen av xfstests har lösts, oanvÀnd kod har rensats bort och stavfel har rÀttats.
- För OverlayFS har möjligheten att mappa anvÀndaridentiteter för monterade filsystem implementerats, vilket anvÀnds för att koppla filer av en viss anvÀndare pÄ ett monterat extern partition med en annan anvÀndare i det aktuella systemet.
- Minne och systemtjÀnster
- Inledande stöd för kommandosetsarkitekturen LoongArch har lagts till, som anvÀnds i Loongson 3 5000-processorer och implementerar en ny RISC ISA som liknar MIPS och RISC-V. Arkitekturen LoongArch finns i tre versioner: nedskalad 32-bitars (LA32R), standard 32-bitars (LA32S) och 64-bitars (LA64).
- Koden för att stödja formatet för körbara filer a.out har tagits bort, vilket har klassificerats som förÄldrat sedan version 5.1. Formatet a.out anvÀnds sÀllan pÄ Linux-system, och generering av a.out-filer stöds inte av moderna verktyg i standardkonfigurationer för Linux. Laddaren för a.out-filer kan helt implementeras i anvÀndarutrymmet.
- Stödet för boot-alternativ som Àr specifika för x86-arkitekturen (nosep, nosmap, nosmep, noexec och noclflush) har upphört.
- Stödet för den förÄldrade CPU-arkitekturen h8300 (Renesas H8/300), som lÀnge har varit utan underhÄll, har upphört.
- Möjligheterna för att reagera pÄ upptÀckten av split-lÄsningar har utvidgats, nÄgot som uppstÄr vid Ätkomst till ojusterade data i minnet nÀr en atomÀr instruktion korsar tvÄ CPU-cachelinjer. SÄdana lÄsningar leder till en betydande prestandaförlust. Tidigare gav kÀrnan som standard en varning med information om den process som orsakade lÄsningen, men nu kommer den problematiska processen dessutom att saktas ner för att bevara prestandan i resten av systemet.
- Stöd har lagts till för den implementering av IFS (In-Field Scan) i Intel-processorer, vilket möjliggör körning av lÄg nivÄ diagnostiska tester av CPU:er som kan identifiera problem som inte upptÀckts av standardmetoder baserade pÄ felkorrigeringskoder (ECC) eller paritetsbitar. De genomförda testen presenteras i form av en laddningsbar firmware, liknande uppdateringar av mikrokod. Testresultaten Àr tillgÀngliga via sysfs.
- Möjlighet har lagts till för att integrera bootconfig-filen i kÀrnan, vilket gör det möjligt att definiera kÀrnans driftparametrar via en instÀllningsfil förutom kommandoradsalternativen. Integrationen sker genom byggalternativet 'CONFIG_BOOT_CONFIG_EMBED_FILE="/PATH/TO/BOOTCONFIG/FILE"'. Tidigare definierades bootconfig genom bilaga till initrd-bilden. Integrationen i kÀrnan gör det möjligt att anvÀnda bootconfig i konfigurationer utan initrd.
- Möjlighet att ladda firmware komprimerad med Zstandard-algoritmen har implementerats. En uppsÀttning kontrollfiler har lagts till i sysfs under /sys/class/firmware/*, vilket möjliggör initiering av firmware-laddningar frÄn anvÀndarutrymme.
- I grÀnssnittet för asynkron in- och utmatning io_uring har en ny flagga IORING_RECVSEND_POLL_FIRST föreslagits, vilket vid aktivering innebÀr att nÀtverksoperationen först kommer att vidarebefordras för behandling via polling, vilket kan spara resurser i situationer dÀr det Àr acceptabelt att behandla operationen med viss fördröjning. Stöd för systemanropet socket() har ocksÄ lagts till i io_uring, och nya flaggor har föreslagits för att förenkla hanteringen av filbeskrivare, samt en "multi-shot"-lÀge för att ta emot flera anslutningar i accept()-anropet, och operationer för att direkt vidarebefordra NVMe-kommandon till enheten.
- För Xtensa-arkitekturen har stöd för felsökningsverktyget KCSAN (Kernel Concurrency Sanitizer) lagts till, avsett för dynamisk upptÀckte av racetillstÄnd inom kÀrnan. SömnlÀgesstöd och co-processorer har ocksÄ lagts till.
- För m68k-arkitekturen (Motorola 68000) har implementering genomförts. virtuell maskin (plattformssimulator) baserad pÄ Android Goldfish-emulatorn.
- För AArch64-arkitekturen har stöd för Armv9-A SME (Scalable Matrix Extension) implementerats.
- I eBPF-undersystemet har typade pekare i map-strukturer gjorts möjliga, och stöd för dynamiska pekare har lagts till.
- En ny förebyggande mekanism för minnesutdrivning har föreslagits, som stöder hantering frÄn anvÀndarutrymmet genom filen memory.reclaim. Att skriva ett tal i den angivna filen kommer att leda till ett försök att driva ut motsvarande antal byte frÄn den uppsÀttning som Àr kopplad till cgroup.
- Noggrannheten i minnesanvÀndningens rÀknande vid datakomprimering i swap-partitionen har ökat genom mekanismen zswap.
- För RISC-V-arkitekturen har stöd för körning av 32-bitars körbara filer pÄ 64-bitars system tillhandahÄllits, en lÀge för att binda begrÀnsande attribut till minnessidor (t.ex. för att förhindra caching) har lagts till, och funktionen kexec_file_load() har implementerats.
- Implementeringen av stöd för 32-bitars Armv4T- och Armv5-system har anpassats för anvÀndning i universella plattformsoberoende kÀrnsamlingar som passar olika ARM-system.
- Virtualisering och sÀkerhet
- I EFI-underdelen har möjligheten för konfidentiell överföring av hemlig information till gÀstsystem utan att avslöja den för vÀrdsystemet implementerats. Data tillhandahÄlls genom katalogen security/coco i securityfs.
- I Lockdown-skyddslÀget, som begrÀnsar root-anvÀndarens tillgÄng till kÀrnan och blockerar sÀtt att kringgÄ UEFI Secure Boot, har en lucka stÀngts som tidigare tillÀt kringgÄ skyddet genom manipulation med kÀrnfelsökaren.
- Patchar som syftar till att öka pÄlitlighet och prestanda för slumpgeneratorn har inkluderats.
- Vid byggnation med Clang 15 har stöd för mekanismen för slumptal i kÀrnstrukturer implementerats.
- I Landlock-mekanismen, som begrÀnsar en grupp processers interaktion med den externa miljön, har stöd för regler som möjliggör kontroll över filnamnÀndringsoperationer lagts till.
- IAM (Integrity Measurement Architecture) subsystem, designed to check the integrity of operating system components through digital signatures and hashes, has been transitioned to use the fs-verity module for file verification.
- The logic of actions has changed when disabling unprivileged access to the eBPF subsystem â previously, all commands related to the bpf() system call were disabled, but starting from version 5.19, access has been retained for commands that do not lead to object creation. With such behavior, a privileged process is required to load a BPF program, but subsequently, unprivileged processes can interact with this program.
- Support has been added for the AMD SEV-SNP (Secure Nested Paging) extension, which ensures safe operation with nested page tables and protects against 'undeSErVed' and 'SEVerity' attacks on AMD EPYC processors, which can bypass the AMD SEV (Secure Encrypted Virtualization) protection mechanism.
- Support has been added for Intel TDX (Trusted Domain Extensions) mechanism, which allows blocking attempts of external access to encrypted memory. virtuella maskiner.
- Support for input/output using polling has been added to the virtio-blk driver, used for emulating block devices, which in tests resulted in a delay reduction of approximately 10%.
- NĂ€tverkssystemet
- A series of BIG TCP patches have been included, allowing the maximum TCP packet size to be increased to 4GB to optimize the operation of high-speed internal data center networks. Such an increase in packet size is achieved through the implementation of 'jumbo' packets, where the size in the IP header is set to 0, and the actual size is transmitted in a separate 32-bit field in an additional attached header. Performance testing showed that setting the packet size to 185 KB allowed for a 50% increase in throughput and significantly reduced data transfer delays.
- Arbetet med att integrera verktyg för att spÄra orsakerna till paketförluster (reason-koder) i nÀtverksstacken har fortsatt. Anledningen till förlusten skickas vid frigöring av minnet kopplat till paketet och gör det möjligt att beakta sÄdana situationer som paketförlust pÄ grund av felaktig fyllning av fÀlt i rubriken, upptÀckta spoofing genom rp_filter, ogiltig kontrollsumma, brist pÄ minne, aktivering av IPSec XFRM-regler, ogiltigt TCP-sekvensnummer m.m.
- Stöd för att rulla tillbaka MPTCP (MultiPath TCP) till vanlig TCP har lagts till, i situationer dÀr vissa funktioner av MPTCP inte kan anvÀndas. MPTCP Àr en förlÀngning av TCP-protokollet som möjliggör att TCP-anslutningar kan leverera paket samtidigt över flera vÀgar via olika nÀtverksgrÀnssnitt kopplade till olika IP-adresser. Ett API för att hantera MPTCP-strömmar frÄn anvÀndarutrymmet har lagts till.
- Utrustning
- Ăver 420 000 rader kod relaterade till amdgpu-drivrutinen har lagts till, varav cirka 400 000 rader utgörs av automatiskt genererade headerfiler med registerdata för ASIC i drivrutinen för AMD GPU, och ytterligare 22 500 rader sĂ€kerstĂ€ller den initiala implementeringen av stöd för AMD SoC21. Den totala storleken pĂ„ drivrutinen för AMD GPU har överstigit 4 miljoner rader kod. Förutom SoC21 inkluderar drivrutinen stöd för SMU 13.x (System Management Unit), USB-C-stöd har uppdaterats, GPUVM har förbĂ€ttrats och förberedelser har gjorts för att stödja kommande generationer av plattformar RDNA3 (RX 7000) och CDNA (AMD Instinct).
- I i915-drivrutinen (Intel) har möjligheterna relaterade till energihantering utökats. Identifierare för Intel DG2 GPU (Arc Alchemist), som anvÀnds i bÀrbara datorer, har lagts till, den initiala stödet för Intel Raptor Lake-P (RPL-P) har implementerats, information om grafikprocessorer Arctic Sound-M har inkluderats, ABI för berÀkningsmotorer har implementerats, stöd för Tile4-formatet har lagts till för DG2-kort, och stöd för DisplayPort HDR har genomförts för system baserade pÄ Haswell-mikroarkitekturen.
- I Nouveau-drivrutinen har övergÄngen till anvÀndning av drm_gem_plane_helper_prepare_fb-hanteraren genomförts, och statisk minnesallokering har tillÀmpats för vissa strukturer och variabler. NÀr det gÀller anvÀndningen av NVIDIA:s öppna kÀllkod för kÀrnmoduler i Nouveau, Àr arbetet för nÀrvarande inriktat pÄ att identifiera och ÄtgÀrda fel. I framtiden planeras den publicerade programvaran att anvÀndas för att öka prestandan hos drivrutinen.
- En drivrutin för NVMe-kontrollern som anvÀnds i Apple-datorer med M1-chip har lagts till.
Samtidigt har den latinamerikanska Stiftelsen för fri programvara skapat en helt fri version av kÀrnan 5.19 - Linux-libre 5.19-gnu, som Àr rensad frÄn element av firmware och drivrutiner som innehÄller icke-fria komponenter eller kodavsnitt med begrÀnsad anvÀndning av tillverkaren. I den nya utgÄvan har drivrutinerna för pureLiFi X/XL/XC och TI AMx3 Wkup-M3 IPC rengjorts. Koden för att rensa blobbars i drivrutiner och subsystem frÄn Silicon Labs WFX, AMD amdgpu, Qualcomm WCNSS Peripheral Image Loader, Realtek Bluetooth, Mellanox Spectrum, Marvell WiFi-Ex, Intel AVS, IFS, pu3-imgu drivrutiner har uppdaterats. Behandling av devicetree-filer för Qualcomm AArch64 har implementerats. Stöd för det nya namnschema för komponenter i Sound Open Firmware har lagts till. Rensningen av ATM Ambassador-drivrutinen, som tagits bort frÄn kÀrnan, har upphört. Hanteringen av rensningen av blobbars i HDCP och Mellanox Core har flyttats till separata kconfig-taggar.
KĂ€lla: opennet.ru
