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