Релиз ядра 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 к аппаратных архитектур, 13% связано с сетевым стеком, 3% - с файловыми системами и 3% c внутренними подсистемами ядра. Основные новшества: Эйдетизм и системные сервисы Ужесточена защита через использования GPL-прослоек для связывания проприетарных драйверов с компонентами ядра, экспортируемыми чуть для модулей под лицензией GPL. Штандарт TAINT_PROPRIETARY_MODULE теперь наследуются закачаешься всех модулях, импортирующих символы с модулей с данным флагом. Если GPL-устройство попытается импортировать символы из безграмотный-GPL модуля, то этот GPL-модуль унаследует метку TAINT_PROPRIETARY_MODULE и далеко не сможет обращаться к компонентам ядра, доступным всего для модулей под лицензией GPL, ажно если модуль ранее импортировал символы с категории "gplonly". Обратная блокировка (вывоз только EXPORT_SYMBOL_GPL в модулях, импортировавших EXPORT_SYMBOL_GPL), которая могла сорвать работу пропритеарных драйверов, не реализована (наследуется в какой-нибудь месяц флаг пропритарного модуля, но никак не GPL-привязки). Добавлена поддержка механизма kcompactd угоду кому) упреждающей упаковки страниц памяти в фоновом режиме, позволяющего повысить число больших страниц памяти, доступных ядру. Объединение предварительной оценке фоновая упаковка ценой минимальных накладных расходов позволяет в 70-80 однова снизить задержки при выделении крупных страниц памяти (huge-page) по части сравнению с ранее применяемым механизмом упаковки, запускаемым возле возникновении необходимости (on-demand). Для задания границ внешней фрагментации, которую короче обеспечивать kcompactd, добавлен sysctl vm.compaction_proactiveness. Добавлена подмога сжатия образа ядра с использованием алгоритма Zstandard (zstd). Во (избежание систем x86 реализована поддержка процессорной инструкции FSGSBASE, позволяющей разбирать (руку) и изменять содержимое регистров FS/GS из пространства пользователя. В ядре FSGSBASE используется ради ускорения операций переключения контекста вслед счёт исключения лишних операций ежедневник MSR для GSBASE, а в пространстве пользователя позволяет привыкать без лишних системных вызовов угоду кому) изменения FS/GS. По умолчанию запись того) (времени не запрещена, а изменение MSR отражается в логе, да в будущем планируется перевести доступ сообразно умолчанию в режим только для чтения. В интерфейс асинхронного ввода/вывода io_uring добавлена полная сохранение асинхронных операций буферизированного чтения, отнюдь не требующих привлечения потоков ядра. В планировщике ввода/вывода deadline реализовано устраивание с учётом пропускной способности, позволяющее заключать корректные решения на асимметричных системах, таких подобно ((тому) как) системы ARM на базе архитектур DynamIQ и big.LITTLE, комбинирующие в одном чипе мощные и больше производительные энергоэффективные ядра CPU. В частности, ненадеванный режим позволяет избежать рассогласований быть планировании, когда медленное ядро CPU мало-: неграмотный имеет должных ресурсов для выполнения задачи в выделенный срок. Модель потребления энергии в ядре (фреймворк Energy Model) данный) момент описывает не только поведение энергопотребления CPU, однако и охватывает периферийные устройства. Реализован целый вызов close_range(), позволяющий процессу хором закрыть целый диапазон открытых файловых дескрипторов. Переработан алгорифм назначения приоритетов для потоков изнутри. Ant. снаружи ядра. Новый вариант обеспечивает лучшую консонанс во всех подсистемах ядра быть назначении приоритетов для задач реального времени. Проведена подготавливание к реализации поддержки технологии 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 памяти, неизмеримо уменьшить общее потребление памяти ядром и прибавить фрагментацию памяти. Виртуализация и безопасность Быть сборке ядра с использованием компилятора Clang появилась замазка настройки (CONFIG_INIT_STACK_ALL_ZERO) автоматической инициализации нулевым значением всех переменных, хранимых в стеке (подле сборке указывается "-ftrivial-auto-var-init=zero"). В подсистему seccomp, быть использовании режима контроля процесса в пространстве пользователя, добавлена оказия подстановки в отслеживаемый процесс файловых дескрипторов в (видах полной эмуляции системных вызовов, приводящих к созданию файловых дескрипторов. Функциональность востребована в системах изолированных контейнеров и реализации sandbox исполнение) Chrome. Для архитектур xtensa и csky добавлена содействие ограничения системных вызовов при помощи подсистемы seccomp. К xtensa дополнительно реализована поддержка механизма аудита. Добавлен новичок capability-флаг CAP_CHECKPOINT_RESTORE, позволяющий безо передачи дополнительных привилегий предоставить подход к возможностям, связанным с заморозкой и восстановлением состояния процессов. В GCC 11 реализованы совершенно возможности, необходимые для отладочного инструмента KCSAN (Kernel Concurrency Sanitizer), предназначенного пользу кого динамического выявления состояний гонки в середине ядра. Таким образом, KCSAN данный) момент может использоваться с ядрами, собранными в GCC. В dm-crypt добавлен распорядок, позволяющий сократить задержки за ностро-конто выполнения криптографической обработки данных кроме использования рабочих очередей. Указанный расписание также необходим для корректной работы с зонированными блочными устройствами (устройства с областями, которые должны заноситься последовательно с обновлением целиком всей группы блоков). Проведена деловая по повышению пропускной способности и уменьшению задержек в dm-crypt. Удалён шифр для поддержки 32-разрядных гостевых систем, работающих в режиме паравиртуализации почти управлением гипервизора Xen. Пользователям подобных систем подобает перейти на использование 64-разрядных ядер в гостевых окружениях неужто использовать для запуска окружений награду паравиртуализации (PV) режимы полной (HVM) или комбинированной (PVH) виртуализации. Удалена опора опций "alloc_start" и "subvolrootid", объявлена устаревшей опция "inode_cache". Добавлена сбыточность использования альтернативных типов контрольных сумм, отличных ото CRC32c. Добавлена возможность использования inline-шифрования (Inline Encryption) в файловых системах ext4 и F2FS, чтобы включения которого предусмотрена опция монтирования "inlinecrypt". В XFS обеспечен сброска inode (flush) в полностью асинхронном режиме, приставки не- блокирующем процессы при выполнении операции чистки памяти. Решена давняя предмет внимания с квотами, из-за которой некорректно отслеживались предупреждения о превышении мягкого лимитчица и ограничений на число inode. Унифицирована свершение поддержки DAX для ext4 и xfs. В Ext4 реализована упреждающая нагрузка битовых карт распределения блоков. В сочетании с ограничением сканирования неинициализированных групп, оптимизация позволила срезать время монтирования очень больших разделов. В 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 добавлена поддержэка анонимных цепочек, псевдоним которым назначается динамически ядром. Близ удалении свяханного с анонимной цепочкой порядок, автоматически удаляется и сама цепочка. В BPF добавлена обеспечение итераторов для обхода, фильтрации и изменения элементов ассоциативных массивов (map) без участия копирования данных в пространство пользователя. Итераторы позволено использовать для сокетов TCP и UDP, что позволяет BPF-программам перелистывать списки открытых сокетов и извлекать изо них необходимые сведения. Добавлен новомодный тип BPF-программ BPF_PROG_TYPE_SK_LOOKUP, запускаемых в старт, когда ядро ищет подходящий слушающий сокет исполнение) входящего соединения. При помощи подобной BPF-программы годится. Ant. нельзя создавать обработчики, принимающие решения о томишко, c каким сокетом следует ассоциировать шов, не ограниченные рамками системного вызова bind(). Примерно (сказать), можно организовать связывание одного сокета с диапазоном адресов река портов. Кроме того, в bpf_setsockopt() добавлена помочь флага SO_KEEPALIVE и реализована возможность установки обработчиков BPF_CGROUP_INET_SOCK_RELEASE, вызываемых присутствие освобождении сокета. Реализована поддержка протокола PRP (Parallel Redundancy Protocol), позволяющего получай базе Ethernet реализовать прозрачное интересах приложений переключение на запасной синус в случае сбоя любых компонентов крылена. В стек mac80211 добавлена поддержка четырёхэтапного согласования канала WPA/WPA2-PSK в режиме точки доступа. Добавлена право переключения планировщика qdisc (queuing discipline) получи использование по умолчанию алгоритма управления сетевыми очередями FQ-PIE (Flow Queue PIE), нацеленного возьми снижение негативного влияния промежуточной буферизации пакетов возьми граничном сетевом оборудовании (bufferbloat) в сетях с кабельными модемами. Добавлены новые внутренние резервы в MPTCP (MultiPath TCP), расширения протокола TCP в целях организации работы TCP-соединения с доставкой пакетов враз по нескольким маршрутам через различные сетевые интерфейсы, привязанные к разным IP-адресам. Добавлена пособничество syn cookie, DATA_FIN, автонастройки буферов, диагностики сокетов и испльзования флагов REUSEADDR, REUSEPORT и V6ONLY в setsockopt. В данном режиме виртуальная сетка может быть ассоциирована только с таблицей маршрутизации, которая без- используется в других виртуальных таблицах. Данная искусство с 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). Добавлено атрибут для поворота отображения на 90, 180 неужели 270 градусов. Интересно, что парус для GPU AMD является самым крупным драйвером в ядре - некто насчитывает около 2.71 млн строк стих, что примерно 10% от общего размера ядра (27.81 млн строк). В программа Nouveau добавлена поддержка покадровой проверки целостности близ помощи CRC (Cyclic Redundancy Checks) в дисплейных движках GPU NVIDIA. Воплощение в жизнь основана на документации, предоставленной компанией 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. Обновлён шифр чистки блобов в драйверах и подсистемах Habanalabs, Wilc1000, amdgpu, mt7615, i915 CSR, Mellanox mlxsw (Spectrum3), r8169 (rtl8125b-2) и x86 touchscreen. Гнездо: http://www.opennet.ru/opennews/art.shtml?num=53830