Представлен Linux 5.0 – основные изменения, Arm, MIPS & RISC-V архитектура


Линус Торвальдс (Linus Torvalds) представил Linux 5.0:

Итак, последняя неделя перед релизом 5.0 была не совсем простой, но не такая сложная как c rc8 и в целом я рад, что задержался на неделю и закончил rc8.

Оказывается патч, о котором я говорил в релизе rc8, не был той тревожной ошибкой, о которой я думал: да, у нас была не инициализированная переменная, но причина, по которой мы не сразу заметили предупреждение, заключалась в том, как работает gcc, компилятор в основном инициализировал эту переменную как правильное значение. Таким образом, то же самое, что вызвало отсутствие предупреждения, также фактически означает, что это исправление на практике пустое.

Но у нас были и другие исправления ошибок, которые действительно имели значение, например не инициализированная переменная _could_ которая приводила к проблеме с другим компилятором.
В любом случае – все хорошо, что хорошо кончается. На прошлой неделе у нас было больше, чем несколько реальных исправлений, но этого не достаточно, чтобы заставить меня сказать: “Хмм, похоже это действительно не стабильно”. На самом деле, по крайней мере две трети патчей помечены как исправления для предыдущих выпусков, поэтому думаю, что сама версия 5.0 выглядит не плохо.

В любом случае, с данного момента окно для перехода на 5.1 теперь открыто и я рад видеть, что у меня уже есть несколько ранних запросов. Я начну обрабатывать их завтра.

И, как обычно, краткий список изменений касается только последней недели. Общий список изменений для всей версии 5.0 намного больше. Но я хотел бы отметить (еще раз), что мы не делаем релизы основываясь на новых функциях и что “5.0” не обозначает ничего, кроме того, что число 4.x стало слишком большим и у меня уже кончились пальцы рук и ног.

В выпуск Linux 4.20 добавлены некоторые китайские процессоры, такие как архитектуры C-SKY и процессоры Hygon Dhyana x86, подсистема PSI (Pressure Stall Information в  /proc/pressure/), поддержка AMD Raven2 APU и Picasso APUs, оптимизация Lazy TLB и многое другое.

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

  • В fscrypt добавлено шифрование файловой системы Adiantum для устройств с низким энергопотреблением. Больше деталей вы найдете в статье “Adiantum обеспечивает более быстрое шифрование файлов на устройствах без AES Crypto Accelerator
  • Поддержка для AMDGPU FreeSync – в Linux 5.0 добавлена поддержка технологии адаптивной синхронизации FreeSync которая работает с ЖК-дисплеями поддерживающими динамическую частоту обновления. Технология обеспечивает низкую задержку монитора, практически беспроблемный просмотр и продлевает срок службы батареи, уменьшая частоту обновления панели, когда не принимаются новые изображения.
  • Поддержка файла подкачки Btrfs. Файл подкачки должен быть полностью выделен как “nocow” без сжатия на устройстве.
  • binderfs — файловая система binder для запуска нескольких экземпляров Android

Специфичные изменения для Arm архитектуры включают в себя:

  • Планирование энергопотребления (EAS) для Arm big.LITTLE –  EAS обеспечивает более низкое энергопотребление на асимметричных платформах SMP, сначала вызывая задачи для более энергоэффективных процессоров. EAS в ядре Linux это упрощенная версия энергозависимого планирования, которое в настоящее время является частью общего ядра AOSP. Прочитайте эту LWN статью чтобы получить больше информации.
  • Allwinner
    • A64 – Видео драйвер Cedrus с открытым исходным кодом, изменения DTS для аудиокодека
    • H6 – Ethernet, поддержка DE3/HDMI, USB 2.0
    • H3 / H5 – Поддержка CSI
    • H5 – Cedrus
    • V3s – Поддержка CSI
    • SRAM поддержка для F1C100, H5 и A64 C1.
    • Драйвер часов для F1C100s и H6 (движок дисплея)
    • Поддержка Bluetooth для Broadcom (Ampak подули) на Banana Pi M2 Magic, Banana Pi M3, Banana Pi M64, Cubietruck и Cubietruck Plus
    • Добавлен Allwinner T3 (ребрендинг R40) и процессор F1C100s Armv5
    • Новое оборудование – Allwinner t3-cqa3t-bv3 (T3/R40), Lichee Pi Nano (F1C100s), Emlid Neutis N5, Mapleboard MP130
  • Rockchip
    • Очистка драйвера SPI
    • Промежуточный драйвер Rockchip VPU (только кодировка JPEG)
    • Часы – регистрация изменений для Rockchip rk3188 и rk3328; новые критические часы для Rockchip rk3188 и исправление идентификатора часов (использование двойных чисел); новые идентификатор часов для Rockchip rk3328
    • Поддержка домена питания для RK3066 и RK3188
    • Добавлена поддержка двойного MIPI
    • Новое оборудование – планшет Gru Scarlet RK3188
  • Amlogic
    • Драйвер часов – Видео часы Amlogic GX, частота процессора meson8b и тактовые частоты делителей; обновлена поддержка видео часов  Meson8/Meson8b
    • Добавлен драйвер контроллера Meson PCIe и привязка DT
    • DRM – добавлено масштабирование первичной плоскости, поддержка Overlay плоскости для рендеринга видео
    • Драйвер измерения питания
    • Обновления DTS
      • поддерживает больше таймеров на meson8
      • добавлено свойство stdout-path на нескольких платформах
      • AXG: включает GPIO IRQs, PHY IRQ, сторожевой таймер
    • Обновления ARM64 DTS
      • AXG: включает GPIO IRQs, PHY IRQ, сторожевой таймер, SCPI, добавлен монитор безопасности
      • исправлены ошибки смещения pinmux, линия имен GPIO
    • Новое оборудование – Phicoom N1 (S905) и Libretech S805-AC
  • Samsung
    • Отладка PM и кода загрузки вторичного ядра
    • Изменения Arm DTS
      • Добавлены отсутствующие свойства и узлы для PMIC часов в нескольких файлах DTS.
      • Добавлена поддержка скоростной шины UHS-I к Odroid XU3/XU4/HC SD карте и увеличена максимальная тактовая частота до 200 МГц для SD и eMMC.
      • Обновление схемы охлаждения включает в себя все процессорные устройства в нескольких файлах DTS.
      • Включены совместимость для Exynos3250 DWC.
      • Добавлен узел JPEG CODEC в S5Pv210.
      • Добавлен параметр opp-suspend в devfreq OPPs на Exynos4 платформе, чтобы исправить восстановление из режима ожидания в ОЗУ (RAM)
      • Удален eDP с платформы Arndale, так как она не работает и ломает также DSI.
      • Добавлены недостающие процессоры в схему охлаждения для Odroid X2
      • Исправлена конфигурация часов в аудиоподсистеме на Odroid XU3/XU4
    • Изменения ARM64 DTS
      • Обновлены аппаратные модули DWC3 в конкретном варианте Exynos5433.
      • Обновлена схема охлаждения включающая в себя все процессорные устройства в нескольких файлах DTS.
      • Добавлен контроллер часов IMEM (для подсистемы безопасности) и Bluetooth чип в платформе Exynos5433 TM2(e)
    • Обновления defconfig
      • Включены драйвера в defconfig exynos и multi_v7 для MAX8952, MAX8998 (платформа Samsung UniversalC210) и TC358764 (платформа Arndale).
  • Qualcomm
    • Управление контактами – новый драйвер Qualcomm PMS405 PMIC; улучшения: теперь GPIO работает на контроллере контактов Qualcomm SPMI/SSBI и Xway
    • Новые драйвера часов для аудиоподсистемы clks Qualcomm SDM845 и GPU контроллеры clck, поддержка QCS404 RPM clk
    • Добавлен сторожевой таймер Qualcomm PM8916
    • Обновления ARM64
      • Добавлена базовая платформа и узлы QCS404 4x A53
      • Добавлены EVB платы QCS404
      • Добавлен внешний SD для MSM8998-mtp
      • Добавлена по умолчанию scm совместимость для MSM8998
      • Исправлено XO clk имя на MSM8998
      • Добавлены prng-ee узлы для SDM845 и MSM8996
      • Добавлен узел температуры АЦП для pm8998
      • Исправлена документация по образцу QCOM ADC
      • Переключатель на использование драйвера dwc3-qcom glue на MSM8996
      • Добавлен схема охлаждения на MSM8916
      • Добавлен UART узел на SDM845
      • Добавлена поддержка подсистемы камеры на MSM8996 и MSM8916
    • Изменения device tree для Linux 5.0:
      • Добавлена запись для тепловых драйверов Qualcomm TSENS
      • Обновление тепловых записей msm8974
      • Исправлен msm8974 Hammerhead magnetometer gpios
      • Добавлены определенные совместимые SoC для узлов SDHC
      • Удаленна оценочная плата Arrow SD600
    • Обновления для ARM64 Defconfig
      • Включена поддержка платформы Qualcomm QCS404
      • Включена поддержка частоты и pinctrl для MSM8998
      • Включены поддержка Qualcomm SDM845
      • Добавлены связанные конфигурации remoteproc
  • Mediatek
    • Драйвер Pinctrl для SoC Meditak MT6797 и MT7629 
    • SPI – поддержка для Mediatek MT7629 и MT8183
    • Контроллеры Mediatek MT7629 SoC clk
  • Другие новые аппаратные платформы ARM и SoC:
    • Aspeed – Facebook Backpack-CMM BMC
    • Marvell – Macchiatobin Single Shot (Armada 8040, не 10 Гбит)
    • NXP – Добавлены SoC NXP i.MX7ULP, LS1028A и LX2160A; emtrion emCON-MX6, imx6ul-pico-pi, imx7d-sdb-reva; VF610 hw: устройство Liebherr BK4, плата ZII SCU4 AIB; основная плата i.MX7D PICO Hobbit; EVK платаi.MX7ULP; платы NXP LX2160AQDS и LX2160ARDB 
    • PXA – Первая плата PXA3xxx DT (Raumfeld)
    • Renesas – iWave G20D-Q7 (RZ / G1N)

Основные изменения для обновлений архитектуры MIPS и новых функций для Linux 5.0:

  • Таблицы и определения Syscall для unistd.h теперь генерируются скриптами, обеспечивая большую согласованность с другими архитектурами и облегчая добавление новых syscalls.
  • Поддержка сборки ядра без поддержки плавающей запятой, при которой любое пользовательское пространство, пытающееся использовать инструкции с плавающей запятой, получит SIGILL. В основном полезно для сжатия ядра и в качестве подготовки к поддержке nanoMIPS, которая еще не включает FP.
  • Контекст векторного регистра MIPS SIMD Architecture (MSA) теперь доступен через ptrace с помощью нового NT_MIPS_MSA regset.
  • ASIDs теперь хранятся в виде значений 64b даже для ядер MIPS32, что значительно расширяет поле версии ASID, так что вам не нужно беспокоиться о переполнении и избегая редких проблем с повторно используемыми ASID.
  • Страница «эмуляции» слота задержки ветвления теперь отображается без разрешения на запись для пользователя, что предотвращает ее использование в качестве удобного места для атак и выполнения вредоносного кода.
  • Поддержка ioremap_prot(), в основном для того, чтобы позволить пользователям gdb или другим пользователям ptrace просматривать память своей трассировки, используя тот же атрибут когерентности кэша.
  • Включена сборка ядра с помощью инструментария UBSAN.
  • Включена сборка ядра с использованием мертвого кода во время соединения и удаления данных..
  • Некоторые изменения для определенных платформ:
    • Плата Boston получает обходной путь для проблем предварительной выборки DMA c Hub контроллером платформы EG20T, который она использует.
    • Очистка кода Cavium Octeon, удаление около 20 тысяч строк избыточного кода.
    • Обновления defconfig для машин DECstation, включая новые defconfigs для машин r4k & 64b.
    • Ведутся работы по поддержке Loongson 3.
    • Исправления DMA для машин SiByte

Также были добавлены некоторые изменения для архитектуры RISC-V:

  • Обновления ядра RISC-V:
    • Исправление для test-bpf, поэтому оно компилируется в системах на основе RV64I.
    • Исправление в отношении командной строки ядра, когда нет device tree.
    • Исправлена ошибка, из-за которой процессоры не могли уснуть при сбое системы.
    • Поддержка для MODULE_SECTIONS в системах на основе RV32I.
    • [новое в v2] Добавлен драйвера SBI earlycon вместо поддержки arch-specific early printk
  • Обновления аудита RISC-V:
    • Добавлен NR_syscalls в unistd.h, который необходим для CONFIG_FTRACE_SYSCALLS.
    • Определение CREATE_TRACE_POINTS, так что __tracepoint_sys_{enter,exit} определится.
    • Исправления для trace_sys_exit(), поэтому вы можете включить HAVE_SYSCALL_TRACEPOINTS

Полный список изменений Linux 5.0 только с комментариями можно найти здесь. Он был сгенерирован с помощьюgit log v4.20..v5.0-rc8 --stat. Для получения более подробной информации вы можете почитать журнал изменения ядра на KernelNewbies.

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

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

Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

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