Выпуск Linux 6.6 LTS – основные изменения для архитектур Arm, RISC-V и MIPS

Выпуск Linux 6.6 только что анонсирован Линусом Торвальдсом в списке рассылки Linux Kernel Mailing List (LKML) :

Последняя неделя была довольно спокойной, и нет никаких причин дальше откладывать выпуск v6.6, так что вот он.

Здесь есть случайный набор исправлений по всему ядру, и за исключением некоторых значительных исправлений для драйвера r8152, все изменения довольно небольшие. Ниже приведен краткий список изменений за последнюю неделю для тех, кто хочет ознакомиться с деталями. Он достаточно короткий, чтобы его можно было быстро просмотреть.

Это означает, что окно слияния для версии 6.7 откроется завтра, и я благодарен за множество ранних запросов на включение, которые уже подготовлены — более 40 ждут своей очереди. Это немного облегчит мою работу, так как в первую неделю окна слияния я буду в поездке.

Линус

Около двух месяцев назад был выпущен Linux 6.5 с начальной поддержкой USB4 v2 с пропускной способностью до 80 Гбит/с, дальнейшими обновлениями для поддержки Rust, одновременной многопоточностью (SMT) для архитектуры Loongarch, возможностью сборки ядра Loongarch с помощью компилятора Clang, добавлением расширения перенаправления разрешений (PIE) для arm64 для будущих функций безопасности, поддержкой плат NVIDIA IGX Orin и Jetson Orin Nano, а также множеством других изменений.

Linux 6.6 release

Основные изменения в Linux 6.6

Некоторые значительные изменения и обновления в ядре Linux 6.6 включают:

  • Поддержку аппаратной теневой стека (shadow stack) от Intel для предотвращения эксплойтов. Теневой стек работает путем поддержки вторичного (теневого) стека, который нельзя изменить напрямую. При управлении стеком процессор помещает адрес возврата как в обычный стек, так и в специальный теневой стек с ограниченными правами. При возврате процессор извлекает копию из теневого стека и сравнивает ее с копией из обычного стека. Если они различаются, процессор вызывает ошибку защиты управления, что может предотвратить эксплойты, пытающиеся изменить стек. Эта реализация поддерживает теневой стек только для 64-битных ядер, с поддержкой 32-битных только через эмуляцию IA32 и только для пользовательского пространства. Подробности можно прочитать в соответствующей статье LWN .
  • Планировщик задач EEVDF – Планировщик EEVDF («Earliest Eligible Virtual Deadline First») заменяет CFS, который был включен в Linux 2.6.23. Новый алгоритм предназначен для обеспечения того, чтобы процессы, которые не получают должного внимания, автоматически выбирались в следующий раз, а процессы, получившие больше, чем заслуживали, «наказывались». Это делается четким алгоритмическим способом, в то время как CFS использовал эвристики и настраиваемые параметры для попыток угадать, какие процессы требуют больше внимания. Новый планировщик EEVDF должен улучшить задержку задач, которые отставали в CFS, позволяя другим задачам регулярно перепланироваться. Это исследование (PDF) содержит больше деталей.
  • Более быстрый асинхронный прямой ввод-вывод с использованием io_uring с улучшением пропускной способности/задержки до 37% для операций ввода-вывода с малой глубиной очереди.

Обновление: Linux 6.6 станет LTS-ядром с поддержкой до декабря 2026 года.

Изменения для Arm в Linux 6.6

Как обычно, в Linux 6.6 было внесено множество изменений и обновлений для архитектуры Arm:

  • Allwinner
    • Allwinner T113 – поддержка CAN Bus
    • Allwinner A31/A31s – поддержка QSPI
    • Драйвер тактирования
      • Исправление имени параметра для ccu_nkm_round_rate()
      • Реализация CLK_SET_RATE_PARENT для NKM-тактов, т.е. учет альтернативных частот родительских тактов при определении частот
      • Установка CLK_SET_RATE_PARENT для A64 pll-mipi
      • Поддержка поиска ближайшей (а не ближайшей, но не выше) частоты для тактовых сигналов типов NM, NKM, мультиплексоров и делителей, а также использование этого для A64 pll-video0
      • Предпочтение текущей частоты родительского такта, если возможно сгенерировать идеальную частоту для NKM-тактов
    • Device tree – добавление xHCI USB для Allwinner V3s
    • Новая плата – Orange Pi Zero 3 (Примечание: WiFi/BT пока не поддерживаются)
  • Rockchip
    • PHY – добавление inno-dsi phy для Rockchip RV1126, поддержка USB и PCIe для RK3588
    • IOMMU – снятие ограничений на выделение таблиц страниц для нового оборудования
    • Драйвер тактирования
      • Добавление частот PLL для Rockchip RK3568
      • Добавление дерева тактирования дисплея для Rockchip RV1126
    • Драйвер контроллера PCIe – использование 64-битной маски для 64-битного адреса PCI в MSI, чтобы избежать обнуления старших 32 бит
    • Конфигурация Arm64 defconfig
      • Включение драйверов для платы Odroid-M1
      • Включение GPIO_SYSCON
      • Включение драйвера памяти OTP для Rockchip
      • Включение PHY_ROCKCHIP_NANENG_COMBO_PHY
    • Новые устройства и платы – отсутствуют
  • Amlogic
    • Watchdog – добавление поддержки для SoC Amlogic-T7
    • Драйвер прерываний – новый драйвер для Amlogic C3 SoC
    • Драйвер тактирования
      • dt-bindings: раскрытие всех идентификаторов тактов Amlogic
      • Миграция dt-bindings контроллеров тактов Amlogic gxbb на схему
    • Различные другие изменения драйверов
      • Добавление доменов питания C3
      • Явное включение правильных DT-заголовков в драйверах SoC Amlogic
      • Исправление потенциального разыменования нулевого указателя в meson_sm
      • Слияние genpd-v6.5-rc1-1 для переноса драйверов genpd amlogic
    • Изменения ARM64 DT для Linux 6.6:
      • Добавление начальной поддержки A311D2
      • Добавление gpio_intc, домена питания для SoC C3
      • Некоторые исправления и очистки DT bindings
    • Новые платы – плата Amlogic AN400 (Amlogic T7/A311D2), Khadas VIM4
  • Samsung
    • Драйвер PHY – поддержка USB для Samsung Exynos850
    • Драйверы – небольшая очистка заголовков и записей сопровождающих для драйверов SoC Samsung.
    • Изменения DTS ARM для Linux 6.6
      • Galaxy S II: исправление физического размера LCD-экрана.
      • Добавление плат Samsung Galaxy Tab 3 8.0 (Exynos4212).
      • Семейство Galaxy S3: добавление USB-разъема и USB OTG. Полная поддержка USB OTG пока не работает, но HDMI улучшен, и dtbs_check не выдает ошибок.
      • Исправление проблем, выявленных dtbs_check и W=1: адреса устройств, использование суффикса ‘gpios’ вместо ‘gpio’, обновление узла устройства i2c-arb в соответствии с новыми binding.
      • Несколько исправлений пробелов.
    • Изменения Samsung DTS ARM64
      • Добавление уникальных совместимых для блока PWM.
      • Добавление PWM для платы ExynosAutov9 SADK.
      • Несколько исправлений пробелов и других очисток.
    • Новые устройства – платы Samsung Galaxy Tab 3 8.0 (WiFi, 3G и LTE модели)
  • Qualcomm
    • Драйвер PHY
      • Добавление поддержки PCIe для Qualcomm SA8775p, драйвера USB PHY M31
      • Комбинированный PHY Qualcomm SM8150 с переработкой драйвера QMP PCIe
    • DMA Engine – поддержка dmaengine для Qualcomm SM6115 и QCM2290
    • Драйвер контроллера PCIe:
      • Добавление поддержки голосования за пропускную способность межсоединений для ‘pcie-mem’ и ‘cpu-pcie’ в DT и драйвере
      • Исправление некорректного свойства ‘compatible’ в DT для SDX65
      • Настройка контроллера так, чтобы тактовая частота шины MHI отключалась в состояниях ASPM L1.x
      • Использование ограничений выравнивания из ядра EPF в драйвере EPF MHI
      • Добавление поддержки MHI и Endpoint eDMA
      • Добавление поддержки Snapdragon SM8450 в драйверы EPF MHI
      • Использование iATU для передач EPF MHI меньше 4K для избежания задержек настройки eDMA
      • Добавление binding и поддержки драйвера для sa8775p
    • Драйвер тактирования
      • Драйвер Global Clock Controller для Qualcomm IPQ5018
      • Фреймворк core bus для MSM8996 получает поддержку MSM8996 Pro.
      • Добавление сбросов, связанных с сетью, для IPQ4019
      • Исправление источников тактирования для контроллера GPU SM6350.
      • Расширение контроллера Video clock SM83550 для поддержки SC8280XP.
      • И множество других (небольших) изменений, список которых слишком длинный для публикации здесь…
    • Драйвер управления выводами
      • Поддержка управления выводами LPASS (Low Power Audio Sub-System) для Qualcomm SM8350 и SM6115
      • Поддержка управления выводами PMX75 и PM7550BA (Power Management) для Qualcomm
      • Поддержка управления выводами PMC8180 и PMC8180C (Power Management) для Qualcomm
    • Сетевые технологии
      • Драйвер Qualcomm Wi-Fi 7 (ath12k) получает поддержку PHY EHT (Extremely High Throughput)
      • Добавление поддержки чипов Bluetooth Qualcomm WCN3988 и WCN7850
    • Новые SoC
      • Qualcomm IPQ5018 для точек доступа
      • Qualcomm SM4450 (Snapdragon 4 Gen 2) – новая платформа для бюджетных смартфонов.
    • Обновления ARM32 DTS
      • Введение родительских тактов для контроллеров GCC и LCC на MDM9615.
      • Новое представление RPM вводится для нескольких платформ. Исправление названий каналов ADC напряжения на нескольких платформах.
      • Добавление определения GSBI4 для APQ8064.
      • Исправление тактовой частоты XO для SDHCI и имени узла USB на IPQ4019. Также исправление имени узла USB для SDX55.
      • Добавление правильного PMIC для SDX65 MTP.
      • Удаление некорректного свойства spi-max-frequency из контроллеров на IPQ8064 и MSM8960.
      • Добавление OCMEM и подсистемы дисплея для MSM8226.
      • Добавление линии сброса для PM8941 и платы APQ8074 Dragonboard, а также исправление нескольких свойств сенсорного экрана Sony Xperia Z2 Tablet.
    • Обновления Arm64 DTS для Linux 6.6
      • Введение общего определения RDP IPQ5332, а также светодиодов и кнопок на основе GPIO.
      • IPQ9574 – добавление USB RDP433, карт охлаждения CPU и регуляторов.
      • MSM8916 – улучшение и вынос в отдельный dts мезонина камеры D3. Samsung Galaxy S4 Mini получает поддержку PMIC с зарядным устройством, а Samsung Galaxy J5 и E5 – поддержку сенсорного экрана.
      • MSM8939 – несколько исправлений и начальная поддержка Samsung Galaxy A7.
      • MSM8996 – добавление поддержки масштабирования шины кэша, добавление отсутствующего прерывания для контроллера USB2. Исправление питания vio для сенсорного экрана Xiaomi Mi 5 и несколько других исправлений для других устройств.
      • MSM8998 – добавление контроллера дисплея, несколько исправлений тактирования и добавление отсутствующих доменов питания для IOMMU мультимедийной подсистемы.
      • Обновление зарезервированных областей памяти и списков зарезервированных GPIO для QDU/QRU1000 IDPs.
      • QCM2290 – добавление USB3 PHY. Плата RB1 получает регуляторы, а для RB2 включен GPU.
      • SA8775P – добавление и включение поддержки PCIe и Ethernet для платы Ride.
      • SC7180 – рефакторинг интеграции PSCI для поддержки устройств с прошивкой Qualcomm. Добавление BWMON вместе с голосованием за шину на основе CPUfreq.
      • SC8180X – несколько исправлений. Добавление pmic_glink и подключение на устройствах Primus и Lenovo Flex 5G для поддержки внешних дисплеев.
      • SC8280XP – добавление отсутствующего межсоединения SCM и пометка PDC как wakeup-parent для TLMM. На CRD исправлен gpio для vreg_misc_3p3 и несколько регуляторов переименованы в соответствии со схемами. Lenovo Thinkpad X13s получает светодиод активности камеры и освобождение ранее зарезервированных GPIO.
      • Платформа SA8540P Ride получает поддержку RTC.SDM670 – добавление масштабирования частот CPU и L3. Добавление PDC и его подключение как wakeup-parent для TLMM.
      • SDM845 – добавление описания пути межсоединений для контроллера UFS, добавление информации о доменах питания для GCC и исправление минимальной частоты UFS ICE. На RB3 описана область памяти для continuous splash и включена подсистема камеры. На Lenovo Yoga C630 добавлен отсутствующий источник питания для панели дисплея и добавлен отладочный UART.
      • SDX75 – добавление доменов питания RPMh и контроллера SPMI, описание PMIC PMX75 и его добавление в IDP.
      • SM6115 – добавление описания GPU и включение дисплея на Lenovo Tab P11.
      • SM635 – добавление BWMON для масштабирования LLCC и DDR. Добавление дисплея и GPU, регистрация PDC как wakeup-parent для TLMM.
      • SM6375 – добавление масштабирования кэша L3.
      • SM8150 – исправление совместимости DSI PHY и добавление прерывания для I2C7. На Sony Xperia 1 и 5 исправлен размер pmsg для ramoops.
      • SM8250 – добавление BWMON для масштабирования DDR и LLCC, добавление путей межсоединений для узла UFS, пометка SMMU как DMA coherent и обновление динамических коэффициентов мощности. На Sony Xperia 0 II и 5 II обновлены названия линий GPIO.
      • SM8350 – добавление отсутствующих состояний сна кластеров и прерываний LMH, исправление совместимостей CPU и добавление поддержки pinctrl для APR и LPASS. HDK получает поддержку карт uSD и добавление PMK8350.
      • SM8450 – добавление поддержки RNG и статистики RPMh, вынос обработки ICE из узла UFS и добавление отсутствующего пути межсоединений для подсистемы дисплея. Улучшение описания термодатчиков для HDK.
      • SM8550 M-TP и QRD получают pmic_glink для вывода DisplayPort. Также добавлен отсутствующий источник питания.
      • Миграция нескольких платформ, использующих общие константы идентификаторов ресурсов доменов питания RPMH, на новые универсальные определения. Обобщение названий каналов ADC на различных PMIC.
      • Добавление chassis-type для ряда устройств и замена константы GIC_SPI на 0 для нескольких платформ.
    • Обновления Arm defconfig – отсутствуют
    • Обновления конфигурации Arm64 defconfig.
      • Глобальный контроллер тактовых сигналов MSM8996 помечен как встроенный (buildin) для предотвращения проблем при загрузке.
      • Контроллер тактовой частоты GPU SC8280XP включен для поддержки графического процессора.
      • Активирован ряд драйверов, необходимых для загрузки платформы IPQ5018.
      • Ethernet PHY для поддержки Ethernet на SA8775P включен.
    • Новые устройства и платы
      • Плата RDP432-C2 (IPQ5018)
      • Плата Ride (SA8775P)
  • MediaTek
    • Терморегуляция
      • Различные исправления для Mediatek LVTS
      • Удаление избыточного dev_err_probe(), так как базовая функция уже его вызывает, в сенсоре Mediatek
    • PHY – Обновления тактовых сигналов драйвера Mediatek dsi
    • SMMU – Добавлена поддержка MT8188 IOMMU
    • Аудио SoC – Поддержка Mediatek MT7986 (Filogic 830)
    • Сетевые технологии – Добавлена поддержка Bluetooth для Mediatek MT2925
    • DRM Next
      • Незначительные улучшения mtk-dpi
      • DisplayPort: поддержка eDP и aux-bus
      • Исправление неинициализированного символа
      • Не проверять возвращаемое значение 0 после вызова platform_get_irq()
      • Преобразование в платформенный callback remove с возвратом void
      • Исправление проблем Coverity
      • Исправление потенциальной утечки памяти при сбое vmap()
      • Исправление предупреждения о преобразовании void-указателя в enum
      • Устранение предупреждений W=1 в GPU
  • Другие новые аппаратные платформы и SoC на базе Arm
    • Intel – Agilex5 FPGA SoC с ядрами Cortex-A76/A55
    • Texas Instruments – AM62P5, вариант существующего семейства Sitara AM62x
  • Изменения, связанные с Raspberry Pi
    • Добавлена поддержка следующих дисплеев Raspberry Pi:
      • DFROBOT DRF0678 7-дюймовый TFT DSI 800×480 с емкостным сенсорным экраном
      • DFROBOT DRF0550 5-дюймовый TFT DSI 800×480 с емкостным сенсорным экраном

Обновления Linux 6.6 для RISC-V

Работа над архитектурой RISC-V продолжается, среди изменений:

  • Поддержка новых интерфейсов «riscv,isa-extensions» и «riscv,isa-base» в дереве устройств для определения расширений
  • Поддержка доступа пользовательского пространства к счетчикам производительности
  • Поддержка большего количества инструкций в kprobes
  • Ядра аварийного дампа могут размещаться выше 4GiB
  • Поддержка KCFI
  • Поддержка ELF в конфигурациях без MMU
  • ARCH_KMALLOC_MINALIGN уменьшен до 8
  • mmap() по умолчанию использует адреса размера sv48, более длинные адреса скрыты за hint (аналогично Arm и Intel)
  • Различные исправления и улучшения
  • Alibaba T-Head TH1520
    • Изменение лицензии файлов TH1520 на двойную (GPL-2.0 или MIT)
    • Добавлена плата BeagleV Ahead (пока поддерживается только загрузка до консоли, ведутся работы по реализации MMC, тактовых сигналов и Ethernet)
  • Allwinner D1 – драйвер для контроллеров CAN Bus (протестирован на Lichee Panel RV86 ), добавлен узел D1 GPADC в DT-файл
  • StarFive JH7110
    • PHY – поддержка DHPY Rx, USB и PCIe
    • Добавлены драйверы тактирования
    • Добавлен драйвер ASoC (I2S)
    • Добавлена поддержка QSPI
    • Деревья устройств для Linux 6.6
      • Привязки для выноса определений ID тактовых сигналов из заголовков привязок. Их добавление (вместе с привязками syscon) разблокировало множество ожидающих задач. Добавлены: новые контроллеры тактирования и syscon, поддержка Ethernet, термодатчики, PHY для USB и PCIe, hwrng, mmc и другие компоненты для VisionFive v2.
      • Оригинальная VisionFive и BeagleV Starlight также получили поддержку термодатчиков, так как она реализована тем же драйвером. Эти изменения делают платы действительно пригодными для использования с чем-то большим, чем initramfs.
      • Также добавлена поддержка оверлеев через флаг -@ при сборке dtb.

MIPS: «исправления и оптимизации»

В Linux 6.6 для MIPS изменений немного, в основном исправления:

  • MIPS: TXx9: Проверка ошибок PCI на отдельной строке
  • Оптимизация arch/mips/configs/*_defconfig
  • MIPS: VDSO: Условный экспорт __vdso_gettimeofday()
  • Mips: loongson3_defconfig: Включение драйвера ast drm по умолчанию
  • mips: удаление <asm/export.h>
  • mips: замена #include <asm/export.h> на #include <linux/export.h>
  • mips: удаление ненужного #include <asm/export.h>
  • MIPS: Loongson64: Дополнительные исправления атрибутов __iomem
  • MIPS: loongson32: Удаление regs-rtc.h
  • MIPS: loongson32: Удаление regs-clk.h
  • MIPS: Более явная очистка включений DT
  • MIPS: Исправление явной очистки включений DT
  • Отмена: MIPS: Loongson: Исправление ошибки сборки при make modules_install
  • MIPS: Изменение CHECKFLAGS только при need-compiler'
  • MIPS: Исправление регрессии modules_install для CONFIG_CPU_DADDI_WORKAROUNDS
  • MIPS: Явное включение корректных DT-заголовков

Подробности можно найти в полном списке изменений Linux 6.6 , сгенерированном командой git log v6.5..v6.6 --stat. Дополнительная информация также доступна на сайте KernelNewbies .

Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

0 0 votes
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Inline Feedbacks
View all comments