Kernel/devel

Материал из ALT Linux Wiki

Регламент

Отсылка, обсуждение, прием патчей в ядро происходит через список рассылки devel-kernel@lists.altlinux.org. По аналогии с upstream kernel development process описанном тут:

Для отсылки патча на ядро нужно

  1. быть членом ALT Linux Team и
  2. суметь самостоятельно подписаться на вышеуказанный список рассылки,
  3. протестировать и правильно оформить патч(и).

Оформление патча

В коммите:

  • укажите имя автора и емайл в Author,
  • краткое описание зачем нужен или что делает патч в Subject и
  • подробное смысловое описание в Description (если не понятно что писать опишите на что потратили время),
  • если патч из интернетов укажите откуда он взят со ссылкой и ваше объяснение почему и зачем,
  • в конце Description укажите тэг Signed-off-by: с вашим именем и емайлом.

Тестирование

Обязательно протестируйте ваш код на оборудовании назначения с покрытием вашего кода, чтоб убедиться, что он действительно работает и работает правильно. Желательно протестировать с включёнными системами отладки ядра (включающие полезные проверки на утечки, переполнения, ошибки с блокировками и т.д.). Вот пример фрагмента конфига включающий нужные опции:

 CONFIG_KASAN_VMALLOC=y
 CONFIG_KASAN_STACK=y
 CONFIG_KASAN_OUTLINE=y
 CONFIG_KASAN_MODULE_TEST=m
 CONFIG_KASAN_GENERIC=y
 CONFIG_KASAN_EXTRA_INFO=y
 CONFIG_KFENCE=y
 CONFIG_KFENCE_STATIC_KEYS=y
 # CONFIG_KCSAN is not set
 CONFIG_KASAN=y
 CONFIG_UBSAN=y
 CONFIG_LOCK_DEBUGGING_SUPPORT=y
 CONFIG_LOCKDEP=y
 CONFIG_PROVE_LOCKING=y
 CONFIG_PROVE_RAW_LOCK_NESTING=y
 CONFIG_RCU_EXPERT=y
 CONFIG_PROVE_RCU=y
 CONFIG_PROVE_RCU_LIST=y

Новые ядра можно собрать с готовым тестовым флейвором kasan где они будут автоматически включены. При тестировании не должно возникать Oops, Kernel Panic, Warnings связанных с вашими изменениями.

Рецензирование

Специалисты по коду, который вы меняете доступны через апстримные списки рассылки ядра. Поэтому, крайне настоятельно рекомендуется послать патч в апстим на рецензирование, даже если вы не планируете (или не очень надеетесь на) включение патча в апстримное ядро. Для этого с помощью scripts/get_maintainer.pl определите список маинтайнеров и рецензентов кода который меняете. Укажите их в Cc: и т.д. как при обычной отсылке в апстрим. После отсылки пождите несколько недель рецензирования (там люди занятые).

Подписка на devel-kernel

  • Для подписки зайдите на страницу https://lists.altlinux.org/mailman/listinfo/devel-kernel введите там "Ваш электронный адрес" нажмите "Подписать". Должно прийти письмо с подтверждением на которое нужно ответить и после этого должно прийти письмо с сообщением, что вы подписаны.
  • Далее нужно слать в список с подписанного адреса.
  • Если приходит уведомление что ваше сообщение ожидает одобрения модератором списка, это значит, что вы или не подписались, или шлете не с того адреса.

Дооформление патча после тестирования и рецензирования

  • Опишите какое тестирование проводилось (на каком оборудовании, с kasan или без).
  • Укажите lore-ссылки на посты в апстрим вашего патча в тэгах Link даже если ответа апстрима не было:
 Link: https://lore.kernel.org/...

Для патчсета это можно указать в cover letter.

git format-patch

  • Патчи нужно оформлять через git format-patch. Описание (description) каждого коммита должно быть на английском языке, если коммитов больше чем 1, то должно быть cover letter с общим описанием патчсета (для одного коммита оно не обязательно). Дополнительный комментарий (текст после ---) или cover letter не обязательно на английском, так как они не попадают в git.
  • Желательно в Subject в квадратных скобках вместе с [PATCH] (или в cover letter) указать для какого ядра (бранч/флейвор, например [PATCH un-def/sisyphus]).
  • ⚠ Не забывайте добавлять Signed-off-by: тэг к коммитам даже если вы не автор патча!

git send-email

Патчи желательно слать через git send-email, чтоб почтовый клиент их не переформатировал.

lore.a.o

Отосланные патчи будут доступны через веб интерфейс https://lore.altlinux.org/devel-kernel/