LinuxForum.Fans
Тема

Релиз ядра Linux 3.19 + патчи для legacy-драйвера NVIDIA 304.125

Автор: Rizado 8 сообщений 1089 просмотров
09.02.2015 14:26 #413823

После двух месяцев разработки Линус Торвальдс анонсировал релиз ядра Linux 3.19. Среди наиболее заметных улучшений: средства защиты от переполнения буфера на основе расширений Intel MPX, проверка целостности и быстрая замена дисков в Btrfs RAID 5/6, сжатие LZ4 в squashfs, возможность привязки BPF-программ к сетевым сокетам, протокол TIPC, системный вызов execveat(), драйвер "ipvlan" для связи контейнеров, драйвер "AMD KFD" для GPGPU-вычислений, поддержка архитектуры Altera Nios II.

В новую версию принято примерно 11500 исправлений от 1200 разработчиков, размер патча - 38 Мб (изменения затронули 10742 файлов, добавлено 487475 строк кода, удалено 350946 строк). Около 46% всех представленных в 3.19 изменений связаны с драйверами устройств, примерно 19% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 12% связано с сетевым стеком, 4% - файловыми системами и 4% c внутренними подсистемами ядра.

Из наиболее интересных новшеств можно отметить:

  • Дисковая подсистема, ввод/вывод и файловые системы

    • В Btrfs появилась возможность быстрой замены дисков в RAID 5/6 без предварительного добавления нового диска, переноса данных и вывода из массива старого диска, т.е. теперь при помощи утилиты btrfs-replace можно просто поменять на лету один диск на другой, как это делалось для накопителей, не состоящих в RAID. Для RAID 5/6 также добавлена функция проверки целостности данных ("Scrubbing", сверка контрольных сумм, сохранённых и вычисленных на основе фактических данных), которая ранее не могла быть применена к RAID разделам Btrfs;
    • Существенно увеличена производительность модуля Device Mapper, обеспечивающего динамическое выделение места в хранилище (thin provisioning) и позволяющего создать несколько виртуальных дисковых разделов, суммарный размер которых превышает физический размер доступных накопителей, а физическое дисковое пространство выделяется по мере необходимости. Производительность возросла в основном благодаря поддержке агрегирования операций с идентичными блоками на стадии перед обращением к основному устройству;
    • В файловой системе Ceph добавлена поддержка inline-размещения данных, что привело к увеличению производительности при работе с мелкими файлами. Также добавлена поддержка верификации сообщений по цифровой подписи для аутентификации обмена данными между клиентами и серверами Ceph;
    • В F2FS, развиваемую компанией Samsung высокопроизводительную файловую систему для Flash-накопителей, добавлена опция "fastboot", которую можно использовать для сокращения числа проверок во время загрузки;
    • В файловую систему squashfs добавлена поддержка сжатия данных с использованием алгоритма LZ4;
  • Виртуализация и безопасность

    • Поддержка расширений MPX (Memory Protection Extensions), которые появятся в следующих поколениях микроархитектур процессоров Intel (Skylake и Goldmont) и дадут возможность организовать проверку указателей на соблюдение границ, связанных с ними областей памяти. Для использования данной возможности для каждой ссылки на память процессору необходимо сообщить сведения о допустимых границах области памяти, что требует дополнительной адаптации программного обеспечения, т.е. использование для сборки компилятора и runtime-библиотек, поддерживающих MPX. С практической стороны, MPX позволит выявлять ошибки при работе с памятью и блокировать совершение атак, основанных на переполнении буфера.
    • Добавлен драйвер "ipvlan", позволяющий создавать виртуальные сетевые устройства для связи между изолированными контейнерами. Драйвер напоминает macvlan, но рассчитан на эффективную работу с сетевыми пространствами имён (network namespaces) и производит мультиплексирование трафика на более высоком уровне сетевого стека;
    • Для архитектуры ARM64 реализован механизм seccomp, используемый для ограничения доступа приложений к системным вызовам;
    • В связи с устранением возможного вектора атаки (CVE-2014-8989) изменена обработка системного вызова setgroups(), при его использовании в пространствах имён для непривилегированных пользователей (user namespaces), что может потенциально привести к нарушению нормальной работы некоторых приложений, выполняющих маппинг произвольных идентификаторов групп пользователей.
    • Прекращена поддержка использования системы виртуализации KVM на серверах с архитектурой Itanium (ia64), так как данная возможность не использовалась на практике и оставалась без сопровождения;
    • Добавлен интерфейс для доступа из пространства пользователя к функциям блочного шифрования AEAD;
    • Подсистема virtio значительно доработана в плане обеспечения поддержки стандарта virtio 1.0;
  • Сетевая подсистема

    • В клиент и сервер NFS добавлена поддержка опций ALLOCATE и DEALLOCATE, определённых в стандарте NFS 4.2 и позволяющих заранее зарезервировать место в хранилище для файла, до его фактической записи;
    • В сетевой стек добавлена новая подсистема для задействования аппаратных механизмов ускорения коммутации и маршрутизации на поддерживающем данные возможности оборудовании;
    • Добавлен netlink API для сетевого протокола TIPC (Transparent Inter-process Communication), предназначенного для организации межпроцессного взаимодействия в кластере. Протокол предоставляет средства для быстрого и надёжного взаимодействия приложений, независимо от того, на каких узлах в кластере они выполняются.
    • В подсистеме InfiniBand обеспечена поддержка подкачки по необходимости (on-demand paging), что позволяет создавать и размещать области RDMA через обработчик обращений к невыделенным страницам памяти (page faults), т.е. расходовать память тогда, когда она действительно используется;
  • Память и системные сервисы

    • В системный вызов getsockopt() добавлена новая опция SO_INCOMING_CPU, при помощи которой можно определить CPU, используемый для обработки указанного сокета. Используя данную опцию приложение может распределить связанную с сокетами работу по нескольким процессорам, увеличив общую пропускную способность;
    • Возможность привязки расширенных BPF-программ к сетевым сокетам. В настоящее время функциональность ограничена сбором статистики, но в будущем ожидается добавление возможностей по установке фильтров;
    • Добавлен системный вызов execveat(), который позволяет запустить исполняемый файл из открытого файлового дескриптора или определить исполняемый файл при передаче файлового дескриптора директории;
    • Из экспериментального staging-дерева в основной состав ядра перемещён механизм межпроцессного взаимодействия Binder, предложенный разработчиками платформы Android;
    • Поддержка оверлеев Device Tree, призванных упростить получение информации о вспомогательном оборудовании на стадии загрузки системы;
    • В подсистему ftrace добавлена возможность использования в фильтрах выражений с логической операцией НЕ ("!");
    • Добавлен новый внутренний API, позволяющий унифицировать доступ драйверов к параметрам оборудования через ACPI или Вevice Tree, скрывая особенности работы через данные интерфейсы;
    • Продолжена работа над устранением проблемы 2038 года, вызванной переполнением 32-разрядного типа time_t. Внутренние функции ядра do_settimeofday(), timekeeping_inject_sleeptime() и mktime() заменены на варианты, в которых используется 64-разрядный тип time64_t или timespec64.
  • Аппаратные архитектуры

    • Поддержка микропроцессорной архитектуры с программным ядром Altera Nios II (soft-процессор), конкурирующей с архитектурой MicroBlaze;
  • Оборудование

    • Добавлен драйвер "AMD KFD", предоставляющий новый интерфейс для использования вычислительных возможностей графических процессоров в приложениях, не связанных с графикой (GPGPU). Взаимодействие с драйвером на пользовательском уровне осуществляется через библиотеку HSA (Heterogenous System Architecture), которая позволяет использовать OpenCL для организации гибридных вычислений и наладить совместную работу CPU, GPU и иных процессоров, в которых подходящее вычислительное устройство выбирается в прозрачном режиме в зависимости от задачи. В HSA CPU и GPU имеют доступ к единым областям памяти, что упрощает организацию работы гибридных приложений;
    • В компоненты прямого рендеринга (DRM) добавлена поддержка атомарного переключения видеорежимов, позволяющая разом, в рамках одной атомарной операции, изменить несколько параметров графического режима. Вызов ioctl() для обращения к данной функциональности из пространства пользователя ожидается в ветке ядра 3.20;
    • В DRM-драйвер Nouveau добавлена частичная поддержка видеокарт NVIDIA GeForce 900 (GPU GM204), реализована возможность управления напряжением в Tegra K1;
    • В DRM-драйвере Intel реализована начальная поддержка графической подсистемы процессоров нового поколения, построенных в соответствии с микроархитектурой Skylake. По умолчанию включен режим PPGTT (Per-Process Graphics Translation Tables), который может использоваться для изоляции доступа к GPU в гостевых системах;
    • В DRM-драйвере Radeon улучшены средства управления скоростью вращения кулера для Radeon HD 7000 и более новых GPU;
    • Поддержка GPU, используемых в SoC Freescale i.MX и Rockchip;
    • Поддержка звуковых устройств на чипах Intel Baytrail;
    • Поддержка контроллеров USB 3.0 от компании Broadcom;
    • В Video4Linux добавлены драйверы для видеоустройств DVBSky S950 V3, тюнеров Montage M88RS6000, демодуляторов Panasonic MN88472 и MN88473, и ресиверов для пультов ДУ Amlogic Meson.
    • Поддержка SoC Amlogic Meson8, Allwinner A80, Samsung Exynos4415, Freescale LS1021A, Alphascale ASM9260 и AMD Seattle;
    • Поддержка SCSI-адаптеров Tekram DC390(T), Am53/79C974 и Western Digital WD7193/7197/7296.

Источник: http://www.opennet.ru/opennews/art.shtml?num=41634

14.02.2015 12:40 #414231

Обновился кто нибудь на kernel 3.19? Как там блоб nvidia, заводится?

14.02.2015 15:18 #414242

Можно зайти на фтп нвидии и посмотреть примечания к последней версии, можно установить ядро 3.19 не удаляя текущее и проверить.

14.02.2015 19:15 · отредактировано #414259

Linux kernel 2.6.18* and newer ))
Обновился, полет нормальный.

14.02.2015 21:19 #414285
"baralgin" написал:
Как там блоб nvidia, заводится?

Какая версия блоба-то?


з.ы. 304.125 по-любому потребует патча, а новые блобы этого года 346.35 и 340.76 должны ставиться без проблем.

14.02.2015 22:00 #414292
"verg" написал:
304.125 по-любому потребует патча,

Только патч от 3.18 не подойдёт.

14.02.2015 22:36 #414296

verg, 340.76 ставил. Все норм вроде.

14.02.2015 23:05 #414298

Патчи для 304.125 необходимые ядру 3.19:
1) nv-drm.c.patch

Показать
text
--- nv-drm.c    2014-12-02 06:55:59.000000000 +0300
+++ nv-drm.c    2014-12-11 22:45:40.189959532 +0300
@@ -18,7 +18,7 @@
 
 #include <drm/drmP.h>
 
-#if defined(NV_DRM_DRM_GEM_H_PRESENT)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,18,0)
 #include <drm/drm_gem.h>
 #endif
 
@@ -75,6 +75,10 @@
     .load = nv_drm_load,
     .unload = nv_drm_unload,
     .fops = &nv_drm_fops,
+    
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,18,0)
+    .set_busid = drm_pci_set_busid,
+#endif    
 
     .name = "nvidia-drm",
     .desc = "NVIDIA DRM driver",

2) nv.c.patch

Показать
text
--- a/nv.c    2014-12-02 04:58:34.000000000 +0100
+++ b/nv.c    2014-12-21 17:50:33.420697348 +0100
@@ -2026,7 +2026,7 @@ long nv_kern_unlocked_ioctl(
     unsigned long i_arg
 )
 {
-    return nv_kern_ioctl(file->f_dentry->d_inode, file, cmd, i_arg);
+    return nv_kern_ioctl(file->f_path.dentry->d_inode, file, cmd, i_arg);
 }
 
 long nv_kern_compat_ioctl(
@@ -2035,7 +2035,7 @@ long nv_kern_compat_ioctl(
     unsigned long i_arg
 )
 {
-    return nv_kern_ioctl(file->f_dentry->d_inode, file, cmd, i_arg);
+    return nv_kern_ioctl(file->f_path.dentry->d_inode, file, cmd, i_arg);
 }
 
 /*

Ставить примерно так.
[console]verg@localhost:~> inxi -SG
System: Host: localhost Kernel: 3.19.0-1.g8a7d5f9-desktop i686 (32 bit) Desktop: KDE 4.14.4
Distro: openSUSE 13.2 (Harlequin)
Graphics: Card: NVIDIA G73 [GeForce 7600 GS]
Display Server: X.Org 1.17.1 driver: nvidia Resolution: 1920x1080@60.00hz
GLX Renderer: GeForce 7600 GS/AGP/SSE2 GLX Version: 2.1.2 NVIDIA 304.125[/console]

Войдите или зарегистрируйтесь, чтобы ответить.