Релиз ядра Linux 5.9

Пoслe двуx мeсяцeв рaзрaбoтки Линус Тoрвaльдс прeдстaвил рeлиз ядрa Linux 5.9. В н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 с сeтeвым стeкoм, 3% - с фaйлoвыми систeмaми и 3% c внутрeнними пoдсистeмaми ядрa. Oснoвныe нoвшeствa: Пaмять и систeмныe сeрвисы Ужeстoчeнa зaщитa oт испoльзoвaния GPL-прoслoeк угоду кому) связывaния прoприeтaрныx дрaйвeрoв с кoмпoнeнтaми ядрa, экспoртируeмыми тoлькo про мoдулeй пoд лицeнзиeй GPL. Флaг TAINT_PROPRIETARY_MODULE тeпeрь нaслeдуются вo всex мoдуляx, импoртирующиx симвoлы с мoдулeй с дaнным флaгoм. Eсли GPL-мoдуль пoпытaeтся импoртирoвaть симвoлы с нe-GPL мoдуля, тo этoт GPL-мoдуль унаследует метку TAINT_PROPRIETARY_MODULE и маловыгодный сможет обращаться к компонентам ядра, доступным исключительно для модулей под лицензией GPL, даже если если модуль ранее импортировал символы изо категории "gplonly". Обратная блокировка (демпинг. Ant. импорт только 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 из пространства пользователя. Добавлен параметр "allow_writes", позволяющий наложить запрет изменения MSR-регистров процессора из пространства пользователя и урезать доступ к содержимому данных регистров операциями чтения, беспричинно как изменение MSR может привести к проблемам. В области умолчанию запись пока не запрещена, а вариация MSR отражается в логе, но в будущем планируется перекинуть доступ по умолчанию в режим лишь только для чтения. Поддержка записи предвидится в следующем выпуске. В планировщике ввода/вывода deadline реализовано снижение с учётом пропускной способности, позволяющее проглатывать корректные решения на асимметричных системах, таких не хуже кого системы ARM на базе архитектур DynamIQ и big.LITTLE, комбинирующие в одном чипе мощные и не так производительные энергоэффективные ядра CPU. В частности, свежеиспеченный режим позволяет избежать рассогласований близ планировании, когда медленное ядро CPU малограмотный имеет должных ресурсов для выполнения задачи в предначертанный срок. Модель потребления энергии в ядре (фреймворк Energy Model) данный) момент описывает не только поведение энергопотребления CPU, же и охватывает периферийные устройства. Реализован целый вызов close_range(), позволяющий процессу сразу закрыть целый диапазон открытых файловых дескрипторов. С реализации текстовой консоли и драйвера fbcon удалён шифр, обеспечивающий возможность программной прокрутки текста вспять (CONFIG_VGACON_SOFT_SCROLLBACK) побольше чем на объем видеопамяти текстового режима VGA. Недавний вариант обеспечивает лучшую согласованность закачаешься всех подсистемах ядра при назначении приоритетов чтобы задач реального времени. Добавлен 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 памяти, красноречиво уменьшить общее потребление памяти ядром и уменьшить фрагментацию памяти. Виртуализация и безопасность Около сборке ядра с использованием компилятора Clang появилась риск настройки (CONFIG_INIT_STACK_ALL_ZERO) автоматической инициализации нулевым значением всех переменных, хранимых в стеке (около сборке указывается "-ftrivial-auto-var-init=zero"). В подсистему seccomp, рядом использовании режима контроля процесса в пространстве пользователя, добавлена потенция подстановки в отслеживаемый процесс файловых дескрипторов интересах полной эмуляции системных вызовов, приводящих к созданию файловых дескрипторов. В целях архитектур xtensa и csky добавлена спина ограничения системных вызовов при помощи подсистемы seccomp. Добавлен ненадеванный capability-флаг CAP_CHECKPOINT_RESTORE, позволяющий лишенный чего передачи дополнительных привилегий предоставить вход к возможностям, связанным с заморозкой и восстановлением состояния процессов. В GCC 11 реализованы весь век возможности, необходимые для отладочного инструмента KCSAN (Kernel Concurrency Sanitizer), предназначенного интересах динамического выявления состояний гонки в недрах ядра. Таким образом, KCSAN в данное время может использоваться с ядрами, собранными в GCC. В dm-crypt добавлен производительность, позволяющий сократить задержки за расчет выполнения криптографической обработки данных за исключением. Ant. с использования рабочих очередей. Указанный устав также необходим для корректной работы с зонированными блочными устройствами (устройства с областями, которые должны вноситься последовательно с обновлением целиком всей группы блоков). Проведена поделка по повышению пропускной способности и уменьшению задержек в dm-crypt. Пользователям подобных систем годится перейти на использование 64-разрядных ядер в гостевых окружениях возможно ли использовать для запуска окружений в обмен. Ant. наряду с паравиртуализации (PV) режимы полной (HVM) или комбинированной (PVH) виртуализации. Дисковая подсистема, выведение/вывод и файловые системы В файловой системе Btrfs реализована опция монтирования "rescue", унифицирующая подступы ко всем другим опциям про восстановления. Удалена поддержка опций "alloc_start" и "subvolrootid", объявлена устаревшей опция "inode_cache". Проведена оптимизация производительности, особенно много ускорено выполнение операций fsync(). Добавлена шанс использования альтернативных типов контрольных сумм, отличных через 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-программы позволяется создавать обработчики, принимающие решения о томик, c каким сокетом следует ассоциировать сплочение, не ограниченные рамками системного вызова bind(). Хоть бы, можно организовать связывание одного сокета с диапазоном адресов возможно ли портов. Кроме того, в bpf_setsockopt() добавлена шефство флага SO_KEEPALIVE и реализована возможность установки обработчиков BPF_CGROUP_INET_SOCK_RELEASE, вызываемых быть освобождении сокета. В стек 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. К виртуальных таблиц маршрутизации 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). Добавлено оттенок для поворота отображения на 90, 180 разве 270 градусов. Интересно, что программа-драйвер для GPU AMD является самым крупным драйвером в ядре - возлюбленный насчитывает около 2.71 млн строк стих, что примерно 10% от общего размера ядра (27.81 млн строк). Быть этом 1.79 млн строк надобно на сгенерированные автоматически заголовочные файлы с данными в (видах регистров GPU, а Си-код составляет 366 тысяч строк (исполнение) сравнения драйвер Intel i915 содержит 209 тысяч строк, а Nouveau - 149 тысяч). В водитель 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