Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds slÀppet av Linux-kÀrnan 6.14. Bland de mest anmÀrkningsvÀrda förÀndringarna: ntsync-drivrutinen med synkronisering primitiva för Windows NT, konfiguration av belastningsbalansering av lÀsoperationer i Btrfs RAID1, stöd för reflink i XFS i realtime-lÀge, möjlighet till icke-cacherad buffrad I/O, dmem cgroup för begrÀnsning av GPU-minne, anvÀndning av io_uring i FUSE, delegering av attribut i NFS, stöd för atomÀr skrivning i Device mapper, acceleration av symboliska lÀnkar, hantering av skriptkörningsmöjligheter, stöd för Qualcomm Snapdragon 8 Elite-chip och drivrutinen för AMD:s NPU.
I den nya versionen har 12115 korrigeringar accepterats frÄn 1984 utvecklare, patchstorleken Àr 39 MB (förÀndringarna berörde 10170 filer, 531586 kodrader lades till, 235999 rader togs bort). I den föregÄende utgÄvan var det 14172 korrigeringar frÄn 2086 utvecklare, patchstorleken var 46 MB. Cirka 41% av alla Àndringar i 6.14 relaterar till enhetsdrivrutiner, cirka 13% av Àndringarna handlar om uppdatering av hÄrdvaruspecifik kod, 14% relaterar till nÀtverksstacken, 7% till filsystem och 4% till interna kÀrnsystem.
De viktigaste nyheterna i kÀrnan 6.14:
- Disksubsystem, in- och utmatning och filsystem
- I filsystemet Btrfs har stöd lagts till för nya metoder för balans av lĂ€soperationer mellan lagringsenheter i RAID1-arrayen. Förutom den tidigare belastningsfördelningen baserad pĂ„ process ID (pid) har tre nya balanslĂ€gen föreslagits i den nya versionen: "rotation" (jĂ€mn belastningsfördelning över alla lagringsenheter, detta lĂ€ge Ă€r aktiverat som standard); "latency" (belastningsfördelning med hĂ€nsyn till fördröjning, kan vara anvĂ€ndbar vid fel eller instabil drift av lagringsenheter); devid (manuell hantering). För att Ă€ndra balanslĂ€get har grĂ€nssnittet "\/sys\/fs\/btrfs\/\/read_policy" lagts till. Bland andra förĂ€ndringar i Btrfs â implementeringen av ioctl FS_IOC_READ_VERITY_METADATA.
- En lĂ€get för icke-cachelad buffrad in- och utdata har lagts till, dĂ€r data tas bort frĂ„n sidcacheminnet sĂ„ snart lĂ€s- eller skrivoperationerna Ă€r klara. Ăndringen kan vara anvĂ€ndbar nĂ€r man anvĂ€nder mycket snabba lagringsenheter, dĂ€r det Ă€r överflödigt att cacha operationer i RAM. För sĂ„dana enheter möjliggör det nya lĂ€get att undvika onödig minnesanvĂ€ndning av sidcacheminnet utan att behöva anvĂ€nda den komplicerade API:n för direkt in- och utdata (Direct I/O).
- I fsnotify, mekanismen för att spÄra Àndringar i filsystemet, har en ny hÀndelse FS_PRE_ACCESS lagts till, som genereras precis innan Ätkomst till filinnehÄllet. HÀndelsen behandlas i synkront lÀge, d.v.s. kÀrnan skickar hÀndelsen och vÀntar pÄ att fÄ ett svar. Om svaret erhÄlls utförs operationen, och om ett fel uppstÄr returnerar systemanropet ett felkod till anvÀndarutrymmet. Med FS_PRE_ACCESS kan en process i anvÀndarutrymmet till exempel organisera ifyllandet av en fil nÀr data i det lÄngsamma lagret blir tillgÀngliga.
- I FUSE-undercystemet, som möjliggör skapandet av filsystemimplementationer i anvĂ€ndarutrymmet, har stöd för datadelning mellan kĂ€rnan och processen i anvĂ€ndarutrymmet lagts till med hjĂ€lp av in- och utdata-mekanismen io_uring. Ăndringen gör det möjligt att öka FUSE:s prestanda genom att minska kontextbyten mellan kĂ€rnan och anvĂ€ndarutrymmet.
- I filsystemet XFS har möjligheten att anvÀnda omvÀnd mappning (rmap, reverse-mapping) i lÀget med förutsÀgbara fördröjningar ('realtime device') lagts till. OmvÀnd mappning gör det möjligt att faststÀlla vilken fil ett givet block pÄ lagringsenheten anvÀnds för. Med hjÀlp av rmap i XFS har stöd för reflink-operationen implementerats för realtime-lÀget, vilket tillÄter skapandet av kopior av filer genom att klona filmetadata och skapa en lÀnk till redan existerande data utan att faktiskt kopiera dem.
- I VFS har caching av storleken pÄ symboliska lÀnkar implementerats, vilket har möjliggjort en hastighetsökning av 1,5 % vid utförandet av operationen readlink (i test med /initrd.img i ext4). Cachingen Àr aktiverad i FS ext4 och tmpfs.
- I implementeringen av NFSv4.2 har stöd för delegering av filattribut lagts till, vilket gör att man kan hantera sĂ„dana attribut som Ă€ndringstid (mtime) pĂ„ NFS-klienten, utan att behöva överföra Ă€ndringar till servern. NFS har ocksĂ„ förbĂ€ttrat stödet för protokollet âLOCALIOâ, vilket gör det möjligt att faststĂ€lla huruvida klienten och NFS-servern finns pĂ„ samma vĂ€rd, för att aktivera lĂ€mpliga optimeringar, som att klienten anvĂ€nder direkt in- och utmatning (Direct I/O).
- Prestandan vid lÀsoperationer i filsystemen NETFS, CIFS och AFS (Andrew File System) har förbÀttrats.
- I Squashfs har en direkt inlĂ€sningslĂ€ge för sidor till sidcache (SQUASHFS_FILE_DIRECT) inkluderats, vilket gör det möjligt att klara sig utan en separat read_page-cache. Ăndringen har möjliggjort en minskning av den minnesanvĂ€ndning som krĂ€vs vid anvĂ€ndning av Squashfs.
- I systemanropet statx() har flaggan STATX_DIO_READ_ALIGN implementerats för att bestÀmma det nödvÀndiga justeringen för lÀsoperationer frÄn fil.
- I filsystemet Bcachefs har formatet för diskstrukturer uppdaterats och stabiliserats. Alla framtida formatÀndringar kommer att klassificeras som valfria och realiseras som tillÀgg. Hastigheten för integritetskontroller av filsystemet har ökat avsevÀrt. Dessutom har Bcachefs förbÀttrat funktionaliteten i skrivskyddat lÀge; problem som ledde till minnesÄtkomst efter att det har frigjorts (use after free) har ÄtgÀrdats; problem med reflink-pekarna i fsck har lösts; hanteringen av omstart av transaktioner har korrigerats.
- Modulen md-linear, avsedd för att kombinera blockenheter, har ÄterstÀllts. Denna modul hade tidigare förklarats som förÄldrad och togs bort frÄn kÀrnan 6.8, men eftersom den visade sig vara efterfrÄgad har den Äterinförts.
- Filsystemen F2FS och SQUASHFS har övergÄtt till att anvÀnda sidor med minnesportföljer (page folios).
- Filsystemen OCFS2 och DLMFS har övergÄtt till att anvÀnda det nya API:et för monteringspartitionering.
- I drivrutinen null_blk har attributet ârotationalâ implementerats, vilket kan stĂ€llas in via configfs och gör det möjligt att simulera arbete med enhet baserad pĂ„ roterande skivor för att förenkla testningen av kĂ€rnfunktioner.
- I enheten Device mapper och i modulerna dm-mirror, dm-io, dm-table, dm-linear, dm-stripe och dm-raid1 har stöd för atomÀr skrivning implementerats.
- Minne och systemtjÀnster
- Integration into the core of the ntsync driver has been completed, implementing the symbolic device /dev/ntsync and a set of synchronization primitives used in the Windows NT kernel. Implementing such primitives at the kernel level significantly improves the performance of Windows games running via Wine. The performance gain is achieved by eliminating the overhead associated with using RPC in user space. The creation of a separate driver for the Linux kernel is due to the difficulties in correctly implementing the NT synchronization API on top of the existing kernel primitives.
- A new DMEM cgroup controller has been added for separate accounting of memory areas of devices such as GPUs. DMEM allows the creation of separate cgroups for different tasks that work with the GPU so that they can run without affecting each other. This new feature solves the problem of forced termination of GPU operations when available memory is exhausted by accounting for reflected GPU memory and CPU memory used by drivers in separate cgroups.
- Optimizations have been made to scale the flush operation of the TLB (Translation Lookaside Buffer) cache, used to speed up the translation of virtual addresses to physical ones. The added optimizations involve deferred updating of certain data structures during context switching, allowing for improved performance in specific tests.
- The performance of the MGLRU (Multi-Generational LRU) mechanism has been improved, which is used to determine which memory pages are in use and which can be swapped out to the page file.
- Ăndringar frĂ„n Rust-for-Linux-grenen, som rör anvĂ€ndningen av Rust som ett andrasprĂ„k för utveckling av drivrutiner och kĂ€rnmoduler, har fortsatt att överföras (Rust-stöd Ă€r inte aktiverat som standard och leder inte till att Rust ingĂ„r bland de obligatoriska byggberoendena för kĂ€rnan). Möjligheten att anvĂ€nda macro "derive(CoercePointee)" i kĂ€rnkoden har införts, vilket möjliggör anvĂ€ndning av smarta pekare med trait-objekt. Rust-bindningar för PCI, plattformar, Open Firmware, teckenhet och vissa in-/utdatafunktioner har lagts till i kĂ€rnan. Greg Kroah-Hartman, som ansvarar för supporten för den stabila Linux-kĂ€rnvetken, beskrev den aktuella statusen som "nĂ€stan redo för att skriva en verklig drivrutin med Rust".
- I byggscenarierna har ny kod föreslagits för att generera versioner av felsökningssymboler för laddningsmoduler, som nu anvÀnder information frÄn DWARF-felposter istÀllet för att direkt analysera kÀllkoden. Denna förÀndring möjliggör versionering av felsökningssymboler för moduler skrivna i Rust. Den gamla implementeringen har ocksÄ behÄllits i kÀrnan, och valet av generator görs pÄ byggalternativsnivÄ.
- För PowerPC-arkitekturen har stöd för lazy preemption-lÀget (PREEMPT_LAZY) införts, vilket motsvarar fullt avbrytande (full preemption) för realtidsuppgifter (RR/FIFO/DEADLINE), men skjuter upp avbrytandet av vanliga uppgifter (SCHED_NORMAL) till tickgrÀnsen.
- Stödet för energikonsumtionsrÀknare frÄn AMD-processorer har lagts till i prestandaprofileringssystemet "perf". Möjligheten att fungera pÄ system med upp till 2048 CPU-kÀrnor har lagts till.
- Möjligheten att anvÀnda sysctl-parametern pid_max med process-ID-namnrymder (ID namespace) har införts. Parametern pid_max Àr avsedd för att begrÀnsa det maximala vÀrdet av process-ID (PID) och kan nu anvÀndas för att begrÀnsa det maximalt möjliga antalet processer som körs i den angivna namnrymden. Hanteringen av parametern utförs hierarkiskt, dvs begrÀnsningar i externa namnrymder gÀller för inre namnrymder.
- Vid anvÀndning av systemanropet execveat för att starta en process kommer filsystemet /proc nu att visa namnet pÄ den körda filen istÀllet för filbeskrivarnumret.
- I kÀllkoden för kÀrnan (i katalogen samples/vfs) har ett verktyg för mountinfo lagts till, vilket demonstrerar anvÀndningen av systemanropen statmount() och listmount().
- I BPF-undersystemet har nya funktioner bpf_local_irq_save() och bpf_local_irq_restore() föreslagits för temporÀr inaktivering av avbrott pÄ den lokala CPU:n. Dessa funktioner kan anvÀndas för att implementera strukturer vars behandling inte avbryts av avbrott.
- I systemanropet madvise() har frigöring av sidtabeller kopplade till det frigjorda adresseringsintervallet sÀkerstÀllts vid anvÀndning av flaggorna MADV_DONTNEED och MADV_FREE, eftersom tomma sidor i minnet i vissa situationer kan ta upp betydande mÀngd minne.
- För OpenRISC-arkitekturen har stöd för mekanismen för Äterstartbara sekvenser (rseq, restartable sequences) implementerats, avsedd för snabb atomÀr utförande av operationer som, vid avbrott frÄn en annan trÄd, rensas och fÄr en ny försökskörning.
- Koden har omorganiserats med implementering av algoritmerna CRC32 och CRC-T10DIF, vilket inte lÀngre överlappar med kryptosystemet och anropas direkt frÄn bibliotekets grÀnssnitt. Denna Àndring har gjort det möjligt att förenkla koden och öka dess effektivitet.
- I systemet för asynkron I/O io_uring har ett grÀnssnitt lagts till för att skicka ytterligare metadata om integritet vid utförande av lÀs- och skrivoperationer.
- Virtualisering och sÀkerhet
- I systemanropet execveat har flaggan AT_EXECVE_CHECK lagts till, vilket möjliggör en kontroll av filens körbarhet utan faktisk körning, men med hÀnsyn till sÀkerhetspolicyer, ÄtkomstrÀttigheter och aktiva LSM-moduler. För anvÀndning tillsammans med AT_EXECVE_CHECK föreslÄs securebit-flaggorna SECBIT_EXEC_RESTRICT_FILE och SECBIT_EXEC_DENY_INTERACTIVE, som kan anvÀndas för att begrÀnsa körning av skriptfiler i tolkningssprÄk. Flaggan SECBIT_EXEC_RESTRICT_FILE ÄlÀgger lÀnkare och tolkar att anvÀnda alternativet AT_EXECVE_CHECK för att verifiera körbarheten, medan flaggan SECBIT_EXEC_DENY_INTERACTIVE förbjuder hantering av interaktiva kommandon. Huvudidén med förÀndringen Àr möjligheten att tillÀmpa sÀkerhetspolicyer inte bara pÄ traditionella körbara filer, utan Àven pÄ textfiler med skript, som kan laddas genom tolkens körning (det vill sÀga ett förbud mot körning kan tillÀmpas inte bara vid körning av './script.sh' utan Àven vid utförande som 'sh script.sh').
- PÄ x86-system har stöd för sÀkrade tidsrÀknare implementerats för gÀstsystem, vilket förhindrar Àndringar av systemtiden i gÀstsystemet frÄn vÀrdmiljön. Denna funktion genomförs med hjÀlp av AMD SEV (Secure Encrypted Virtualization), som anvÀnds i virtualisering för att skydda virtuella maskiner mot ingrepp frÄn hypervisor eller administratör av vÀrdsystemet.
- Det obligatoriska Ätkomstkontrollsystemet SELinux har fÄtt stöd för xperm-regler, vilket möjliggör koppling av SELinux-policys till specifika ioctl()-anrop eller netlink-meddelanden.
- För att verifiera kÀrnmoduler med digital signatur anvÀnds algoritmen SHA512 som standard istÀllet för SHA1.
- I drivrutiner för gÀstsystem har stöd för ARM64-arkitektur lagts till.
- I hypervisorn KVM Arbetet med att implementera Intel TDX (Trusted Domain Extensions) för kryptering av minnet i gÀstsystem har fortsatt.
- Stöd för felÄterstÀllningslÀge har lagts till i virtio_blk.
- NĂ€tverkssystemet
- I RxRPC-protokollets implementation har möjligheten att anvÀnda större UDP-ramar lagts till för att öka bandbredden.
- För TCP har stöd för algoritmen RACK-TLP lagts till för att identifiera paketförluster.
- En ny sysctl-parameter tcp_tw_reuse_delay har lagts till, som fungerar i bindning till namnomrÄdet (network namespace) och gör det möjligt att definiera fördröjningen innan systemet kan ÄteranvÀnda ett nÀtverksportnummer efter stÀngning av en TCP-socket.
- Möjlighet att vÀlja en noggrann tidleverantör (PTP) för att skapa tidsstÀmplar pÄ PHY- och MAC-nivÄer har lagts till.
- För IPsec har stöd för mekanismen för aggregering och fragmentering av inkapslade IP-paket â IP-TFS/AGGFRAG (IP Traffic Flow Security/Aggregation and Fragmentation Mode for Encapsulating Security Payload) implementerats.
- I nĂ€tverksocketsystemet har stöd för att överföra information om prioritet (SO_PRIORITY) i form av styrmeddelanden (cmsg â control messages) lagts till. För nĂ€tverksocketsystemet har alternativet SO_RCVPRIORITY lagts till, vilket inkluderar överföring av information om socketens prioritet i funktionen recvmsg().
- Utrustning
- En drivrutin för amdxdna har lagts till för de NPU (Neural Processing Unit) som Àr integrerade i AMD:s CPU, baserade pÄ XDNA-arkitekturen, avsedda för att pÄskynda operationer relaterade till maskininlÀrning. NPU baserade pÄ XDNA-arkitekturen finns i serierna 7040 och 8040 av AMD Ryzen-processorer, AMD Alveo V70-acceleratorer och SoC AMD Versal.
- I drivrutin i915 har identifieringarna för nya GPU:er lagts till, en hanterare för HDMI-initieringsfel har genomförts, och tillförlitligheten för ÄterstÀllning av GPU-motorer har förbÀttrats pÄ Haswell och Àldre system.
- Arbetet med drm-drivrutinen (Direct Rendering Manager) Xe för GPU:er baserade pÄ Intel Xe-arkitekturen har fortsatt, vilken anvÀnds i Intel Arc-grafikkort och integrerad grafik, frÄn Tiger Lake-processorer och framÄt.
- I drivrutinen Nouveau har möjligheten att överföra buffertar med loggar frÄn GSP-RM via debugfs lagts till.
- I AMDGPU-drivrutinen har stöd för DRM panic-mekanismen lagts till, som visar en variant av "blÄ skÀrm av död" vid krasch. Förberedelser för stöd för den framtida serien av Radeon RX 9000-grafikkort baserade pÄ RDNA4-arkitekturen har fortsatt. Stödet för DCN 3.5, GG 9.5, IH 4.4, PSP 13.x, SMU 13.x, VCN 5.x, JPEG 5.x, GC 12.x, DC FAMS, RAS och ISP har uppdaterats.
- Stödet för Qualcomm-plattformen SM6150 (QCS615) har lagts till i DRM-drivrutinen msm (GPU Qualcomm Adreno).
- I DRM-drivrutinen panfrost har stöd för SoC MediaTek MT8188 med GPU Mali-G57 lagts till.
- I DRM-drivrutinen vc4 har stöd för SoC Broadcom BCM2712 (Raspberry Pi 5) lagts till.
- Stödet för chipen NVIDIA Grace Blackwell 200 har lagts till i vfio-drivrutinen nvgrace-gpu.
- Drivrutinen för Intel THC (Touch Host Controller) har lagts till, vilket anvÀnds för att interagera med pekskÀrmar och pekplattor pÄ vissa bÀrbara datorer. Stöd för Wacom-enheter med PCI-grÀnssnitt har lagts till. Stöd för QH Electronics spelkontroller har lagts till.
- Stöd för ARM-plattformar, SoC och enheter har lagts till: Qualcomm Snapdragon 8 Elite (SM8750), Qualcomm Snapdragon AR2 (SAR2130P), Qualcomm IQ6/IQ8, Snapdragon 425 (MSM8917), Samsung Exynos 9810, Blaize BLZP1600, Microchip SAMA7D65, Renesas R-Car V4H ES3.0, Renesas RZ/G3E. Stöd för SpacemiT K1 SoC baserat pÄ RISC-V-arkitekturen har lagts till.
- I ljudsubsystemet ALSA för MIDI 2.0 har API:erna rawmidi och sequencer utvidgats. Stöd för ASRC (Asynchronous Sample Rate Conversion) har lagts till i API:t för att hantera komprimeringsoperationer pÄ ljudkortet.
- Stöd för ljudsystem pÄ enheter som Allwinner suinv F1C100s, Awinc AW88083, Realtek ALC5682I-VE, TAS2781, Focusrite Scarlett 4th Gen 16i16, 18i16 och 18i20 har lagts till. Stöd för SteelSeries Arctis 9 trÄdlösa hörlurar har lagts till.
KĂ€lla: opennet.ru
