Kernel/devel: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
 
(не показано 10 промежуточных версий этого же участника)
Строка 1: Строка 1:
= Регламент =
Отсылка, обсуждение, прием патчей в ядро происходит через список рассылки ''devel-kernel@lists.altlinux.org''. По аналогии с upstream kernel development process описанном тут:
Отсылка, обсуждение, прием патчей в ядро происходит через список рассылки ''devel-kernel@lists.altlinux.org''. По аналогии с upstream kernel development process описанном тут:
* https://www.kernel.org/doc/html/latest/process/development-process.html
* https://www.kernel.org/doc/html/latest/process/development-process.html
* https://www.kernel.org/doc/html/latest/process/submitting-patches.html
* https://www.kernel.org/doc/html/latest/process/submitting-patches.html


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


= devel-kernel =
= Оформление патча =
В коммите:
* укажите имя автора (никнеймы не допускаются) и емайл в ''Author'',
* краткое описание зачем нужен или что делает патч в ''summary'' (не более 80 символов) и
* подробное смысловое описание в ''description'' (если не понятно что писать опишите на что потратили время),
* если патч из интернетов укажите откуда он взят со ссылкой и ваше объяснение почему и зачем,
* в конце description укажите тэг <code>Signed-off-by:</code> с '''вашим''' именем и емайлом.


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


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


Если приходит уведомление что ваше сообщение ''ожидает одобрения модератором'' списка, это значит, что вы или не подписались, или шлете не с того адреса.
  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


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


Патчи нужно оформлять через <code>git format-patch</code>. Описание (description) каждого коммита должно быть на английском языке, если коммитов больше чем 1, то должно быть cover letter с общим описанием патчсета (для одного коммита оно не обязательно). Дополнительный комментарий (текст после <code>---</code>) или cover letter не обязательно на английском, так как они не попадают в git.
= Рецензирование =
Специалисты по коду, который вы меняете доступны через апстримные списки рассылки ядра. Поэтому, крайне настоятельно рекомендуется послать патч в апстим на '''рецензирование''', даже если вы не планируете (или не очень надеетесь на) включение патча в апстримное ядро. Для этого с помощью <code>scripts/get_maintainer.pl</code> определите список маинтайнеров и рецензентов кода который меняете. Укажите их в <code>Cc:</code> и т.д. как при обычной отсылке в апстрим. Отсылка производится через <code>git format-patch</code> и <code>git send-email</code>. После отсылки пождите несколько недель рецензирования (там люди занятые). Если долго не отвечают - пингайте.


Желательно в Subject в квадратных скобках вместе с <code>[PATCH]</code> (или в cover letter) указать для какого ядра (бранч/флейвор, например <code>[PATCH un-def/sisyphus]</code>).
= Подписка на devel-kernel =
* Для подписки зайдите на страницу https://lists.altlinux.org/mailman/listinfo/devel-kernel введите там "Ваш электронный адрес" нажмите "Подписать". Должно прийти письмо с подтверждением на которое нужно ответить и после этого должно прийти письмо с сообщением, что вы подписаны.
* Далее нужно слать в список ''с подписанного адреса''.
* Если приходит уведомление что ваше сообщение ''ожидает одобрения модератором'' списка, это значит, что вы или не подписались, или шлете не с того адреса.


Не забывайте добавлять <code>Signed-off-by</code> тэг к коммитам даже если вы не автор патча!
= Дооформление патча после тестирования и рецензирования =
* Опишите какое тестирование проводилось (на каком оборудовании, с kasan или без).
* Укажите lore-ссылки на посты в апстрим вашего патча в тэгах <code>Link</code> даже если ответа апстрима не было:


Патчи желательно слать через <code>git send-email</code> чтоб почтовый клиент их не переформатировал.
  Link: <nowiki>https://lore.kernel.org/...</nowiki>
 
Для патчсета это можно указать в cover letter.
 
= git format-patch =
* Патчи нужно оформлять через <code>git format-patch</code>. Описание (description) каждого коммита должно быть на английском языке, если коммитов больше чем 1, то должно быть cover letter с общим описанием патчсета (для одного коммита оно не обязательно). Дополнительный комментарий (текст после <code>---</code>) или cover letter не обязательно на английском, так как они не попадают в git.
* Желательно в Subject в квадратных скобках вместе с <code>[PATCH]</code> (или в cover letter) указать для какого ядра (бранч/флейвор, например <code>[PATCH un-def/sisyphus]</code>).
* ⚠ Не забывайте добавлять <code>Signed-off-by:</code> тэг к коммитам даже если вы не автор патча!
 
= git send-email =
Патчи ''желательно'' слать через <code>git send-email</code>, чтоб почтовый клиент их не переформатировал.
 
= lore.a.o =
Отосланные патчи будут доступны через веб интерфейс https://lore.altlinux.org/devel-kernel/

Текущая версия от 07:59, 14 июня 2025

Регламент

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

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

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

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

В коммите:

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

Проверьте патч с помощью утилит scripts/checkpatch.pl и codespell.

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

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

 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: и т.д. как при обычной отсылке в апстрим. Отсылка производится через git format-patch и git send-email. После отсылки пождите несколько недель рецензирования (там люди занятые). Если долго не отвечают - пингайте.

Подписка на 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/