LinuxForum.Fans
Тема

Релиз ядра Linux 3.13 + патчи для драйверов NVIDIA

Автор: verg 16 сообщений 3040 просмотров
#361491

После двух с половиной месяцев разработки Линус Торвальдс выпустил ядро Linux 3.13. Среди наиболее заметных улучшений: интеграция пакетного фильтра Nftables, включение по умолчанию режима TCP Fast Open, увеличение производительности Squashfs, поддержка протокола HSR для создания отказоустойчивых сетевых конфигураций, добавление нового высокопроизводительного слоя блочных устройств, поддержка автоматического переключения между GPU в драйвере Radeon, фреймворк для ограничения энергопотребления устройств, классификатор трафика на основе BPF, реализация средств для проведения защищённых финансовых транзакций по NFC, поддержка архитектуры Intel MIC.

В новую версию принято 12 тысяч исправлений от 1339 разработчиков, размер патча - 32 Мб (изменения затронули 9849 файлов, добавлено 441972 строки кода, удалено 237897 строк). Около 44% всех представленных в 3.13 изменений связаны с драйверами устройств, примерно 21% изменений имеют отношение к обновлению кода специфичного для аппаратных архитектур, 14% связано с сетевым стеком, 4% - файловыми системами и 5% c внутренними подсистемами ядра. 11.9% изменений внесено сотрудниками компании Intel, 9.7% - Linaro, 9% - Red Hat, 5% - Samsung, 3.5% - IBM, 2.7% - SUSE, 1.7% - Google, 1.5% - NVIDIA, 1.1% - Oracle, 1.0% - Huawei, 0.9% - ARM.


Подробности: http://www.opennet.ru/opennews/art.shtml?num=38845




Патчи kernel_v3.13.patch для блобов NVIDIA 331.38, 304.117(119) и 173.14.39
#361494

"verg" написал:
Intel, 9.7% - Linaro, 9% - Red Hat, 5% - Samsung, 3.5% - IBM, 2.7% - SUSE, 1.7% - Google, 1.5% - NVIDIA, 1.1% - Oracle, 1.0% - Huawei, 0.9% - ARM.
Отсутствие в данном спиcке AMD, не удивило, и в принципе было ожидаемым.
#361527

Вообще-то они есть, видимо вклад совсем мизерный по сравнению с другими компаниями. Свободный драйвер radeon пилится и становится лучше от релиза к релизу.

#361587

redix написал:
[quote="verg"]Intel, 9.7% - Linaro, 9% - Red Hat, 5% - Samsung, 3.5% - IBM, 2.7% - SUSE, 1.7% - Google, 1.5% - NVIDIA, 1.1% - Oracle, 1.0% - Huawei, 0.9% - ARM.
Отсутствие в данном спиcке AMD, не удивило, и в принципе было ожидаемым.[/quote]
Как и Canonical :)

А прогресс радеонов продолжает радовать.
#361695

Vascom, ценой? :)

#361726

Wolfenberg, Поддержкой uvd, реализацией dpm, повышенной производительностью

#361738

Quarck, аналогично Nvidia :)

#361744

Не аналогично, а совсем по другому. Всё-таки radeon свободный драйвер всё это умеет. А нвидиа лишь проприетарщину свою пилит.
Надеюсь все понимают, что вклад Нвидиа в ядро относится только к их процессорам Tegra.

#361806

Vascom, если бы AMD выпускало свои драйвера в нормальном виде, то свободный драйвер был бы аналогией nouveau.

#361812

Аналогией он быть не может.
Спеки АМД открыты, драйвер radeon полноценный. Спеки Нвидиа закрыты, nouveau реверсинжиниринговый драйвер.

#361815

Vascom, ух ты! А что тогда за архивчики на сайте www.nvidia.ru лежат?

#361817

Вероятно что-то неполноценное и малоценное.
Или ты не веришь мне?

#361819

Vascom, почему же, верю.
Только вот не странно ли выпускать кастрата для Linux?
Скачал файл .run. Исходный код - вижу....

#361829
"Wolfenberg" написал:
Скачал файл .run. Исходный код - вижу....

Нет там никаких исходников драйвера.
Пруф:

text
wget ftp://download.nvidia.com/XFree86/Linux-x86/173.14.37/NVIDIA-Linux-x86-173.14.39-pkg1.run
./NVIDIA-Linux-x86-173.14.39-pkg1.run --extract-only

Там только headers, заголовки к интерфейсам драйвера c ядром и исходники этого самого интерфейса. А драйвер - это заранее скомпилированный shared object, библиотека.

#362202

Патчи kernel_v3.13.patch для блобов nvidia 331.38, 304.117(119) и 173.14.39:

331.38
text
--- a/kernel/nv-acpi.c
+++ b/kernel/nv-acpi.c
@@ -303,7 +307,10 @@ static int nv_acpi_remove(struct acpi_de
 
     if (pNvAcpiObject->notify_handler_installed)
     {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)
+ /* beginning with 3.13, acpi_remove_notify_handler() waits for events to finish */
         NV_ACPI_OS_WAIT_EVENTS_COMPLETE();
+#endif
 
         // remove event notifier
         status = acpi_remove_notify_handler(device->handle, ACPI_DEVICE_NOTIFY, nv_acpi_event);
--- a/kernel/uvm/nvidia_uvm_linux.h
+++ b/kernel/uvm/nvidia_uvm_linux.h
@@ -405,11 +405,17 @@ typedef void irqreturn_t;
 // not require the RCU's read lock on current->cred.
 //
 //
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0)
+#define NV_KUID_TO_UID(value) (__kuid_val(value))
+#else
+#define NV_KUID_TO_UID(value) (value)
+#endif
+
 #if defined(NV_TASK_STRUCT_HAS_CRED)
 #define NV_CURRENT_EUID() \
-    (((typeof(*current->cred) __force __kernel *)current->cred)->euid)
+        NV_KUID_TO_UID(((typeof(*current->cred) __force __kernel *)current->cred)->euid)
 #else
-#define NV_CURRENT_EUID() (current->euid)
+#define NV_CURRENT_EUID() NV_KUID_TO_UID(current->euid)
 #endif
 
 #define NV_ATOMIC_SET(data,val)         atomic_set(&(data), (val))

304.117, 304.119
text
--- a/kernel/nv-acpi.c
+++ b/kernel/nv-acpi.c
@@ -299,7 +299,10 @@ static int nv_acpi_remove(struct acpi_de
 
     if (pNvAcpiObject->notify_handler_installed)
     {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)
+ /* beginning with 3.13, acpi_remove_notify_handler() waits for events to finish */
         NV_ACPI_OS_WAIT_EVENTS_COMPLETE();
+#endif
 
         // remove event notifier
         status = acpi_remove_notify_handler(device->handle, ACPI_DEVICE_NOTIFY, nv_acpi_event);

173.14.39
text
--- a/usr/src/nv/nvacpi.c
+++ b/usr/src/nv/nvacpi.c
@@ -259,7 +259,10 @@ static int nv_acpi_remove(struct acpi_de
 
     if (pNvAcpiObject->notify_handler_installed)
     {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)
+ /* beginning with 3.13, acpi_remove_notify_handler() waits for events to finish */
         NV_ACPI_OS_WAIT_EVENTS_COMPLETE();
+#endif
 
         // remove event notifier
         status = acpi_remove_notify_handler(device->handle, ACPI_DEVICE_NOTIFY, nv_acpi_event);

Установка:
1) Распаковать *.run файл:

text
sh NVIDIA-Linux-XXX.run -x

3) Перейти в распакованный каталог:

text
cd NVIDIA-Linux-XXX

4) Установить патч:

text
patch -p1 < /путь_до_патча/kernel_v3.13.patch

5) Установка драйвера из полноэкранной консоли:

text
# /путь_до_распакованного_каталога_с_драйвером/nvidia-installer
Войдите или зарегистрируйтесь, чтобы ответить.