162306a36Sopenharmony_ci.. SPDX-License-Identifier: (GPL-2.0+ OR CC-BY-4.0)
262306a36Sopenharmony_ci.. [see the bottom of this file for redistribution information]
362306a36Sopenharmony_ci
462306a36Sopenharmony_ciReporting regressions
562306a36Sopenharmony_ci+++++++++++++++++++++
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci"*We don't cause regressions*" is the first rule of Linux kernel development;
862306a36Sopenharmony_ciLinux founder and lead developer Linus Torvalds established it himself and
962306a36Sopenharmony_ciensures it's obeyed.
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ciThis document describes what the rule means for users and how the Linux kernel's
1262306a36Sopenharmony_cidevelopment model ensures to address all reported regressions; aspects relevant
1362306a36Sopenharmony_cifor kernel developers are left to Documentation/process/handling-regressions.rst.
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ciThe important bits (aka "TL;DR")
1762306a36Sopenharmony_ci================================
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci#. It's a regression if something running fine with one Linux kernel works worse
2062306a36Sopenharmony_ci   or not at all with a newer version. Note, the newer kernel has to be compiled
2162306a36Sopenharmony_ci   using a similar configuration; the detailed explanations below describes this
2262306a36Sopenharmony_ci   and other fine print in more detail.
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci#. Report your issue as outlined in Documentation/admin-guide/reporting-issues.rst,
2562306a36Sopenharmony_ci   it already covers all aspects important for regressions and repeated
2662306a36Sopenharmony_ci   below for convenience. Two of them are important: start your report's subject
2762306a36Sopenharmony_ci   with "[REGRESSION]" and CC or forward it to `the regression mailing list
2862306a36Sopenharmony_ci   <https://lore.kernel.org/regressions/>`_ (regressions@lists.linux.dev).
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci#. Optional, but recommended: when sending or forwarding your report, make the
3162306a36Sopenharmony_ci   Linux kernel regression tracking bot "regzbot" track the issue by specifying
3262306a36Sopenharmony_ci   when the regression started like this::
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci       #regzbot introduced v5.13..v5.14-rc1
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ciAll the details on Linux kernel regressions relevant for users
3862306a36Sopenharmony_ci==============================================================
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ciThe important basics
4262306a36Sopenharmony_ci--------------------
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ciWhat is a "regression" and what is the "no regressions rule"?
4662306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ciIt's a regression if some application or practical use case running fine with
4962306a36Sopenharmony_cione Linux kernel works worse or not at all with a newer version compiled using a
5062306a36Sopenharmony_cisimilar configuration. The "no regressions rule" forbids this to take place; if
5162306a36Sopenharmony_ciit happens by accident, developers that caused it are expected to quickly fix
5262306a36Sopenharmony_cithe issue.
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ciIt thus is a regression when a WiFi driver from Linux 5.13 works fine, but with
5562306a36Sopenharmony_ci5.14 doesn't work at all, works significantly slower, or misbehaves somehow.
5662306a36Sopenharmony_ciIt's also a regression if a perfectly working application suddenly shows erratic
5762306a36Sopenharmony_cibehavior with a newer kernel version; such issues can be caused by changes in
5862306a36Sopenharmony_ciprocfs, sysfs, or one of the many other interfaces Linux provides to userland
5962306a36Sopenharmony_cisoftware. But keep in mind, as mentioned earlier: 5.14 in this example needs to
6062306a36Sopenharmony_cibe built from a configuration similar to the one from 5.13. This can be achieved
6162306a36Sopenharmony_ciusing ``make olddefconfig``, as explained in more detail below.
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ciNote the "practical use case" in the first sentence of this section: developers
6462306a36Sopenharmony_cidespite the "no regressions" rule are free to change any aspect of the kernel
6562306a36Sopenharmony_ciand even APIs or ABIs to userland, as long as no existing application or use
6662306a36Sopenharmony_cicase breaks.
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ciAlso be aware the "no regressions" rule covers only interfaces the kernel
6962306a36Sopenharmony_ciprovides to the userland. It thus does not apply to kernel-internal interfaces
7062306a36Sopenharmony_cilike the module API, which some externally developed drivers use to hook into
7162306a36Sopenharmony_cithe kernel.
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ciHow do I report a regression?
7462306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ciJust report the issue as outlined in
7762306a36Sopenharmony_ciDocumentation/admin-guide/reporting-issues.rst, it already describes the
7862306a36Sopenharmony_ciimportant points. The following aspects outlined there are especially relevant
7962306a36Sopenharmony_cifor regressions:
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ci * When checking for existing reports to join, also search the `archives of the
8262306a36Sopenharmony_ci   Linux regressions mailing list <https://lore.kernel.org/regressions/>`_ and
8362306a36Sopenharmony_ci   `regzbot's web-interface <https://linux-regtracking.leemhuis.info/regzbot/>`_.
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci * Start your report's subject with "[REGRESSION]".
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci * In your report, clearly mention the last kernel version that worked fine and
8862306a36Sopenharmony_ci   the first broken one. Ideally try to find the exact change causing the
8962306a36Sopenharmony_ci   regression using a bisection, as explained below in more detail.
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci * Remember to let the Linux regressions mailing list
9262306a36Sopenharmony_ci   (regressions@lists.linux.dev) know about your report:
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci   * If you report the regression by mail, CC the regressions list.
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ci   * If you report your regression to some bug tracker, forward the submitted
9762306a36Sopenharmony_ci     report by mail to the regressions list while CCing the maintainer and the
9862306a36Sopenharmony_ci     mailing list for the subsystem in question.
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ci   If it's a regression within a stable or longterm series (e.g.
10162306a36Sopenharmony_ci   v5.15.3..v5.15.5), remember to CC the `Linux stable mailing list
10262306a36Sopenharmony_ci   <https://lore.kernel.org/stable/>`_ (stable@vger.kernel.org).
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci  In case you performed a successful bisection, add everyone to the CC the
10562306a36Sopenharmony_ci  culprit's commit message mentions in lines starting with "Signed-off-by:".
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ciWhen CCing for forwarding your report to the list, consider directly telling the
10862306a36Sopenharmony_ciaforementioned Linux kernel regression tracking bot about your report. To do
10962306a36Sopenharmony_cithat, include a paragraph like this in your mail::
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ci       #regzbot introduced: v5.13..v5.14-rc1
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ciRegzbot will then consider your mail a report for a regression introduced in the
11462306a36Sopenharmony_cispecified version range. In above case Linux v5.13 still worked fine and Linux
11562306a36Sopenharmony_civ5.14-rc1 was the first version where you encountered the issue. If you
11662306a36Sopenharmony_ciperformed a bisection to find the commit that caused the regression, specify the
11762306a36Sopenharmony_ciculprit's commit-id instead::
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ci       #regzbot introduced: 1f2e3d4c5d
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ciPlacing such a "regzbot command" is in your interest, as it will ensure the
12262306a36Sopenharmony_cireport won't fall through the cracks unnoticed. If you omit this, the Linux
12362306a36Sopenharmony_cikernel's regressions tracker will take care of telling regzbot about your
12462306a36Sopenharmony_ciregression, as long as you send a copy to the regressions mailing lists. But the
12562306a36Sopenharmony_ciregression tracker is just one human which sometimes has to rest or occasionally
12662306a36Sopenharmony_cimight even enjoy some time away from computers (as crazy as that might sound).
12762306a36Sopenharmony_ciRelying on this person thus will result in an unnecessary delay before the
12862306a36Sopenharmony_ciregressions becomes mentioned `on the list of tracked and unresolved Linux
12962306a36Sopenharmony_cikernel regressions <https://linux-regtracking.leemhuis.info/regzbot/>`_ and the
13062306a36Sopenharmony_ciweekly regression reports sent by regzbot. Such delays can result in Linus
13162306a36Sopenharmony_ciTorvalds being unaware of important regressions when deciding between "continue
13262306a36Sopenharmony_cidevelopment or call this finished and release the final?".
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ciAre really all regressions fixed?
13562306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ciNearly all of them are, as long as the change causing the regression (the
13862306a36Sopenharmony_ci"culprit commit") is reliably identified. Some regressions can be fixed without
13962306a36Sopenharmony_cithis, but often it's required.
14062306a36Sopenharmony_ci
14162306a36Sopenharmony_ciWho needs to find the root cause of a regression?
14262306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
14362306a36Sopenharmony_ci
14462306a36Sopenharmony_ciDevelopers of the affected code area should try to locate the culprit on their
14562306a36Sopenharmony_ciown. But for them that's often impossible to do with reasonable effort, as quite
14662306a36Sopenharmony_cia lot of issues only occur in a particular environment outside the developer's
14762306a36Sopenharmony_cireach -- for example, a specific hardware platform, firmware, Linux distro,
14862306a36Sopenharmony_cisystem's configuration, or application. That's why in the end it's often up to
14962306a36Sopenharmony_cithe reporter to locate the culprit commit; sometimes users might even need to
15062306a36Sopenharmony_cirun additional tests afterwards to pinpoint the exact root cause. Developers
15162306a36Sopenharmony_cishould offer advice and reasonably help where they can, to make this process
15262306a36Sopenharmony_cirelatively easy and achievable for typical users.
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ciHow can I find the culprit?
15562306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~
15662306a36Sopenharmony_ci
15762306a36Sopenharmony_ciPerform a bisection, as roughly outlined in
15862306a36Sopenharmony_ciDocumentation/admin-guide/reporting-issues.rst and described in more detail by
15962306a36Sopenharmony_ciDocumentation/admin-guide/bug-bisect.rst. It might sound like a lot of work, but
16062306a36Sopenharmony_ciin many cases finds the culprit relatively quickly. If it's hard or
16162306a36Sopenharmony_citime-consuming to reliably reproduce the issue, consider teaming up with other
16262306a36Sopenharmony_ciaffected users to narrow down the search range together.
16362306a36Sopenharmony_ci
16462306a36Sopenharmony_ciWho can I ask for advice when it comes to regressions?
16562306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ciSend a mail to the regressions mailing list (regressions@lists.linux.dev) while
16862306a36Sopenharmony_ciCCing the Linux kernel's regression tracker (regressions@leemhuis.info); if the
16962306a36Sopenharmony_ciissue might better be dealt with in private, feel free to omit the list.
17062306a36Sopenharmony_ci
17162306a36Sopenharmony_ci
17262306a36Sopenharmony_ciAdditional details about regressions
17362306a36Sopenharmony_ci------------------------------------
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ciWhat is the goal of the "no regressions rule"?
17762306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17862306a36Sopenharmony_ci
17962306a36Sopenharmony_ciUsers should feel safe when updating kernel versions and not have to worry
18062306a36Sopenharmony_cisomething might break. This is in the interest of the kernel developers to make
18162306a36Sopenharmony_ciupdating attractive: they don't want users to stay on stable or longterm Linux
18262306a36Sopenharmony_ciseries that are either abandoned or more than one and a half years old. That's
18362306a36Sopenharmony_ciin everybody's interest, as `those series might have known bugs, security
18462306a36Sopenharmony_ciissues, or other problematic aspects already fixed in later versions
18562306a36Sopenharmony_ci<http://www.kroah.com/log/blog/2018/08/24/what-stable-kernel-should-i-use/>`_.
18662306a36Sopenharmony_ciAdditionally, the kernel developers want to make it simple and appealing for
18762306a36Sopenharmony_ciusers to test the latest pre-release or regular release. That's also in
18862306a36Sopenharmony_cieverybody's interest, as it's a lot easier to track down and fix problems, if
18962306a36Sopenharmony_cithey are reported shortly after being introduced.
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ciIs the "no regressions" rule really adhered in practice?
19262306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
19362306a36Sopenharmony_ci
19462306a36Sopenharmony_ciIt's taken really seriously, as can be seen by many mailing list posts from
19562306a36Sopenharmony_ciLinux creator and lead developer Linus Torvalds, some of which are quoted in
19662306a36Sopenharmony_ciDocumentation/process/handling-regressions.rst.
19762306a36Sopenharmony_ci
19862306a36Sopenharmony_ciExceptions to this rule are extremely rare; in the past developers almost always
19962306a36Sopenharmony_citurned out to be wrong when they assumed a particular situation was warranting
20062306a36Sopenharmony_cian exception.
20162306a36Sopenharmony_ci
20262306a36Sopenharmony_ciWho ensures the "no regressions" is actually followed?
20362306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20462306a36Sopenharmony_ci
20562306a36Sopenharmony_ciThe subsystem maintainers should take care of that, which are watched and
20662306a36Sopenharmony_cisupported by the tree maintainers -- e.g. Linus Torvalds for mainline and
20762306a36Sopenharmony_ciGreg Kroah-Hartman et al. for various stable/longterm series.
20862306a36Sopenharmony_ci
20962306a36Sopenharmony_ciAll of them are helped by people trying to ensure no regression report falls
21062306a36Sopenharmony_cithrough the cracks. One of them is Thorsten Leemhuis, who's currently acting as
21162306a36Sopenharmony_cithe Linux kernel's "regressions tracker"; to facilitate this work he relies on
21262306a36Sopenharmony_ciregzbot, the Linux kernel regression tracking bot. That's why you want to bring
21362306a36Sopenharmony_ciyour report on the radar of these people by CCing or forwarding each report to
21462306a36Sopenharmony_cithe regressions mailing list, ideally with a "regzbot command" in your mail to
21562306a36Sopenharmony_ciget it tracked immediately.
21662306a36Sopenharmony_ci
21762306a36Sopenharmony_ciHow quickly are regressions normally fixed?
21862306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
21962306a36Sopenharmony_ci
22062306a36Sopenharmony_ciDevelopers should fix any reported regression as quickly as possible, to provide
22162306a36Sopenharmony_ciaffected users with a solution in a timely manner and prevent more users from
22262306a36Sopenharmony_cirunning into the issue; nevertheless developers need to take enough time and
22362306a36Sopenharmony_cicare to ensure regression fixes do not cause additional damage.
22462306a36Sopenharmony_ci
22562306a36Sopenharmony_ciThe answer thus depends on various factors like the impact of a regression, its
22662306a36Sopenharmony_ciage, or the Linux series in which it occurs. In the end though, most regressions
22762306a36Sopenharmony_cishould be fixed within two weeks.
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_ciIs it a regression, if the issue can be avoided by updating some software?
23062306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
23162306a36Sopenharmony_ci
23262306a36Sopenharmony_ciAlmost always: yes. If a developer tells you otherwise, ask the regression
23362306a36Sopenharmony_citracker for advice as outlined above.
23462306a36Sopenharmony_ci
23562306a36Sopenharmony_ciIs it a regression, if a newer kernel works slower or consumes more energy?
23662306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
23762306a36Sopenharmony_ci
23862306a36Sopenharmony_ciYes, but the difference has to be significant. A five percent slow-down in a
23962306a36Sopenharmony_cimicro-benchmark thus is unlikely to qualify as regression, unless it also
24062306a36Sopenharmony_ciinfluences the results of a broad benchmark by more than one percent. If in
24162306a36Sopenharmony_cidoubt, ask for advice.
24262306a36Sopenharmony_ci
24362306a36Sopenharmony_ciIs it a regression, if an external kernel module breaks when updating Linux?
24462306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
24562306a36Sopenharmony_ci
24662306a36Sopenharmony_ciNo, as the "no regression" rule is about interfaces and services the Linux
24762306a36Sopenharmony_cikernel provides to the userland. It thus does not cover building or running
24862306a36Sopenharmony_ciexternally developed kernel modules, as they run in kernel-space and hook into
24962306a36Sopenharmony_cithe kernel using internal interfaces occasionally changed.
25062306a36Sopenharmony_ci
25162306a36Sopenharmony_ciHow are regressions handled that are caused by security fixes?
25262306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
25362306a36Sopenharmony_ci
25462306a36Sopenharmony_ciIn extremely rare situations security issues can't be fixed without causing
25562306a36Sopenharmony_ciregressions; those fixes are given way, as they are the lesser evil in the end.
25662306a36Sopenharmony_ciLuckily this middling almost always can be avoided, as key developers for the
25762306a36Sopenharmony_ciaffected area and often Linus Torvalds himself try very hard to fix security
25862306a36Sopenharmony_ciissues without causing regressions.
25962306a36Sopenharmony_ci
26062306a36Sopenharmony_ciIf you nevertheless face such a case, check the mailing list archives if people
26162306a36Sopenharmony_citried their best to avoid the regression. If not, report it; if in doubt, ask
26262306a36Sopenharmony_cifor advice as outlined above.
26362306a36Sopenharmony_ci
26462306a36Sopenharmony_ciWhat happens if fixing a regression is impossible without causing another?
26562306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
26662306a36Sopenharmony_ci
26762306a36Sopenharmony_ciSadly these things happen, but luckily not very often; if they occur, expert
26862306a36Sopenharmony_cidevelopers of the affected code area should look into the issue to find a fix
26962306a36Sopenharmony_cithat avoids regressions or at least their impact. If you run into such a
27062306a36Sopenharmony_cisituation, do what was outlined already for regressions caused by security
27162306a36Sopenharmony_cifixes: check earlier discussions if people already tried their best and ask for
27262306a36Sopenharmony_ciadvice if in doubt.
27362306a36Sopenharmony_ci
27462306a36Sopenharmony_ciA quick note while at it: these situations could be avoided, if people would
27562306a36Sopenharmony_ciregularly give mainline pre-releases (say v5.15-rc1 or -rc3) from each
27662306a36Sopenharmony_cidevelopment cycle a test run. This is best explained by imagining a change
27762306a36Sopenharmony_ciintegrated between Linux v5.14 and v5.15-rc1 which causes a regression, but at
27862306a36Sopenharmony_cithe same time is a hard requirement for some other improvement applied for
27962306a36Sopenharmony_ci5.15-rc1. All these changes often can simply be reverted and the regression thus
28062306a36Sopenharmony_cisolved, if someone finds and reports it before 5.15 is released. A few days or
28162306a36Sopenharmony_ciweeks later this solution can become impossible, as some software might have
28262306a36Sopenharmony_cistarted to rely on aspects introduced by one of the follow-up changes: reverting
28362306a36Sopenharmony_ciall changes would then cause a regression for users of said software and thus is
28462306a36Sopenharmony_ciout of the question.
28562306a36Sopenharmony_ci
28662306a36Sopenharmony_ciIs it a regression, if some feature I relied on was removed months ago?
28762306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28862306a36Sopenharmony_ci
28962306a36Sopenharmony_ciIt is, but often it's hard to fix such regressions due to the aspects outlined
29062306a36Sopenharmony_ciin the previous section. It hence needs to be dealt with on a case-by-case
29162306a36Sopenharmony_cibasis. This is another reason why it's in everybody's interest to regularly test
29262306a36Sopenharmony_cimainline pre-releases.
29362306a36Sopenharmony_ci
29462306a36Sopenharmony_ciDoes the "no regression" rule apply if I seem to be the only affected person?
29562306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
29662306a36Sopenharmony_ci
29762306a36Sopenharmony_ciIt does, but only for practical usage: the Linux developers want to be free to
29862306a36Sopenharmony_ciremove support for hardware only to be found in attics and museums anymore.
29962306a36Sopenharmony_ci
30062306a36Sopenharmony_ciNote, sometimes regressions can't be avoided to make progress -- and the latter
30162306a36Sopenharmony_ciis needed to prevent Linux from stagnation. Hence, if only very few users seem
30262306a36Sopenharmony_cito be affected by a regression, it for the greater good might be in their and
30362306a36Sopenharmony_cieveryone else's interest to lettings things pass. Especially if there is an
30462306a36Sopenharmony_cieasy way to circumvent the regression somehow, for example by updating some
30562306a36Sopenharmony_cisoftware or using a kernel parameter created just for this purpose.
30662306a36Sopenharmony_ci
30762306a36Sopenharmony_ciDoes the regression rule apply for code in the staging tree as well?
30862306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
30962306a36Sopenharmony_ci
31062306a36Sopenharmony_ciNot according to the `help text for the configuration option covering all
31162306a36Sopenharmony_cistaging code <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/staging/Kconfig>`_,
31262306a36Sopenharmony_ciwhich since its early days states::
31362306a36Sopenharmony_ci
31462306a36Sopenharmony_ci       Please note that these drivers are under heavy development, may or
31562306a36Sopenharmony_ci       may not work, and may contain userspace interfaces that most likely
31662306a36Sopenharmony_ci       will be changed in the near future.
31762306a36Sopenharmony_ci
31862306a36Sopenharmony_ciThe staging developers nevertheless often adhere to the "no regressions" rule,
31962306a36Sopenharmony_cibut sometimes bend it to make progress. That's for example why some users had to
32062306a36Sopenharmony_cideal with (often negligible) regressions when a WiFi driver from the staging
32162306a36Sopenharmony_citree was replaced by a totally different one written from scratch.
32262306a36Sopenharmony_ci
32362306a36Sopenharmony_ciWhy do later versions have to be "compiled with a similar configuration"?
32462306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
32562306a36Sopenharmony_ci
32662306a36Sopenharmony_ciBecause the Linux kernel developers sometimes integrate changes known to cause
32762306a36Sopenharmony_ciregressions, but make them optional and disable them in the kernel's default
32862306a36Sopenharmony_ciconfiguration. This trick allows progress, as the "no regressions" rule
32962306a36Sopenharmony_ciotherwise would lead to stagnation.
33062306a36Sopenharmony_ci
33162306a36Sopenharmony_ciConsider for example a new security feature blocking access to some kernel
33262306a36Sopenharmony_ciinterfaces often abused by malware, which at the same time are required to run a
33362306a36Sopenharmony_cifew rarely used applications. The outlined approach makes both camps happy:
33462306a36Sopenharmony_cipeople using these applications can leave the new security feature off, while
33562306a36Sopenharmony_cieveryone else can enable it without running into trouble.
33662306a36Sopenharmony_ci
33762306a36Sopenharmony_ciHow to create a configuration similar to the one of an older kernel?
33862306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
33962306a36Sopenharmony_ci
34062306a36Sopenharmony_ciStart your machine with a known-good kernel and configure the newer Linux
34162306a36Sopenharmony_civersion with ``make olddefconfig``. This makes the kernel's build scripts pick
34262306a36Sopenharmony_ciup the configuration file (the ".config" file) from the running kernel as base
34362306a36Sopenharmony_cifor the new one you are about to compile; afterwards they set all new
34462306a36Sopenharmony_ciconfiguration options to their default value, which should disable new features
34562306a36Sopenharmony_cithat might cause regressions.
34662306a36Sopenharmony_ci
34762306a36Sopenharmony_ciCan I report a regression I found with pre-compiled vanilla kernels?
34862306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
34962306a36Sopenharmony_ci
35062306a36Sopenharmony_ciYou need to ensure the newer kernel was compiled with a similar configuration
35162306a36Sopenharmony_cifile as the older one (see above), as those that built them might have enabled
35262306a36Sopenharmony_cisome known-to-be incompatible feature for the newer kernel. If in doubt, report
35362306a36Sopenharmony_cithe matter to the kernel's provider and ask for advice.
35462306a36Sopenharmony_ci
35562306a36Sopenharmony_ci
35662306a36Sopenharmony_ciMore about regression tracking with "regzbot"
35762306a36Sopenharmony_ci---------------------------------------------
35862306a36Sopenharmony_ci
35962306a36Sopenharmony_ciWhat is regression tracking and why should I care about it?
36062306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
36162306a36Sopenharmony_ci
36262306a36Sopenharmony_ciRules like "no regressions" need someone to ensure they are followed, otherwise
36362306a36Sopenharmony_cithey are broken either accidentally or on purpose. History has shown this to be
36462306a36Sopenharmony_citrue for Linux kernel development as well. That's why Thorsten Leemhuis, the
36562306a36Sopenharmony_ciLinux Kernel's regression tracker, and some people try to ensure all regression
36662306a36Sopenharmony_ciare fixed by keeping an eye on them until they are resolved. Neither of them are
36762306a36Sopenharmony_cipaid for this, that's why the work is done on a best effort basis.
36862306a36Sopenharmony_ci
36962306a36Sopenharmony_ciWhy and how are Linux kernel regressions tracked using a bot?
37062306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37162306a36Sopenharmony_ci
37262306a36Sopenharmony_ciTracking regressions completely manually has proven to be quite hard due to the
37362306a36Sopenharmony_cidistributed and loosely structured nature of Linux kernel development process.
37462306a36Sopenharmony_ciThat's why the Linux kernel's regression tracker developed regzbot to facilitate
37562306a36Sopenharmony_cithe work, with the long term goal to automate regression tracking as much as
37662306a36Sopenharmony_cipossible for everyone involved.
37762306a36Sopenharmony_ci
37862306a36Sopenharmony_ciRegzbot works by watching for replies to reports of tracked regressions.
37962306a36Sopenharmony_ciAdditionally, it's looking out for posted or committed patches referencing such
38062306a36Sopenharmony_cireports with "Link:" tags; replies to such patch postings are tracked as well.
38162306a36Sopenharmony_ciCombined this data provides good insights into the current state of the fixing
38262306a36Sopenharmony_ciprocess.
38362306a36Sopenharmony_ci
38462306a36Sopenharmony_ciHow to see which regressions regzbot tracks currently?
38562306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
38662306a36Sopenharmony_ci
38762306a36Sopenharmony_ciCheck out `regzbot's web-interface <https://linux-regtracking.leemhuis.info/regzbot/>`_.
38862306a36Sopenharmony_ci
38962306a36Sopenharmony_ciWhat kind of issues are supposed to be tracked by regzbot?
39062306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
39162306a36Sopenharmony_ci
39262306a36Sopenharmony_ciThe bot is meant to track regressions, hence please don't involve regzbot for
39362306a36Sopenharmony_ciregular issues. But it's okay for the Linux kernel's regression tracker if you
39462306a36Sopenharmony_ciinvolve regzbot to track severe issues, like reports about hangs, corrupted
39562306a36Sopenharmony_cidata, or internal errors (Panic, Oops, BUG(), warning, ...).
39662306a36Sopenharmony_ci
39762306a36Sopenharmony_ciHow to change aspects of a tracked regression?
39862306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
39962306a36Sopenharmony_ci
40062306a36Sopenharmony_ciBy using a 'regzbot command' in a direct or indirect reply to the mail with the
40162306a36Sopenharmony_cireport. The easiest way to do that: find the report in your "Sent" folder or the
40262306a36Sopenharmony_cimailing list archive and reply to it using your mailer's "Reply-all" function.
40362306a36Sopenharmony_ciIn that mail, use one of the following commands in a stand-alone paragraph (IOW:
40462306a36Sopenharmony_ciuse blank lines to separate one or multiple of these commands from the rest of
40562306a36Sopenharmony_cithe mail's text).
40662306a36Sopenharmony_ci
40762306a36Sopenharmony_ci * Update when the regression started to happen, for example after performing a
40862306a36Sopenharmony_ci   bisection::
40962306a36Sopenharmony_ci
41062306a36Sopenharmony_ci       #regzbot introduced: 1f2e3d4c5d
41162306a36Sopenharmony_ci
41262306a36Sopenharmony_ci * Set or update the title::
41362306a36Sopenharmony_ci
41462306a36Sopenharmony_ci       #regzbot title: foo
41562306a36Sopenharmony_ci
41662306a36Sopenharmony_ci * Monitor a discussion or bugzilla.kernel.org ticket where additions aspects of
41762306a36Sopenharmony_ci   the issue or a fix are discussed:::
41862306a36Sopenharmony_ci
41962306a36Sopenharmony_ci       #regzbot monitor: https://lore.kernel.org/r/30th.anniversary.repost@klaava.Helsinki.FI/
42062306a36Sopenharmony_ci       #regzbot monitor: https://bugzilla.kernel.org/show_bug.cgi?id=123456789
42162306a36Sopenharmony_ci
42262306a36Sopenharmony_ci * Point to a place with further details of interest, like a mailing list post
42362306a36Sopenharmony_ci   or a ticket in a bug tracker that are slightly related, but about a different
42462306a36Sopenharmony_ci   topic::
42562306a36Sopenharmony_ci
42662306a36Sopenharmony_ci       #regzbot link: https://bugzilla.kernel.org/show_bug.cgi?id=123456789
42762306a36Sopenharmony_ci
42862306a36Sopenharmony_ci * Mark a regression as invalid::
42962306a36Sopenharmony_ci
43062306a36Sopenharmony_ci       #regzbot invalid: wasn't a regression, problem has always existed
43162306a36Sopenharmony_ci
43262306a36Sopenharmony_ciRegzbot supports a few other commands primarily used by developers or people
43362306a36Sopenharmony_citracking regressions. They and more details about the aforementioned regzbot
43462306a36Sopenharmony_cicommands can be found in the `getting started guide
43562306a36Sopenharmony_ci<https://gitlab.com/knurd42/regzbot/-/blob/main/docs/getting_started.md>`_ and
43662306a36Sopenharmony_cithe `reference documentation <https://gitlab.com/knurd42/regzbot/-/blob/main/docs/reference.md>`_
43762306a36Sopenharmony_cifor regzbot.
43862306a36Sopenharmony_ci
43962306a36Sopenharmony_ci..
44062306a36Sopenharmony_ci   end-of-content
44162306a36Sopenharmony_ci..
44262306a36Sopenharmony_ci   This text is available under GPL-2.0+ or CC-BY-4.0, as stated at the top
44362306a36Sopenharmony_ci   of the file. If you want to distribute this text under CC-BY-4.0 only,
44462306a36Sopenharmony_ci   please use "The Linux kernel developers" for author attribution and link
44562306a36Sopenharmony_ci   this as source:
44662306a36Sopenharmony_ci   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/Documentation/admin-guide/reporting-regressions.rst
44762306a36Sopenharmony_ci..
44862306a36Sopenharmony_ci   Note: Only the content of this RST file as found in the Linux kernel sources
44962306a36Sopenharmony_ci   is available under CC-BY-4.0, as versions of this text that were processed
45062306a36Sopenharmony_ci   (for example by the kernel's build system) might contain content taken from
45162306a36Sopenharmony_ci   files which use a more restrictive license.
452