Linux 5.9 kernel release

Pagkatapos ng dalawang buwan ng pag-unlad, si Linus Torvalds ipinakilala pagpapalabas ng kernel Linux 5.9. Kabilang sa mga pinaka-kapansin-pansing pagbabago: nililimitahan ang pag-import ng mga simbolo mula sa proprietary modules hanggang sa GPL modules, pagpapabilis ng mga pagpapatakbo ng paglipat ng konteksto gamit ang FSGSBASE processor instruction, suporta para sa kernel image compression gamit ang Zstd, reworking ang prioritization ng mga thread sa kernel, suporta para sa PRP (Parallel Redundancy Protocol), pag-iiskedyul ng bandwidth-aware sa deadline scheduler, preemptive packing ng mga memory page, capability flag CAP_CHECKPOINT_RESTOR, close_range() system call, dm-crypt performance improvements, pagtanggal ng code para sa 32-bit na Xen PV na mga bisita, bagong slab memory mekanismo ng pamamahala, opsyon na "pagsagip" sa Btrfs, suporta para sa inline na pag-encrypt sa ext4 at F2FS.

Kasama sa bagong bersyon ang 16074 na pag-aayos mula sa mga developer noong 2011,
laki ng patch - 62 MB (naapektuhan ng mga pagbabago ang 14548 na file, 782155 na linya ng code ang naidagdag, 314792 na linya ang tinanggal). Humigit-kumulang 45% ng lahat ng ipinakita sa 5.9
Ang mga pagbabago ay nauugnay sa mga driver ng device, humigit-kumulang 15% ng mga pagbabago ay
saloobin sa pag-update ng code na partikular sa mga arkitektura ng hardware, 13%
nauugnay sa network stack, 3% sa mga file system at 3% sa panloob
mga subsystem ng kernel.

Ang pangunahing mga inobasyon:

  • Mga serbisyo ng memorya at system
    • Hinigpitan proteksyon laban sa paggamit ng mga layer ng GPL para sa pag-uugnay ng mga pagmamay-ari na driver sa mga bahagi ng kernel na na-export lamang para sa mga module sa ilalim ng lisensya ng GPL. Ang TAINT_PROPRIETARY_MODULE flag ay minana na ngayon sa lahat ng mga module na nag-i-import ng mga simbolo mula sa mga module na may ganitong flag. Kung ang isang GPL module ay sumusubok na mag-import ng mga simbolo mula sa isang non-GPL module, ang GPL module na iyon ay magmamana ng TAINT_PROPRIETARY_MODULE label at hindi maa-access ang mga kernel component na available lang sa GPL-licensed modules, kahit na ang module ay may dating na-import na mga simbolo mula sa ang kategoryang "gplonly". Ang reverse lock (nag-e-export lang ng EXPORT_SYMBOL_GPL sa mga module na nag-import ng EXPORT_SYMBOL_GPL), na maaaring masira ang gawain ng mga pagmamay-ari na driver, ay hindi ipinatupad (tanging ang pagmamay-ari na bandila ng module ang minana, ngunit hindi ang GPL binding).
    • Idinagdag kcompactd engine support para sa pre-packing memory page sa background upang madagdagan ang bilang ng malalaking memory page na magagamit sa kernel. Ayon sa mga paunang pagtatantya, ang background packaging, sa halaga ng minimal na overhead, ay maaaring mabawasan ang mga pagkaantala kapag naglalaan ng mga malalaking pahina ng memorya (malaking-pahina) ng 70-80 beses kumpara sa dating ginamit na mekanismo ng packaging, na inilunsad kapag ang pangangailangan ay lumitaw (on-demand ). Upang itakda ang mga hangganan ng panlabas na fragmentation na ibibigay ng kcompactd, idinagdag ang sysctl vm.compaction_proactiveness.
    • Idinagdag suporta para sa kernel image compression gamit ang algorithm Ztandard (zstd).
    • Ang suporta para sa mga tagubilin ng processor ay ipinatupad para sa mga x86 system FSGSBASE, na nagbibigay-daan sa iyong basahin at baguhin ang mga nilalaman ng FS/GS registers mula sa user space. Sa kernel, ang FSGSBASE ay ginagamit upang pabilisin ang mga pagpapatakbo ng paglipat ng konteksto sa pamamagitan ng pag-aalis ng mga hindi kinakailangang operasyon ng pagsulat ng MSR para sa GSBASE, at sa espasyo ng gumagamit ay iniiwasan nito ang mga hindi kinakailangang tawag sa system upang baguhin ang FS/GS.
    • Idinagdag ang parameter na "allow_writes" ay nagbibigay-daan sa iyo na ipagbawal ang mga pagbabago sa mga rehistro ng MSR ng processor mula sa espasyo ng gumagamit at limitahan ang pag-access sa mga nilalaman ng mga rehistrong ito upang basahin ang mga operasyon, dahil ang pagpapalit ng MSR ay maaaring humantong sa mga problema. Bilang default, ang pagsusulat ay hindi pa naka-disable, at ang mga pagbabago sa MSR ay makikita sa log, ngunit sa hinaharap ay binalak na ilipat ang default na access sa read-only na mode.
    • Sa asynchronous na interface ng I/O io_uring Nagdagdag ng buong suporta para sa asynchronous buffered read operations na hindi nangangailangan ng mga kernel thread. Inaasahan ang suporta sa pag-record sa isang release sa hinaharap.
    • Sa deadline ng I/O scheduler ipinatupad pagpaplano batay sa kapasidad, nagpapahintulot gumawa ng mga tamang desisyon sa mga sistemang walang simetriko gaya ng mga sistemang nakabatay sa ARM DynamIQ at malaki.LITTLE, na pinagsasama ang malalakas at hindi gaanong mahusay na mga core ng CPU na matipid sa enerhiya sa isang chip. Sa partikular, ang bagong mode ay nagbibigay-daan sa iyo upang maiwasan ang pag-iskedyul ng mga hindi pagkakatugma kapag ang isang mabagal na CPU core ay walang tamang mapagkukunan upang makumpleto ang isang gawain sa oras.
    • Ang modelo ng pagkonsumo ng enerhiya sa kernel (balangkas ng Modelo ng Enerhiya) ay ngayon naglalarawan ng hindi lamang pag-uugali ng pagkonsumo ng kuryente ng CPU, ngunit sumasaklaw din sa mga peripheral na device.
    • Ang close_range() system call ay ipinatupad upang payagan ang isang proseso na isara ang isang buong hanay ng mga open file descriptor nang sabay-sabay.
    • Mula sa pagpapatupad ng text console at ang driver ng fbcon tinanggal ang code, na nagbibigay ng kakayahang mag-scroll pabalik ng text gamit ang program (CONFIG_VGACON_SOFT_SCROLLBACK) nang higit pa sa dami ng VGA text mode na video memory.
    • Reworked algorithm para sa pagtatalaga ng mga priyoridad sa mga thread sa loob ng kernel. Ang bagong opsyon ay nagbibigay ng mas mahusay na pagkakapare-pareho sa lahat ng kernel subsystem kapag nagtatalaga ng mga priyoridad sa mga real-time na gawain.
    • Nagdagdag ng sysctl sched_uclamp_util_min_rt_default upang kontrolin ang mga setting ng pagpapalakas ng CPU para sa mga real-time na gawain (halimbawa, maaari mong baguhin ang gawi ng mga real-time na gawain nang mabilisan upang makatipid ng kuryente pagkatapos lumipat sa lakas ng baterya o sa mga mobile system).
    • Ang mga paghahanda ay ginawa upang ipatupad ang suporta para sa Transparent Huge Pages na teknolohiya sa cache ng pahina.
    • Ang fanotify engine ay nagpapatupad ng mga bagong flag na FAN_REPORT_NAME at FAN_REPORT_DIR_FID upang iulat ang pangalan ng magulang at natatanging impormasyon ng FID kapag nangyari ang mga kaganapan sa paggawa, pagtanggal, o paggalaw para sa mga item sa direktoryo at mga bagay na hindi direktoryo.
    • Para sa mga cgroup ipinatupad isang bagong slab memory controller, na kapansin-pansin sa paglipat ng slab accounting mula sa level ng memory page patungo sa kernel object level, na ginagawang posible na ibahagi ang mga slab page sa iba't ibang cgroup, sa halip na maglaan ng hiwalay na mga slab cache para sa bawat cgroup. Ang iminungkahing diskarte ay ginagawang posible upang madagdagan ang kahusayan ng paggamit ng slab, bawasan ang laki ng memorya na ginagamit para sa slab ng 30-45%, makabuluhang bawasan ang pangkalahatang pagkonsumo ng memorya ng kernel at bawasan ang memory fragmentation.
    • Sa sound subsystem ALSA ΠΈ USB stack, alinsunod sa kamakailang pinagtibay mga rekomendasyon sa paggamit ng inklusibong terminolohiya sa Linux kernel; nalinis ang mga maling termino sa pulitika. Na-clear na ang code sa mga salitang "slave", "master", "blacklist" at "whitelist".
  • Virtualization at Seguridad
    • Kapag nagtatayo ng kernel gamit ang Clang compiler lumitaw ang kakayahang i-configure (CONFIG_INIT_STACK_ALL_ZERO) ang awtomatikong pagsisimula sa zero ng lahat ng mga variable na naka-imbak sa stack (kapag binuo, tukuyin ang "-ftrivial-auto-var-init=zero").
    • Sa seccomp subsystem, kapag gumagamit ng process control mode sa user space, idinagdag pagkakataon pagpapalit ng mga file descriptor sa sinusubaybayang proseso upang ganap na tularan ang mga tawag sa system na humahantong sa paglikha ng mga file descriptor. In demand ang functionality sa mga nakahiwalay na container system at mga pagpapatupad ng sandbox para sa Chrome.
    • Para sa xtensa at csky architecture, idinagdag ang suporta para sa paglilimita sa mga tawag sa system gamit ang seccomp subsystem. Para sa xtensa, ipinapatupad din ang suporta para sa mekanismo ng pag-audit.
    • Idinagdag bagong capability flag na CAP_CHECKPOINT_RESTORE, na nagbibigay-daan sa iyong magbigay ng access sa mga kakayahan na nauugnay sa pagyeyelo at pagpapanumbalik ng estado ng mga proseso nang hindi naglilipat ng mga karagdagang pribilehiyo.
    • Ang GCC 11 ay nagbibigay ng lahat ng mga tampok na kailangan mo
      debugging tool na KCSAN (Kernel Concurrency Sanitizer), na idinisenyo upang dynamic na makita ang mga kondisyon ng lahi sa loob ng kernel. Kaya, maaari na ngayong gamitin ang KCSAN sa mga kernel na binuo sa GCC.

    • Para sa AMD Zen at mas bagong mga modelo ng CPU idinagdag suporta para sa teknolohiyang P2PDMA, na nagpapahintulot sa iyo na gumamit ng DMA para sa direktang paglipat ng data sa pagitan ng memorya ng dalawang device na konektado sa PCI bus.
    • Naidagdag ang isang mode sa dm-crypt na nagbibigay-daan sa iyong bawasan ang latency sa pamamagitan ng pagsasagawa ng cryptographic data processing nang hindi gumagamit ng mga pila sa trabaho. Ang mode na ito ay kinakailangan din para sa tamang operasyon sa naka-zone harangan ang mga device (mga device na may mga lugar na dapat isulat nang sunud-sunod, ina-update ang buong pangkat ng mga bloke). Ang trabaho ay ginawa upang madagdagan ang throughput at bawasan ang latency sa dm-crypt.
    • Inalis ang code upang suportahan ang mga 32-bit na bisita na tumatakbo sa paravirtualization mode na nagpapatakbo ng Xen hypervisor. Ang mga user ng naturang mga system ay dapat lumipat sa paggamit ng 64-bit kernels sa mga guest environment o gumamit ng full (HVM) o combined (PVH) virtualization mode sa halip na paravirtualization (PV) para magpatakbo ng mga environment.
  • Disk subsystem, I/O at mga file system
    • Sa Btrfs file system ipinatupad isang "rescue" mount option na pinag-iisa ang access sa lahat ng iba pang opsyon sa pagbawi. Ang suporta para sa "alloc_start" at "subvolrootid" na mga opsyon ay inalis, at ang "inode_cache" na opsyon ay hindi na ginagamit. Ang mga pag-optimize ng pagganap ay ginawa, lalo na ang kapansin-pansing pagpapabilis sa pagpapatupad ng mga operasyon ng fsync(). Idinagdag ang kakayahang gumamit ng mga alternatibong uri ng mga checksum maliban sa CRC32c.
    • Idinagdag ang kakayahang gumamit ng inline encryption (Inline Encryption) sa ext4 at F2FS file system, upang paganahin kung aling opsyon sa pag-mount ang "inlinecrypt" ay ibinigay. Nagbibigay-daan sa iyo ang inline encryption mode na gamitin ang mga mekanismo ng pag-encrypt na nakapaloob sa drive controller, na malinaw na nag-e-encrypt at nagde-decrypt ng input/output.
    • Sa XFS secured inode reset (flush) sa ganap na asynchronous mode na hindi humaharang sa mga proseso kapag nagsasagawa ng memory cleanup operation. Nalutas ang isang matagal nang isyu sa quota na naging sanhi ng maling pagsubaybay sa mga babala sa soft limit at inode limit. Pinag-isang pagpapatupad ng suporta sa DAX para sa ext4 at xfs.
    • Sa Ext4 ipinatupad preload block allocation bitmaps. Kasama ng paglilimita sa pag-scan ng mga hindi pa nasimulan na grupo, binawasan ng pag-optimize ang oras na kailangan para i-mount ang napakalaking partisyon.
    • Sa F2FS dagdag pa ioctl F2FS_IOC_SEC_TRIM_FILE, na nagbibigay-daan sa iyong gamitin ang TRIM/discard command para pisikal na i-reset ang tinukoy na data sa isang file, halimbawa, para tanggalin ang mga access key nang hindi nag-iiwan ng natitirang data sa drive.
      Sa F2FS din dagdag pa bagong garbage collection mode GC_URGENT_LOW, na gumagana nang mas agresibo sa pamamagitan ng pag-aalis ng ilang pagsusuri para sa pagiging idle state bago simulan ang garbage collector.

    • Sa bcache, ang bucket_size para sa mga extent ay nadagdagan mula 16 hanggang 32 bits bilang paghahanda para sa pagpapagana ng mga naka-zone na cache ng device.
    • Ang kakayahang gumamit ng inline encryption batay sa built-in na hardware encryption na ibinigay ng mga UFS controllers ay naidagdag sa SCSI subsystem (universal-flash-storage).
    • Ang isang bagong parameter ng command line ng kernel na "debugfs" ay idinagdag, na nagbibigay-daan sa iyong kontrolin ang pagkakaroon ng pseudo-FS ng parehong pangalan.
    • Ang kliyente ng NFSv4.2 ay nagbibigay ng suporta para sa mga pinahabang katangian ng file (xattr).
    • Sa dm-dust dagdag pa interface para sa pagpapakita nang sabay-sabay ng isang listahan ng lahat ng natukoy na masamang bloke sa disk ("dmsetup message dust1 0 listbadblocks").
    • Para sa md/raid5, ang parameter na /sys/block/md1/md/stripe_size ay idinagdag upang i-configure ang STRIPE block size.
    • Para sa mga NVMe storage device idinagdag suporta para sa mga drive zoning command (ZNS, NVM Express Zoned Namespace), na nagbibigay-daan sa iyong hatiin ang storage space sa mga zone na bumubuo sa mga grupo ng mga block para sa mas kumpletong kontrol sa paglalagay ng data sa drive.
  • Subsystem ng network
    • Sa Netfilter idinagdag ang kakayahang tanggihan ang mga packet sa yugto bago ang routing check (ang REJECT expression ay maaari na ngayong gamitin hindi lamang sa INPUT, FORWARD at OUTPUT chain, kundi pati na rin sa PREROUTING stage para sa icmp at tcp).
    • Sa nftables idinagdag ang kakayahang mag-audit ng mga kaganapan na nauugnay sa mga pagbabago sa configuration.
    • Sa mga nftable sa netlink API idinagdag suporta para sa mga hindi kilalang chain, ang pangalan nito ay dynamic na itinalaga ng kernel. Kapag nagtanggal ka ng panuntunang nauugnay sa isang hindi kilalang chain, ang chain mismo ay awtomatikong tatanggalin.
    • Nagdaragdag ang BPF ng suporta para sa mga iterator na tumawid, mag-filter, at magbago ng mga elemento ng associative arrays (mga mapa) nang hindi kinokopya ang data sa espasyo ng user. Maaaring gamitin ang mga iterator para sa mga TCP at UDP na socket, na nagpapahintulot sa mga programa ng BPF na umulit sa mga listahan ng mga bukas na socket at kunin ang impormasyong kailangan nila mula sa kanila.
    • Nagdagdag ng bagong uri ng BPF program na BPF_PROG_TYPE_SK_LOOKUP, na inilunsad kapag naghanap ang kernel ng angkop na socket sa pakikinig para sa isang papasok na koneksyon. Gamit ang isang BPF program na tulad nito, maaari kang lumikha ng mga handler na gumagawa ng mga desisyon tungkol sa kung aling socket ang dapat iugnay sa isang koneksyon, nang hindi napipigilan ng bind() system call. Halimbawa, maaari mong iugnay ang isang socket sa isang hanay ng mga address o port. Sa karagdagan, ang suporta para sa SO_KEEPALIVE flag ay naidagdag sa bpf_setsockopt() at ang kakayahang mag-install ng BPF_CGROUP_INET_SOCK_RELEASE handler, na tinatawag kapag ang socket ay inilabas, ay ipinatupad.
    • Ipinatupad ang suporta sa protocol PRP (Parallel Redundancy Protocol), na nagpapahintulot sa Ethernet-based na paglipat sa isang backup na channel, transparent para sa mga application, kung sakaling mabigo ang anumang bahagi ng network.
    • I-stack ang mac80211 idinagdag suporta para sa apat na yugto ng WPA/WPA2-PSK channel negotiation sa access point mode.
    • Idinagdag ang kakayahang ilipat ang qdisc (queuing discipline) scheduler para gamitin ang FQ-PIE (Flow Queue PIE) network queue management algorithm bilang default, na naglalayong bawasan ang negatibong epekto ng intermediate packet buffering sa edge network equipment (bufferbloat) sa mga network na may mga cable modem.
    • Ang mga bagong feature ay idinagdag sa MPTCP (MultiPath TCP), mga extension ng TCP protocol para sa pag-aayos ng operasyon ng isang koneksyon sa TCP sa paghahatid ng mga packet nang sabay-sabay sa ilang mga ruta sa pamamagitan ng iba't ibang mga interface ng network na nauugnay sa iba't ibang mga IP address. Nagdagdag ng suporta para sa syn cookie, DATA_FIN, buffer auto-tuning, socket diagnostics, at REUSEADDR, REUSEPORT, at V6ONLY na mga flag sa setsockopt.
    • Para sa mga virtual na routing table na VRF (Virtual Routing and Forwarding), na nagpapahintulot sa pag-oorganisa ng operasyon ng ilang mga routing domain sa isang system, ang "mahigpit" na mode ay ipinatupad. Sa mode na ito, ang isang virtual na talahanayan ay maaari lamang iugnay sa isang routing table na hindi ginagamit sa iba pang mga virtual na talahanayan.
    • Ang wireless driver ay ath11k idinagdag sumusuporta sa 6GHz frequency at parang multo na pag-scan.
  • ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
    • Inalis ang code upang suportahan ang UniCore architecture, na binuo sa Microprocessor Center ng Peking University at kasama sa Linux kernel noong 2011. Ang arkitektura na ito ay hindi napanatili mula noong 2014 at walang suporta sa GCC.
    • Ang suporta para sa arkitektura ng RISC-V ay ipinatupad kcov (debugfs interface para sa pagsusuri ng kernel code coverage), kmemleak (memory leak detection system), stack protection, jump mark at walang kiliti na operasyon (multitasking independent sa timer signal).
    • Para sa arkitektura ng PowerPC, ipinatupad ang suporta para sa mga pila ng spinlock, na lubos na nagpabuti ng pagganap sa mga sitwasyon ng lock conflict.
    • Para sa mga arkitektura ng ARM at ARM64, ang mekanismo ng regulasyon ng dalas ng processor ay pinagana bilang default iskedyul (cpufreq governor), na direktang gumagamit ng impormasyon mula sa task scheduler para magdesisyon sa pagpapalit ng frequency at maa-access agad ang mga cpufreq driver para mabilis na baguhin ang frequency, na agad na inaayos ang mga parameter ng operating ng CPU sa kasalukuyang load.
    • Ang i915 DRM driver para sa mga Intel graphics card ay may kasamang suporta para sa mga chips batay sa microarchitecture rocket lake at nagdagdag ng paunang suporta para sa mga discrete card Intel Xe DG1.
    • Nagdagdag ang driver ng Amdgpu ng paunang suporta para sa mga AMD GPU Navi 21 (Navy Flounder) at Navi 22 (Sienna Cichlid). Nagdagdag ng suporta para sa UVD/VCE video encoding at decoding acceleration engine para sa Southern Islands GPU (Radeon HD 7000).
      Nagdagdag ng property para i-rotate ang display nang 90, 180 o 270 degrees.

      Kapansin-pansin, ang driver para sa AMD GPU ay ang pinakamalaking driver sa kernel - mayroon itong humigit-kumulang 2.71 milyong linya ng code, na humigit-kumulang 10% ng kabuuang laki ng kernel (27.81 milyong linya). Kasabay nito, 1.79 milyong mga linya ang isinasaalang-alang ng awtomatikong nabuong mga file ng header na may data para sa mga rehistro ng GPU, at ang C code ay 366 libong linya (para sa paghahambing, ang driver ng Intel i915 ay may kasamang 209 libong linya, at Nouveau - 149 libo).

    • Sa driver ng Nouveau idinagdag suporta para sa pagsuri ng integridad ng frame-by-frame gamit CRC (Cyclic Redundancy Checks) sa NVIDIA GPU display engine. Ang pagpapatupad ay batay sa dokumentasyong ibinigay ng NVIDIA.
    • Nagdagdag ng mga driver para sa mga LCD panel: Frida FRD350H54004, KOE TX26D202VM0BWA, CDTech S070PWS19HP-FC21, CDTech S070SWV29HG-DC44, Tianma TM070JVHG33 at Xingbangda XBD599.
    • Sinusuportahan ng ALSA audio subsystem Intel Silent Stream (continuous power mode para sa mga external na HDMI device upang maalis ang pagkaantala kapag sinisimulan ang pag-playback) at bagong device upang kontrolin ang pag-iilaw ng pag-activate ng mikropono at mga pindutan ng mute, at nagdagdag din ng suporta para sa mga bagong kagamitan, kabilang ang isang controller Longson 7A1000.
    • Nagdagdag ng suporta para sa mga ARM board, device at platform: Pine64 PinePhone v1.2, Lenovo IdeaPad Duet 10.1, ASUS Google Nexus 7, Acer Iconia Tab A500, Qualcomm Snapdragon SDM630 (ginagamit sa Sony Xperia 10, 10 Plus, XA2, XA2 Plus at XA2 Ultra), Jetson Xavier NX, Amlogic WeTek Core2, Aspeed EthanolX, limang bagong board batay sa NXP i.MX6, MikroTik RouterBoard 3011, Xiaomi Libra, Microsoft Lumia 950, Sony Xperia Z5, MStar, Microchip Sparx5, Intel Keem Bay, Amazon Alpine v3, Renesas RZ/G2H.

Kasabay nito, ang Latin American Free Software Foundation nabuo
pagpipilian ganap na libreng kernel 5.9 - Linux-libre 5.9-gnu, na-clear sa firmware at mga elemento ng driver na naglalaman ng mga di-libreng bahagi o mga seksyon ng code, na ang saklaw ay limitado ng tagagawa. Hindi pinapagana ng bagong release ang blob loading sa mga driver para sa WiFi rtw8821c at SoC MediaTek mt8183. Na-update na blob cleaning code sa Habanalabs, Wilc1000, amdgpu, mt7615, i915 CSR, Mellanox mlxsw (Spectrum3), r8169 (rtl8125b-2) at x86 touchscreen driver at subsystem.

Pinagmulan: opennet.ru

Magdagdag ng komento