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

Материал из ALT Linux Wiki
Нет описания правки
Строка 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
Строка 6: Строка 7:
# быть членом [[Join|ALT Linux Team]] и
# быть членом [[Join|ALT Linux Team]] и
# суметь самостоятельно подписаться на вышеуказанный список рассылки,
# суметь самостоятельно подписаться на вышеуказанный список рассылки,
# правильно оформить патч(и).
# протестировать и правильно оформить патч(и).


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


Для подписки зайдите на страницу https://lists.altlinux.org/mailman/listinfo/devel-kernel введите там "Ваш электронный адрес" нажмите "Подписать". Должно прийти письмо с подтверждением на которое нужно ответить и после этого должно прийти письмо с сообщением, что вы подписаны.
= Тестирование =
Обязательно протестируйте ваш код на оборудовании назначения с ''покрытием'' вашего кода, чтоб убедиться, что он действительно работает и работает правильно. Желательно протестировать с включёнными системами отладки ядра (включающие полезные проверки на утечки, переполнения, ошибки с блокировками и т.д.). Вот пример фрагмента конфига включающий нужные опции:


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


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


Патчи нужно оформлять через <code>git format-patch</code>. Описание (description) каждого коммита должно быть на английском языке, если коммитов больше чем 1, то должно быть cover letter с общим описанием патчсета (для одного коммита оно не обязательно). Дополнительный комментарий (текст после <code>---</code>) или cover letter не обязательно на английском, так как они не попадают в git.
= Подписка на devel-kernel =
* Для подписки зайдите на страницу https://lists.altlinux.org/mailman/listinfo/devel-kernel введите там "Ваш электронный адрес" нажмите "Подписать". Должно прийти письмо с подтверждением на которое нужно ответить и после этого должно прийти письмо с сообщением, что вы подписаны.
* Далее нужно слать в список ''с подписанного адреса''.
* Если приходит уведомление что ваше сообщение ''ожидает одобрения модератором'' списка, это значит, что вы или не подписались, или шлете не с того адреса.


Желательно в Subject в квадратных скобках вместе с <code>[PATCH]</code> (или в cover letter) указать для какого ядра (бранч/флейвор, например <code>[PATCH un-def/sisyphus]</code>).
= Дооформление патча после тестирование и рецензирования =
* Опишите какое тестирование проводилось (на каком оборудовании, с kasan или без).
* Укажите lore-ссылки на посты в апстрим вашего патча в тэгах <code>Link</code> даже если ответа апстрима не было:


Не забывайте добавлять <code>Signed-off-by</code> тэг к коммитам даже если вы не автор патча!
  Link: <nowiki>https://lore.kernel.org/...</nowiki>


= send-email =
Для патчсета это можно указать в 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>, чтоб почтовый клиент их не переформатировал.
Патчи ''желательно'' слать через <code>git send-email</code>, чтоб почтовый клиент их не переформатировал.


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

Версия от 04:59, 25 февраля 2025

Регламент

Отсылка, обсуждение, прием патчей в ядро происходит через список рассылки 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/