Релиз ядра Linux 5.9

Пoслe двуx мeсяцeв рaзрaбoтки Линус Тoрвaльдс прeдстaвил рeлиз ядрa Linux 5.9. Срeди нaибoлee зaмeтныx измeнeний: oгрaничeниe импoртa симвoлoв с прoприeтaрныx мoдулeй в GPL-мoдули, ускoрeниe oпeрaций пeрeключeния кoнтeкстa рядом пoмoщи прoцeссoрнoй инструкции FSGSBASE, пoддeржкa aлгoритмa сжaтия Zstd, пeрeрaбoткa рaсстaнoвки приoритeтoв угоду кому) пoтoкoв в ядрe, пoддeржкa прoтoкoлa PRP (Parallel Redundancy Protocol), плaнирoвaниe с учётoм прoпускнoй спoсoбнoсти в плaнирoвщикe deadline, упрeждaющaя упaкoвкa стрaниц пaмяти, capability-флaг CAP_CHECKPOINT_RESTOR, систeмный вызoв close_range(), пoвышeниe прoизвoдитeльнoсти dm-crypt, удaлeниe кoдa в (видах 32-рaзрядныx гoстeвыx систeм Xen PV, нoвый мexaнизм упрaвлeния пaмятью slab, oпция "rescue" в Btrfs, пoддeржкa inline-шифрoвaния в ext4 и F2FS. В нoвую вeрсию принятo 16074 испрaвлeний oт 2011 рaзрaбoтчикoв, рaзмeр пaтчa - 62 МБ (измeнeния зaтрoнули 14548 фaйлoв, дoбaвлeнo 782155 стрoк кoдa, удaлeнo 314792 стрoк). Oкoлo 45% всex прeдстaвлeнныx в 5.9 измeнeний связaны с дрaйвeрaми устрoйств, примeрнo 15% измeнeний имeют oтнoшeниe к oбнoвлeнию кoдa, спeцифичнoгo с целью aппaрaтныx aрxитeктур, 13% связaнo с сетевым стеком, 3% - с файловыми системами и 3% c внутренними подсистемами ядра. Основные новшества: Видеопамять и системные сервисы Ужесточена защита через использования GPL-прослоек для связывания проприетарных драйверов с компонентами ядра, экспортируемыми точию для модулей под лицензией GPL. Знак TAINT_PROPRIETARY_MODULE теперь наследуются вот всех модулях, импортирующих символы с модулей с данным флагом. Если GPL-устройство попытается импортировать символы из безвыгодный-GPL модуля, то этот GPL-модуль унаследует метку TAINT_PROPRIETARY_MODULE и невыгодный сможет обращаться к компонентам ядра, доступным в какие-нибудь полгода для модулей под лицензией GPL, хотя (бы) если модуль ранее импортировал символы с категории "gplonly". Обратная блокировка (вывоз только EXPORT_SYMBOL_GPL в модулях, импортировавших EXPORT_SYMBOL_GPL), которая могла п(е)реступить. Ant. создать работу пропритеарных драйверов, не реализована (наследуется чуть флаг пропритарного модуля, но неважный (=маловажный) GPL-привязки). Добавлена поддержка механизма kcompactd с целью упреждающей упаковки страниц памяти в фоновом режиме, позволяющего прибавить. Ant. уменьшить число больших страниц памяти, доступных ядру. По части предварительной оценке фоновая упаковка ценой минимальных накладных расходов позволяет в 70-80 однажды снизить задержки при выделении крупных страниц памяти (huge-page) числом сравнению с ранее применяемым механизмом упаковки, запускаемым подле возникновении необходимости (on-demand). Добавлена спина сжатия образа ядра с использованием алгоритма Zstandard (zstd). Интересах систем x86 реализована поддержка процессорной инструкции FSGSBASE, позволяющей разбирать и изменять содержимое регистров FS/GS из пространства пользователя. В ядре FSGSBASE используется пользу кого ускорения операций переключения контекста по (по грибы) счёт исключения лишних операций деловой дневник MSR для GSBASE, а в пространстве пользователя позволяет влететь) в копеечку без лишних системных вызовов чтобы изменения FS/GS. Добавлен параметр "allow_writes", позволяющий забодать изменения MSR-регистров процессора из пространства пользователя и уложить на прокрустово ложе доступ к содержимому данных регистров операциями чтения, приблизительно как изменение MSR может привести к проблемам. По части умолчанию запись пока не запрещена, а видоизменение MSR отражается в логе, но в будущем планируется убить доступ по умолчанию в режим единственно для чтения. Поддержка записи предвидится в следующем выпуске. В планировщике ввода/вывода deadline реализовано намечание с учётом пропускной способности, позволяющее отодвигаться корректные решения на асимметричных системах, таких равно как системы ARM на базе архитектур DynamIQ и big.LITTLE, комбинирующие в одном чипе мощные и не в такой мере производительные энергоэффективные ядра CPU. В частности, другой режим позволяет избежать рассогласований возле планировании, когда медленное ядро CPU приставки не- имеет должных ресурсов для выполнения задачи в приставленный срок. Модель потребления энергии в ядре (фреймворк Energy Model) нынче описывает не только поведение энергопотребления CPU, хотя и охватывает периферийные устройства. Реализован единый вызов close_range(), позволяющий процессу параллельно закрыть целый диапазон открытых файловых дескрипторов. С реализации текстовой консоли и драйвера fbcon удалён адрес, обеспечивающий возможность программной прокрутки текста обратно (CONFIG_VGACON_SOFT_SCROLLBACK) больше чем на объем видеопамяти текстового режима VGA. Переработан алгорифм назначения приоритетов для потоков изнутри. Ant. снаружи ядра. Новый вариант обеспечивает лучшую сыгранность во всех подсистемах ядра близ назначении приоритетов для задач реального времени. Добавлен sysctl sched_uclamp_util_min_rt_default про управления параметрами форсирования частоты CPU чтобы задач реального времени (например, впору на лету менять поведение подле выполнении задач реального времени с целью экономии энергии после перехода получи и распишись питание от аккумулятора или сверху мобильных системах). Проведена подготовка к реализации поддержки технологии Transparent Huge Pages в страничном кэше. В механизме fanotify реализованы новые флаги FAN_REPORT_NAME и FAN_REPORT_DIR_FID к передачи сведений о родительском имени и уникальном идентификаторе FID возле наступлении событий создания, удаления другими словами перемещения элементов каталога и не связанных с каталогами объектов. Во (избежание cgroups реализован новый контроллер распределения памяти slab (slab memory controller), что примечателен переносом учёта slab с уровня страниц памяти для уровень объектов ядра, что даёт средство совместно использовать slab-страницы в разных cgroup, награду выделения отдельных кэшей slab в целях каждой cgroup. Предложенный подход позволяет поднять эффективность использования slab, на 30-45% урезать размер используемой для slab памяти, не в пример уменьшить общее потребление памяти ядром и понизить. Ant. увеличить фрагментацию памяти. Виртуализация и безопасность Быть сборке ядра с использованием компилятора Clang появилась виртуальность настройки (CONFIG_INIT_STACK_ALL_ZERO) автоматической инициализации нулевым значением всех переменных, хранимых в стеке (подле сборке указывается "-ftrivial-auto-var-init=zero"). В подсистему seccomp, подле использовании режима контроля процесса в пространстве пользователя, добавлена ресурс подстановки в отслеживаемый процесс файловых дескрипторов в целях полной эмуляции системных вызовов, приводящих к созданию файловых дескрипторов. Функциональность востребована в системах изолированных контейнеров и реализации sandbox про Chrome. Для архитектур xtensa и csky добавлена подпора ограничения системных вызовов при помощи подсистемы seccomp. Добавлен новичок capability-флаг CAP_CHECKPOINT_RESTORE, позволяющий минус передачи дополнительных привилегий предоставить ход к возможностям, связанным с заморозкой и восстановлением состояния процессов. В GCC 11 реализованы и старый и малый возможности, необходимые для отладочного инструмента KCSAN (Kernel Concurrency Sanitizer), предназначенного интересах динамического выявления состояний гонки в середине ядра. Таким образом, KCSAN пока что может использоваться с ядрами, собранными в GCC. В dm-crypt добавлен порядок, позволяющий сократить задержки за приговор выполнения криптографической обработки данных минуя использования рабочих очередей. Указанный строй также необходим для корректной работы с зонированными блочными устройствами (устройства с областями, которые должны вноситься последовательно с обновлением целиком всей группы блоков). Проведена вещь по повышению пропускной способности и уменьшению задержек в dm-crypt. Удалён адрес для поддержки 32-разрядных гостевых систем, работающих в режиме паравиртуализации по-под управлением гипервизора Xen. Пользователям подобных систем необходимо перейти на использование 64-разрядных ядер в гостевых окружениях то есть (т. е.) использовать для запуска окружений где бы паравиртуализации (PV) режимы полной (HVM) или комбинированной (PVH) виртуализации. Дисковая подсистема, насаждение. Ant. вывод/вывод и файловые системы В файловой системе Btrfs реализована опция монтирования "rescue", унифицирующая посещение ко всем другим опциям про восстановления. Удалена поддержка опций "alloc_start" и "subvolrootid", объявлена устаревшей опция "inode_cache". Добавлена выполнимость использования альтернативных типов контрольных сумм, отличных с CRC32c. Добавлена возможность использования inline-шифрования (Inline Encryption) в файловых системах ext4 и F2FS, интересах включения которого предусмотрена опция монтирования "inlinecrypt". Организация inline-шифрования позволяет задействовать встроенные в датчик накопителя механизмы шифрования, которые осуществляют прозрачное шифровка и расшифровку ввода/вывода. В XFS обеспечен сброска inode (flush) в полностью асинхронном режиме, приставки не- блокирующем процессы при выполнении операции чистки памяти. Решена давняя апория с квотами, из-за которой некорректно отслеживались предупреждения о превышении мягкого лимитень и ограничений на число inode. Унифицирована распродажа поддержки DAX для ext4 и xfs. В сочетании с ограничением сканирования неинициализированных групп, оптимизация позволила прогнать время монтирования очень больших разделов. В bcache размер bucket_size с целью экстентов увеличен с 16 до 32 двоичный знак в рамках подготовки к обеспечению возможности применения угоду кому) кэша зонированных устройств. В подсистему SCSI добавлена шанс использования inline-шифрования на базе встроенных средств аппаратного шифрования, предоставляемых UFS-контроллеами (Universal Flash Storage). Добавлен прозелит параметр командной строки ядра "debugfs", позволяющий распоряжаться доступностью одноимённой псевдо-ФС. В клиенте NFSv4.2 обеспечена помочь расширенных атрибутов файлов (xattr). В dm-dust добавлен интерфейс для того вывода разом списка всех выявленных bad-блоках для диске ("dmsetup message dust1 listbadblocks"). Ради md/raid5 добавлен параметр /sys/block/md1/md/stripe_size чтобы настройки размера STRIPE-блока. Сетевая подсистема В Netfilter добавлена шанец отклонения пакетов на стадии предварительно проверки маршрутизации (выражение REJECT сию минуту может использоваться не только в цепочках INPUT, FORWARD и OUTPUT, так и на стадии PREROUTING для icmp и tcp). В nftables добавлена мочь аудита событий, связанных с изменением конфигурации. В nftables в API netlink добавлена поддержэка анонимных цепочек, репутация которым назначается динамически ядром. Быть удалении свяханного с анонимной цепочкой режим, автоматически удаляется и сама цепочка. Итераторы годится. Ant. нельзя использовать для сокетов TCP и UDP, что позволяет BPF-программам надуваться списки открытых сокетов и извлекать изо них необходимые сведения. Добавлен свежеиспеченный тип BPF-программ BPF_PROG_TYPE_SK_LOOKUP, запускаемых в срок, когда ядро ищет подходящий слушающий сокет чтобы входящего соединения. При помощи подобной BPF-программы позволено создавать обработчики, принимающие решения о фолиант, c каким сокетом следует ассоциировать объединение, не ограниченные рамками системного вызова bind(). Скажем, можно организовать связывание одного сокета с диапазоном адресов alias портов. Кроме того, в bpf_setsockopt() добавлена помочь флага SO_KEEPALIVE и реализована возможность установки обработчиков BPF_CGROUP_INET_SOCK_RELEASE, вызываемых быть освобождении сокета. Реализована поддержка протокола PRP (Parallel Redundancy Protocol), позволяющего нате базе Ethernet реализовать прозрачное чтобы приложений переключение на запасной каналец в случае сбоя любых компонентов мышеловка. В стек mac80211 добавлена поддержка четырёхэтапного согласования канала WPA/WPA2-PSK в режиме точки доступа. Добавлены новые внутренние резервы в MPTCP (MultiPath TCP), расширения протокола TCP в (видах организации работы TCP-соединения с доставкой пакетов в то же самое время. Ant. по нескольким маршрутам через непохожие сетевые интерфейсы, привязанные к разным IP-адресам. Добавлена содействие syn cookie, DATA_FIN, автонастройки буферов, диагностики сокетов и испльзования флагов REUSEADDR, REUSEPORT и V6ONLY в setsockopt. К виртуальных таблиц маршрутизации VRF (Virtual Routing and Forwarding), позволяющих распустить работу нескольких доменов маршрутизации в одной системе, реализован режим "strict". В данном режиме виртуальная табель может быть ассоциирована только с таблицей маршрутизации, которая маловыгодный используется в других виртуальных таблицах. Обстановка Удалён код для поддержки архитектуры UniCore, разработанной в микропроцессорном центре Пекинского университета и включённой в эшелон ядра Linux в 2011 году. Данная зодчество с 2014 года находится без сопровождения и малограмотный имеет поддержи в GCC. Для архитектуры RISC-V реализована ассистент kcov (debugfs-интерфейс для анализа покрытия заключение ядра), kmemleak (система выявления утечек памяти), защиты стека, меток перехода и tickless-операций (независимая с сигналов таймера многозадачность). Для архитектуры PowerPC реализована подмога очередей для spinlock, позволившая красноречиво поднять производительность в ситуациях конфликта блокировок. С целью архитектур ARM и ARM64 задействован по умолчанию конструкция регулирования частоты процессора schedutil (cpufreq governor), тот или другой для принятия решения об изменении частоты напрямую использует информацию с планировщика задач и может сразу упираться к драйверам cpufreq для оперативного изменения частоты, с быстротою молнии подгоняя параметры работы CPU к текущей нагрузке. В DRM-драйвере i915 угоду кому) видеокарт Intel включена поддержка чипов в базе микроархитектуры Rocket Lake и добавлена начальная подкрепление дискретных карт Intel Xe DG1. В драйвер amdgpu добавлена начальная ассистент GPU AMD Navi 21 (Navy Flounder) и Navi 22 (Sienna Cichlid). Добавлена помога движков ускорения кодирования и декодирования видео UVD/VCE про GPU Southern Islands (Radeon HD 7000). Пикантно, что драйвер для GPU AMD является самым крупным драйвером в ядре - некто насчитывает около 2.71 млн строк стих, что примерно 10% от общего размера ядра (27.81 млн строк). Возле этом 1.79 млн строк требуется на сгенерированные автоматически заголовочные файлы с данными к регистров GPU, а Си-код составляет 366 тысяч строк (во (избежание сравнения драйвер Intel i915 содержит 209 тысяч строк, а Nouveau - 149 тысяч). В шофер Nouveau добавлена поддержка покадровой проверки целостности подле помощи CRC (Cyclic Redundancy Checks) в дисплейных движках GPU NVIDIA. Добавлены драйверы в целях LCD-панелей: Frida FRD350H54004, KOE TX26D202VM0BWA, CDTech S070PWS19HP-FC21, CDTech S070SWV29HG-DC44, Tianma TM070JVHG33 и Xingbangda XBD599. Добавлена пособничество ARM-плат, устройств и платформ: Pine64 PinePhone v1.2, Lenovo IdeaPad Duet 10.1, ASUS Google Nexus 7, Acer Iconia Tab A500, Qualcomm Snapdragon SDM630 (используется в Sony Xperia 10, 10 Plus, XA2, XA2 Plus и XA2 Ultra), Jetson Xavier NX, Amlogic WeTek Core2, Aspeed EthanolX, пяточек новых плат на базе 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. Наряду с этим латиноамериканский Фонд свободного ПО сформировал трансформирование полностью свободного ядра 5.9 - Linux-libre 5.9-gnu, очищенного ото элементов прошивок и драйверов, содержащих несвободные компоненты аль участки кода, область применения которых ограничена производителем. В новом выпуске отключена заваливание блобов в драйверах для WiFi rtw8821c и SoC MediaTek mt8183. Генератор: http://www.opennet.ru/opennews/art.shtml?num=53830