Рэліз ядра Linux 5.12

Пасля двух месяцаў распрацоўкі Лінус Торвальдс прадставіў рэліз ядра Linux 5.12. Сярод найболей прыкметных змен: падтрымка занаваных блокавых прылад у Btrfs, магчымасць мапінга ідэнтыфікатараў карыстачоў для ФС, чыстка састарэлых ARM-архітэктур, рэжым «нецярплівага» запісу ў NFS, механізм LOOKUP_CACHED для вызначэння файлавых шляхоў з кэша, падтрымка атамарных інструкцый у BPF, KFENCE для выяўлення памылак пры працы з памяццю, які працуе ў асобным струмені ядра рэжым NAPI poll-інга ў сеткавым стэку, гіпервізор ACRN, магчымасць змены на лета preempt-мадэлі ў планавальніку задач і падтрымка LTO-аптымізацый пры зборцы ў Clang.

У новую версію прынята 14170 (у мінулым выпуску 15480) выпраўленняў ад 1946 (1991) распрацоўшчыкаў, памер патча – 38 Мб (змены закранулі 12102 (12090) файлаў, дададзена 538599 (868025)). Каля 333377% усіх прадстаўленых у 261456 змен злучаны з драйверамі прылад, прыкладна 43% змен маюць дачыненне да абнаўлення кода, спецыфічнага для апаратных архітэктур, 5.12% злучана з сеткавым стэкам, 17% - з файлавымі сістэмамі і 12% c унутранымі падсістэмамі ядра.

Асноўныя навіны:

  • Дыскавая падсістэма, увод/выснова і файлавыя сістэмы
    • Рэалізаваная магчымасць мапінгу ідэнтыфікатараў карыстачоў для змантаваных файлавых сістэм (можна супаставіць файлы аднаго карыстача на прымантаванай чужой частцы з іншым карыстачом у бягучай сістэме). Мапінг падтрымліваецца для ФС FAT, ext4 і XFS. Прапанаваная функцыянальнасць дазваляе спрасціць сумеснае выкарыстанне файлаў рознымі карыстальнікамі і на розных кампутарах, у тым ліку мапінг будзе прымяняцца ў механізме пераносных хатніх каталогаў systemd-homed, даючы магчымасць карыстальнікам перамяшчаць свае хатнія каталогі на знешнія носьбіты і выкарыстоўваць іх на розных кампутарах, раскладка ідэнтыфікатараў карыстальнікаў. якіх не супадае. Іншым карысным ужываннем з'яўляецца арганізацыя падавання сумеснага доступу да файлаў з вонкавага хаста, без фактычнай змены дадзеных аб уладальніках файлаў у ФС.
    • У ядро ​​прыняты патчы LOOKUP_CACHED, якія дазваляюць з прасторы карыстача выконваць аперацыі азначэння файлавага шляху без блакавання, толькі на аснове наяўных у кэшы дадзеных. Рэжым LOOKUP_CACHED актывуецца ў выкліку openat2() праз перадачу сцяга RESOLVE_CACHED, пры якім дадзеныя аддаюцца толькі з кэша, а калі вызначэнне шляху патрабуе звароту да назапашвальніка, вяртаецца памылка EAGAIN.
    • У файлавай сістэме Btrfs дададзеная пачатковая падтрымка занаваных блокавых прылад (прылады на цвёрдых магнітных кружэлках або NVMe SSD, прастора для захоўвання ў якіх пабіта на зоны, складнікі групы блокаў ці сектараў, у якія дапушчаецца толькі паслядоўнае даданне дадзеных з абнаўленнем цалкам усёй групы блокаў). У рэжыме толькі для чытання рэалізавана падтрымка блокаў з метададзенымі і дадзенымі, памерам менш старонкі (subpage).
    • У файлавай сістэме F2FS дададзена магчымасць выбару алгарытму і ўзроўня сціску. Дададзена падтрымка высокага ўзроўню сціску для алгарытму LZ4. Рэалізавана опцыя мантавання checkpoint_merge.
    • Рэалізавана новая ioctl-каманда FS_IOC_READ_VERITY_METADATA для чытання метададзеных з файлаў, абароненых пры дапамозе fs-verity.
    • У кліенце NFS рэалізаваны рэжым "нецярплівага" запісу (writes = eager), пры ўключэнні якога аперацыі запісы ў файл адразу перадаюцца на сервер, абыходзячы старонкавы кэш. Указаны рэжым дазваляе скараціць спажыванне памяці, забяспечвае імгненнае атрыманне інфармацыі аб завяршэнні вольнага месца ў ФС і ў некаторых сітуацыях дае магчымасць дамагчыся падвышэння прадукцыйнасці.
    • У CIFS (SMB) дададзены новыя опцыі мантавання: acregmax для кіравання кэшаваннем файлаў і acdirmax для кіравання кэшаваннем метададзеных каталогаў.
    • У XFS уключаны рэжым шматструменнай праверкі квот, паскорана выкананне fsync, праведзена падрыхтоўка кода growfs для рэалізацыі функцыі скарачэння памеру ФС.
  • Памяць і сістэмныя сэрвісы
    • Дададзена падсістэма DTMP (Dynamic Thermal Power Management), якая дазваляе дынамічна рэгуляваць энергаспажыванне розных прылад на аснове выстаўленых агульных абмежаванняў тэмпературы.
    • Рэалізавана магчымасць зборкі ядра кампілятарам Clang з уключэннем аптымізацый на этапе звязвання (LTO, Link Time Optimization). LTO-аптымізацыі адрозніваюцца ўлікам стану ўсіх файлаў, якія ўдзельнічаюць у працэсе зборкі, у той час, як традыцыйныя рэжымы аптымізацыі аптымізуюць кожны файл паасобку і не ўлічваюць умовы выкліку функцый, вызначаных у іншых файлах. Напрыклад, пры LTO для функцый з іншых файлаў магчыма inlinе-разгортванне, у выкананы файл не ўключаецца невыкарыстоўваны код, ажыццяўляецца праверка тыпаў і агульная аптымізацыя на ўзроўні праекту ў цэлым. Падтрымка LTO пакуль абмежавана архітэктурамі x86 і ARM64.
    • Прадастаўлена магчымасць выбару рэжымаў выцяснення (PREEMPT) у планавальніку задач на этапе загрузкі (preempt=none/voluntary/full) або падчас працы праз debugfs (/debug/sched_debug), у выпадку ўказання пры зборцы ядра налады PREEMPT_DYNAMIC. Раней рэжым выцяснення мог задавацца толькі на ўзроўні параметраў зборкі. Змена дазваляе дыстрыбутывам пастаўляць ядры з уключаным рэжымам PREEMPT, якія забяспечваюць мінімальныя затрымкі для працоўных сталоў коштам малаважнага памяншэння прапускной здольнасці, і пры неабходнасці адкочвацца на рэжымы PREEMPT_VOLUNTARY (прамежкавы рэжым для працоўных сталоў) або PREEMPT_NONE (забяспечвае максімальную прапускную здольнасць).
    • У падсістэму BPF дададзена падтрымка атамарных аперацый BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG і BPF_CMPXCHG.
    • BPF-праграмам прадстаўлена магчымасць доступу да дадзеных у стэку пры дапамозе паказальнікаў з пераменным зрушэннем. Напрыклад, калі раней для доступу да масіва ў стэку можна было выкарыстоўваць толькі пастаянны індэкс элемента, то зараз можна выкарыстоўваць які змяняецца. Кантроль за доступам толькі ў межах наяўных межаў ажыццяўляецца верыфікатарам BPF. Магчымасць даступная толькі прывілеяваным праграмам з-за асцярогі эксплуатацыі ўразлівасцяў, злучаных са спекулятыўным выкананнем кода.
    • Дададзена магчымасць прымацавання BPF-праграм да голых кропак трасіроўкі (bare tracepoints), не злучаным з бачнымі ў прасторы карыстача падзеямі трасіроўкі (для падобных кропак трасіроўкі не гарантуецца захаванне ABI).
    • Рэалізаваная падтрымка шыны CXL 2.0 (Compute Express Link), якая ўжываецца для арганізацыі высакахуткаснага ўзаемадзеяння CPU з прыладамі памяці (дазваляе выкарыстоўваць вонкавыя прылады памяці як частка АЗП ці сталай памяці, так, як калі б дадзеная памяць была падлучаная праз штатны кантролер памяці ў CPU).
    • Дададзены драйвер nvmem для атрымання дадзеных з зарэзерваваных прашыўкамі абласцей памяці, напроста недаступных для Linux (напрыклад, EEPROM-памяць, фізічна даступная толькі прашыўцы, ці дадзеныя, даступныя толькі на ранняй стадыі загрузкі).
    • Выдалена падтрымка сістэмы прафілявання "oprofile", якая не атрымала належнага распаўсюджвання і выцесненая больш сучасным механізмам perf.
    • У інтэрфейсе асінхроннага ўводу/высновы io_uring забяспечана інтэграцыя з cgroup, якія кантралююць выкарыстанне памяці.
    • Для архітэктуры RISC-V рэалізавана падтрымка сістэм NUMA, а таксама механізмаў kprobes і uprobes.
    • Дададзена магчымасць выкарыстання сістэмнага выкліку kcmp() незалежна ад функцыянальнасці злепкаў стану працэсаў (checkpoint/restore).
    • Выдалены макрасы EXPORT_UNUSED_SYMBOL() і EXPORT_SYMBOL_GPL_FUTURE(), якія ўжо шмат гадоў не выкарыстоўваюцца на практыцы.
  • Віртуалізацыя і бяспека
    • Дададзены механізм абароны KFence (Kernel Electric Fence), які адлоўлівае памылкі пры працы з памяццю, такія як выхад за мяжу буфера і зварот пасля вызвалення памяці. У адрозненне ад адладкавага механізму KASAN падсістэма KFence адрозніваецца высокай хуткасцю працы і нізкімі накладнымі выдаткамі, што дазваляе адлоўліваць памылкі працы з памяццю, якія выяўляюцца толькі на працоўных сістэмах ці пры працяглай працы.
    • Дададзена падтрымка гіпервізара ACRN, напісанага з аглядкай на гатоўнасць для выканання задач рэальнага часу і прыдатнасць да выкарыстання ў крытычна важных сістэмах. ACRN забяспечвае мінімальныя накладныя выдаткі, гарантуе нізкія затрымкі (low latency) і адэкватную спагадлівасць пры ўзаемадзеянні з абсталяваннем. Падтрымліваецца віртуалізацыя рэсурсаў CPU, уводу/высновы, сеткавай падсістэмы, аперацый з графікай і гукам. ACRN можа прымяняцца для запуску некалькіх ізаляваных віртуальных машын у электронных блоках кіравання, прыборных панэлях, аўтамабільных інфармацыйных сістэмах, спажывецкіх IoT-прылад і іншай убудаванай тэхніцы. ACRN падтрымлівае два тыпу гасцявых сістэм - прывілеяваныя Service VM, якія выкарыстоўваюцца для кіравання рэсурсамі сістэмы (CPU, памяць, увод / вывад і да т.п.), і карыстацкія User VM, у якіх можа запускацца Linux-дыстрыбутывы, Android і Windows.
    • У падсістэме IMA (Integrity Measurement Architecture), якая забяспечвае падтрыманне базы хэшаў для праверкі цэласнасці файлаў і злучаных з імі метададзеных, з'явілася магчымасць праверкі цэласнасці дадзеных самага ядра, напрыклад, для адсочвання змены правіл SELinux.
    • У гіпервізор KVM дададзена магчымасць перахопу гіпервыклікаў Xen і іх пракід у эмулятар, які працуе ў прасторы карыстача.
    • Дададзена магчымасць выкарыстання Linux у якасці каранёвага асяроддзя для гіпервізара Hyper-V. Каранёвае асяроддзе мае прамы доступ да абсталявання і ўжываецца для запуску гасцявых сістэм (аналаг Dom0 у Xen). Да гэтага часу Hyper-V (Microsoft Hypervisor) падтрымліваў Linux толькі ў гасцявых акружэннях, але сам гіпервізор кіраваўся з акружэння на базе Windows.
    • Дададзена падтрымка inline-шыфравання для карт eMMC, які дазваляе задзейнічаць убудаваныя ў кантролер назапашвальніка механізмы шыфравання, якія ажыццяўляюць празрыстае шыфраванне і расшыфроўку ўводу/высновы.
    • З криптоподсистемы выдаленая падтрымка невыкарыстоўваных у ядры хэшаў RIPE-MD 128/256/320 і Tiger 128/160/192, а таксама струменевага шыфра Salsa20, на змену якому прыйшоў алгортым ChaCha20. Алгарытм blake2 абноўлены да рэалізацыі blake2s.
  • Сеткавая падсістэма
    • Дададзена магчымасць вынасу апрацоўшчыка NAPI полінга (polling) сеткавых прылад у асобны струмень ядра, што дазваляе дамагчыся падвышэнні прадукцыйнасці для некаторых тыпаў нагрузкі. Да гэтага полінг выконваўся ў кантэксце softirq і не ахопліваўся планавальнікам задач, што абцяжарвала правядзенне тонкай аптымізацыі для дасягнення максімальнай прадукцыйнасці. Выкананне ў асобным струмені ядра дазваляе назіраць за апрацоўшчыкам полінга з прасторы карыстача, прымацоўваць да асобных ядраў CPU і ўлічваць пры планаванні пераключэння задач. Для ўключэння новага рэжыму ў sysfs прапанаваны параметр /sys/class/net/ /threaded.
    • Працягнута інтэграцыя ў ядро ​​MPTCP (MultiPath TCP), пашырэнні пратаколу TCP для арганізацыі працы TCP-злучэнні з дастаўкай пакетаў адначасова па некалькіх маршрутам праз розныя сеткавыя інтэрфейсы, прывязаныя да розных IP-адрасоў. У новым выпуску дададзена магчымасць прымацавання прыярытэту да пэўных патокаў, што дазваляе, напрыклад, арганізаваць працу рэзервовых патокаў, якія ўключаюцца толькі пры праблемах з першасным патокам.
    • У IGMPv3 дададзена падтрымка механізму EHT (Explicit Host Tracking).
    • У механізме фільтрацыі пакетаў netfilter рэалізавана магчымасць валодання пэўнымі табліцамі для атрымання эксклюзіўнага кантролю (напрыклад, фонавы працэс міжсеткавага экрана можа замацаваць за сабой пэўныя табліцы, забараніўшы камусьці яшчэ ўмешвацца ў іх).
  • Абсталяванне
    • Праведзена чыстка якія выйшлі з ужытку і змешчаных без суправаджэння ARM-платформаў. Выдалены код платформаў efm32, picoxcell, prima2, tango, u300, zx і c6x, а таксама злучаных з імі драйвераў.
    • У драйверы amdgpu рэалізавана магчымасць разгону (OverDrive) карт на базе GPU Sienna Cichlid (Navi 22, Radeon RX 6xxx). Дададзена падтрымка піксельнага фармату FP16 для DCE (display controller engine) з 8 па 11 пакаленне. Для GPU Navy Flounder (Navi 21) і APU Van Gogh рэалізавана магчымасць скіду GPU.
    • У драйверы i915 для відэакарт Intel рэалізаваны параметр i915.mitigations для адключэння механізмаў ізаляцыі і абароны ў карысць падвышэння прадукцыйнасці. Для чыпаў пачынальна з Tiger Lake уключаная падтрымка механізму VRR (Variable Rate Refresh), які дазваляе адаптыўна змяняць частату абнаўлення манітора для забеспячэння плыўнасці і адсутнасці зазрываў падчас гульняў. Уключана падтрымка тэхналогіі Intel Clear Color для павышэння дакладнасці колераперадачы. Дададзена падтрымка DP-HDMI 2.1. Рэалізавана магчымасць кіравання падсветкай панэляў eDP. Для GPU Gen9 з падтрымкай LSPCON (Level Shifter and Protocol Converter) уключаная падтрымка HDR.
    • У драйверы nouveau дададзена пачатковая падтрымка GPU NVIDIA на базе архітэктуры GA100 (Ampere).
    • У драйвер msm дададзеная падтрымка GPU Adreno 508, 509 і 512, выкарыстоўваных у чыпах SDM (Snapdragon) 630, 636 і 660.
    • Дададзена падтрымка гукавых карт Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s і Pioneer DJM-750. Дададзена падтрымка гукавой падсістэмы Intel Alder Lake PCH-P. Рэалізаваная падтрымка праграмнай сімуляцыі падлучэння і адключэнні аўдыёраздыма для адладкі апрацоўшчыкаў у прасторы карыстача.
    • Дададзена падтрымка гульнявых кансоляў Nintendo 64, якія выпускаліся з 1996 па 2003 год (мінулыя спробы партаваць Linux для Nintendo 64 не былі даведзены да канца і мелі статут Vaporware). У якасці матыву стварэння новага порта для састарэлай платформы, якая не выпускаецца ўжо амаль дваццаць гадоў, называецца жаданне стымуляваць развіццё эмулятараў і спрашчэнне пераносу гульняў.
    • Дададзены драйвер для гульнявога кантролера Sony PlayStation 5 DualSense.
    • Дададзена падтрымка ARM-плат, прылад і платформаў: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, 5 Beacon EmbeddedWorks, Intel eASIC N8000X, Netgear R2P, Plymovent M8M, Beacon i.MX4M
    • Дададзена падтрымка смартфонаў Purism Librem5 Evergreen, Xperia Z3 + / Z4 / Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070.
    • Дададзены драйвер bcm-vk для плат-паскаральнікаў Broadcom VK (напрыклад, PCIe-платы Valkyrie і Viper), якія можна выкарыстоўваць для вынасу на асобную прыладу аперацый па апрацоўцы гуку, відэа і малюнкаў, а таксама дзеянняў, звязаных з шыфраваннем.
    • Дададзеная падтрымка платформы Lenovo IdeaPad з магчымасцю кіравання сталай зарадкай і падсветкай клавіятуры. Таксама забяспечана падтрымка ACPI-профіля платформы ThinkPad з магчымасцю кіравання рэжымамі энергаспажывання. Дададзены драйвер для HID-падсістэмы Lenovo ThinkPad X1 Tablet Gen 2.
    • Дададзены драйвер ov5647 з падтрымкай модуля з камерай для Raspberry Pi.
    • Дададзена падтрымка RISC-V SoC FU740 і поплаткаў HiFive Unleashed. Таксама дададзены новы драйвер для чыпа Kendryte K210.

Крыніца: opennet.ru

Дадаць каментар