25 Ноября 2024, 07:20

Linux-ядро

Автор Vicpo, 17 Апреля 2008, 21:53

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

Zhek@Ch

09 Ноября 2011, 12:40 #200 Последнее редактирование: 09 Ноября 2011, 12:40 от Zhek@Ch
[size="3"]Для Linux подготовлен механизм перенаправления рендеринга GPU на другое устройство вывода [/size]

Илья Хаджич (Hadzic) из Bell Labs представил реализацию виртуальных CRTC-видеоконтроллеров (VCRTC), позволяющих реализовать механизм перенаправления пикселей из фреймбуфера определённого GPU на другое устройство вывода. С использованием виртуального контроллера CRTC можно достаточно гибко манипулировать выводом информации в системах с несколькими видеокартами, абстрагируя GPU на котором осуществляется рендеринг и непосредственное устройство вывода.

Механизм VCRTC может оказаться полезным при реализации поддержки гибридных систем с несколькими видеоадаптерами. Например, видеоподсистема NVIDIA Optimus позволяет на лету переключать вывод между встроенной энергоэффективной видеокартой на базе GPU Intel и мощной дискретной картой NVIDIA. С помощью VCRTC можно выполнять сложный рендеринг на GPU дискретной карте, а выводить информацию через интегрированную видеокарту. Кроме того, при подключении через порт USB внешнего видеоадаптера DisplayLink, можно сформировать сложную 3D-сцену с использованием GPU стационарной видеокарты, но вывести её на внешнюю видеокарту.

Практически, в качестве устройств вывода (CTD - Compression Transmission and Display) могут выступать любые устройства, которые способны сделать что-то полезное со сформированным набором пикселей, в том числе возможно создать синтетический драйвер для вывода через V4L2 или для записи в файл. Сформировав изображение на GPU, но использовав для вывода драйвер V4L2, возможно перенаправление сформированного на GPU потока по сети, с его последующей обработкой в любом приложении, поддерживающем V4L2, например, в видеоплеере VLC.

CRTC отвечает за формирование синхросигналов и выполняют чтение содержимого фреймбуфера из видеопамяти. Виртуальный CRTC может быть реализован на уровне драйвера, который эмулирует поведение аппаратного CRTC. Перераспределением трафика между GPU и устройством вывода (CTD) занимается специальный менеджер виртуальных CRTC, который выполнен в виде DRI-модуля VCRTCM для ядра Linux. VCRTCM может оперировать как виртуальными CRTC, так и реальными CRTC существующих видеокарт. Для оптимизации производительности VCRTCM по возможности старается использовать для передачи данных DMA, а также обеспечивает поддержку таких специфичных для CRTC вещей, как видеорежимы, замещения страниц, аппаратный курсор и т.п.

Кроме DRI-модуля vcrtcm в рамках проекта разработана небольшая утилита vcrtcm_ctl, предназначенная для управления виртуальными CRTC. Также опубликована исчерпывающая документация по архитектуре и сборке. Код проекта доступен в рамках лицензии GPL. В настоящий момент поддерживаются только работа с драйвером Radeon и GPU R6XX, R7XX, Evergreen, Northern Island. В будущем планируется добавить поддержку драйверов Intel и Nouveau.


Zhek@Ch

11 Ноября 2011, 00:37 #201 Последнее редактирование: 11 Ноября 2011, 00:37 от Zhek@Ch
[size="3"]Суд подтвердил несостоятельность запрета на модификацию GPL-компонентов прошивок [/size]

Окружной суд Берлина вынес решение в судебном разбирательстве между компаниями AVM и Cybits, связанном с попыткой компании AVM запретить модификацию любых частей прошивок к своим маршрутизаторам, независимо от наличия в таких прошивках компонентов, распространяемых под лицензией GPL. Суд отверг требования истца и подтвердил, что пользователи встраиваемых систем, на которые предустановлено свободное ПО, могут легально создавать, устанавливать и запускать модифицированные версии данного ПО.

Напомним, что компания AVM попыталась через суд запретить распространение продукта, реализующего поддержку расширенной фильтрации трафика для маршрутизаторов производства AVM, путем внесения изменений в прошивку, а именно модификации ядра Linux. Позиция AVM сводится к тому, что любое изменение прошивки нарушает авторские права компании, даже если эти изменения сводятся к модификации частей, изначально распространяемых под лицензией GPL. AVM предоставляет исходные тексты GPL-компонентов прошивки, но настаивает на том, что уже сформированную прошивку изменять нельзя. По мнению оппонентов, требования AVM нарушают условия лицензии GPL, так как препятствуют законному праву изменять свободное ПО. Запрещая другим реализовывать права, предоставляемые GNU GPL, компания AVM сама нарушает условия лицензии, и, следовательно, теряет право на распространение данного ПО.

Представляющий интересы ответчика Харальд Вельте (Harald Welte), основатель gpl-violations.org и разработчик некоторых компонентов ядра Linux, заявил: "Я очень рад, что суд отклонил все требования АВМ, связанные с желанием контролировать любые изменения в GPL-программах, входящих в состав прошивки для маршрутизаторов Fritz! Box. Позволение и поощрение создания улучшенных вариантов существующих программ и продуктов является ключевым аспектом движения свободного программного обеспечения. Маттиас Киршнер (Matthias Kirschner), немецкий координатор европейского отделения Фонда свободного ПО указал на то, что "Свободное программное обеспечение дает каждому право использовать, изучать, распространять и улучшать его. Никому не должно быть позволено помешать другим в реализации этих прав".


Zhek@Ch

12 Ноября 2011, 11:52 #202 Последнее редактирование: 12 Ноября 2011, 11:56 от Zhek@Ch
[size="3"]Патч для решения проблемы с повышенным энергопотреблением Linux на некоторых ноутбуках [/size]

Мэтью Гаррет (Matthew Garrett), один из разработчиков ядра Linux из компании Red Hat, опубликовал в списке рассылки ядра Linux патч, полностью решающий проблемы с повышенным энергопотреблением на ноутбуках, поддерживающих технологию ASPM (Active State Power Management) для карт PCI Express. Проблема выражается в том, что для некоторых систем в процессе работы ASPM-регистры постоянно остаются в режиме "performance" (высокая производительность), что приводит к повышению энергопотребления на 10-30% при использовании ядер Linux начиная с 2.6.38. Предложенный патч имитирует поведение Windows при инициализации системы управления питанием, т.е. не очищает статус ASPM для всех устройств в процессе загрузки, оставляя параметры, выставленные BIOS.

Проблема долгое время оставалась нерешённой из-за отсутствия какой-либо документации, описывающей как именно следует принимать решения о включении или выключении поддержки ASPM в ситуации, когда BIOS не информирует ОС о поддержке ASPM. Изначально разработчики ядра Linux полагались на то, что активировать ASPM следует только в том случае, если BIOS явно сообщает о наличии поддержки ASPM для карт PCI Express. Как оказалось, подобный метод не эффективен, так как BIOS многих систем умалчивает о наличии ASPM, в то время как поддержка данного режима поддерживается. Если BIOS не сообщил о поддержке ASPM, ядро Linux обнуляло ASPM-регистры, что приводило к тому, что технология энергосбережения ASPM не использовалась в процессе работы системы (постоянно был активен режим максимальной производительности), даже если ASPM был реализован в компьютере. В ситуации, когда BIOS указывал на наличие ASPM, инициализация проходила корректно и проблем не наблюдалось.

Тестирование энергопотребления показало, что после применения патча, потребление энергии на ноутбуке ThinkPad на базе CPU Intel Core i7 уменьшилось на 36% при ненагруженном состоянии системы и на 14% при запуске интенсивно использующей графику 3D-игры, что соответствует уровню энергопотребления при использовании ядра 2.6.37 (новая система инициализации ASPM была добавлена в 2.6.38). К сожалению, окно приёма изменений для ядра Linux 3.2 уже закрыто, поэтому наиболее вероятно, что патч будет включён только в состав ядра 3.3, выход которого можно ожидать весной 2012 года.

Вслед за первым патчем, Мэтью Гаррет также представил несколько дополнительных улучшений, нацеленных на оптимизацию работы в случае, если BIOS корректно сообщает о наличии ASPM. Если системе изначально известно о ASPM, то применяются более агрессивные настройки, чем по умолчанию выставлены прошивкой. Для драйверов отдельных проблемных PCI-E устройств, для которых такие настройки неприменимы, предоставляется возможность индивидуального отключения ASPM. Список устройств для которых необходимо отключение ASPM был найден через анализ настроек драйверов для платформы Windows, в которой используется подобный обходной путь для более оптимального использования ASPM в системе.

В настоящее время в чёрный список внесены следующие устройства:


Zhek@Ch

12 Ноября 2011, 11:59 #203 Последнее редактирование: 12 Ноября 2011, 12:00 от Zhek@Ch
[size="3"]Вышла первая версия патчсета pf-kernel для Linux 3.1[/size]
 
С небольшой задержкой, связанной с отсутствием необходимых патчей, вышла первая версия патчсета pf-kernel для свежего ядра Linux v3.1.

В этой версии:

  • стабилизационный патч Linux v3.1.1;
  • патчсет от Кона Коливаса (Con Kolivas) 3.1.0-ck2, включающий в себя свежайшую версию планировщика процессов BFSv415;
  • планировщик ввода-вывода BFQ v3-r1;
  • альтернативная подсистема гибернации TuxOnIce по состоянию на v3.1-rc8;
  • патч, уменьшающий энергопотребление системы до уровня Linux v2.6.37 (см. выше)
Также открыт канал на Twitter, в котором, по возможности, будут публиковаться новости, связанные с разработкой pf-kernel.

Напоминаю, что этот патч используется на свой страх и риск.

Также напоминаю, что патч применяется к чистому ядру 3.1 без стабилизационных патчей.

>>> Официальный сайт (доступен и в сети IPv6)

 >>> Скачать патч


Zhek@Ch

13 Ноября 2011, 02:31 #204 Последнее редактирование: 13 Ноября 2011, 02:45 от Zhek@Ch
[size="3"]Обновление ядра Linux: 3.0.9, 3.1.1. Анализ динамики роста размера ядра [/size]

Представлены очередные корректирующие релизы ядра Linux: 3.0.9 (264 исправления) и 3.1.1 (268 исправлений). Как обычно, в анонсе выхода новых версий подчеркивается обязательность проведения обновления. Из подсистем в которых исправлены ошибки можно упомянуть: USB, usb_storage, mac80211, ath9k, Suspend, epoll, ACPI, VFS, CIFS, ext4, ext2, ext3, NFS, md/raid5, iscsi-target, drm/radeon, ALSA, ipv4, ipv6, KVM, Xen.

Отдельно можно отметить исправление ошибок в реализации программного RAID. В md/raid10 устранена серьёзная ошибка, которая могла привести к повреждению данных: при наличии активного запасного диска (hot-spare) в случае деградации массива, запасной диск не добавлялся в пустой слот, а заменял собой первый рабочий диск. В реализации md/raid5 устранена ошибка, которая могла привести к продолжению чтения данных со сбойного диска, в течение некоторого очень короткого времени после выявления сбоя и исключения сбойного диска из массива. Т.е. существует вероятность, что будут прочитаны некорректные данные.

Дополнительно, можно упомянуть интересное исследование роста размера кода ядра Linux, проведённое на основе оценки изменения размера 297 релизов, начиная с 1.0 и заканчивая 3.1. Судя по всему рост размера носит экспоненциальный характер и если применить экстраполяцию, то к моменту выпуска релиза 3.19, "tar.bz2" архив с ядром достигнет отметки в 100 Мб (размер архива ядра 3.1 - 73.6 Мб).



Zhek@Ch

14 Ноября 2011, 17:44 #205 Последнее редактирование: 14 Ноября 2011, 17:45 от Zhek@Ch
[size="3"]Архитектура системы верификации кода драйверов Linux [/size]

В статье "Архитектура Linux Driver Verification" (PDF, 700 Кб) представлено описание применимости метода статического анализа кода для проверки корректности драйверов устройств для платформы Linux. Представленный метод позволяет выявить ошибки на основании анализа исходных текстов, без непосредственного выполнения кода. В отличие от традиционных методов тестирования статический анализ кода позволяет проследить сразу все пути выполнения программы, в том числе, редко встречающиеся и сложно воспроизводимые при динамическом тестировании.

Проект Linux Driver Verification является открытым и развивается при участии организации Linux Foundation, Института системного программирования Российской Академии Наук (ИСП РАН) и Федерального агентства РФ по науке и инновациям. Наработки проекта распространяются в рамках лицензии Apache. Дополнительно подготовлен online-сервис для проверки драйверов. Список выявленных при помощи LDV проблем можно посмотреть на данной странице.


Zhek@Ch

23 Ноября 2011, 02:43 #206 Последнее редактирование: 23 Ноября 2011, 02:44 от Zhek@Ch
[size="3"]Обновление ядра Linux: 3.1.2 и 3.0.10 [/size]

Представлены очередные корректирующие релизы ядра Linux: 3.0.10 (26 исправления) и 3.1.2 (26 исправлений). Как обычно, в анонсе выхода новых версий подчеркивается обязательность проведения обновления.

В обновлениях устранено несколько уязвимостей. В коде security/keys/user_defined.c исправлена уязвимость, позволяющая инициировать крах ядра и разыменование NULL-указателя. Кроме того, устранено целочисленное переполнение в коде xen-gntalloc, которое теоретически может привести к повреждению области памяти ядра. В коде HFS устранено переполнение буфера через создание слишком длинного имени файла. В virtio-pci устранено обращение к области памяти после её очистки (use after free).


Zhek@Ch

27 Ноября 2011, 01:13 #207 Последнее редактирование: 27 Ноября 2011, 01:14 от Zhek@Ch
[size="3"]Для ядра Linux представлена реализация IPv6 NAT [/size]

Патрик МакХарди (Patrick McHardy) представил в списке рассылке linux-netdev первою тестовую реализацию IPv6 NAT для Netfilter, подсистемы для фильтрации и преобразования пакетов в ядре Linux. На данном этапе разработки код еще не готов к повседневному применению и содержит проблемы с асинхронной передачей пакетов и их окончательной сборкой. Тем не менее, в скором времени IPv6 NAT планируется довести до полностью работоспособного состояния и направить запрос на включение в следующий релиз ядра Linux.

IPv6 NAT позволяет осуществить подмену адресной информации в пакетах IPv6 в соответствии с заданными правилами трансляции, примерно так как это делается в классическом трансляторе адресов для IPv4. Для реализации поддержки IPv6 NAT, существующий в ядре код netfilter был переработан с целью разделения модуля NAT на два независимых компонента, один из которых включает в себя ядро подсистемы NAT, а второй реализует поддержку того или иного протокола третьего уровня. В данный момент поддержка IPv6 реализована для целей iptables SNAT и DNAT, а также MASQUERADE, REDIRECT и NETMAP. В целях тестирования реализована поддержка FTP NAT helper и Amanda NAT helper.

Поводом к началу работ над IPv6 NAT послужило желание создать единую стандартную реализацию механизма в свете его востребованности некоторыми компаниями, которые уже начали работу над собственной реализацией аналогичной функциональности (например, NAT66). Напомним, что сама идея NAT заключалась в том, чтобы обойти проблему нехватки IPv4-адресов и не соответствует концепции IPv6 как сети, в которой каждое устройство, подключенное к интернет, должно иметь свой собственный выделенный IPv6-адрес.


Zhek@Ch

28 Ноября 2011, 20:45 #208 Последнее редактирование: 28 Ноября 2011, 20:46 от Zhek@Ch
[size="3"]Обновление ядра Linux: 3.1.3, 3.0.11 и 2.6.32.49 [/size]

Представлены очередные корректирующие релизы ядра Linux: 3.1.3 (55 исправлений), 3.0.11 (56 исправлений) и 2.6.32.49 (27 исправлений). Как обычно, в анонсе выхода новых версий подчеркивается обязательность проведения обновления.

Из подсистем в которые внесены исправления можно отметить: drm/i915, USB, usb-storage, ALSA, NFS, TTY, SCSI, KVM, batman-adv, ip6_tunnel, cfg80211, nl80211. Обеспечена поддержка дополнительных USB web-камер, например, Logitech C600. Добавлена поддержка Platform Controller Hub LAPIS Semiconductor ML7831, используемого совместно с Intel Atom E6xx. Добавлены идентификаторы для обеспечения поддепжки 3G-модемов ZTE, Huawei E173s. В коде mac80211 устранена ошибка, которая может привести к разыменованию указателя NULL. Большая порция исправлений наблюдается в беспроводном стеке и в коде поддержки USB-устройств. Для устройств hpsa и aacraid по умолчанию отключен ASPM, так как при нестандартных настройках энергосбережения наблюдаются зависания.