€•, Œsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ ”Œchildren”]”(Œtranslations”Œ
LanguagesNode”“”)”}”(hhh]”(h Œpending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ
attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ5/translations/zh_CN/admin-guide/reporting-regressions”Œmodname”NŒ classname”NŒrefexplicit”ˆuŒtagname”hhhubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ5/translations/zh_TW/admin-guide/reporting-regressions”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ5/translations/it_IT/admin-guide/reporting-regressions”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ5/translations/ja_JP/admin-guide/reporting-regressions”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ5/translations/ko_KR/admin-guide/reporting-regressions”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)”}”(hhh]”hŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ5/translations/pt_BR/admin-guide/reporting-regressions”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubh)”}”(hhh]”hŒSpanish”…””}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ5/translations/sp_SP/admin-guide/reporting-regressions”Œmodname”NŒ classname”NŒrefexplicit”ˆuh1hhhubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h
hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒ0SPDX-License-Identifier: (GPL-2.0+ OR CC-BY-4.0)”h]”hŒ0SPDX-License-Identifier: (GPL-2.0+ OR CC-BY-4.0)”…””}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒO/var/lib/git/docbuild/linux/Documentation/admin-guide/reporting-regressions.rst”h´Kubh¶)”}”(hŒ<[see the bottom of this file for redistribution information]”h]”hŒ<[see the bottom of this file for redistribution information]”…””}”hhÈsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhhh²hh³hÇh´KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒReporting regressions”h]”hŒReporting regressions”…””}”(hhÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhhØh²hh³hÇh´KubhŒ paragraph”“”)”}”(hŒ"*We don't cause regressions*" is the first rule of Linux kernel development;
Linux founder and lead developer Linus Torvalds established it himself and
ensures it's obeyed.”h]”(hŒâ€œ”…””}”(hhíh²hh³Nh´NubhŒemphasis”“”)”}”(hŒ*We don't cause regressions*”h]”hŒWe don’t cause regressions”…””}”(hh÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhhíubhŒ”†is the first rule of Linux kernel development;
Linux founder and lead developer Linus Torvalds established it himself and
ensures it’s obeyed.”…””}”(hhíh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KhhØh²hubhì)”}”(hŒòThis document describes what the rule means for users and how the Linux kernel's
development model ensures to address all reported regressions; aspects relevant
for kernel developers are left to Documentation/process/handling-regressions.rst.”h]”hŒôThis document describes what the rule means for users and how the Linux kernel’s
development model ensures to address all reported regressions; aspects relevant
for kernel developers are left to Documentation/process/handling-regressions.rst.”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KhhØh²hubh×)”}”(hhh]”(hÜ)”}”(hŒ The important bits (aka "TL;DR")”h]”hŒ$The important bits (aka “TL;DRâ€)”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj h²hh³hÇh´KubhŒenumerated_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hX It's a regression if something running fine with one Linux kernel works worse
or not at all with a newer version. Note, the newer kernel has to be compiled
using a similar configuration; the detailed explanations below describes this
and other fine print in more detail.
”h]”hì)”}”(hX It's a regression if something running fine with one Linux kernel works worse
or not at all with a newer version. Note, the newer kernel has to be compiled
using a similar configuration; the detailed explanations below describes this
and other fine print in more detail.”h]”hX It’s a regression if something running fine with one Linux kernel works worse
or not at all with a newer version. Note, the newer kernel has to be compiled
using a similar configuration; the detailed explanations below describes this
and other fine print in more detail.”…””}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Khj5 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j3 hj0 h²hh³hÇh´Nubj4 )”}”(hXu Report your issue as outlined in Documentation/admin-guide/reporting-issues.rst,
it already covers all aspects important for regressions and repeated
below for convenience. Two of them are important: start your report's subject
with "[REGRESSION]" and CC or forward it to `the regression mailing list
`_ (regressions@lists.linux.dev).
”h]”hì)”}”(hXt Report your issue as outlined in Documentation/admin-guide/reporting-issues.rst,
it already covers all aspects important for regressions and repeated
below for convenience. Two of them are important: start your report's subject
with "[REGRESSION]" and CC or forward it to `the regression mailing list
`_ (regressions@lists.linux.dev).”h]”(hX Report your issue as outlined in Documentation/admin-guide/reporting-issues.rst,
it already covers all aspects important for regressions and repeated
below for convenience. Two of them are important: start your report’s subject
with “[REGRESSION]†and CC or forward it to ”…””}”(hjQ h²hh³Nh´NubhŒ reference”“”)”}”(hŒE`the regression mailing list
`_”h]”hŒthe regression mailing list”…””}”(hj[ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œthe regression mailing list”Œrefuri”Œ$https://lore.kernel.org/regressions/”uh1jY hjQ ubhŒtarget”“”)”}”(hŒ'
”h]”h}”(h]”Œthe-regression-mailing-list”ah ]”h"]”Œthe regression mailing list”ah$]”h&]”Œrefuri”jl uh1jm Œ
referenced”KhjQ ubhŒ (”…””}”(hjQ h²hh³Nh´NubjZ )”}”(hŒregressions@lists.linux.dev”h]”hŒregressions@lists.linux.dev”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œ"mailto:regressions@lists.linux.dev”uh1jY hjQ ubhŒ).”…””}”(hjQ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KhjM ubah}”(h]”h ]”h"]”h$]”h&]”uh1j3 hj0 h²hh³hÇh´Nubj4 )”}”(hŒíOptional, but recommended: when sending or forwarding your report, make the
Linux kernel regression tracking bot "regzbot" track the issue by specifying
when the regression started like this::
#regzbot introduced: v5.13..v5.14-rc1
”h]”(hì)”}”(hŒÀOptional, but recommended: when sending or forwarding your report, make the
Linux kernel regression tracking bot "regzbot" track the issue by specifying
when the regression started like this::”h]”hŒÃOptional, but recommended: when sending or forwarding your report, make the
Linux kernel regression tracking bot “regzbot†track the issue by specifying
when the regression started like this:”…””}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Khj¡ ubhŒ
literal_block”“”)”}”(hŒ%#regzbot introduced: v5.13..v5.14-rc1”h]”hŒ%#regzbot introduced: v5.13..v5.14-rc1”…””}”hjµ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j³ h³hÇh´K"hj¡ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j3 hj0 h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1j. hj h²hh³hÇh´Kubeh}”(h]”Œthe-important-bits-aka-tl-dr”ah ]”h"]”Œ the important bits (aka "tl;dr")”ah$]”h&]”uh1hÖhhØh²hh³hÇh´Kubh×)”}”(hhh]”(hÜ)”}”(hŒ>All the details on Linux kernel regressions relevant for users”h]”hŒ>All the details on Linux kernel regressions relevant for users”…””}”(hjß h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjÜ h²hh³hÇh´K&ubh×)”}”(hhh]”(hÜ)”}”(hŒThe important basics”h]”hŒThe important basics”…””}”(hjð h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjí h²hh³hÇh´K*ubh×)”}”(hhh]”(hÜ)”}”(hŒ=What is a "regression" and what is the "no regressions" rule?”h]”hŒEWhat is a “regression†and what is the “no regressions†rule?”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjþ h²hh³hÇh´K.ubhì)”}”(hXG It's a regression if some application or practical use case running fine with
one Linux kernel works worse or not at all with a newer version compiled using a
similar configuration. The "no regressions" rule forbids this to take place; if
it happens by accident, developers that caused it are expected to quickly fix
the issue.”h]”hXM It’s a regression if some application or practical use case running fine with
one Linux kernel works worse or not at all with a newer version compiled using a
similar configuration. The “no regressions†rule forbids this to take place; if
it happens by accident, developers that caused it are expected to quickly fix
the issue.”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K0hjþ h²hubhì)”}”(hXj It thus is a regression when a WiFi driver from Linux 5.13 works fine, but with
5.14 doesn't work at all, works significantly slower, or misbehaves somehow.
It's also a regression if a perfectly working application suddenly shows erratic
behavior with a newer kernel version; such issues can be caused by changes in
procfs, sysfs, or one of the many other interfaces Linux provides to userland
software. But keep in mind, as mentioned earlier: 5.14 in this example needs to
be built from a configuration similar to the one from 5.13. This can be achieved
using ``make olddefconfig``, as explained in more detail below.”h]”(hX5 It thus is a regression when a WiFi driver from Linux 5.13 works fine, but with
5.14 doesn’t work at all, works significantly slower, or misbehaves somehow.
It’s also a regression if a perfectly working application suddenly shows erratic
behavior with a newer kernel version; such issues can be caused by changes in
procfs, sysfs, or one of the many other interfaces Linux provides to userland
software. But keep in mind, as mentioned earlier: 5.14 in this example needs to
be built from a configuration similar to the one from 5.13. This can be achieved
using ”…””}”(hj h²hh³Nh´NubhŒliteral”“”)”}”(hŒ``make olddefconfig``”h]”hŒmake olddefconfig”…””}”(hj' h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j% hj ubhŒ$, as explained in more detail below.”…””}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K6hjþ h²hubhì)”}”(hŒ÷Note the "practical use case" in the first sentence of this section: developers
despite the "no regressions" rule are free to change any aspect of the kernel
and even APIs or ABIs to userland, as long as no existing application or use
case breaks.”h]”hŒÿNote the “practical use case†in the first sentence of this section: developers
despite the “no regressions†rule are free to change any aspect of the kernel
and even APIs or ABIs to userland, as long as no existing application or use
case breaks.”…””}”(hj? h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K?hjþ h²hubhì)”}”(hŒòAlso be aware the "no regressions" rule covers only interfaces the kernel
provides to the userland. It thus does not apply to kernel-internal interfaces
like the module API, which some externally developed drivers use to hook into
the kernel.”h]”hŒöAlso be aware the “no regressions†rule covers only interfaces the kernel
provides to the userland. It thus does not apply to kernel-internal interfaces
like the module API, which some externally developed drivers use to hook into
the kernel.”…””}”(hjM h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KDhjþ h²hubeh}”(h]”Œ8what-is-a-regression-and-what-is-the-no-regressions-rule”ah ]”h"]”Œ=what is a "regression" and what is the "no regressions" rule?”ah$]”h&]”uh1hÖhjí h²hh³hÇh´K.ubh×)”}”(hhh]”(hÜ)”}”(hŒHow do I report a regression?”h]”hŒHow do I report a regression?”…””}”(hjf h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhjc h²hh³hÇh´KJubhì)”}”(hŒÍJust report the issue as outlined in
Documentation/admin-guide/reporting-issues.rst, it already describes the
important points. The following aspects outlined there are especially relevant
for regressions:”h]”hŒÍJust report the issue as outlined in
Documentation/admin-guide/reporting-issues.rst, it already describes the
important points. The following aspects outlined there are especially relevant
for regressions:”…””}”(hjt h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KLhjc h²hubhŒblock_quote”“”)”}”(hX× * When checking for existing reports to join, also search the `archives of the
Linux regressions mailing list `_ and
`regzbot's web-interface `_.
* Start your report's subject with "[REGRESSION]".
* In your report, clearly mention the last kernel version that worked fine and
the first broken one. Ideally try to find the exact change causing the
regression using a bisection, as explained below in more detail.
* Remember to let the Linux regressions mailing list
(regressions@lists.linux.dev) know about your report:
* If you report the regression by mail, CC the regressions list.
* If you report your regression to some bug tracker, forward the submitted
report by mail to the regressions list while CCing the maintainer and the
mailing list for the subsystem in question.
If it's a regression within a stable or longterm series (e.g.
v5.15.3..v5.15.5), remember to CC the `Linux stable mailing list
`_ (stable@vger.kernel.org).
In case you performed a successful bisection, add everyone to the CC the
culprit's commit message mentions in lines starting with "Signed-off-by:".
”h]”(hŒbullet_list”“”)”}”(hhh]”(j4 )”}”(hŒèWhen checking for existing reports to join, also search the `archives of the
Linux regressions mailing list `_ and
`regzbot's web-interface `_.
”h]”hì)”}”(hŒçWhen checking for existing reports to join, also search the `archives of the
Linux regressions mailing list `_ and
`regzbot's web-interface `_.”h]”(hŒ