Kernel/devel
Регламент
Отсылка, обсуждение, прием патчей в ядро происходит через список рассылки 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/submitting-patches.html
Для отсылки патча на ядро нужно
- быть членом ALT Linux Team и
- суметь самостоятельно подписаться на вышеуказанный список рассылки,
- протестировать и правильно оформить патч(и).
Оформление патча
В коммите:
- укажите имя автора и емайл в 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/