- эмулировать его выполнение. Указанная функциональность востребована в Wine и Proton для эмуляции системных вызовов Windows, что необходимо для обеспечения совместимости с играми и программами, напрямую выполняющими системные вызовы в обход Windows API (например, для защиты от несанкционированного использования).
- В системный вызов userfaultfd(), предназначенный для обработки page faults (обращение к невыделенным страницам памяти) в пространстве пользователя, появилась возможность отключения обработки исключений, возникающих на уровне ядра, для усложнения эксплуатации некоторых уязвимостей.
- В подсистему BPF добавлена поддержка локального для задачи хранилища данных (task-local storage), обеспечивающего привязку данных к конкретному BPF-обработчику.
- Полностью переделан учёт потребления памяти программами BPF - для управления использованием памяти в объектах BPF вместо memlock rlimit предложен контроллер cgroup.
- В механизме BTF (BPF Type Format), предоставляющем информацию для проверки типов в псевдокоде BPF, реализована поддержка модулей ядра.
- В интерфейс асинхронного ввода/вывода io_uring добавлена поддержка системных вызовов shutdown(), renameat2() и unlinkat(). При вызове io_uring_enter() добавлена возможность указания таймаута (проверить поддержку аргумента для указания таймаута можно при помощи флага IORING_FEAT_EXT_ARG).
- Архитектура ia64, применяемая в процессорах Intel Itanium, переведена в категорию оставленных без сопровождения ("orphaned"), что подразумевает прекращение тестирования. Компания Hewlett Packard Enterprise прекратила приём заказов на новое оборудование Itanium, а Intel сделал это ещё в прошлом году.
- Прекращена поддержка систем на базе архитектуры MicroBlaze, не укомплектованных блоком управления памятью (MMU). Подобные системы давно не встречаются в обиходе.
- Для архитектуры MIPS добавлена поддержка тестирования покрытия кода (coverage testing) при помощи утилиты gcov.
- Добавлена поддержка виртуальной шины auxiliary для взаимодействия с многофункциональными устройствами, сочетающими функциональность, требующую разных драйверов (например, сетевые карты с поддержкой Ethernet и RDMA). Шина может использоваться для назначения для устройства первичного и вторичного драйвера, в ситуации, когда проблематично использование подсистемы MFD (Multi-Function Devices).
- Для архитектуры RISC-V добавлена поддержка системы распределения памяти CMA (Contiguous Memory Allocator), которая оптимизирована на выделение больших непрерывных областей памяти с использованием техники перемещения страниц памяти. Для RISC-V также реализованы средства ограничения доступа к /dev/mem и учёта времени обработки прерываний.
- Для 32-разрядных систем ARM добавлена поддержка отладочного инструмента KASan (Kernel address sanitizer), обеспечивающего выявление ошибок при работе с памятью. Для 64-разрядных ARM реализация KASan переведена на использование тегов MTE (MemTag).
- Добавлен системный вызов epoll_pwait2(), позволяющий использовать таймауты с наносекундной точностью (вызов epoll_wait манипулирует миллисекундами).
- В системе сборки обеспечен вывод ошибки при попытке сборки загружаемых модулей ядра, в которых при помощи макроса MODULE_LICENSE() не определена лицензия на код. Ошибку при сборке отныне также будет вызывать использование макроса EXPORT_SYMBOL() для статических функций.
- Добавлена поддержка маппинга GEM-объектов из памяти, задействованной для ввода/вывода, позволившего ускорить работу с фреймбуфером на некоторых архитектурах.
- В Kconfig прекращена поддержка Qt4 (оставлена поддержка Qt5, GTK и Ncurses).
- Виртуализация и безопасность
- В системный вызов seccomp() добавлена поддержка режима быстрого реагирования, позволяющего очень быстро определять разрешён или запрещён определённый системный вызов на основе прикреплённой к процессу таблицы полномочий (constant-action bitmap), не требующей запуска BPF-обработчика.
- Интегрированы компоненты ядра для создания и управления анклавами на базе технологии Intel SGX (Software Guard eXtensions), позволяющей приложениям выполнять код в изолированных зашифрованных областях памяти, доступ остальной системы к которым ограничен.
- В рамках инициативы по ограничению доступа из пространства пользователя к регистрам MSR (model-specific register) запрещена запись в регистр MSR_IA32_ENERGY_PERF_BIAS, позволяющий изменить режим энергоэффективности процессора ("normal", "performance", "powersave").
- Из ветки kernel-rt для систем реального времени перенесена возможность отключения миграции высокоприоритетных задач между CPU.
- Для систем ARM64 добавлена возможность применения тегов MTE (MemTag, Memory Tagging Extension) для адресов памяти обработчиков сигналов. Использование MTE включается через указание опции SA_EXPOSE_TAGBITS в sigaction() и позволяет организовать проверку корректности использования указателей для блокирования эксплуатации уязвимостей, вызванных обращением к уже освобождённым блокам памяти, переполнениями буфера, обращениями до инициализации и использованием вне текущего контекста.
- Добавлен параметр "DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING", разрешающий подсистеме dm-verity проверять хэш-сигнатуры сертификатов, размещаемых во вторичном хранилище ключей (keyring). На практике настройка позволяет верифицировать не только сертификаты встроенные в ядро, но и сертификаты загруженные во время работы, что даёт возможность обновлять сертификаты без обновления всего ядра.
- В User-mode Linux добавлена поддержка режима suspend-to-idle, позволяющего заморозить окружение и использовать сигнал SIGUSR1 для вывода из спящего режима.
- В механизм virtio-mem, позволяющий выполнять горячее подключение и отключение памяти к виртуальным машинам, добавлена поддержка режима большого блока (BBM, Big Block Mode), дающего возможность передавать или забирать память блоками, превышающими размер блока памяти ядра, что необходимо для оптимизации VFIO в QEMU.
- В работающую на уровне ядра реализацию TLS добавлена поддержка шифра CHACHA20-POLY1305.
- Сетевая подсистема
- Для 802.1Q (VLAN) реализован механизм управления сбоями подключения (CFM, Connectivity Fault Management), позволяющий выявлять, верифицировать и изолировать сбои в сетях с виртуальными мостами (Virtual Bridged Networks). Например, CFM может использоваться для локализации проблем в сетях, охватывающих несколько независимых организаций, сотрудники которых имеют доступ только к своему оборудованию.
- Добавлена поддержка инкапсуляции пакетов протокола SCTP в UDP-пакеты (RFC 6951), что позволяет использовать SCTP в сетях со старыми трансляторами адресов, напрямую не поддерживающими SCTP, а также реализовывать SCTP на системах, не предоставляющих прямого доступа к уровню IP.
- Реализация технологии WiMAX перемещена staging и в будущем намечена для удаления, если не найдутся пользователи, которым необходим WiMAX. WiMAX уже не используется в публичных сетях, а в ядре единственным драйвером с которым можно использовать WiMAX остаётся устаревший драйвер Intel 2400m. В сетевом конфигураторе NetworkManager поддержка WiMAX была прекращена в 2015 году. В настоящее время WiMax практически полностью вытеснена такими технологиями, как LTE, HSPA+ и Wi-Fi 802.11n.
- Проведена работа по оптимизации производительности обработки входящего TCP-трафика в режиме zerocopy, т.е. без дополнительного копирования в новые буферы. Для трафика среднего размера, охватывающего десятки или несколько сотен килобайт данных, применение zerocopy вместо recvmsg() заметно эффективнее. Например, реализованные изменения позволили повысить эффективность обработки трафика в стиле RPC с сообщениями в 32 КБ при использовании zerocopy на 60-70%.
- Добавлены новый вызовы ioctl() для создания сетевых мостов, охватывающих несколько каналов PPP. Предложенная возможность позволяет кадрам перемещаться из одного канала в другой, например, из PPPoE в сеанс PPPoL2TP.
- Продолжена интеграция в ядро MPTCP (MultiPath TCP), расширения протокола TCP для организации работы TCP-соединения с доставкой пакетов одновременно по нескольким маршрутам через разные сетевые интерфейсы, привязанные к разным IP-адресам. В новом выпуске реализована поддержка опции ADD_ADDR для анонса доступных IP-адресов к которым возможно соединение при добавлении новых потоков к существующему соединению MPTCP.
- Добавлена возможность настройки действий при превышении бюджета поллинга соединений (busy-polling). Ранее доступный режим SO_BUSY_POLL подразумевал переключение на softirq при исчерпании бюджета. Для приложений, которым необходимо продолжать использовать поллинг предложена новая опция SO_PREFER_BUSY_POLL.
- В IPv6 реализована поддержка режимов SRv6 End.DT4 и End.DT6, применяемых для создания многопользовательских IPv4 L3 VPN и устройств VRF (Virtual routing and forwarding).
- В Netfilter унифицирована реализация выражений set, что позволило обеспечить возможность указания нескольких выражений для каждого элемента set-списков.
- В беспроводной стек 802.11 добавлены API для настройки ограничений мощности SAR, а также параметров AE PWE и HE MCS. В драйвер Intel iwlwifi добавлена поддержка диапазона 6GHz (Ultra High Band). В драйвер Qualcomm Ath11k добавлена поддержка технологии быстрой настройки соединения FILS (Fast Initial Link Setup, стандартизирована как IEEE 802.11ai), позволяющей избавиться от задержек при роуминге во время миграции от одной точки доступа к другой.
- Оборудование
- В драйвере amdgpu реализована поддержка APU AMD "Green Sardine" (Ryzen 5000) и GPU "Dimgrey Cavefish" (Navi 2), а также начальная поддержка APU AMD Van Gogh с ядром Zen 2 и GPU RDNA 2 (Navi 2). Добавлена поддержка новых идентификаторов APU Renoir (на базе CPU Zen 2 CPU и GPU Vega).
- В драйвере i915 для видеокарт Intel реализована поддержка технологии IS (Integer scaling) с реализацией фильтра для увеличения масштаба с учётом состояния соседних пикселей (интерполяция Nearest-neighbor) для определения цвета отсутствующих пикселей. Расширена поддержка дискретных карт Intel DG1. Реализована поддержка технологии "Big Joiner", присутствующей начиная с чипов Ice Lake / Gen11 и позволяющей использовать один транскодер для обработки двух потоков, например, для вывода на 8K экран через один DisplayPort. Добавлен режим асинхронного переключения между двумя буферами в видеопамяти (async flip).
- В драйвер nouveau добавлена начальная поддержка GPU NVIDIA на базе микроархитектуры "Ampere" (GA100, GeForce RTX 30xx), пока ограниченная средствами для управления видеорежимами.
- Добавлена поддержка протокола 3WIRE, используемого в LCD-панелях. Добавлена поддержка панелей novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 и ABT Y030XX067A 3.0. Отдельно можно отметить поддержку панели смартфонов OnePlus 6 и 6T, которая позволила организовать загрузку на устройствах немодифицированного ядра.
- Добавлена поддержка первого дискретного USB4 хост-контроллера Intel Maple Ridge.
- Добавлена поддержка звуковых кодеков Allwinner H6 I2S, Analog Devices ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI and XCVR, Realtek RT715 и Qualcomm SM8250.
- Добавлена поддержка ARM-плат, устройств и платформ: Galaxy Note 10.1, Microsoft Lumia 950 XL, NanoPi R1, FriendlyArm ZeroPi, Elimo Initium SBC, Broadcom BCM4908, Mediatek MT8192/MT6779/MT8167, MStar Infinity2M, Nuvoton NPCM730, Marvell Armada 382, Mikrotik на базе Marvell Prestera 98DX3236, серверы с Nuvoton NPCM750 BMC, Kontron i.MX8M Mini, Espressobin Ultra, "Trogdor" Chromebook, Kobol Helios64, Engicam PX30.Core.
- Встроена поддержка игровой консоли Ouya на базе NVIDIA Tegra 3.
Источник статьи: https://www.opennet.ru/opennews/art.shtml?num=54581