162306a36Sopenharmony_ci.. SPDX-License-Identifier: (GPL-2.0+ OR CC-BY-4.0)
262306a36Sopenharmony_ci.. See the bottom of this file for additional redistribution information.
362306a36Sopenharmony_ci
462306a36Sopenharmony_ciReporting issues
562306a36Sopenharmony_ci++++++++++++++++
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci
862306a36Sopenharmony_ciThe short guide (aka TL;DR)
962306a36Sopenharmony_ci===========================
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ciAre you facing a regression with vanilla kernels from the same stable or
1262306a36Sopenharmony_cilongterm series? One still supported? Then search the `LKML
1362306a36Sopenharmony_ci<https://lore.kernel.org/lkml/>`_ and the `Linux stable mailing list
1462306a36Sopenharmony_ci<https://lore.kernel.org/stable/>`_ archives for matching reports to join. If
1562306a36Sopenharmony_ciyou don't find any, install `the latest release from that series
1662306a36Sopenharmony_ci<https://kernel.org/>`_. If it still shows the issue, report it to the stable
1762306a36Sopenharmony_cimailing list (stable@vger.kernel.org) and CC the regressions list
1862306a36Sopenharmony_ci(regressions@lists.linux.dev); ideally also CC the maintainer and the mailing
1962306a36Sopenharmony_cilist for the subsystem in question.
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ciIn all other cases try your best guess which kernel part might be causing the
2262306a36Sopenharmony_ciissue. Check the :ref:`MAINTAINERS <maintainers>` file for how its developers
2362306a36Sopenharmony_ciexpect to be told about problems, which most of the time will be by email with a
2462306a36Sopenharmony_cimailing list in CC. Check the destination's archives for matching reports;
2562306a36Sopenharmony_cisearch the `LKML <https://lore.kernel.org/lkml/>`_ and the web, too. If you
2662306a36Sopenharmony_cidon't find any to join, install `the latest mainline kernel
2762306a36Sopenharmony_ci<https://kernel.org/>`_. If the issue is present there, send a report.
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ciThe issue was fixed there, but you would like to see it resolved in a still
3062306a36Sopenharmony_cisupported stable or longterm series as well? Then install its latest release.
3162306a36Sopenharmony_ciIf it shows the problem, search for the change that fixed it in mainline and
3262306a36Sopenharmony_cicheck if backporting is in the works or was discarded; if it's neither, ask
3362306a36Sopenharmony_cithose who handled the change for it.
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci**General remarks**: When installing and testing a kernel as outlined above,
3662306a36Sopenharmony_ciensure it's vanilla (IOW: not patched and not using add-on modules). Also make
3762306a36Sopenharmony_cisure it's built and running in a healthy environment and not already tainted
3862306a36Sopenharmony_cibefore the issue occurs.
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ciIf you are facing multiple issues with the Linux kernel at once, report each
4162306a36Sopenharmony_ciseparately. While writing your report, include all information relevant to the
4262306a36Sopenharmony_ciissue, like the kernel and the distro used. In case of a regression, CC the
4362306a36Sopenharmony_ciregressions mailing list (regressions@lists.linux.dev) to your report. Also try
4462306a36Sopenharmony_cito pin-point the culprit with a bisection; if you succeed, include its
4562306a36Sopenharmony_cicommit-id and CC everyone in the sign-off-by chain.
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ciOnce the report is out, answer any questions that come up and help where you
4862306a36Sopenharmony_cican. That includes keeping the ball rolling by occasionally retesting with newer
4962306a36Sopenharmony_cireleases and sending a status update afterwards.
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ciStep-by-step guide how to report issues to the kernel maintainers
5262306a36Sopenharmony_ci=================================================================
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ciThe above TL;DR outlines roughly how to report issues to the Linux kernel
5562306a36Sopenharmony_cidevelopers. It might be all that's needed for people already familiar with
5662306a36Sopenharmony_cireporting issues to Free/Libre & Open Source Software (FLOSS) projects. For
5762306a36Sopenharmony_cieveryone else there is this section. It is more detailed and uses a
5862306a36Sopenharmony_cistep-by-step approach. It still tries to be brief for readability and leaves
5962306a36Sopenharmony_ciout a lot of details; those are described below the step-by-step guide in a
6062306a36Sopenharmony_cireference section, which explains each of the steps in more detail.
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ciNote: this section covers a few more aspects than the TL;DR and does things in
6362306a36Sopenharmony_cia slightly different order. That's in your interest, to make sure you notice
6462306a36Sopenharmony_ciearly if an issue that looks like a Linux kernel problem is actually caused by
6562306a36Sopenharmony_cisomething else. These steps thus help to ensure the time you invest in this
6662306a36Sopenharmony_ciprocess won't feel wasted in the end:
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ci * Are you facing an issue with a Linux kernel a hardware or software vendor
6962306a36Sopenharmony_ci   provided? Then in almost all cases you are better off to stop reading this
7062306a36Sopenharmony_ci   document and reporting the issue to your vendor instead, unless you are
7162306a36Sopenharmony_ci   willing to install the latest Linux version yourself. Be aware the latter
7262306a36Sopenharmony_ci   will often be needed anyway to hunt down and fix issues.
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci * Perform a rough search for existing reports with your favorite internet
7562306a36Sopenharmony_ci   search engine; additionally, check the archives of the `Linux Kernel Mailing
7662306a36Sopenharmony_ci   List (LKML) <https://lore.kernel.org/lkml/>`_. If you find matching reports,
7762306a36Sopenharmony_ci   join the discussion instead of sending a new one.
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci * See if the issue you are dealing with qualifies as regression, security
8062306a36Sopenharmony_ci   issue, or a really severe problem: those are 'issues of high priority' that
8162306a36Sopenharmony_ci   need special handling in some steps that are about to follow.
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ci * Make sure it's not the kernel's surroundings that are causing the issue
8462306a36Sopenharmony_ci   you face.
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ci * Create a fresh backup and put system repair and restore tools at hand.
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ci * Ensure your system does not enhance its kernels by building additional
8962306a36Sopenharmony_ci   kernel modules on-the-fly, which solutions like DKMS might be doing locally
9062306a36Sopenharmony_ci   without your knowledge.
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci * Check if your kernel was 'tainted' when the issue occurred, as the event
9362306a36Sopenharmony_ci   that made the kernel set this flag might be causing the issue you face.
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ci * Write down coarsely how to reproduce the issue. If you deal with multiple
9662306a36Sopenharmony_ci   issues at once, create separate notes for each of them and make sure they
9762306a36Sopenharmony_ci   work independently on a freshly booted system. That's needed, as each issue
9862306a36Sopenharmony_ci   needs to get reported to the kernel developers separately, unless they are
9962306a36Sopenharmony_ci   strongly entangled.
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci * If you are facing a regression within a stable or longterm version line
10262306a36Sopenharmony_ci   (say something broke when updating from 5.10.4 to 5.10.5), scroll down to
10362306a36Sopenharmony_ci   'Dealing with regressions within a stable and longterm kernel line'.
10462306a36Sopenharmony_ci
10562306a36Sopenharmony_ci * Locate the driver or kernel subsystem that seems to be causing the issue.
10662306a36Sopenharmony_ci   Find out how and where its developers expect reports. Note: most of the
10762306a36Sopenharmony_ci   time this won't be bugzilla.kernel.org, as issues typically need to be sent
10862306a36Sopenharmony_ci   by mail to a maintainer and a public mailing list.
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci * Search the archives of the bug tracker or mailing list in question
11162306a36Sopenharmony_ci   thoroughly for reports that might match your issue. If you find anything,
11262306a36Sopenharmony_ci   join the discussion instead of sending a new report.
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ciAfter these preparations you'll now enter the main part:
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ci * Unless you are already running the latest 'mainline' Linux kernel, better
11762306a36Sopenharmony_ci   go and install it for the reporting process. Testing and reporting with
11862306a36Sopenharmony_ci   the latest 'stable' Linux can be an acceptable alternative in some
11962306a36Sopenharmony_ci   situations; during the merge window that actually might be even the best
12062306a36Sopenharmony_ci   approach, but in that development phase it can be an even better idea to
12162306a36Sopenharmony_ci   suspend your efforts for a few days anyway. Whatever version you choose,
12262306a36Sopenharmony_ci   ideally use a 'vanilla' build. Ignoring these advices will dramatically
12362306a36Sopenharmony_ci   increase the risk your report will be rejected or ignored.
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci * Ensure the kernel you just installed does not 'taint' itself when
12662306a36Sopenharmony_ci   running.
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_ci * Reproduce the issue with the kernel you just installed. If it doesn't show
12962306a36Sopenharmony_ci   up there, scroll down to the instructions for issues only happening with
13062306a36Sopenharmony_ci   stable and longterm kernels.
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci * Optimize your notes: try to find and write the most straightforward way to
13362306a36Sopenharmony_ci   reproduce your issue. Make sure the end result has all the important
13462306a36Sopenharmony_ci   details, and at the same time is easy to read and understand for others
13562306a36Sopenharmony_ci   that hear about it for the first time. And if you learned something in this
13662306a36Sopenharmony_ci   process, consider searching again for existing reports about the issue.
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ci * If your failure involves a 'panic', 'Oops', 'warning', or 'BUG', consider
13962306a36Sopenharmony_ci   decoding the kernel log to find the line of code that triggered the error.
14062306a36Sopenharmony_ci
14162306a36Sopenharmony_ci * If your problem is a regression, try to narrow down when the issue was
14262306a36Sopenharmony_ci   introduced as much as possible.
14362306a36Sopenharmony_ci
14462306a36Sopenharmony_ci * Start to compile the report by writing a detailed description about the
14562306a36Sopenharmony_ci   issue. Always mention a few things: the latest kernel version you installed
14662306a36Sopenharmony_ci   for reproducing, the Linux Distribution used, and your notes on how to
14762306a36Sopenharmony_ci   reproduce the issue. Ideally, make the kernel's build configuration
14862306a36Sopenharmony_ci   (.config) and the output from ``dmesg`` available somewhere on the net and
14962306a36Sopenharmony_ci   link to it. Include or upload all other information that might be relevant,
15062306a36Sopenharmony_ci   like the output/screenshot of an Oops or the output from ``lspci``. Once
15162306a36Sopenharmony_ci   you wrote this main part, insert a normal length paragraph on top of it
15262306a36Sopenharmony_ci   outlining the issue and the impact quickly. On top of this add one sentence
15362306a36Sopenharmony_ci   that briefly describes the problem and gets people to read on. Now give the
15462306a36Sopenharmony_ci   thing a descriptive title or subject that yet again is shorter. Then you're
15562306a36Sopenharmony_ci   ready to send or file the report like the MAINTAINERS file told you, unless
15662306a36Sopenharmony_ci   you are dealing with one of those 'issues of high priority': they need
15762306a36Sopenharmony_ci   special care which is explained in 'Special handling for high priority
15862306a36Sopenharmony_ci   issues' below.
15962306a36Sopenharmony_ci
16062306a36Sopenharmony_ci * Wait for reactions and keep the thing rolling until you can accept the
16162306a36Sopenharmony_ci   outcome in one way or the other. Thus react publicly and in a timely manner
16262306a36Sopenharmony_ci   to any inquiries. Test proposed fixes. Do proactive testing: retest with at
16362306a36Sopenharmony_ci   least every first release candidate (RC) of a new mainline version and
16462306a36Sopenharmony_ci   report your results. Send friendly reminders if things stall. And try to
16562306a36Sopenharmony_ci   help yourself, if you don't get any help or if it's unsatisfying.
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ci
16862306a36Sopenharmony_ciReporting regressions within a stable and longterm kernel line
16962306a36Sopenharmony_ci--------------------------------------------------------------
17062306a36Sopenharmony_ci
17162306a36Sopenharmony_ciThis subsection is for you, if you followed above process and got sent here at
17262306a36Sopenharmony_cithe point about regression within a stable or longterm kernel version line. You
17362306a36Sopenharmony_ciface one of those if something breaks when updating from 5.10.4 to 5.10.5 (a
17462306a36Sopenharmony_ciswitch from 5.9.15 to 5.10.5 does not qualify). The developers want to fix such
17562306a36Sopenharmony_ciregressions as quickly as possible, hence there is a streamlined process to
17662306a36Sopenharmony_cireport them:
17762306a36Sopenharmony_ci
17862306a36Sopenharmony_ci * Check if the kernel developers still maintain the Linux kernel version
17962306a36Sopenharmony_ci   line you care about: go to the  `front page of kernel.org
18062306a36Sopenharmony_ci   <https://kernel.org/>`_ and make sure it mentions
18162306a36Sopenharmony_ci   the latest release of the particular version line without an '[EOL]' tag.
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ci * Check the archives of the `Linux stable mailing list
18462306a36Sopenharmony_ci   <https://lore.kernel.org/stable/>`_ for existing reports.
18562306a36Sopenharmony_ci
18662306a36Sopenharmony_ci * Install the latest release from the particular version line as a vanilla
18762306a36Sopenharmony_ci   kernel. Ensure this kernel is not tainted and still shows the problem, as
18862306a36Sopenharmony_ci   the issue might have already been fixed there. If you first noticed the
18962306a36Sopenharmony_ci   problem with a vendor kernel, check a vanilla build of the last version
19062306a36Sopenharmony_ci   known to work performs fine as well.
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_ci * Send a short problem report to the Linux stable mailing list
19362306a36Sopenharmony_ci   (stable@vger.kernel.org) and CC the Linux regressions mailing list
19462306a36Sopenharmony_ci   (regressions@lists.linux.dev); if you suspect the cause in a particular
19562306a36Sopenharmony_ci   subsystem, CC its maintainer and its mailing list. Roughly describe the
19662306a36Sopenharmony_ci   issue and ideally explain how to reproduce it. Mention the first version
19762306a36Sopenharmony_ci   that shows the problem and the last version that's working fine. Then
19862306a36Sopenharmony_ci   wait for further instructions.
19962306a36Sopenharmony_ci
20062306a36Sopenharmony_ciThe reference section below explains each of these steps in more detail.
20162306a36Sopenharmony_ci
20262306a36Sopenharmony_ci
20362306a36Sopenharmony_ciReporting issues only occurring in older kernel version lines
20462306a36Sopenharmony_ci-------------------------------------------------------------
20562306a36Sopenharmony_ci
20662306a36Sopenharmony_ciThis subsection is for you, if you tried the latest mainline kernel as outlined
20762306a36Sopenharmony_ciabove, but failed to reproduce your issue there; at the same time you want to
20862306a36Sopenharmony_cisee the issue fixed in a still supported stable or longterm series or vendor
20962306a36Sopenharmony_cikernels regularly rebased on those. If that the case, follow these steps:
21062306a36Sopenharmony_ci
21162306a36Sopenharmony_ci * Prepare yourself for the possibility that going through the next few steps
21262306a36Sopenharmony_ci   might not get the issue solved in older releases: the fix might be too big
21362306a36Sopenharmony_ci   or risky to get backported there.
21462306a36Sopenharmony_ci
21562306a36Sopenharmony_ci * Perform the first three steps in the section "Dealing with regressions
21662306a36Sopenharmony_ci   within a stable and longterm kernel line" above.
21762306a36Sopenharmony_ci
21862306a36Sopenharmony_ci * Search the Linux kernel version control system for the change that fixed
21962306a36Sopenharmony_ci   the issue in mainline, as its commit message might tell you if the fix is
22062306a36Sopenharmony_ci   scheduled for backporting already. If you don't find anything that way,
22162306a36Sopenharmony_ci   search the appropriate mailing lists for posts that discuss such an issue
22262306a36Sopenharmony_ci   or peer-review possible fixes; then check the discussions if the fix was
22362306a36Sopenharmony_ci   deemed unsuitable for backporting. If backporting was not considered at
22462306a36Sopenharmony_ci   all, join the newest discussion, asking if it's in the cards.
22562306a36Sopenharmony_ci
22662306a36Sopenharmony_ci * One of the former steps should lead to a solution. If that doesn't work
22762306a36Sopenharmony_ci   out, ask the maintainers for the subsystem that seems to be causing the
22862306a36Sopenharmony_ci   issue for advice; CC the mailing list for the particular subsystem as well
22962306a36Sopenharmony_ci   as the stable mailing list.
23062306a36Sopenharmony_ci
23162306a36Sopenharmony_ciThe reference section below explains each of these steps in more detail.
23262306a36Sopenharmony_ci
23362306a36Sopenharmony_ci
23462306a36Sopenharmony_ciReference section: Reporting issues to the kernel maintainers
23562306a36Sopenharmony_ci=============================================================
23662306a36Sopenharmony_ci
23762306a36Sopenharmony_ciThe detailed guides above outline all the major steps in brief fashion, which
23862306a36Sopenharmony_cishould be enough for most people. But sometimes there are situations where even
23962306a36Sopenharmony_ciexperienced users might wonder how to actually do one of those steps. That's
24062306a36Sopenharmony_ciwhat this section is for, as it will provide a lot more details on each of the
24162306a36Sopenharmony_ciabove steps. Consider this as reference documentation: it's possible to read it
24262306a36Sopenharmony_cifrom top to bottom. But it's mainly meant to skim over and a place to look up
24362306a36Sopenharmony_cidetails how to actually perform those steps.
24462306a36Sopenharmony_ci
24562306a36Sopenharmony_ciA few words of general advice before digging into the details:
24662306a36Sopenharmony_ci
24762306a36Sopenharmony_ci * The Linux kernel developers are well aware this process is complicated and
24862306a36Sopenharmony_ci   demands more than other FLOSS projects. We'd love to make it simpler. But
24962306a36Sopenharmony_ci   that would require work in various places as well as some infrastructure,
25062306a36Sopenharmony_ci   which would need constant maintenance; nobody has stepped up to do that
25162306a36Sopenharmony_ci   work, so that's just how things are for now.
25262306a36Sopenharmony_ci
25362306a36Sopenharmony_ci * A warranty or support contract with some vendor doesn't entitle you to
25462306a36Sopenharmony_ci   request fixes from developers in the upstream Linux kernel community: such
25562306a36Sopenharmony_ci   contracts are completely outside the scope of the Linux kernel, its
25662306a36Sopenharmony_ci   development community, and this document. That's why you can't demand
25762306a36Sopenharmony_ci   anything such a contract guarantees in this context, not even if the
25862306a36Sopenharmony_ci   developer handling the issue works for the vendor in question. If you want
25962306a36Sopenharmony_ci   to claim your rights, use the vendor's support channel instead. When doing
26062306a36Sopenharmony_ci   so, you might want to mention you'd like to see the issue fixed in the
26162306a36Sopenharmony_ci   upstream Linux kernel; motivate them by saying it's the only way to ensure
26262306a36Sopenharmony_ci   the fix in the end will get incorporated in all Linux distributions.
26362306a36Sopenharmony_ci
26462306a36Sopenharmony_ci * If you never reported an issue to a FLOSS project before you should consider
26562306a36Sopenharmony_ci   reading `How to Report Bugs Effectively
26662306a36Sopenharmony_ci   <https://www.chiark.greenend.org.uk/~sgtatham/bugs.html>`_, `How To Ask
26762306a36Sopenharmony_ci   Questions The Smart Way
26862306a36Sopenharmony_ci   <http://www.catb.org/esr/faqs/smart-questions.html>`_, and `How to ask good
26962306a36Sopenharmony_ci   questions <https://jvns.ca/blog/good-questions/>`_.
27062306a36Sopenharmony_ci
27162306a36Sopenharmony_ciWith that off the table, find below the details on how to properly report
27262306a36Sopenharmony_ciissues to the Linux kernel developers.
27362306a36Sopenharmony_ci
27462306a36Sopenharmony_ci
27562306a36Sopenharmony_ciMake sure you're using the upstream Linux kernel
27662306a36Sopenharmony_ci------------------------------------------------
27762306a36Sopenharmony_ci
27862306a36Sopenharmony_ci   *Are you facing an issue with a Linux kernel a hardware or software vendor
27962306a36Sopenharmony_ci   provided? Then in almost all cases you are better off to stop reading this
28062306a36Sopenharmony_ci   document and reporting the issue to your vendor instead, unless you are
28162306a36Sopenharmony_ci   willing to install the latest Linux version yourself. Be aware the latter
28262306a36Sopenharmony_ci   will often be needed anyway to hunt down and fix issues.*
28362306a36Sopenharmony_ci
28462306a36Sopenharmony_ciLike most programmers, Linux kernel developers don't like to spend time dealing
28562306a36Sopenharmony_ciwith reports for issues that don't even happen with their current code. It's
28662306a36Sopenharmony_cijust a waste everybody's time, especially yours. Unfortunately such situations
28762306a36Sopenharmony_cieasily happen when it comes to the kernel and often leads to frustration on both
28862306a36Sopenharmony_cisides. That's because almost all Linux-based kernels pre-installed on devices
28962306a36Sopenharmony_ci(Computers, Laptops, Smartphones, Routers, …) and most shipped by Linux
29062306a36Sopenharmony_cidistributors are quite distant from the official Linux kernel as distributed by
29162306a36Sopenharmony_cikernel.org: these kernels from these vendors are often ancient from the point of
29262306a36Sopenharmony_ciLinux development or heavily modified, often both.
29362306a36Sopenharmony_ci
29462306a36Sopenharmony_ciMost of these vendor kernels are quite unsuitable for reporting issues to the
29562306a36Sopenharmony_ciLinux kernel developers: an issue you face with one of them might have been
29662306a36Sopenharmony_cifixed by the Linux kernel developers months or years ago already; additionally,
29762306a36Sopenharmony_cithe modifications and enhancements by the vendor might be causing the issue you
29862306a36Sopenharmony_ciface, even if they look small or totally unrelated. That's why you should report
29962306a36Sopenharmony_ciissues with these kernels to the vendor. Its developers should look into the
30062306a36Sopenharmony_cireport and, in case it turns out to be an upstream issue, fix it directly
30162306a36Sopenharmony_ciupstream or forward the report there. In practice that often does not work out
30262306a36Sopenharmony_cior might not what you want. You thus might want to consider circumventing the
30362306a36Sopenharmony_civendor by installing the very latest Linux kernel core yourself. If that's an
30462306a36Sopenharmony_cioption for you move ahead in this process, as a later step in this guide will
30562306a36Sopenharmony_ciexplain how to do that once it rules out other potential causes for your issue.
30662306a36Sopenharmony_ci
30762306a36Sopenharmony_ciNote, the previous paragraph is starting with the word 'most', as sometimes
30862306a36Sopenharmony_cidevelopers in fact are willing to handle reports about issues occurring with
30962306a36Sopenharmony_civendor kernels. If they do in the end highly depends on the developers and the
31062306a36Sopenharmony_ciissue in question. Your chances are quite good if the distributor applied only
31162306a36Sopenharmony_cismall modifications to a kernel based on a recent Linux version; that for
31262306a36Sopenharmony_ciexample often holds true for the mainline kernels shipped by Debian GNU/Linux
31362306a36Sopenharmony_ciSid or Fedora Rawhide. Some developers will also accept reports about issues
31462306a36Sopenharmony_ciwith kernels from distributions shipping the latest stable kernel, as long as
31562306a36Sopenharmony_ciits only slightly modified; that for example is often the case for Arch Linux,
31662306a36Sopenharmony_ciregular Fedora releases, and openSUSE Tumbleweed. But keep in mind, you better
31762306a36Sopenharmony_ciwant to use a mainline Linux and avoid using a stable kernel for this
31862306a36Sopenharmony_ciprocess, as outlined in the section 'Install a fresh kernel for testing' in more
31962306a36Sopenharmony_cidetail.
32062306a36Sopenharmony_ci
32162306a36Sopenharmony_ciObviously you are free to ignore all this advice and report problems with an old
32262306a36Sopenharmony_cior heavily modified vendor kernel to the upstream Linux developers. But note,
32362306a36Sopenharmony_cithose often get rejected or ignored, so consider yourself warned. But it's still
32462306a36Sopenharmony_cibetter than not reporting the issue at all: sometimes such reports directly or
32562306a36Sopenharmony_ciindirectly will help to get the issue fixed over time.
32662306a36Sopenharmony_ci
32762306a36Sopenharmony_ci
32862306a36Sopenharmony_ciSearch for existing reports, first run
32962306a36Sopenharmony_ci--------------------------------------
33062306a36Sopenharmony_ci
33162306a36Sopenharmony_ci   *Perform a rough search for existing reports with your favorite internet
33262306a36Sopenharmony_ci   search engine; additionally, check the archives of the Linux Kernel Mailing
33362306a36Sopenharmony_ci   List (LKML). If you find matching reports, join the discussion instead of
33462306a36Sopenharmony_ci   sending a new one.*
33562306a36Sopenharmony_ci
33662306a36Sopenharmony_ciReporting an issue that someone else already brought forward is often a waste of
33762306a36Sopenharmony_citime for everyone involved, especially you as the reporter. So it's in your own
33862306a36Sopenharmony_ciinterest to thoroughly check if somebody reported the issue already. At this
33962306a36Sopenharmony_cistep of the process it's okay to just perform a rough search: a later step will
34062306a36Sopenharmony_citell you to perform a more detailed search once you know where your issue needs
34162306a36Sopenharmony_cito be reported to. Nevertheless, do not hurry with this step of the reporting
34262306a36Sopenharmony_ciprocess, it can save you time and trouble.
34362306a36Sopenharmony_ci
34462306a36Sopenharmony_ciSimply search the internet with your favorite search engine first. Afterwards,
34562306a36Sopenharmony_cisearch the `Linux Kernel Mailing List (LKML) archives
34662306a36Sopenharmony_ci<https://lore.kernel.org/lkml/>`_.
34762306a36Sopenharmony_ci
34862306a36Sopenharmony_ciIf you get flooded with results consider telling your search engine to limit
34962306a36Sopenharmony_cisearch timeframe to the past month or year. And wherever you search, make sure
35062306a36Sopenharmony_cito use good search terms; vary them a few times, too. While doing so try to
35162306a36Sopenharmony_cilook at the issue from the perspective of someone else: that will help you to
35262306a36Sopenharmony_cicome up with other words to use as search terms. Also make sure not to use too
35362306a36Sopenharmony_cimany search terms at once. Remember to search with and without information like
35462306a36Sopenharmony_cithe name of the kernel driver or the name of the affected hardware component.
35562306a36Sopenharmony_ciBut its exact brand name (say 'ASUS Red Devil Radeon RX 5700 XT Gaming OC')
35662306a36Sopenharmony_cioften is not much helpful, as it is too specific. Instead try search terms like
35762306a36Sopenharmony_cithe model line (Radeon 5700 or Radeon 5000) and the code name of the main chip
35862306a36Sopenharmony_ci('Navi' or 'Navi10') with and without its manufacturer ('AMD').
35962306a36Sopenharmony_ci
36062306a36Sopenharmony_ciIn case you find an existing report about your issue, join the discussion, as
36162306a36Sopenharmony_ciyou might be able to provide valuable additional information. That can be
36262306a36Sopenharmony_ciimportant even when a fix is prepared or in its final stages already, as
36362306a36Sopenharmony_cidevelopers might look for people that can provide additional information or
36462306a36Sopenharmony_citest a proposed fix. Jump to the section 'Duties after the report went out' for
36562306a36Sopenharmony_cidetails on how to get properly involved.
36662306a36Sopenharmony_ci
36762306a36Sopenharmony_ciNote, searching `bugzilla.kernel.org <https://bugzilla.kernel.org/>`_ might also
36862306a36Sopenharmony_cibe a good idea, as that might provide valuable insights or turn up matching
36962306a36Sopenharmony_cireports. If you find the latter, just keep in mind: most subsystems expect
37062306a36Sopenharmony_cireports in different places, as described below in the section "Check where you
37162306a36Sopenharmony_cineed to report your issue". The developers that should take care of the issue
37262306a36Sopenharmony_cithus might not even be aware of the bugzilla ticket. Hence, check the ticket if
37362306a36Sopenharmony_cithe issue already got reported as outlined in this document and if not consider
37462306a36Sopenharmony_cidoing so.
37562306a36Sopenharmony_ci
37662306a36Sopenharmony_ci
37762306a36Sopenharmony_ciIssue of high priority?
37862306a36Sopenharmony_ci-----------------------
37962306a36Sopenharmony_ci
38062306a36Sopenharmony_ci    *See if the issue you are dealing with qualifies as regression, security
38162306a36Sopenharmony_ci    issue, or a really severe problem: those are 'issues of high priority' that
38262306a36Sopenharmony_ci    need special handling in some steps that are about to follow.*
38362306a36Sopenharmony_ci
38462306a36Sopenharmony_ciLinus Torvalds and the leading Linux kernel developers want to see some issues
38562306a36Sopenharmony_cifixed as soon as possible, hence there are 'issues of high priority' that get
38662306a36Sopenharmony_cihandled slightly differently in the reporting process. Three type of cases
38762306a36Sopenharmony_ciqualify: regressions, security issues, and really severe problems.
38862306a36Sopenharmony_ci
38962306a36Sopenharmony_ciYou deal with a regression if some application or practical use case running
39062306a36Sopenharmony_cifine with one Linux kernel works worse or not at all with a newer version
39162306a36Sopenharmony_cicompiled using a similar configuration. The document
39262306a36Sopenharmony_ciDocumentation/admin-guide/reporting-regressions.rst explains this in more
39362306a36Sopenharmony_cidetail. It also provides a good deal of other information about regressions you
39462306a36Sopenharmony_cimight want to be aware of; it for example explains how to add your issue to the
39562306a36Sopenharmony_cilist of tracked regressions, to ensure it won't fall through the cracks.
39662306a36Sopenharmony_ci
39762306a36Sopenharmony_ciWhat qualifies as security issue is left to your judgment. Consider reading
39862306a36Sopenharmony_ciDocumentation/process/security-bugs.rst before proceeding, as it
39962306a36Sopenharmony_ciprovides additional details how to best handle security issues.
40062306a36Sopenharmony_ci
40162306a36Sopenharmony_ciAn issue is a 'really severe problem' when something totally unacceptably bad
40262306a36Sopenharmony_cihappens. That's for example the case when a Linux kernel corrupts the data it's
40362306a36Sopenharmony_cihandling or damages hardware it's running on. You're also dealing with a severe
40462306a36Sopenharmony_ciissue when the kernel suddenly stops working with an error message ('kernel
40562306a36Sopenharmony_cipanic') or without any farewell note at all. Note: do not confuse a 'panic' (a
40662306a36Sopenharmony_cifatal error where the kernel stop itself) with a 'Oops' (a recoverable error),
40762306a36Sopenharmony_cias the kernel remains running after the latter.
40862306a36Sopenharmony_ci
40962306a36Sopenharmony_ci
41062306a36Sopenharmony_ciEnsure a healthy environment
41162306a36Sopenharmony_ci----------------------------
41262306a36Sopenharmony_ci
41362306a36Sopenharmony_ci    *Make sure it's not the kernel's surroundings that are causing the issue
41462306a36Sopenharmony_ci    you face.*
41562306a36Sopenharmony_ci
41662306a36Sopenharmony_ciProblems that look a lot like a kernel issue are sometimes caused by build or
41762306a36Sopenharmony_ciruntime environment. It's hard to rule out that problem completely, but you
41862306a36Sopenharmony_cishould minimize it:
41962306a36Sopenharmony_ci
42062306a36Sopenharmony_ci * Use proven tools when building your kernel, as bugs in the compiler or the
42162306a36Sopenharmony_ci   binutils can cause the resulting kernel to misbehave.
42262306a36Sopenharmony_ci
42362306a36Sopenharmony_ci * Ensure your computer components run within their design specifications;
42462306a36Sopenharmony_ci   that's especially important for the main processor, the main memory, and the
42562306a36Sopenharmony_ci   motherboard. Therefore, stop undervolting or overclocking when facing a
42662306a36Sopenharmony_ci   potential kernel issue.
42762306a36Sopenharmony_ci
42862306a36Sopenharmony_ci * Try to make sure it's not faulty hardware that is causing your issue. Bad
42962306a36Sopenharmony_ci   main memory for example can result in a multitude of issues that will
43062306a36Sopenharmony_ci   manifest itself in problems looking like kernel issues.
43162306a36Sopenharmony_ci
43262306a36Sopenharmony_ci * If you're dealing with a filesystem issue, you might want to check the file
43362306a36Sopenharmony_ci   system in question with ``fsck``, as it might be damaged in a way that leads
43462306a36Sopenharmony_ci   to unexpected kernel behavior.
43562306a36Sopenharmony_ci
43662306a36Sopenharmony_ci * When dealing with a regression, make sure it's not something else that
43762306a36Sopenharmony_ci   changed in parallel to updating the kernel. The problem for example might be
43862306a36Sopenharmony_ci   caused by other software that was updated at the same time. It can also
43962306a36Sopenharmony_ci   happen that a hardware component coincidentally just broke when you rebooted
44062306a36Sopenharmony_ci   into a new kernel for the first time. Updating the systems BIOS or changing
44162306a36Sopenharmony_ci   something in the BIOS Setup can also lead to problems that on look a lot
44262306a36Sopenharmony_ci   like a kernel regression.
44362306a36Sopenharmony_ci
44462306a36Sopenharmony_ci
44562306a36Sopenharmony_ciPrepare for emergencies
44662306a36Sopenharmony_ci-----------------------
44762306a36Sopenharmony_ci
44862306a36Sopenharmony_ci    *Create a fresh backup and put system repair and restore tools at hand.*
44962306a36Sopenharmony_ci
45062306a36Sopenharmony_ciReminder, you are dealing with computers, which sometimes do unexpected things,
45162306a36Sopenharmony_ciespecially if you fiddle with crucial parts like the kernel of its operating
45262306a36Sopenharmony_cisystem. That's what you are about to do in this process. Thus, make sure to
45362306a36Sopenharmony_cicreate a fresh backup; also ensure you have all tools at hand to repair or
45462306a36Sopenharmony_cireinstall the operating system as well as everything you need to restore the
45562306a36Sopenharmony_cibackup.
45662306a36Sopenharmony_ci
45762306a36Sopenharmony_ci
45862306a36Sopenharmony_ciMake sure your kernel doesn't get enhanced
45962306a36Sopenharmony_ci------------------------------------------
46062306a36Sopenharmony_ci
46162306a36Sopenharmony_ci    *Ensure your system does not enhance its kernels by building additional
46262306a36Sopenharmony_ci    kernel modules on-the-fly, which solutions like DKMS might be doing locally
46362306a36Sopenharmony_ci    without your knowledge.*
46462306a36Sopenharmony_ci
46562306a36Sopenharmony_ciThe risk your issue report gets ignored or rejected dramatically increases if
46662306a36Sopenharmony_ciyour kernel gets enhanced in any way. That's why you should remove or disable
46762306a36Sopenharmony_cimechanisms like akmods and DKMS: those build add-on kernel modules
46862306a36Sopenharmony_ciautomatically, for example when you install a new Linux kernel or boot it for
46962306a36Sopenharmony_cithe first time. Also remove any modules they might have installed. Then reboot
47062306a36Sopenharmony_cibefore proceeding.
47162306a36Sopenharmony_ci
47262306a36Sopenharmony_ciNote, you might not be aware that your system is using one of these solutions:
47362306a36Sopenharmony_cithey often get set up silently when you install Nvidia's proprietary graphics
47462306a36Sopenharmony_cidriver, VirtualBox, or other software that requires a some support from a
47562306a36Sopenharmony_cimodule not part of the Linux kernel. That why your might need to uninstall the
47662306a36Sopenharmony_cipackages with such software to get rid of any 3rd party kernel module.
47762306a36Sopenharmony_ci
47862306a36Sopenharmony_ci
47962306a36Sopenharmony_ciCheck 'taint' flag
48062306a36Sopenharmony_ci------------------
48162306a36Sopenharmony_ci
48262306a36Sopenharmony_ci    *Check if your kernel was 'tainted' when the issue occurred, as the event
48362306a36Sopenharmony_ci    that made the kernel set this flag might be causing the issue you face.*
48462306a36Sopenharmony_ci
48562306a36Sopenharmony_ciThe kernel marks itself with a 'taint' flag when something happens that might
48662306a36Sopenharmony_cilead to follow-up errors that look totally unrelated. The issue you face might
48762306a36Sopenharmony_cibe such an error if your kernel is tainted. That's why it's in your interest to
48862306a36Sopenharmony_cirule this out early before investing more time into this process. This is the
48962306a36Sopenharmony_cionly reason why this step is here, as this process later will tell you to
49062306a36Sopenharmony_ciinstall the latest mainline kernel; you will need to check the taint flag again
49162306a36Sopenharmony_cithen, as that's when it matters because it's the kernel the report will focus
49262306a36Sopenharmony_cion.
49362306a36Sopenharmony_ci
49462306a36Sopenharmony_ciOn a running system is easy to check if the kernel tainted itself: if ``cat
49562306a36Sopenharmony_ci/proc/sys/kernel/tainted`` returns '0' then the kernel is not tainted and
49662306a36Sopenharmony_cieverything is fine. Checking that file is impossible in some situations; that's
49762306a36Sopenharmony_ciwhy the kernel also mentions the taint status when it reports an internal
49862306a36Sopenharmony_ciproblem (a 'kernel bug'), a recoverable error (a 'kernel Oops') or a
49962306a36Sopenharmony_cinon-recoverable error before halting operation (a 'kernel panic'). Look near
50062306a36Sopenharmony_cithe top of the error messages printed when one of these occurs and search for a
50162306a36Sopenharmony_ciline starting with 'CPU:'. It should end with 'Not tainted' if the kernel was
50262306a36Sopenharmony_cinot tainted when it noticed the problem; it was tainted if you see 'Tainted:'
50362306a36Sopenharmony_cifollowed by a few spaces and some letters.
50462306a36Sopenharmony_ci
50562306a36Sopenharmony_ciIf your kernel is tainted, study Documentation/admin-guide/tainted-kernels.rst
50662306a36Sopenharmony_cito find out why. Try to eliminate the reason. Often it's caused by one these
50762306a36Sopenharmony_cithree things:
50862306a36Sopenharmony_ci
50962306a36Sopenharmony_ci 1. A recoverable error (a 'kernel Oops') occurred and the kernel tainted
51062306a36Sopenharmony_ci    itself, as the kernel knows it might misbehave in strange ways after that
51162306a36Sopenharmony_ci    point. In that case check your kernel or system log and look for a section
51262306a36Sopenharmony_ci    that starts with this::
51362306a36Sopenharmony_ci
51462306a36Sopenharmony_ci       Oops: 0000 [#1] SMP
51562306a36Sopenharmony_ci
51662306a36Sopenharmony_ci    That's the first Oops since boot-up, as the '#1' between the brackets shows.
51762306a36Sopenharmony_ci    Every Oops and any other problem that happens after that point might be a
51862306a36Sopenharmony_ci    follow-up problem to that first Oops, even if both look totally unrelated.
51962306a36Sopenharmony_ci    Rule this out by getting rid of the cause for the first Oops and reproducing
52062306a36Sopenharmony_ci    the issue afterwards. Sometimes simply restarting will be enough, sometimes
52162306a36Sopenharmony_ci    a change to the configuration followed by a reboot can eliminate the Oops.
52262306a36Sopenharmony_ci    But don't invest too much time into this at this point of the process, as
52362306a36Sopenharmony_ci    the cause for the Oops might already be fixed in the newer Linux kernel
52462306a36Sopenharmony_ci    version you are going to install later in this process.
52562306a36Sopenharmony_ci
52662306a36Sopenharmony_ci 2. Your system uses a software that installs its own kernel modules, for
52762306a36Sopenharmony_ci    example Nvidia's proprietary graphics driver or VirtualBox. The kernel
52862306a36Sopenharmony_ci    taints itself when it loads such module from external sources (even if
52962306a36Sopenharmony_ci    they are Open Source): they sometimes cause errors in unrelated kernel
53062306a36Sopenharmony_ci    areas and thus might be causing the issue you face. You therefore have to
53162306a36Sopenharmony_ci    prevent those modules from loading when you want to report an issue to the
53262306a36Sopenharmony_ci    Linux kernel developers. Most of the time the easiest way to do that is:
53362306a36Sopenharmony_ci    temporarily uninstall such software including any modules they might have
53462306a36Sopenharmony_ci    installed. Afterwards reboot.
53562306a36Sopenharmony_ci
53662306a36Sopenharmony_ci 3. The kernel also taints itself when it's loading a module that resides in
53762306a36Sopenharmony_ci    the staging tree of the Linux kernel source. That's a special area for
53862306a36Sopenharmony_ci    code (mostly drivers) that does not yet fulfill the normal Linux kernel
53962306a36Sopenharmony_ci    quality standards. When you report an issue with such a module it's
54062306a36Sopenharmony_ci    obviously okay if the kernel is tainted; just make sure the module in
54162306a36Sopenharmony_ci    question is the only reason for the taint. If the issue happens in an
54262306a36Sopenharmony_ci    unrelated area reboot and temporarily block the module from being loaded
54362306a36Sopenharmony_ci    by specifying ``foo.blacklist=1`` as kernel parameter (replace 'foo' with
54462306a36Sopenharmony_ci    the name of the module in question).
54562306a36Sopenharmony_ci
54662306a36Sopenharmony_ci
54762306a36Sopenharmony_ciDocument how to reproduce issue
54862306a36Sopenharmony_ci-------------------------------
54962306a36Sopenharmony_ci
55062306a36Sopenharmony_ci    *Write down coarsely how to reproduce the issue. If you deal with multiple
55162306a36Sopenharmony_ci    issues at once, create separate notes for each of them and make sure they
55262306a36Sopenharmony_ci    work independently on a freshly booted system. That's needed, as each issue
55362306a36Sopenharmony_ci    needs to get reported to the kernel developers separately, unless they are
55462306a36Sopenharmony_ci    strongly entangled.*
55562306a36Sopenharmony_ci
55662306a36Sopenharmony_ciIf you deal with multiple issues at once, you'll have to report each of them
55762306a36Sopenharmony_ciseparately, as they might be handled by different developers. Describing
55862306a36Sopenharmony_civarious issues in one report also makes it quite difficult for others to tear
55962306a36Sopenharmony_ciit apart. Hence, only combine issues in one report if they are very strongly
56062306a36Sopenharmony_cientangled.
56162306a36Sopenharmony_ci
56262306a36Sopenharmony_ciAdditionally, during the reporting process you will have to test if the issue
56362306a36Sopenharmony_cihappens with other kernel versions. Therefore, it will make your work easier if
56462306a36Sopenharmony_ciyou know exactly how to reproduce an issue quickly on a freshly booted system.
56562306a36Sopenharmony_ci
56662306a36Sopenharmony_ciNote: it's often fruitless to report issues that only happened once, as they
56762306a36Sopenharmony_cimight be caused by a bit flip due to cosmic radiation. That's why you should
56862306a36Sopenharmony_citry to rule that out by reproducing the issue before going further. Feel free
56962306a36Sopenharmony_cito ignore this advice if you are experienced enough to tell a one-time error
57062306a36Sopenharmony_cidue to faulty hardware apart from a kernel issue that rarely happens and thus
57162306a36Sopenharmony_ciis hard to reproduce.
57262306a36Sopenharmony_ci
57362306a36Sopenharmony_ci
57462306a36Sopenharmony_ciRegression in stable or longterm kernel?
57562306a36Sopenharmony_ci----------------------------------------
57662306a36Sopenharmony_ci
57762306a36Sopenharmony_ci    *If you are facing a regression within a stable or longterm version line
57862306a36Sopenharmony_ci    (say something broke when updating from 5.10.4 to 5.10.5), scroll down to
57962306a36Sopenharmony_ci    'Dealing with regressions within a stable and longterm kernel line'.*
58062306a36Sopenharmony_ci
58162306a36Sopenharmony_ciRegression within a stable and longterm kernel version line are something the
58262306a36Sopenharmony_ciLinux developers want to fix badly, as such issues are even more unwanted than
58362306a36Sopenharmony_ciregression in the main development branch, as they can quickly affect a lot of
58462306a36Sopenharmony_cipeople. The developers thus want to learn about such issues as quickly as
58562306a36Sopenharmony_cipossible, hence there is a streamlined process to report them. Note,
58662306a36Sopenharmony_ciregressions with newer kernel version line (say something broke when switching
58762306a36Sopenharmony_cifrom 5.9.15 to 5.10.5) do not qualify.
58862306a36Sopenharmony_ci
58962306a36Sopenharmony_ci
59062306a36Sopenharmony_ciCheck where you need to report your issue
59162306a36Sopenharmony_ci-----------------------------------------
59262306a36Sopenharmony_ci
59362306a36Sopenharmony_ci    *Locate the driver or kernel subsystem that seems to be causing the issue.
59462306a36Sopenharmony_ci    Find out how and where its developers expect reports. Note: most of the
59562306a36Sopenharmony_ci    time this won't be bugzilla.kernel.org, as issues typically need to be sent
59662306a36Sopenharmony_ci    by mail to a maintainer and a public mailing list.*
59762306a36Sopenharmony_ci
59862306a36Sopenharmony_ciIt's crucial to send your report to the right people, as the Linux kernel is a
59962306a36Sopenharmony_cibig project and most of its developers are only familiar with a small subset of
60062306a36Sopenharmony_ciit. Quite a few programmers for example only care for just one driver, for
60162306a36Sopenharmony_ciexample one for a WiFi chip; its developer likely will only have small or no
60262306a36Sopenharmony_ciknowledge about the internals of remote or unrelated "subsystems", like the TCP
60362306a36Sopenharmony_cistack, the PCIe/PCI subsystem, memory management or file systems.
60462306a36Sopenharmony_ci
60562306a36Sopenharmony_ciProblem is: the Linux kernel lacks a central bug tracker where you can simply
60662306a36Sopenharmony_cifile your issue and make it reach the developers that need to know about it.
60762306a36Sopenharmony_ciThat's why you have to find the right place and way to report issues yourself.
60862306a36Sopenharmony_ciYou can do that with the help of a script (see below), but it mainly targets
60962306a36Sopenharmony_cikernel developers and experts. For everybody else the MAINTAINERS file is the
61062306a36Sopenharmony_cibetter place.
61162306a36Sopenharmony_ci
61262306a36Sopenharmony_ciHow to read the MAINTAINERS file
61362306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
61462306a36Sopenharmony_ciTo illustrate how to use the :ref:`MAINTAINERS <maintainers>` file, lets assume
61562306a36Sopenharmony_cithe WiFi in your Laptop suddenly misbehaves after updating the kernel. In that
61662306a36Sopenharmony_cicase it's likely an issue in the WiFi driver. Obviously it could also be some
61762306a36Sopenharmony_cicode it builds upon, but unless you suspect something like that stick to the
61862306a36Sopenharmony_cidriver. If it's really something else, the driver's developers will get the
61962306a36Sopenharmony_ciright people involved.
62062306a36Sopenharmony_ci
62162306a36Sopenharmony_ciSadly, there is no way to check which code is driving a particular hardware
62262306a36Sopenharmony_cicomponent that is both universal and easy.
62362306a36Sopenharmony_ci
62462306a36Sopenharmony_ciIn case of a problem with the WiFi driver you for example might want to look at
62562306a36Sopenharmony_cithe output of ``lspci -k``, as it lists devices on the PCI/PCIe bus and the
62662306a36Sopenharmony_cikernel module driving it::
62762306a36Sopenharmony_ci
62862306a36Sopenharmony_ci       [user@something ~]$ lspci -k
62962306a36Sopenharmony_ci       [...]
63062306a36Sopenharmony_ci       3a:00.0 Network controller: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter (rev 32)
63162306a36Sopenharmony_ci         Subsystem: Bigfoot Networks, Inc. Device 1535
63262306a36Sopenharmony_ci         Kernel driver in use: ath10k_pci
63362306a36Sopenharmony_ci         Kernel modules: ath10k_pci
63462306a36Sopenharmony_ci       [...]
63562306a36Sopenharmony_ci
63662306a36Sopenharmony_ciBut this approach won't work if your WiFi chip is connected over USB or some
63762306a36Sopenharmony_ciother internal bus. In those cases you might want to check your WiFi manager or
63862306a36Sopenharmony_cithe output of ``ip link``. Look for the name of the problematic network
63962306a36Sopenharmony_ciinterface, which might be something like 'wlp58s0'. This name can be used like
64062306a36Sopenharmony_cithis to find the module driving it::
64162306a36Sopenharmony_ci
64262306a36Sopenharmony_ci       [user@something ~]$ realpath --relative-to=/sys/module/ /sys/class/net/wlp58s0/device/driver/module
64362306a36Sopenharmony_ci       ath10k_pci
64462306a36Sopenharmony_ci
64562306a36Sopenharmony_ciIn case tricks like these don't bring you any further, try to search the
64662306a36Sopenharmony_ciinternet on how to narrow down the driver or subsystem in question. And if you
64762306a36Sopenharmony_ciare unsure which it is: just try your best guess, somebody will help you if you
64862306a36Sopenharmony_ciguessed poorly.
64962306a36Sopenharmony_ci
65062306a36Sopenharmony_ciOnce you know the driver or subsystem, you want to search for it in the
65162306a36Sopenharmony_ciMAINTAINERS file. In the case of 'ath10k_pci' you won't find anything, as the
65262306a36Sopenharmony_ciname is too specific. Sometimes you will need to search on the net for help;
65362306a36Sopenharmony_cibut before doing so, try a somewhat shorted or modified name when searching the
65462306a36Sopenharmony_ciMAINTAINERS file, as then you might find something like this::
65562306a36Sopenharmony_ci
65662306a36Sopenharmony_ci       QUALCOMM ATHEROS ATH10K WIRELESS DRIVER
65762306a36Sopenharmony_ci       Mail:          A. Some Human <shuman@example.com>
65862306a36Sopenharmony_ci       Mailing list:  ath10k@lists.infradead.org
65962306a36Sopenharmony_ci       Status:        Supported
66062306a36Sopenharmony_ci       Web-page:      https://wireless.wiki.kernel.org/en/users/Drivers/ath10k
66162306a36Sopenharmony_ci       SCM:           git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
66262306a36Sopenharmony_ci       Files:         drivers/net/wireless/ath/ath10k/
66362306a36Sopenharmony_ci
66462306a36Sopenharmony_ciNote: the line description will be abbreviations, if you read the plain
66562306a36Sopenharmony_ciMAINTAINERS file found in the root of the Linux source tree. 'Mail:' for
66662306a36Sopenharmony_ciexample will be 'M:', 'Mailing list:' will be 'L', and 'Status:' will be 'S:'.
66762306a36Sopenharmony_ciA section near the top of the file explains these and other abbreviations.
66862306a36Sopenharmony_ci
66962306a36Sopenharmony_ciFirst look at the line 'Status'. Ideally it should be 'Supported' or
67062306a36Sopenharmony_ci'Maintained'. If it states 'Obsolete' then you are using some outdated approach
67162306a36Sopenharmony_cithat was replaced by a newer solution you need to switch to. Sometimes the code
67262306a36Sopenharmony_cionly has someone who provides 'Odd Fixes' when feeling motivated. And with
67362306a36Sopenharmony_ci'Orphan' you are totally out of luck, as nobody takes care of the code anymore.
67462306a36Sopenharmony_ciThat only leaves these options: arrange yourself to live with the issue, fix it
67562306a36Sopenharmony_ciyourself, or find a programmer somewhere willing to fix it.
67662306a36Sopenharmony_ci
67762306a36Sopenharmony_ciAfter checking the status, look for a line starting with 'bugs:': it will tell
67862306a36Sopenharmony_ciyou where to find a subsystem specific bug tracker to file your issue. The
67962306a36Sopenharmony_ciexample above does not have such a line. That is the case for most sections, as
68062306a36Sopenharmony_ciLinux kernel development is completely driven by mail. Very few subsystems use
68162306a36Sopenharmony_cia bug tracker, and only some of those rely on bugzilla.kernel.org.
68262306a36Sopenharmony_ci
68362306a36Sopenharmony_ciIn this and many other cases you thus have to look for lines starting with
68462306a36Sopenharmony_ci'Mail:' instead. Those mention the name and the email addresses for the
68562306a36Sopenharmony_cimaintainers of the particular code. Also look for a line starting with 'Mailing
68662306a36Sopenharmony_cilist:', which tells you the public mailing list where the code is developed.
68762306a36Sopenharmony_ciYour report later needs to go by mail to those addresses. Additionally, for all
68862306a36Sopenharmony_ciissue reports sent by email, make sure to add the Linux Kernel Mailing List
68962306a36Sopenharmony_ci(LKML) <linux-kernel@vger.kernel.org> to CC. Don't omit either of the mailing
69062306a36Sopenharmony_cilists when sending your issue report by mail later! Maintainers are busy people
69162306a36Sopenharmony_ciand might leave some work for other developers on the subsystem specific list;
69262306a36Sopenharmony_ciand LKML is important to have one place where all issue reports can be found.
69362306a36Sopenharmony_ci
69462306a36Sopenharmony_ci
69562306a36Sopenharmony_ciFinding the maintainers with the help of a script
69662306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
69762306a36Sopenharmony_ci
69862306a36Sopenharmony_ciFor people that have the Linux sources at hand there is a second option to find
69962306a36Sopenharmony_cithe proper place to report: the script 'scripts/get_maintainer.pl' which tries
70062306a36Sopenharmony_cito find all people to contact. It queries the MAINTAINERS file and needs to be
70162306a36Sopenharmony_cicalled with a path to the source code in question. For drivers compiled as
70262306a36Sopenharmony_cimodule if often can be found with a command like this::
70362306a36Sopenharmony_ci
70462306a36Sopenharmony_ci       $ modinfo ath10k_pci | grep filename | sed 's!/lib/modules/.*/kernel/!!; s!filename:!!; s!\.ko\(\|\.xz\)!!'
70562306a36Sopenharmony_ci       drivers/net/wireless/ath/ath10k/ath10k_pci.ko
70662306a36Sopenharmony_ci
70762306a36Sopenharmony_ciPass parts of this to the script::
70862306a36Sopenharmony_ci
70962306a36Sopenharmony_ci       $ ./scripts/get_maintainer.pl -f drivers/net/wireless/ath/ath10k*
71062306a36Sopenharmony_ci       Some Human <shuman@example.com> (supporter:QUALCOMM ATHEROS ATH10K WIRELESS DRIVER)
71162306a36Sopenharmony_ci       Another S. Human <asomehuman@example.com> (maintainer:NETWORKING DRIVERS)
71262306a36Sopenharmony_ci       ath10k@lists.infradead.org (open list:QUALCOMM ATHEROS ATH10K WIRELESS DRIVER)
71362306a36Sopenharmony_ci       linux-wireless@vger.kernel.org (open list:NETWORKING DRIVERS (WIRELESS))
71462306a36Sopenharmony_ci       netdev@vger.kernel.org (open list:NETWORKING DRIVERS)
71562306a36Sopenharmony_ci       linux-kernel@vger.kernel.org (open list)
71662306a36Sopenharmony_ci
71762306a36Sopenharmony_ciDon't sent your report to all of them. Send it to the maintainers, which the
71862306a36Sopenharmony_ciscript calls "supporter:"; additionally CC the most specific mailing list for
71962306a36Sopenharmony_cithe code as well as the Linux Kernel Mailing List (LKML). In this case you thus
72062306a36Sopenharmony_ciwould need to send the report to 'Some Human <shuman@example.com>' with
72162306a36Sopenharmony_ci'ath10k@lists.infradead.org' and 'linux-kernel@vger.kernel.org' in CC.
72262306a36Sopenharmony_ci
72362306a36Sopenharmony_ciNote: in case you cloned the Linux sources with git you might want to call
72462306a36Sopenharmony_ci``get_maintainer.pl`` a second time with ``--git``. The script then will look
72562306a36Sopenharmony_ciat the commit history to find which people recently worked on the code in
72662306a36Sopenharmony_ciquestion, as they might be able to help. But use these results with care, as it
72762306a36Sopenharmony_cican easily send you in a wrong direction. That for example happens quickly in
72862306a36Sopenharmony_ciareas rarely changed (like old or unmaintained drivers): sometimes such code is
72962306a36Sopenharmony_cimodified during tree-wide cleanups by developers that do not care about the
73062306a36Sopenharmony_ciparticular driver at all.
73162306a36Sopenharmony_ci
73262306a36Sopenharmony_ci
73362306a36Sopenharmony_ciSearch for existing reports, second run
73462306a36Sopenharmony_ci---------------------------------------
73562306a36Sopenharmony_ci
73662306a36Sopenharmony_ci    *Search the archives of the bug tracker or mailing list in question
73762306a36Sopenharmony_ci    thoroughly for reports that might match your issue. If you find anything,
73862306a36Sopenharmony_ci    join the discussion instead of sending a new report.*
73962306a36Sopenharmony_ci
74062306a36Sopenharmony_ciAs mentioned earlier already: reporting an issue that someone else already
74162306a36Sopenharmony_cibrought forward is often a waste of time for everyone involved, especially you
74262306a36Sopenharmony_cias the reporter. That's why you should search for existing report again, now
74362306a36Sopenharmony_cithat you know where they need to be reported to. If it's mailing list, you will
74462306a36Sopenharmony_cioften find its archives on `lore.kernel.org <https://lore.kernel.org/>`_.
74562306a36Sopenharmony_ci
74662306a36Sopenharmony_ciBut some list are hosted in different places. That for example is the case for
74762306a36Sopenharmony_cithe ath10k WiFi driver used as example in the previous step. But you'll often
74862306a36Sopenharmony_cifind the archives for these lists easily on the net. Searching for 'archive
74962306a36Sopenharmony_ciath10k@lists.infradead.org' for example will lead you to the `Info page for the
75062306a36Sopenharmony_ciath10k mailing list <https://lists.infradead.org/mailman/listinfo/ath10k>`_,
75162306a36Sopenharmony_ciwhich at the top links to its
75262306a36Sopenharmony_ci`list archives <https://lists.infradead.org/pipermail/ath10k/>`_. Sadly this and
75362306a36Sopenharmony_ciquite a few other lists miss a way to search the archives. In those cases use a
75462306a36Sopenharmony_ciregular internet search engine and add something like
75562306a36Sopenharmony_ci'site:lists.infradead.org/pipermail/ath10k/' to your search terms, which limits
75662306a36Sopenharmony_cithe results to the archives at that URL.
75762306a36Sopenharmony_ci
75862306a36Sopenharmony_ciIt's also wise to check the internet, LKML and maybe bugzilla.kernel.org again
75962306a36Sopenharmony_ciat this point. If your report needs to be filed in a bug tracker, you may want
76062306a36Sopenharmony_cito check the mailing list archives for the subsystem as well, as someone might
76162306a36Sopenharmony_cihave reported it only there.
76262306a36Sopenharmony_ci
76362306a36Sopenharmony_ciFor details how to search and what to do if you find matching reports see
76462306a36Sopenharmony_ci"Search for existing reports, first run" above.
76562306a36Sopenharmony_ci
76662306a36Sopenharmony_ciDo not hurry with this step of the reporting process: spending 30 to 60 minutes
76762306a36Sopenharmony_cior even more time can save you and others quite a lot of time and trouble.
76862306a36Sopenharmony_ci
76962306a36Sopenharmony_ci
77062306a36Sopenharmony_ciInstall a fresh kernel for testing
77162306a36Sopenharmony_ci----------------------------------
77262306a36Sopenharmony_ci
77362306a36Sopenharmony_ci    *Unless you are already running the latest 'mainline' Linux kernel, better
77462306a36Sopenharmony_ci    go and install it for the reporting process. Testing and reporting with
77562306a36Sopenharmony_ci    the latest 'stable' Linux can be an acceptable alternative in some
77662306a36Sopenharmony_ci    situations; during the merge window that actually might be even the best
77762306a36Sopenharmony_ci    approach, but in that development phase it can be an even better idea to
77862306a36Sopenharmony_ci    suspend your efforts for a few days anyway. Whatever version you choose,
77962306a36Sopenharmony_ci    ideally use a 'vanilla' built. Ignoring these advices will dramatically
78062306a36Sopenharmony_ci    increase the risk your report will be rejected or ignored.*
78162306a36Sopenharmony_ci
78262306a36Sopenharmony_ciAs mentioned in the detailed explanation for the first step already: Like most
78362306a36Sopenharmony_ciprogrammers, Linux kernel developers don't like to spend time dealing with
78462306a36Sopenharmony_cireports for issues that don't even happen with the current code. It's just a
78562306a36Sopenharmony_ciwaste everybody's time, especially yours. That's why it's in everybody's
78662306a36Sopenharmony_ciinterest that you confirm the issue still exists with the latest upstream code
78762306a36Sopenharmony_cibefore reporting it. You are free to ignore this advice, but as outlined
78862306a36Sopenharmony_ciearlier: doing so dramatically increases the risk that your issue report might
78962306a36Sopenharmony_ciget rejected or simply ignored.
79062306a36Sopenharmony_ci
79162306a36Sopenharmony_ciIn the scope of the kernel "latest upstream" normally means:
79262306a36Sopenharmony_ci
79362306a36Sopenharmony_ci * Install a mainline kernel; the latest stable kernel can be an option, but
79462306a36Sopenharmony_ci   most of the time is better avoided. Longterm kernels (sometimes called 'LTS
79562306a36Sopenharmony_ci   kernels') are unsuitable at this point of the process. The next subsection
79662306a36Sopenharmony_ci   explains all of this in more detail.
79762306a36Sopenharmony_ci
79862306a36Sopenharmony_ci * The over next subsection describes way to obtain and install such a kernel.
79962306a36Sopenharmony_ci   It also outlines that using a pre-compiled kernel are fine, but better are
80062306a36Sopenharmony_ci   vanilla, which means: it was built using Linux sources taken straight `from
80162306a36Sopenharmony_ci   kernel.org <https://kernel.org/>`_ and not modified or enhanced in any way.
80262306a36Sopenharmony_ci
80362306a36Sopenharmony_ciChoosing the right version for testing
80462306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
80562306a36Sopenharmony_ci
80662306a36Sopenharmony_ciHead over to `kernel.org <https://kernel.org/>`_ to find out which version you
80762306a36Sopenharmony_ciwant to use for testing. Ignore the big yellow button that says 'Latest release'
80862306a36Sopenharmony_ciand look a little lower at the table. At its top you'll see a line starting with
80962306a36Sopenharmony_cimainline, which most of the time will point to a pre-release with a version
81062306a36Sopenharmony_cinumber like '5.8-rc2'. If that's the case, you'll want to use this mainline
81162306a36Sopenharmony_cikernel for testing, as that where all fixes have to be applied first. Do not let
81262306a36Sopenharmony_cithat 'rc' scare you, these 'development kernels' are pretty reliable — and you
81362306a36Sopenharmony_cimade a backup, as you were instructed above, didn't you?
81462306a36Sopenharmony_ci
81562306a36Sopenharmony_ciIn about two out of every nine to ten weeks, mainline might point you to a
81662306a36Sopenharmony_ciproper release with a version number like '5.7'. If that happens, consider
81762306a36Sopenharmony_cisuspending the reporting process until the first pre-release of the next
81862306a36Sopenharmony_civersion (5.8-rc1) shows up on kernel.org. That's because the Linux development
81962306a36Sopenharmony_cicycle then is in its two-week long 'merge window'. The bulk of the changes and
82062306a36Sopenharmony_ciall intrusive ones get merged for the next release during this time. It's a bit
82162306a36Sopenharmony_cimore risky to use mainline during this period. Kernel developers are also often
82262306a36Sopenharmony_ciquite busy then and might have no spare time to deal with issue reports. It's
82362306a36Sopenharmony_cialso quite possible that one of the many changes applied during the merge
82462306a36Sopenharmony_ciwindow fixes the issue you face; that's why you soon would have to retest with
82562306a36Sopenharmony_cia newer kernel version anyway, as outlined below in the section 'Duties after
82662306a36Sopenharmony_cithe report went out'.
82762306a36Sopenharmony_ci
82862306a36Sopenharmony_ciThat's why it might make sense to wait till the merge window is over. But don't
82962306a36Sopenharmony_cito that if you're dealing with something that shouldn't wait. In that case
83062306a36Sopenharmony_ciconsider obtaining the latest mainline kernel via git (see below) or use the
83162306a36Sopenharmony_cilatest stable version offered on kernel.org. Using that is also acceptable in
83262306a36Sopenharmony_cicase mainline for some reason does currently not work for you. An in general:
83362306a36Sopenharmony_ciusing it for reproducing the issue is also better than not reporting it issue
83462306a36Sopenharmony_ciat all.
83562306a36Sopenharmony_ci
83662306a36Sopenharmony_ciBetter avoid using the latest stable kernel outside merge windows, as all fixes
83762306a36Sopenharmony_cimust be applied to mainline first. That's why checking the latest mainline
83862306a36Sopenharmony_cikernel is so important: any issue you want to see fixed in older version lines
83962306a36Sopenharmony_cineeds to be fixed in mainline first before it can get backported, which can
84062306a36Sopenharmony_citake a few days or weeks. Another reason: the fix you hope for might be too
84162306a36Sopenharmony_cihard or risky for backporting; reporting the issue again hence is unlikely to
84262306a36Sopenharmony_cichange anything.
84362306a36Sopenharmony_ci
84462306a36Sopenharmony_ciThese aspects are also why longterm kernels (sometimes called "LTS kernels")
84562306a36Sopenharmony_ciare unsuitable for this part of the reporting process: they are to distant from
84662306a36Sopenharmony_cithe current code. Hence go and test mainline first and follow the process
84762306a36Sopenharmony_cifurther: if the issue doesn't occur with mainline it will guide you how to get
84862306a36Sopenharmony_ciit fixed in older version lines, if that's in the cards for the fix in question.
84962306a36Sopenharmony_ci
85062306a36Sopenharmony_ciHow to obtain a fresh Linux kernel
85162306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
85262306a36Sopenharmony_ci
85362306a36Sopenharmony_ci**Using a pre-compiled kernel**: This is often the quickest, easiest, and safest
85462306a36Sopenharmony_ciway for testing — especially is you are unfamiliar with the Linux kernel. The
85562306a36Sopenharmony_ciproblem: most of those shipped by distributors or add-on repositories are build
85662306a36Sopenharmony_cifrom modified Linux sources. They are thus not vanilla and therefore often
85762306a36Sopenharmony_ciunsuitable for testing and issue reporting: the changes might cause the issue
85862306a36Sopenharmony_ciyou face or influence it somehow.
85962306a36Sopenharmony_ci
86062306a36Sopenharmony_ciBut you are in luck if you are using a popular Linux distribution: for quite a
86162306a36Sopenharmony_cifew of them you'll find repositories on the net that contain packages with the
86262306a36Sopenharmony_cilatest mainline or stable Linux built as vanilla kernel. It's totally okay to
86362306a36Sopenharmony_ciuse these, just make sure from the repository's description they are vanilla or
86462306a36Sopenharmony_ciat least close to it. Additionally ensure the packages contain the latest
86562306a36Sopenharmony_civersions as offered on kernel.org. The packages are likely unsuitable if they
86662306a36Sopenharmony_ciare older than a week, as new mainline and stable kernels typically get released
86762306a36Sopenharmony_ciat least once a week.
86862306a36Sopenharmony_ci
86962306a36Sopenharmony_ciPlease note that you might need to build your own kernel manually later: that's
87062306a36Sopenharmony_cisometimes needed for debugging or testing fixes, as described later in this
87162306a36Sopenharmony_cidocument. Also be aware that pre-compiled kernels might lack debug symbols that
87262306a36Sopenharmony_ciare needed to decode messages the kernel prints when a panic, Oops, warning, or
87362306a36Sopenharmony_ciBUG occurs; if you plan to decode those, you might be better off compiling a
87462306a36Sopenharmony_cikernel yourself (see the end of this subsection and the section titled 'Decode
87562306a36Sopenharmony_cifailure messages' for details).
87662306a36Sopenharmony_ci
87762306a36Sopenharmony_ci**Using git**: Developers and experienced Linux users familiar with git are
87862306a36Sopenharmony_cioften best served by obtaining the latest Linux kernel sources straight from the
87962306a36Sopenharmony_ci`official development repository on kernel.org
88062306a36Sopenharmony_ci<https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/>`_.
88162306a36Sopenharmony_ciThose are likely a bit ahead of the latest mainline pre-release. Don't worry
88262306a36Sopenharmony_ciabout it: they are as reliable as a proper pre-release, unless the kernel's
88362306a36Sopenharmony_cidevelopment cycle is currently in the middle of a merge window. But even then
88462306a36Sopenharmony_cithey are quite reliable.
88562306a36Sopenharmony_ci
88662306a36Sopenharmony_ci**Conventional**: People unfamiliar with git are often best served by
88762306a36Sopenharmony_cidownloading the sources as tarball from `kernel.org <https://kernel.org/>`_.
88862306a36Sopenharmony_ci
88962306a36Sopenharmony_ciHow to actually build a kernel is not described here, as many websites explain
89062306a36Sopenharmony_cithe necessary steps already. If you are new to it, consider following one of
89162306a36Sopenharmony_cithose how-to's that suggest to use ``make localmodconfig``, as that tries to
89262306a36Sopenharmony_cipick up the configuration of your current kernel and then tries to adjust it
89362306a36Sopenharmony_cisomewhat for your system. That does not make the resulting kernel any better,
89462306a36Sopenharmony_cibut quicker to compile.
89562306a36Sopenharmony_ci
89662306a36Sopenharmony_ciNote: If you are dealing with a panic, Oops, warning, or BUG from the kernel,
89762306a36Sopenharmony_ciplease try to enable CONFIG_KALLSYMS when configuring your kernel.
89862306a36Sopenharmony_ciAdditionally, enable CONFIG_DEBUG_KERNEL and CONFIG_DEBUG_INFO, too; the
89962306a36Sopenharmony_cilatter is the relevant one of those two, but can only be reached if you enable
90062306a36Sopenharmony_cithe former. Be aware CONFIG_DEBUG_INFO increases the storage space required to
90162306a36Sopenharmony_cibuild a kernel by quite a bit. But that's worth it, as these options will allow
90262306a36Sopenharmony_ciyou later to pinpoint the exact line of code that triggers your issue. The
90362306a36Sopenharmony_cisection 'Decode failure messages' below explains this in more detail.
90462306a36Sopenharmony_ci
90562306a36Sopenharmony_ciBut keep in mind: Always keep a record of the issue encountered in case it is
90662306a36Sopenharmony_cihard to reproduce. Sending an undecoded report is better than not reporting
90762306a36Sopenharmony_cithe issue at all.
90862306a36Sopenharmony_ci
90962306a36Sopenharmony_ci
91062306a36Sopenharmony_ciCheck 'taint' flag
91162306a36Sopenharmony_ci------------------
91262306a36Sopenharmony_ci
91362306a36Sopenharmony_ci    *Ensure the kernel you just installed does not 'taint' itself when
91462306a36Sopenharmony_ci    running.*
91562306a36Sopenharmony_ci
91662306a36Sopenharmony_ciAs outlined above in more detail already: the kernel sets a 'taint' flag when
91762306a36Sopenharmony_cisomething happens that can lead to follow-up errors that look totally
91862306a36Sopenharmony_ciunrelated. That's why you need to check if the kernel you just installed does
91962306a36Sopenharmony_cinot set this flag. And if it does, you in almost all the cases needs to
92062306a36Sopenharmony_cieliminate the reason for it before you reporting issues that occur with it. See
92162306a36Sopenharmony_cithe section above for details how to do that.
92262306a36Sopenharmony_ci
92362306a36Sopenharmony_ci
92462306a36Sopenharmony_ciReproduce issue with the fresh kernel
92562306a36Sopenharmony_ci-------------------------------------
92662306a36Sopenharmony_ci
92762306a36Sopenharmony_ci    *Reproduce the issue with the kernel you just installed. If it doesn't show
92862306a36Sopenharmony_ci    up there, scroll down to the instructions for issues only happening with
92962306a36Sopenharmony_ci    stable and longterm kernels.*
93062306a36Sopenharmony_ci
93162306a36Sopenharmony_ciCheck if the issue occurs with the fresh Linux kernel version you just
93262306a36Sopenharmony_ciinstalled. If it was fixed there already, consider sticking with this version
93362306a36Sopenharmony_ciline and abandoning your plan to report the issue. But keep in mind that other
93462306a36Sopenharmony_ciusers might still be plagued by it, as long as it's not fixed in either stable
93562306a36Sopenharmony_ciand longterm version from kernel.org (and thus vendor kernels derived from
93662306a36Sopenharmony_cithose). If you prefer to use one of those or just want to help their users,
93762306a36Sopenharmony_cihead over to the section "Details about reporting issues only occurring in
93862306a36Sopenharmony_ciolder kernel version lines" below.
93962306a36Sopenharmony_ci
94062306a36Sopenharmony_ci
94162306a36Sopenharmony_ciOptimize description to reproduce issue
94262306a36Sopenharmony_ci---------------------------------------
94362306a36Sopenharmony_ci
94462306a36Sopenharmony_ci    *Optimize your notes: try to find and write the most straightforward way to
94562306a36Sopenharmony_ci    reproduce your issue. Make sure the end result has all the important
94662306a36Sopenharmony_ci    details, and at the same time is easy to read and understand for others
94762306a36Sopenharmony_ci    that hear about it for the first time. And if you learned something in this
94862306a36Sopenharmony_ci    process, consider searching again for existing reports about the issue.*
94962306a36Sopenharmony_ci
95062306a36Sopenharmony_ciAn unnecessarily complex report will make it hard for others to understand your
95162306a36Sopenharmony_cireport. Thus try to find a reproducer that's straight forward to describe and
95262306a36Sopenharmony_cithus easy to understand in written form. Include all important details, but at
95362306a36Sopenharmony_cithe same time try to keep it as short as possible.
95462306a36Sopenharmony_ci
95562306a36Sopenharmony_ciIn this in the previous steps you likely have learned a thing or two about the
95662306a36Sopenharmony_ciissue you face. Use this knowledge and search again for existing reports
95762306a36Sopenharmony_ciinstead you can join.
95862306a36Sopenharmony_ci
95962306a36Sopenharmony_ci
96062306a36Sopenharmony_ciDecode failure messages
96162306a36Sopenharmony_ci-----------------------
96262306a36Sopenharmony_ci
96362306a36Sopenharmony_ci    *If your failure involves a 'panic', 'Oops', 'warning', or 'BUG', consider
96462306a36Sopenharmony_ci    decoding the kernel log to find the line of code that triggered the error.*
96562306a36Sopenharmony_ci
96662306a36Sopenharmony_ciWhen the kernel detects an internal problem, it will log some information about
96762306a36Sopenharmony_cithe executed code. This makes it possible to pinpoint the exact line in the
96862306a36Sopenharmony_cisource code that triggered the issue and shows how it was called. But that only
96962306a36Sopenharmony_ciworks if you enabled CONFIG_DEBUG_INFO and CONFIG_KALLSYMS when configuring
97062306a36Sopenharmony_ciyour kernel. If you did so, consider to decode the information from the
97162306a36Sopenharmony_cikernel's log. That will make it a lot easier to understand what lead to the
97262306a36Sopenharmony_ci'panic', 'Oops', 'warning', or 'BUG', which increases the chances that someone
97362306a36Sopenharmony_cican provide a fix.
97462306a36Sopenharmony_ci
97562306a36Sopenharmony_ciDecoding can be done with a script you find in the Linux source tree. If you
97662306a36Sopenharmony_ciare running a kernel you compiled yourself earlier, call it like this::
97762306a36Sopenharmony_ci
97862306a36Sopenharmony_ci       [user@something ~]$ sudo dmesg | ./linux-5.10.5/scripts/decode_stacktrace.sh ./linux-5.10.5/vmlinux
97962306a36Sopenharmony_ci
98062306a36Sopenharmony_ciIf you are running a packaged vanilla kernel, you will likely have to install
98162306a36Sopenharmony_cithe corresponding packages with debug symbols. Then call the script (which you
98262306a36Sopenharmony_cimight need to get from the Linux sources if your distro does not package it)
98362306a36Sopenharmony_cilike this::
98462306a36Sopenharmony_ci
98562306a36Sopenharmony_ci       [user@something ~]$ sudo dmesg | ./linux-5.10.5/scripts/decode_stacktrace.sh \
98662306a36Sopenharmony_ci        /usr/lib/debug/lib/modules/5.10.10-4.1.x86_64/vmlinux /usr/src/kernels/5.10.10-4.1.x86_64/
98762306a36Sopenharmony_ci
98862306a36Sopenharmony_ciThe script will work on log lines like the following, which show the address of
98962306a36Sopenharmony_cithe code the kernel was executing when the error occurred::
99062306a36Sopenharmony_ci
99162306a36Sopenharmony_ci       [   68.387301] RIP: 0010:test_module_init+0x5/0xffa [test_module]
99262306a36Sopenharmony_ci
99362306a36Sopenharmony_ciOnce decoded, these lines will look like this::
99462306a36Sopenharmony_ci
99562306a36Sopenharmony_ci       [   68.387301] RIP: 0010:test_module_init (/home/username/linux-5.10.5/test-module/test-module.c:16) test_module
99662306a36Sopenharmony_ci
99762306a36Sopenharmony_ciIn this case the executed code was built from the file
99862306a36Sopenharmony_ci'~/linux-5.10.5/test-module/test-module.c' and the error occurred by the
99962306a36Sopenharmony_ciinstructions found in line '16'.
100062306a36Sopenharmony_ci
100162306a36Sopenharmony_ciThe script will similarly decode the addresses mentioned in the section
100262306a36Sopenharmony_cistarting with 'Call trace', which show the path to the function where the
100362306a36Sopenharmony_ciproblem occurred. Additionally, the script will show the assembler output for
100462306a36Sopenharmony_cithe code section the kernel was executing.
100562306a36Sopenharmony_ci
100662306a36Sopenharmony_ciNote, if you can't get this to work, simply skip this step and mention the
100762306a36Sopenharmony_cireason for it in the report. If you're lucky, it might not be needed. And if it
100862306a36Sopenharmony_ciis, someone might help you to get things going. Also be aware this is just one
100962306a36Sopenharmony_ciof several ways to decode kernel stack traces. Sometimes different steps will
101062306a36Sopenharmony_cibe required to retrieve the relevant details. Don't worry about that, if that's
101162306a36Sopenharmony_cineeded in your case, developers will tell you what to do.
101262306a36Sopenharmony_ci
101362306a36Sopenharmony_ci
101462306a36Sopenharmony_ciSpecial care for regressions
101562306a36Sopenharmony_ci----------------------------
101662306a36Sopenharmony_ci
101762306a36Sopenharmony_ci    *If your problem is a regression, try to narrow down when the issue was
101862306a36Sopenharmony_ci    introduced as much as possible.*
101962306a36Sopenharmony_ci
102062306a36Sopenharmony_ciLinux lead developer Linus Torvalds insists that the Linux kernel never
102162306a36Sopenharmony_ciworsens, that's why he deems regressions as unacceptable and wants to see them
102262306a36Sopenharmony_cifixed quickly. That's why changes that introduced a regression are often
102362306a36Sopenharmony_cipromptly reverted if the issue they cause can't get solved quickly any other
102462306a36Sopenharmony_ciway. Reporting a regression is thus a bit like playing a kind of trump card to
102562306a36Sopenharmony_ciget something quickly fixed. But for that to happen the change that's causing
102662306a36Sopenharmony_cithe regression needs to be known. Normally it's up to the reporter to track
102762306a36Sopenharmony_cidown the culprit, as maintainers often won't have the time or setup at hand to
102862306a36Sopenharmony_cireproduce it themselves.
102962306a36Sopenharmony_ci
103062306a36Sopenharmony_ciTo find the change there is a process called 'bisection' which the document
103162306a36Sopenharmony_ciDocumentation/admin-guide/bug-bisect.rst describes in detail. That process
103262306a36Sopenharmony_ciwill often require you to build about ten to twenty kernel images, trying to
103362306a36Sopenharmony_cireproduce the issue with each of them before building the next. Yes, that takes
103462306a36Sopenharmony_cisome time, but don't worry, it works a lot quicker than most people assume.
103562306a36Sopenharmony_ciThanks to a 'binary search' this will lead you to the one commit in the source
103662306a36Sopenharmony_cicode management system that's causing the regression. Once you find it, search
103762306a36Sopenharmony_cithe net for the subject of the change, its commit id and the shortened commit id
103862306a36Sopenharmony_ci(the first 12 characters of the commit id). This will lead you to existing
103962306a36Sopenharmony_cireports about it, if there are any.
104062306a36Sopenharmony_ci
104162306a36Sopenharmony_ciNote, a bisection needs a bit of know-how, which not everyone has, and quite a
104262306a36Sopenharmony_cibit of effort, which not everyone is willing to invest. Nevertheless, it's
104362306a36Sopenharmony_cihighly recommended performing a bisection yourself. If you really can't or
104462306a36Sopenharmony_cidon't want to go down that route at least find out which mainline kernel
104562306a36Sopenharmony_ciintroduced the regression. If something for example breaks when switching from
104662306a36Sopenharmony_ci5.5.15 to 5.8.4, then try at least all the mainline releases in that area (5.6,
104762306a36Sopenharmony_ci5.7 and 5.8) to check when it first showed up. Unless you're trying to find a
104862306a36Sopenharmony_ciregression in a stable or longterm kernel, avoid testing versions which number
104962306a36Sopenharmony_cihas three sections (5.6.12, 5.7.8), as that makes the outcome hard to
105062306a36Sopenharmony_ciinterpret, which might render your testing useless. Once you found the major
105162306a36Sopenharmony_civersion which introduced the regression, feel free to move on in the reporting
105262306a36Sopenharmony_ciprocess. But keep in mind: it depends on the issue at hand if the developers
105362306a36Sopenharmony_ciwill be able to help without knowing the culprit. Sometimes they might
105462306a36Sopenharmony_cirecognize from the report want went wrong and can fix it; other times they will
105562306a36Sopenharmony_cibe unable to help unless you perform a bisection.
105662306a36Sopenharmony_ci
105762306a36Sopenharmony_ciWhen dealing with regressions make sure the issue you face is really caused by
105862306a36Sopenharmony_cithe kernel and not by something else, as outlined above already.
105962306a36Sopenharmony_ci
106062306a36Sopenharmony_ciIn the whole process keep in mind: an issue only qualifies as regression if the
106162306a36Sopenharmony_ciolder and the newer kernel got built with a similar configuration. This can be
106262306a36Sopenharmony_ciachieved by using ``make olddefconfig``, as explained in more detail by
106362306a36Sopenharmony_ciDocumentation/admin-guide/reporting-regressions.rst; that document also
106462306a36Sopenharmony_ciprovides a good deal of other information about regressions you might want to be
106562306a36Sopenharmony_ciaware of.
106662306a36Sopenharmony_ci
106762306a36Sopenharmony_ci
106862306a36Sopenharmony_ciWrite and send the report
106962306a36Sopenharmony_ci-------------------------
107062306a36Sopenharmony_ci
107162306a36Sopenharmony_ci    *Start to compile the report by writing a detailed description about the
107262306a36Sopenharmony_ci    issue. Always mention a few things: the latest kernel version you installed
107362306a36Sopenharmony_ci    for reproducing, the Linux Distribution used, and your notes on how to
107462306a36Sopenharmony_ci    reproduce the issue. Ideally, make the kernel's build configuration
107562306a36Sopenharmony_ci    (.config) and the output from ``dmesg`` available somewhere on the net and
107662306a36Sopenharmony_ci    link to it. Include or upload all other information that might be relevant,
107762306a36Sopenharmony_ci    like the output/screenshot of an Oops or the output from ``lspci``. Once
107862306a36Sopenharmony_ci    you wrote this main part, insert a normal length paragraph on top of it
107962306a36Sopenharmony_ci    outlining the issue and the impact quickly. On top of this add one sentence
108062306a36Sopenharmony_ci    that briefly describes the problem and gets people to read on. Now give the
108162306a36Sopenharmony_ci    thing a descriptive title or subject that yet again is shorter. Then you're
108262306a36Sopenharmony_ci    ready to send or file the report like the MAINTAINERS file told you, unless
108362306a36Sopenharmony_ci    you are dealing with one of those 'issues of high priority': they need
108462306a36Sopenharmony_ci    special care which is explained in 'Special handling for high priority
108562306a36Sopenharmony_ci    issues' below.*
108662306a36Sopenharmony_ci
108762306a36Sopenharmony_ciNow that you have prepared everything it's time to write your report. How to do
108862306a36Sopenharmony_cithat is partly explained by the three documents linked to in the preface above.
108962306a36Sopenharmony_ciThat's why this text will only mention a few of the essentials as well as
109062306a36Sopenharmony_cithings specific to the Linux kernel.
109162306a36Sopenharmony_ci
109262306a36Sopenharmony_ciThere is one thing that fits both categories: the most crucial parts of your
109362306a36Sopenharmony_cireport are the title/subject, the first sentence, and the first paragraph.
109462306a36Sopenharmony_ciDevelopers often get quite a lot of mail. They thus often just take a few
109562306a36Sopenharmony_ciseconds to skim a mail before deciding to move on or look closer. Thus: the
109662306a36Sopenharmony_cibetter the top section of your report, the higher are the chances that someone
109762306a36Sopenharmony_ciwill look into it and help you. And that is why you should ignore them for now
109862306a36Sopenharmony_ciand write the detailed report first. ;-)
109962306a36Sopenharmony_ci
110062306a36Sopenharmony_ciThings each report should mention
110162306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
110262306a36Sopenharmony_ci
110362306a36Sopenharmony_ciDescribe in detail how your issue happens with the fresh vanilla kernel you
110462306a36Sopenharmony_ciinstalled. Try to include the step-by-step instructions you wrote and optimized
110562306a36Sopenharmony_ciearlier that outline how you and ideally others can reproduce the issue; in
110662306a36Sopenharmony_cithose rare cases where that's impossible try to describe what you did to
110762306a36Sopenharmony_citrigger it.
110862306a36Sopenharmony_ci
110962306a36Sopenharmony_ciAlso include all the relevant information others might need to understand the
111062306a36Sopenharmony_ciissue and its environment. What's actually needed depends a lot on the issue,
111162306a36Sopenharmony_cibut there are some things you should include always:
111262306a36Sopenharmony_ci
111362306a36Sopenharmony_ci * the output from ``cat /proc/version``, which contains the Linux kernel
111462306a36Sopenharmony_ci   version number and the compiler it was built with.
111562306a36Sopenharmony_ci
111662306a36Sopenharmony_ci * the Linux distribution the machine is running (``hostnamectl | grep
111762306a36Sopenharmony_ci   "Operating System"``)
111862306a36Sopenharmony_ci
111962306a36Sopenharmony_ci * the architecture of the CPU and the operating system (``uname -mi``)
112062306a36Sopenharmony_ci
112162306a36Sopenharmony_ci * if you are dealing with a regression and performed a bisection, mention the
112262306a36Sopenharmony_ci   subject and the commit-id of the change that is causing it.
112362306a36Sopenharmony_ci
112462306a36Sopenharmony_ciIn a lot of cases it's also wise to make two more things available to those
112562306a36Sopenharmony_cithat read your report:
112662306a36Sopenharmony_ci
112762306a36Sopenharmony_ci * the configuration used for building your Linux kernel (the '.config' file)
112862306a36Sopenharmony_ci
112962306a36Sopenharmony_ci * the kernel's messages that you get from ``dmesg`` written to a file. Make
113062306a36Sopenharmony_ci   sure that it starts with a line like 'Linux version 5.8-1
113162306a36Sopenharmony_ci   (foobar@example.com) (gcc (GCC) 10.2.1, GNU ld version 2.34) #1 SMP Mon Aug
113262306a36Sopenharmony_ci   3 14:54:37 UTC 2020' If it's missing, then important messages from the first
113362306a36Sopenharmony_ci   boot phase already got discarded. In this case instead consider using
113462306a36Sopenharmony_ci   ``journalctl -b 0 -k``; alternatively you can also reboot, reproduce the
113562306a36Sopenharmony_ci   issue and call ``dmesg`` right afterwards.
113662306a36Sopenharmony_ci
113762306a36Sopenharmony_ciThese two files are big, that's why it's a bad idea to put them directly into
113862306a36Sopenharmony_ciyour report. If you are filing the issue in a bug tracker then attach them to
113962306a36Sopenharmony_cithe ticket. If you report the issue by mail do not attach them, as that makes
114062306a36Sopenharmony_cithe mail too large; instead do one of these things:
114162306a36Sopenharmony_ci
114262306a36Sopenharmony_ci * Upload the files somewhere public (your website, a public file paste
114362306a36Sopenharmony_ci   service, a ticket created just for this purpose on `bugzilla.kernel.org
114462306a36Sopenharmony_ci   <https://bugzilla.kernel.org/>`_, ...) and include a link to them in your
114562306a36Sopenharmony_ci   report. Ideally use something where the files stay available for years, as
114662306a36Sopenharmony_ci   they could be useful to someone many years from now; this for example can
114762306a36Sopenharmony_ci   happen if five or ten years from now a developer works on some code that was
114862306a36Sopenharmony_ci   changed just to fix your issue.
114962306a36Sopenharmony_ci
115062306a36Sopenharmony_ci * Put the files aside and mention you will send them later in individual
115162306a36Sopenharmony_ci   replies to your own mail. Just remember to actually do that once the report
115262306a36Sopenharmony_ci   went out. ;-)
115362306a36Sopenharmony_ci
115462306a36Sopenharmony_ciThings that might be wise to provide
115562306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
115662306a36Sopenharmony_ci
115762306a36Sopenharmony_ciDepending on the issue you might need to add more background data. Here are a
115862306a36Sopenharmony_cifew suggestions what often is good to provide:
115962306a36Sopenharmony_ci
116062306a36Sopenharmony_ci * If you are dealing with a 'warning', an 'OOPS' or a 'panic' from the kernel,
116162306a36Sopenharmony_ci   include it. If you can't copy'n'paste it, try to capture a netconsole trace
116262306a36Sopenharmony_ci   or at least take a picture of the screen.
116362306a36Sopenharmony_ci
116462306a36Sopenharmony_ci * If the issue might be related to your computer hardware, mention what kind
116562306a36Sopenharmony_ci   of system you use. If you for example have problems with your graphics card,
116662306a36Sopenharmony_ci   mention its manufacturer, the card's model, and what chip is uses. If it's a
116762306a36Sopenharmony_ci   laptop mention its name, but try to make sure it's meaningful. 'Dell XPS 13'
116862306a36Sopenharmony_ci   for example is not, because it might be the one from 2012; that one looks
116962306a36Sopenharmony_ci   not that different from the one sold today, but apart from that the two have
117062306a36Sopenharmony_ci   nothing in common. Hence, in such cases add the exact model number, which
117162306a36Sopenharmony_ci   for example are '9380' or '7390' for XPS 13 models introduced during 2019.
117262306a36Sopenharmony_ci   Names like 'Lenovo Thinkpad T590' are also somewhat ambiguous: there are
117362306a36Sopenharmony_ci   variants of this laptop with and without a dedicated graphics chip, so try
117462306a36Sopenharmony_ci   to find the exact model name or specify the main components.
117562306a36Sopenharmony_ci
117662306a36Sopenharmony_ci * Mention the relevant software in use. If you have problems with loading
117762306a36Sopenharmony_ci   modules, you want to mention the versions of kmod, systemd, and udev in use.
117862306a36Sopenharmony_ci   If one of the DRM drivers misbehaves, you want to state the versions of
117962306a36Sopenharmony_ci   libdrm and Mesa; also specify your Wayland compositor or the X-Server and
118062306a36Sopenharmony_ci   its driver. If you have a filesystem issue, mention the version of
118162306a36Sopenharmony_ci   corresponding filesystem utilities (e2fsprogs, btrfs-progs, xfsprogs, ...).
118262306a36Sopenharmony_ci
118362306a36Sopenharmony_ci * Gather additional information from the kernel that might be of interest. The
118462306a36Sopenharmony_ci   output from ``lspci -nn`` will for example help others to identify what
118562306a36Sopenharmony_ci   hardware you use. If you have a problem with hardware you even might want to
118662306a36Sopenharmony_ci   make the output from ``sudo lspci -vvv`` available, as that provides
118762306a36Sopenharmony_ci   insights how the components were configured. For some issues it might be
118862306a36Sopenharmony_ci   good to include the contents of files like ``/proc/cpuinfo``,
118962306a36Sopenharmony_ci   ``/proc/ioports``, ``/proc/iomem``, ``/proc/modules``, or
119062306a36Sopenharmony_ci   ``/proc/scsi/scsi``. Some subsystem also offer tools to collect relevant
119162306a36Sopenharmony_ci   information. One such tool is ``alsa-info.sh`` `which the audio/sound
119262306a36Sopenharmony_ci   subsystem developers provide <https://www.alsa-project.org/wiki/AlsaInfo>`_.
119362306a36Sopenharmony_ci
119462306a36Sopenharmony_ciThose examples should give your some ideas of what data might be wise to
119562306a36Sopenharmony_ciattach, but you have to think yourself what will be helpful for others to know.
119662306a36Sopenharmony_ciDon't worry too much about forgetting something, as developers will ask for
119762306a36Sopenharmony_ciadditional details they need. But making everything important available from
119862306a36Sopenharmony_cithe start increases the chance someone will take a closer look.
119962306a36Sopenharmony_ci
120062306a36Sopenharmony_ci
120162306a36Sopenharmony_ciThe important part: the head of your report
120262306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
120362306a36Sopenharmony_ci
120462306a36Sopenharmony_ciNow that you have the detailed part of the report prepared let's get to the
120562306a36Sopenharmony_cimost important section: the first few sentences. Thus go to the top, add
120662306a36Sopenharmony_cisomething like 'The detailed description:' before the part you just wrote and
120762306a36Sopenharmony_ciinsert two newlines at the top. Now write one normal length paragraph that
120862306a36Sopenharmony_cidescribes the issue roughly. Leave out all boring details and focus on the
120962306a36Sopenharmony_cicrucial parts readers need to know to understand what this is all about; if you
121062306a36Sopenharmony_cithink this bug affects a lot of users, mention this to get people interested.
121162306a36Sopenharmony_ci
121262306a36Sopenharmony_ciOnce you did that insert two more lines at the top and write a one sentence
121362306a36Sopenharmony_cisummary that explains quickly what the report is about. After that you have to
121462306a36Sopenharmony_ciget even more abstract and write an even shorter subject/title for the report.
121562306a36Sopenharmony_ci
121662306a36Sopenharmony_ciNow that you have written this part take some time to optimize it, as it is the
121762306a36Sopenharmony_cimost important parts of your report: a lot of people will only read this before
121862306a36Sopenharmony_cithey decide if reading the rest is time well spent.
121962306a36Sopenharmony_ci
122062306a36Sopenharmony_ciNow send or file the report like the :ref:`MAINTAINERS <maintainers>` file told
122162306a36Sopenharmony_ciyou, unless it's one of those 'issues of high priority' outlined earlier: in
122262306a36Sopenharmony_cithat case please read the next subsection first before sending the report on
122362306a36Sopenharmony_ciits way.
122462306a36Sopenharmony_ci
122562306a36Sopenharmony_ciSpecial handling for high priority issues
122662306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
122762306a36Sopenharmony_ci
122862306a36Sopenharmony_ciReports for high priority issues need special handling.
122962306a36Sopenharmony_ci
123062306a36Sopenharmony_ci**Severe issues**: make sure the subject or ticket title as well as the first
123162306a36Sopenharmony_ciparagraph makes the severeness obvious.
123262306a36Sopenharmony_ci
123362306a36Sopenharmony_ci**Regressions**: make the report's subject start with '[REGRESSION]'.
123462306a36Sopenharmony_ci
123562306a36Sopenharmony_ciIn case you performed a successful bisection, use the title of the change that
123662306a36Sopenharmony_ciintroduced the regression as the second part of your subject. Make the report
123762306a36Sopenharmony_cialso mention the commit id of the culprit. In case of an unsuccessful bisection,
123862306a36Sopenharmony_cimake your report mention the latest tested version that's working fine (say 5.7)
123962306a36Sopenharmony_ciand the oldest where the issue occurs (say 5.8-rc1).
124062306a36Sopenharmony_ci
124162306a36Sopenharmony_ciWhen sending the report by mail, CC the Linux regressions mailing list
124262306a36Sopenharmony_ci(regressions@lists.linux.dev). In case the report needs to be filed to some web
124362306a36Sopenharmony_citracker, proceed to do so. Once filed, forward the report by mail to the
124462306a36Sopenharmony_ciregressions list; CC the maintainer and the mailing list for the subsystem in
124562306a36Sopenharmony_ciquestion. Make sure to inline the forwarded report, hence do not attach it.
124662306a36Sopenharmony_ciAlso add a short note at the top where you mention the URL to the ticket.
124762306a36Sopenharmony_ci
124862306a36Sopenharmony_ciWhen mailing or forwarding the report, in case of a successful bisection add the
124962306a36Sopenharmony_ciauthor of the culprit to the recipients; also CC everyone in the signed-off-by
125062306a36Sopenharmony_cichain, which you find at the end of its commit message.
125162306a36Sopenharmony_ci
125262306a36Sopenharmony_ci**Security issues**: for these issues your will have to evaluate if a
125362306a36Sopenharmony_cishort-term risk to other users would arise if details were publicly disclosed.
125462306a36Sopenharmony_ciIf that's not the case simply proceed with reporting the issue as described.
125562306a36Sopenharmony_ciFor issues that bear such a risk you will need to adjust the reporting process
125662306a36Sopenharmony_cislightly:
125762306a36Sopenharmony_ci
125862306a36Sopenharmony_ci * If the MAINTAINERS file instructed you to report the issue by mail, do not
125962306a36Sopenharmony_ci   CC any public mailing lists.
126062306a36Sopenharmony_ci
126162306a36Sopenharmony_ci * If you were supposed to file the issue in a bug tracker make sure to mark
126262306a36Sopenharmony_ci   the ticket as 'private' or 'security issue'. If the bug tracker does not
126362306a36Sopenharmony_ci   offer a way to keep reports private, forget about it and send your report as
126462306a36Sopenharmony_ci   a private mail to the maintainers instead.
126562306a36Sopenharmony_ci
126662306a36Sopenharmony_ciIn both cases make sure to also mail your report to the addresses the
126762306a36Sopenharmony_ciMAINTAINERS file lists in the section 'security contact'. Ideally directly CC
126862306a36Sopenharmony_cithem when sending the report by mail. If you filed it in a bug tracker, forward
126962306a36Sopenharmony_cithe report's text to these addresses; but on top of it put a small note where
127062306a36Sopenharmony_ciyou mention that you filed it with a link to the ticket.
127162306a36Sopenharmony_ci
127262306a36Sopenharmony_ciSee Documentation/process/security-bugs.rst for more information.
127362306a36Sopenharmony_ci
127462306a36Sopenharmony_ci
127562306a36Sopenharmony_ciDuties after the report went out
127662306a36Sopenharmony_ci--------------------------------
127762306a36Sopenharmony_ci
127862306a36Sopenharmony_ci    *Wait for reactions and keep the thing rolling until you can accept the
127962306a36Sopenharmony_ci    outcome in one way or the other. Thus react publicly and in a timely manner
128062306a36Sopenharmony_ci    to any inquiries. Test proposed fixes. Do proactive testing: retest with at
128162306a36Sopenharmony_ci    least every first release candidate (RC) of a new mainline version and
128262306a36Sopenharmony_ci    report your results. Send friendly reminders if things stall. And try to
128362306a36Sopenharmony_ci    help yourself, if you don't get any help or if it's unsatisfying.*
128462306a36Sopenharmony_ci
128562306a36Sopenharmony_ciIf your report was good and you are really lucky then one of the developers
128662306a36Sopenharmony_cimight immediately spot what's causing the issue; they then might write a patch
128762306a36Sopenharmony_cito fix it, test it, and send it straight for integration in mainline while
128862306a36Sopenharmony_citagging it for later backport to stable and longterm kernels that need it. Then
128962306a36Sopenharmony_ciall you need to do is reply with a 'Thank you very much' and switch to a version
129062306a36Sopenharmony_ciwith the fix once it gets released.
129162306a36Sopenharmony_ci
129262306a36Sopenharmony_ciBut this ideal scenario rarely happens. That's why the job is only starting
129362306a36Sopenharmony_cionce you got the report out. What you'll have to do depends on the situations,
129462306a36Sopenharmony_cibut often it will be the things listed below. But before digging into the
129562306a36Sopenharmony_cidetails, here are a few important things you need to keep in mind for this part
129662306a36Sopenharmony_ciof the process.
129762306a36Sopenharmony_ci
129862306a36Sopenharmony_ci
129962306a36Sopenharmony_ciGeneral advice for further interactions
130062306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
130162306a36Sopenharmony_ci
130262306a36Sopenharmony_ci**Always reply in public**: When you filed the issue in a bug tracker, always
130362306a36Sopenharmony_cireply there and do not contact any of the developers privately about it. For
130462306a36Sopenharmony_cimailed reports always use the 'Reply-all' function when replying to any mails
130562306a36Sopenharmony_ciyou receive. That includes mails with any additional data you might want to add
130662306a36Sopenharmony_cito your report: go to your mail applications 'Sent' folder and use 'reply-all'
130762306a36Sopenharmony_cion your mail with the report. This approach will make sure the public mailing
130862306a36Sopenharmony_cilist(s) and everyone else that gets involved over time stays in the loop; it
130962306a36Sopenharmony_cialso keeps the mail thread intact, which among others is really important for
131062306a36Sopenharmony_cimailing lists to group all related mails together.
131162306a36Sopenharmony_ci
131262306a36Sopenharmony_ciThere are just two situations where a comment in a bug tracker or a 'Reply-all'
131362306a36Sopenharmony_ciis unsuitable:
131462306a36Sopenharmony_ci
131562306a36Sopenharmony_ci * Someone tells you to send something privately.
131662306a36Sopenharmony_ci
131762306a36Sopenharmony_ci * You were told to send something, but noticed it contains sensitive
131862306a36Sopenharmony_ci   information that needs to be kept private. In that case it's okay to send it
131962306a36Sopenharmony_ci   in private to the developer that asked for it. But note in the ticket or a
132062306a36Sopenharmony_ci   mail that you did that, so everyone else knows you honored the request.
132162306a36Sopenharmony_ci
132262306a36Sopenharmony_ci**Do research before asking for clarifications or help**: In this part of the
132362306a36Sopenharmony_ciprocess someone might tell you to do something that requires a skill you might
132462306a36Sopenharmony_cinot have mastered yet. For example, you might be asked to use some test tools
132562306a36Sopenharmony_ciyou never have heard of yet; or you might be asked to apply a patch to the
132662306a36Sopenharmony_ciLinux kernel sources to test if it helps. In some cases it will be fine sending
132762306a36Sopenharmony_cia reply asking for instructions how to do that. But before going that route try
132862306a36Sopenharmony_cito find the answer own your own by searching the internet; alternatively
132962306a36Sopenharmony_ciconsider asking in other places for advice. For example ask a friend or post
133062306a36Sopenharmony_ciabout it to a chatroom or forum you normally hang out.
133162306a36Sopenharmony_ci
133262306a36Sopenharmony_ci**Be patient**: If you are really lucky you might get a reply to your report
133362306a36Sopenharmony_ciwithin a few hours. But most of the time it will take longer, as maintainers
133462306a36Sopenharmony_ciare scattered around the globe and thus might be in a different time zone – one
133562306a36Sopenharmony_ciwhere they already enjoy their night away from keyboard.
133662306a36Sopenharmony_ci
133762306a36Sopenharmony_ciIn general, kernel developers will take one to five business days to respond to
133862306a36Sopenharmony_cireports. Sometimes it will take longer, as they might be busy with the merge
133962306a36Sopenharmony_ciwindows, other work, visiting developer conferences, or simply enjoying a long
134062306a36Sopenharmony_cisummer holiday.
134162306a36Sopenharmony_ci
134262306a36Sopenharmony_ciThe 'issues of high priority' (see above for an explanation) are an exception
134362306a36Sopenharmony_cihere: maintainers should address them as soon as possible; that's why you
134462306a36Sopenharmony_cishould wait a week at maximum (or just two days if it's something urgent)
134562306a36Sopenharmony_cibefore sending a friendly reminder.
134662306a36Sopenharmony_ci
134762306a36Sopenharmony_ciSometimes the maintainer might not be responding in a timely manner; other
134862306a36Sopenharmony_citimes there might be disagreements, for example if an issue qualifies as
134962306a36Sopenharmony_ciregression or not. In such cases raise your concerns on the mailing list and
135062306a36Sopenharmony_ciask others for public or private replies how to move on. If that fails, it
135162306a36Sopenharmony_cimight be appropriate to get a higher authority involved. In case of a WiFi
135262306a36Sopenharmony_cidriver that would be the wireless maintainers; if there are no higher level
135362306a36Sopenharmony_cimaintainers or all else fails, it might be one of those rare situations where
135462306a36Sopenharmony_ciit's okay to get Linus Torvalds involved.
135562306a36Sopenharmony_ci
135662306a36Sopenharmony_ci**Proactive testing**: Every time the first pre-release (the 'rc1') of a new
135762306a36Sopenharmony_cimainline kernel version gets released, go and check if the issue is fixed there
135862306a36Sopenharmony_cior if anything of importance changed. Mention the outcome in the ticket or in a
135962306a36Sopenharmony_cimail you sent as reply to your report (make sure it has all those in the CC
136062306a36Sopenharmony_cithat up to that point participated in the discussion). This will show your
136162306a36Sopenharmony_cicommitment and that you are willing to help. It also tells developers if the
136262306a36Sopenharmony_ciissue persists and makes sure they do not forget about it. A few other
136362306a36Sopenharmony_cioccasional retests (for example with rc3, rc5 and the final) are also a good
136462306a36Sopenharmony_ciidea, but only report your results if something relevant changed or if you are
136562306a36Sopenharmony_ciwriting something anyway.
136662306a36Sopenharmony_ci
136762306a36Sopenharmony_ciWith all these general things off the table let's get into the details of how
136862306a36Sopenharmony_cito help to get issues resolved once they were reported.
136962306a36Sopenharmony_ci
137062306a36Sopenharmony_ciInquires and testing request
137162306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~
137262306a36Sopenharmony_ci
137362306a36Sopenharmony_ciHere are your duties in case you got replies to your report:
137462306a36Sopenharmony_ci
137562306a36Sopenharmony_ci**Check who you deal with**: Most of the time it will be the maintainer or a
137662306a36Sopenharmony_cideveloper of the particular code area that will respond to your report. But as
137762306a36Sopenharmony_ciissues are normally reported in public it could be anyone that's replying —
137862306a36Sopenharmony_ciincluding people that want to help, but in the end might guide you totally off
137962306a36Sopenharmony_citrack with their questions or requests. That rarely happens, but it's one of
138062306a36Sopenharmony_cimany reasons why it's wise to quickly run an internet search to see who you're
138162306a36Sopenharmony_ciinteracting with. By doing this you also get aware if your report was heard by
138262306a36Sopenharmony_cithe right people, as a reminder to the maintainer (see below) might be in order
138362306a36Sopenharmony_cilater if discussion fades out without leading to a satisfying solution for the
138462306a36Sopenharmony_ciissue.
138562306a36Sopenharmony_ci
138662306a36Sopenharmony_ci**Inquiries for data**: Often you will be asked to test something or provide
138762306a36Sopenharmony_ciadditional details. Try to provide the requested information soon, as you have
138862306a36Sopenharmony_cithe attention of someone that might help and risk losing it the longer you
138962306a36Sopenharmony_ciwait; that outcome is even likely if you do not provide the information within
139062306a36Sopenharmony_cia few business days.
139162306a36Sopenharmony_ci
139262306a36Sopenharmony_ci**Requests for testing**: When you are asked to test a diagnostic patch or a
139362306a36Sopenharmony_cipossible fix, try to test it in timely manner, too. But do it properly and make
139462306a36Sopenharmony_cisure to not rush it: mixing things up can happen easily and can lead to a lot
139562306a36Sopenharmony_ciof confusion for everyone involved. A common mistake for example is thinking a
139662306a36Sopenharmony_ciproposed patch with a fix was applied, but in fact wasn't. Things like that
139762306a36Sopenharmony_cihappen even to experienced testers occasionally, but they most of the time will
139862306a36Sopenharmony_cinotice when the kernel with the fix behaves just as one without it.
139962306a36Sopenharmony_ci
140062306a36Sopenharmony_ciWhat to do when nothing of substance happens
140162306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
140262306a36Sopenharmony_ci
140362306a36Sopenharmony_ciSome reports will not get any reaction from the responsible Linux kernel
140462306a36Sopenharmony_cidevelopers; or a discussion around the issue evolved, but faded out with
140562306a36Sopenharmony_cinothing of substance coming out of it.
140662306a36Sopenharmony_ci
140762306a36Sopenharmony_ciIn these cases wait two (better: three) weeks before sending a friendly
140862306a36Sopenharmony_cireminder: maybe the maintainer was just away from keyboard for a while when
140962306a36Sopenharmony_ciyour report arrived or had something more important to take care of. When
141062306a36Sopenharmony_ciwriting the reminder, kindly ask if anything else from your side is needed to
141162306a36Sopenharmony_ciget the ball running somehow. If the report got out by mail, do that in the
141262306a36Sopenharmony_cifirst lines of a mail that is a reply to your initial mail (see above) which
141362306a36Sopenharmony_ciincludes a full quote of the original report below: that's on of those few
141462306a36Sopenharmony_cisituations where such a 'TOFU' (Text Over, Fullquote Under) is the right
141562306a36Sopenharmony_ciapproach, as then all the recipients will have the details at hand immediately
141662306a36Sopenharmony_ciin the proper order.
141762306a36Sopenharmony_ci
141862306a36Sopenharmony_ciAfter the reminder wait three more weeks for replies. If you still don't get a
141962306a36Sopenharmony_ciproper reaction, you first should reconsider your approach. Did you maybe try
142062306a36Sopenharmony_cito reach out to the wrong people? Was the report maybe offensive or so
142162306a36Sopenharmony_ciconfusing that people decided to completely stay away from it? The best way to
142262306a36Sopenharmony_cirule out such factors: show the report to one or two people familiar with FLOSS
142362306a36Sopenharmony_ciissue reporting and ask for their opinion. Also ask them for their advice how
142462306a36Sopenharmony_cito move forward. That might mean: prepare a better report and make those people
142562306a36Sopenharmony_cireview it before you send it out. Such an approach is totally fine; just
142662306a36Sopenharmony_cimention that this is the second and improved report on the issue and include a
142762306a36Sopenharmony_cilink to the first report.
142862306a36Sopenharmony_ci
142962306a36Sopenharmony_ciIf the report was proper you can send a second reminder; in it ask for advice
143062306a36Sopenharmony_ciwhy the report did not get any replies. A good moment for this second reminder
143162306a36Sopenharmony_cimail is shortly after the first pre-release (the 'rc1') of a new Linux kernel
143262306a36Sopenharmony_civersion got published, as you should retest and provide a status update at that
143362306a36Sopenharmony_cipoint anyway (see above).
143462306a36Sopenharmony_ci
143562306a36Sopenharmony_ciIf the second reminder again results in no reaction within a week, try to
143662306a36Sopenharmony_cicontact a higher-level maintainer asking for advice: even busy maintainers by
143762306a36Sopenharmony_cithen should at least have sent some kind of acknowledgment.
143862306a36Sopenharmony_ci
143962306a36Sopenharmony_ciRemember to prepare yourself for a disappointment: maintainers ideally should
144062306a36Sopenharmony_cireact somehow to every issue report, but they are only obliged to fix those
144162306a36Sopenharmony_ci'issues of high priority' outlined earlier. So don't be too devastating if you
144262306a36Sopenharmony_ciget a reply along the lines of 'thanks for the report, I have more important
144362306a36Sopenharmony_ciissues to deal with currently and won't have time to look into this for the
144462306a36Sopenharmony_ciforeseeable future'.
144562306a36Sopenharmony_ci
144662306a36Sopenharmony_ciIt's also possible that after some discussion in the bug tracker or on a list
144762306a36Sopenharmony_cinothing happens anymore and reminders don't help to motivate anyone to work out
144862306a36Sopenharmony_cia fix. Such situations can be devastating, but is within the cards when it
144962306a36Sopenharmony_cicomes to Linux kernel development. This and several other reasons for not
145062306a36Sopenharmony_cigetting help are explained in 'Why some issues won't get any reaction or remain
145162306a36Sopenharmony_ciunfixed after being reported' near the end of this document.
145262306a36Sopenharmony_ci
145362306a36Sopenharmony_ciDon't get devastated if you don't find any help or if the issue in the end does
145462306a36Sopenharmony_cinot get solved: the Linux kernel is FLOSS and thus you can still help yourself.
145562306a36Sopenharmony_ciYou for example could try to find others that are affected and team up with
145662306a36Sopenharmony_cithem to get the issue resolved. Such a team could prepare a fresh report
145762306a36Sopenharmony_citogether that mentions how many you are and why this is something that in your
145862306a36Sopenharmony_cioption should get fixed. Maybe together you can also narrow down the root cause
145962306a36Sopenharmony_cior the change that introduced a regression, which often makes developing a fix
146062306a36Sopenharmony_cieasier. And with a bit of luck there might be someone in the team that knows a
146162306a36Sopenharmony_cibit about programming and might be able to write a fix.
146262306a36Sopenharmony_ci
146362306a36Sopenharmony_ci
146462306a36Sopenharmony_ciReference for "Reporting regressions within a stable and longterm kernel line"
146562306a36Sopenharmony_ci------------------------------------------------------------------------------
146662306a36Sopenharmony_ci
146762306a36Sopenharmony_ciThis subsection provides details for the steps you need to perform if you face
146862306a36Sopenharmony_cia regression within a stable and longterm kernel line.
146962306a36Sopenharmony_ci
147062306a36Sopenharmony_ciMake sure the particular version line still gets support
147162306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
147262306a36Sopenharmony_ci
147362306a36Sopenharmony_ci    *Check if the kernel developers still maintain the Linux kernel version
147462306a36Sopenharmony_ci    line you care about: go to the front page of kernel.org and make sure it
147562306a36Sopenharmony_ci    mentions the latest release of the particular version line without an
147662306a36Sopenharmony_ci    '[EOL]' tag.*
147762306a36Sopenharmony_ci
147862306a36Sopenharmony_ciMost kernel version lines only get supported for about three months, as
147962306a36Sopenharmony_cimaintaining them longer is quite a lot of work. Hence, only one per year is
148062306a36Sopenharmony_cichosen and gets supported for at least two years (often six). That's why you
148162306a36Sopenharmony_cineed to check if the kernel developers still support the version line you care
148262306a36Sopenharmony_cifor.
148362306a36Sopenharmony_ci
148462306a36Sopenharmony_ciNote, if kernel.org lists two stable version lines on the front page, you
148562306a36Sopenharmony_cishould consider switching to the newer one and forget about the older one:
148662306a36Sopenharmony_cisupport for it is likely to be abandoned soon. Then it will get a "end-of-life"
148762306a36Sopenharmony_ci(EOL) stamp. Version lines that reached that point still get mentioned on the
148862306a36Sopenharmony_cikernel.org front page for a week or two, but are unsuitable for testing and
148962306a36Sopenharmony_cireporting.
149062306a36Sopenharmony_ci
149162306a36Sopenharmony_ciSearch stable mailing list
149262306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~
149362306a36Sopenharmony_ci
149462306a36Sopenharmony_ci    *Check the archives of the Linux stable mailing list for existing reports.*
149562306a36Sopenharmony_ci
149662306a36Sopenharmony_ciMaybe the issue you face is already known and was fixed or is about to. Hence,
149762306a36Sopenharmony_ci`search the archives of the Linux stable mailing list
149862306a36Sopenharmony_ci<https://lore.kernel.org/stable/>`_ for reports about an issue like yours. If
149962306a36Sopenharmony_ciyou find any matches, consider joining the discussion, unless the fix is
150062306a36Sopenharmony_cialready finished and scheduled to get applied soon.
150162306a36Sopenharmony_ci
150262306a36Sopenharmony_ciReproduce issue with the newest release
150362306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
150462306a36Sopenharmony_ci
150562306a36Sopenharmony_ci    *Install the latest release from the particular version line as a vanilla
150662306a36Sopenharmony_ci    kernel. Ensure this kernel is not tainted and still shows the problem, as
150762306a36Sopenharmony_ci    the issue might have already been fixed there. If you first noticed the
150862306a36Sopenharmony_ci    problem with a vendor kernel, check a vanilla build of the last version
150962306a36Sopenharmony_ci    known to work performs fine as well.*
151062306a36Sopenharmony_ci
151162306a36Sopenharmony_ciBefore investing any more time in this process you want to check if the issue
151262306a36Sopenharmony_ciwas already fixed in the latest release of version line you're interested in.
151362306a36Sopenharmony_ciThis kernel needs to be vanilla and shouldn't be tainted before the issue
151462306a36Sopenharmony_cihappens, as detailed outlined already above in the section "Install a fresh
151562306a36Sopenharmony_cikernel for testing".
151662306a36Sopenharmony_ci
151762306a36Sopenharmony_ciDid you first notice the regression with a vendor kernel? Then changes the
151862306a36Sopenharmony_civendor applied might be interfering. You need to rule that out by performing
151962306a36Sopenharmony_cia recheck. Say something broke when you updated from 5.10.4-vendor.42 to
152062306a36Sopenharmony_ci5.10.5-vendor.43. Then after testing the latest 5.10 release as outlined in
152162306a36Sopenharmony_cithe previous paragraph check if a vanilla build of Linux 5.10.4 works fine as
152262306a36Sopenharmony_ciwell. If things are broken there, the issue does not qualify as upstream
152362306a36Sopenharmony_ciregression and you need switch back to the main step-by-step guide to report
152462306a36Sopenharmony_cithe issue.
152562306a36Sopenharmony_ci
152662306a36Sopenharmony_ciReport the regression
152762306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~
152862306a36Sopenharmony_ci
152962306a36Sopenharmony_ci    *Send a short problem report to the Linux stable mailing list
153062306a36Sopenharmony_ci    (stable@vger.kernel.org) and CC the Linux regressions mailing list
153162306a36Sopenharmony_ci    (regressions@lists.linux.dev); if you suspect the cause in a particular
153262306a36Sopenharmony_ci    subsystem, CC its maintainer and its mailing list. Roughly describe the
153362306a36Sopenharmony_ci    issue and ideally explain how to reproduce it. Mention the first version
153462306a36Sopenharmony_ci    that shows the problem and the last version that's working fine. Then
153562306a36Sopenharmony_ci    wait for further instructions.*
153662306a36Sopenharmony_ci
153762306a36Sopenharmony_ciWhen reporting a regression that happens within a stable or longterm kernel
153862306a36Sopenharmony_ciline (say when updating from 5.10.4 to 5.10.5) a brief report is enough for
153962306a36Sopenharmony_cithe start to get the issue reported quickly. Hence a rough description to the
154062306a36Sopenharmony_cistable and regressions mailing list is all it takes; but in case you suspect
154162306a36Sopenharmony_cithe cause in a particular subsystem, CC its maintainers and its mailing list
154262306a36Sopenharmony_cias well, because that will speed things up.
154362306a36Sopenharmony_ci
154462306a36Sopenharmony_ciAnd note, it helps developers a great deal if you can specify the exact version
154562306a36Sopenharmony_cithat introduced the problem. Hence if possible within a reasonable time frame,
154662306a36Sopenharmony_citry to find that version using vanilla kernels. Lets assume something broke when
154762306a36Sopenharmony_ciyour distributor released a update from Linux kernel 5.10.5 to 5.10.8. Then as
154862306a36Sopenharmony_ciinstructed above go and check the latest kernel from that version line, say
154962306a36Sopenharmony_ci5.10.9. If it shows the problem, try a vanilla 5.10.5 to ensure that no patches
155062306a36Sopenharmony_cithe distributor applied interfere. If the issue doesn't manifest itself there,
155162306a36Sopenharmony_citry 5.10.7 and then (depending on the outcome) 5.10.8 or 5.10.6 to find the
155262306a36Sopenharmony_cifirst version where things broke. Mention it in the report and state that 5.10.9
155362306a36Sopenharmony_ciis still broken.
155462306a36Sopenharmony_ci
155562306a36Sopenharmony_ciWhat the previous paragraph outlines is basically a rough manual 'bisection'.
155662306a36Sopenharmony_ciOnce your report is out your might get asked to do a proper one, as it allows to
155762306a36Sopenharmony_cipinpoint the exact change that causes the issue (which then can easily get
155862306a36Sopenharmony_cireverted to fix the issue quickly). Hence consider to do a proper bisection
155962306a36Sopenharmony_ciright away if time permits. See the section 'Special care for regressions' and
156062306a36Sopenharmony_cithe document Documentation/admin-guide/bug-bisect.rst for details how to
156162306a36Sopenharmony_ciperform one. In case of a successful bisection add the author of the culprit to
156262306a36Sopenharmony_cithe recipients; also CC everyone in the signed-off-by chain, which you find at
156362306a36Sopenharmony_cithe end of its commit message.
156462306a36Sopenharmony_ci
156562306a36Sopenharmony_ci
156662306a36Sopenharmony_ciReference for "Reporting issues only occurring in older kernel version lines"
156762306a36Sopenharmony_ci-----------------------------------------------------------------------------
156862306a36Sopenharmony_ci
156962306a36Sopenharmony_ciThis section provides details for the steps you need to take if you could not
157062306a36Sopenharmony_cireproduce your issue with a mainline kernel, but want to see it fixed in older
157162306a36Sopenharmony_civersion lines (aka stable and longterm kernels).
157262306a36Sopenharmony_ci
157362306a36Sopenharmony_ciSome fixes are too complex
157462306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~
157562306a36Sopenharmony_ci
157662306a36Sopenharmony_ci    *Prepare yourself for the possibility that going through the next few steps
157762306a36Sopenharmony_ci    might not get the issue solved in older releases: the fix might be too big
157862306a36Sopenharmony_ci    or risky to get backported there.*
157962306a36Sopenharmony_ci
158062306a36Sopenharmony_ciEven small and seemingly obvious code-changes sometimes introduce new and
158162306a36Sopenharmony_citotally unexpected problems. The maintainers of the stable and longterm kernels
158262306a36Sopenharmony_ciare very aware of that and thus only apply changes to these kernels that are
158362306a36Sopenharmony_ciwithin rules outlined in Documentation/process/stable-kernel-rules.rst.
158462306a36Sopenharmony_ci
158562306a36Sopenharmony_ciComplex or risky changes for example do not qualify and thus only get applied
158662306a36Sopenharmony_cito mainline. Other fixes are easy to get backported to the newest stable and
158762306a36Sopenharmony_cilongterm kernels, but too risky to integrate into older ones. So be aware the
158862306a36Sopenharmony_cifix you are hoping for might be one of those that won't be backported to the
158962306a36Sopenharmony_civersion line your care about. In that case you'll have no other choice then to
159062306a36Sopenharmony_cilive with the issue or switch to a newer Linux version, unless you want to
159162306a36Sopenharmony_cipatch the fix into your kernels yourself.
159262306a36Sopenharmony_ci
159362306a36Sopenharmony_ciCommon preparations
159462306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~
159562306a36Sopenharmony_ci
159662306a36Sopenharmony_ci    *Perform the first three steps in the section "Reporting issues only
159762306a36Sopenharmony_ci    occurring in older kernel version lines" above.*
159862306a36Sopenharmony_ci
159962306a36Sopenharmony_ciYou need to carry out a few steps already described in another section of this
160062306a36Sopenharmony_ciguide. Those steps will let you:
160162306a36Sopenharmony_ci
160262306a36Sopenharmony_ci * Check if the kernel developers still maintain the Linux kernel version line
160362306a36Sopenharmony_ci   you care about.
160462306a36Sopenharmony_ci
160562306a36Sopenharmony_ci * Search the Linux stable mailing list for exiting reports.
160662306a36Sopenharmony_ci
160762306a36Sopenharmony_ci * Check with the latest release.
160862306a36Sopenharmony_ci
160962306a36Sopenharmony_ci
161062306a36Sopenharmony_ciCheck code history and search for existing discussions
161162306a36Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
161262306a36Sopenharmony_ci
161362306a36Sopenharmony_ci    *Search the Linux kernel version control system for the change that fixed
161462306a36Sopenharmony_ci    the issue in mainline, as its commit message might tell you if the fix is
161562306a36Sopenharmony_ci    scheduled for backporting already. If you don't find anything that way,
161662306a36Sopenharmony_ci    search the appropriate mailing lists for posts that discuss such an issue
161762306a36Sopenharmony_ci    or peer-review possible fixes; then check the discussions if the fix was
161862306a36Sopenharmony_ci    deemed unsuitable for backporting. If backporting was not considered at
161962306a36Sopenharmony_ci    all, join the newest discussion, asking if it's in the cards.*
162062306a36Sopenharmony_ci
162162306a36Sopenharmony_ciIn a lot of cases the issue you deal with will have happened with mainline, but
162262306a36Sopenharmony_cigot fixed there. The commit that fixed it would need to get backported as well
162362306a36Sopenharmony_cito get the issue solved. That's why you want to search for it or any
162462306a36Sopenharmony_cidiscussions abound it.
162562306a36Sopenharmony_ci
162662306a36Sopenharmony_ci * First try to find the fix in the Git repository that holds the Linux kernel
162762306a36Sopenharmony_ci   sources. You can do this with the web interfaces `on kernel.org
162862306a36Sopenharmony_ci   <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/>`_
162962306a36Sopenharmony_ci   or its mirror `on GitHub <https://github.com/torvalds/linux>`_; if you have
163062306a36Sopenharmony_ci   a local clone you alternatively can search on the command line with ``git
163162306a36Sopenharmony_ci   log --grep=<pattern>``.
163262306a36Sopenharmony_ci
163362306a36Sopenharmony_ci   If you find the fix, look if the commit message near the end contains a
163462306a36Sopenharmony_ci   'stable tag' that looks like this:
163562306a36Sopenharmony_ci
163662306a36Sopenharmony_ci          Cc: <stable@vger.kernel.org> # 5.4+
163762306a36Sopenharmony_ci
163862306a36Sopenharmony_ci   If that's case the developer marked the fix safe for backporting to version
163962306a36Sopenharmony_ci   line 5.4 and later. Most of the time it's getting applied there within two
164062306a36Sopenharmony_ci   weeks, but sometimes it takes a bit longer.
164162306a36Sopenharmony_ci
164262306a36Sopenharmony_ci * If the commit doesn't tell you anything or if you can't find the fix, look
164362306a36Sopenharmony_ci   again for discussions about the issue. Search the net with your favorite
164462306a36Sopenharmony_ci   internet search engine as well as the archives for the `Linux kernel
164562306a36Sopenharmony_ci   developers mailing list <https://lore.kernel.org/lkml/>`_. Also read the
164662306a36Sopenharmony_ci   section `Locate kernel area that causes the issue` above and follow the
164762306a36Sopenharmony_ci   instructions to find the subsystem in question: its bug tracker or mailing
164862306a36Sopenharmony_ci   list archive might have the answer you are looking for.
164962306a36Sopenharmony_ci
165062306a36Sopenharmony_ci * If you see a proposed fix, search for it in the version control system as
165162306a36Sopenharmony_ci   outlined above, as the commit might tell you if a backport can be expected.
165262306a36Sopenharmony_ci
165362306a36Sopenharmony_ci   * Check the discussions for any indicators the fix might be too risky to get
165462306a36Sopenharmony_ci     backported to the version line you care about. If that's the case you have
165562306a36Sopenharmony_ci     to live with the issue or switch to the kernel version line where the fix
165662306a36Sopenharmony_ci     got applied.
165762306a36Sopenharmony_ci
165862306a36Sopenharmony_ci   * If the fix doesn't contain a stable tag and backporting was not discussed,
165962306a36Sopenharmony_ci     join the discussion: mention the version where you face the issue and that
166062306a36Sopenharmony_ci     you would like to see it fixed, if suitable.
166162306a36Sopenharmony_ci
166262306a36Sopenharmony_ci
166362306a36Sopenharmony_ciAsk for advice
166462306a36Sopenharmony_ci~~~~~~~~~~~~~~
166562306a36Sopenharmony_ci
166662306a36Sopenharmony_ci    *One of the former steps should lead to a solution. If that doesn't work
166762306a36Sopenharmony_ci    out, ask the maintainers for the subsystem that seems to be causing the
166862306a36Sopenharmony_ci    issue for advice; CC the mailing list for the particular subsystem as well
166962306a36Sopenharmony_ci    as the stable mailing list.*
167062306a36Sopenharmony_ci
167162306a36Sopenharmony_ciIf the previous three steps didn't get you closer to a solution there is only
167262306a36Sopenharmony_cione option left: ask for advice. Do that in a mail you sent to the maintainers
167362306a36Sopenharmony_cifor the subsystem where the issue seems to have its roots; CC the mailing list
167462306a36Sopenharmony_cifor the subsystem as well as the stable mailing list (stable@vger.kernel.org).
167562306a36Sopenharmony_ci
167662306a36Sopenharmony_ci
167762306a36Sopenharmony_ciWhy some issues won't get any reaction or remain unfixed after being reported
167862306a36Sopenharmony_ci=============================================================================
167962306a36Sopenharmony_ci
168062306a36Sopenharmony_ciWhen reporting a problem to the Linux developers, be aware only 'issues of high
168162306a36Sopenharmony_cipriority' (regressions, security issues, severe problems) are definitely going
168262306a36Sopenharmony_cito get resolved. The maintainers or if all else fails Linus Torvalds himself
168362306a36Sopenharmony_ciwill make sure of that. They and the other kernel developers will fix a lot of
168462306a36Sopenharmony_ciother issues as well. But be aware that sometimes they can't or won't help; and
168562306a36Sopenharmony_cisometimes there isn't even anyone to send a report to.
168662306a36Sopenharmony_ci
168762306a36Sopenharmony_ciThis is best explained with kernel developers that contribute to the Linux
168862306a36Sopenharmony_cikernel in their spare time. Quite a few of the drivers in the kernel were
168962306a36Sopenharmony_ciwritten by such programmers, often because they simply wanted to make their
169062306a36Sopenharmony_cihardware usable on their favorite operating system.
169162306a36Sopenharmony_ci
169262306a36Sopenharmony_ciThese programmers most of the time will happily fix problems other people
169362306a36Sopenharmony_cireport. But nobody can force them to do, as they are contributing voluntarily.
169462306a36Sopenharmony_ci
169562306a36Sopenharmony_ciThen there are situations where such developers really want to fix an issue,
169662306a36Sopenharmony_cibut can't: sometimes they lack hardware programming documentation to do so.
169762306a36Sopenharmony_ciThis often happens when the publicly available docs are superficial or the
169862306a36Sopenharmony_cidriver was written with the help of reverse engineering.
169962306a36Sopenharmony_ci
170062306a36Sopenharmony_ciSooner or later spare time developers will also stop caring for the driver.
170162306a36Sopenharmony_ciMaybe their test hardware broke, got replaced by something more fancy, or is so
170262306a36Sopenharmony_ciold that it's something you don't find much outside of computer museums
170362306a36Sopenharmony_cianymore. Sometimes developer stops caring for their code and Linux at all, as
170462306a36Sopenharmony_cisomething different in their life became way more important. In some cases
170562306a36Sopenharmony_cinobody is willing to take over the job as maintainer – and nobody can be forced
170662306a36Sopenharmony_cito, as contributing to the Linux kernel is done on a voluntary basis. Abandoned
170762306a36Sopenharmony_cidrivers nevertheless remain in the kernel: they are still useful for people and
170862306a36Sopenharmony_ciremoving would be a regression.
170962306a36Sopenharmony_ci
171062306a36Sopenharmony_ciThe situation is not that different with developers that are paid for their
171162306a36Sopenharmony_ciwork on the Linux kernel. Those contribute most changes these days. But their
171262306a36Sopenharmony_ciemployers sooner or later also stop caring for their code or make its
171362306a36Sopenharmony_ciprogrammer focus on other things. Hardware vendors for example earn their money
171462306a36Sopenharmony_cimainly by selling new hardware; quite a few of them hence are not investing
171562306a36Sopenharmony_cimuch time and energy in maintaining a Linux kernel driver for something they
171662306a36Sopenharmony_cistopped selling years ago. Enterprise Linux distributors often care for a
171762306a36Sopenharmony_cilonger time period, but in new versions often leave support for old and rare
171862306a36Sopenharmony_cihardware aside to limit the scope. Often spare time contributors take over once
171962306a36Sopenharmony_cia company orphans some code, but as mentioned above: sooner or later they will
172062306a36Sopenharmony_cileave the code behind, too.
172162306a36Sopenharmony_ci
172262306a36Sopenharmony_ciPriorities are another reason why some issues are not fixed, as maintainers
172362306a36Sopenharmony_ciquite often are forced to set those, as time to work on Linux is limited.
172462306a36Sopenharmony_ciThat's true for spare time or the time employers grant their developers to
172562306a36Sopenharmony_cispend on maintenance work on the upstream kernel. Sometimes maintainers also
172662306a36Sopenharmony_ciget overwhelmed with reports, even if a driver is working nearly perfectly. To
172762306a36Sopenharmony_cinot get completely stuck, the programmer thus might have no other choice than
172862306a36Sopenharmony_cito prioritize issue reports and reject some of them.
172962306a36Sopenharmony_ci
173062306a36Sopenharmony_ciBut don't worry too much about all of this, a lot of drivers have active
173162306a36Sopenharmony_cimaintainers who are quite interested in fixing as many issues as possible.
173262306a36Sopenharmony_ci
173362306a36Sopenharmony_ci
173462306a36Sopenharmony_ciClosing words
173562306a36Sopenharmony_ci=============
173662306a36Sopenharmony_ci
173762306a36Sopenharmony_ciCompared with other Free/Libre & Open Source Software it's hard to report
173862306a36Sopenharmony_ciissues to the Linux kernel developers: the length and complexity of this
173962306a36Sopenharmony_cidocument and the implications between the lines illustrate that. But that's how
174062306a36Sopenharmony_ciit is for now. The main author of this text hopes documenting the state of the
174162306a36Sopenharmony_ciart will lay some groundwork to improve the situation over time.
174262306a36Sopenharmony_ci
174362306a36Sopenharmony_ci
174462306a36Sopenharmony_ci..
174562306a36Sopenharmony_ci   end-of-content
174662306a36Sopenharmony_ci..
174762306a36Sopenharmony_ci   This document is maintained by Thorsten Leemhuis <linux@leemhuis.info>. If
174862306a36Sopenharmony_ci   you spot a typo or small mistake, feel free to let him know directly and
174962306a36Sopenharmony_ci   he'll fix it. You are free to do the same in a mostly informal way if you
175062306a36Sopenharmony_ci   want to contribute changes to the text, but for copyright reasons please CC
175162306a36Sopenharmony_ci   linux-doc@vger.kernel.org and "sign-off" your contribution as
175262306a36Sopenharmony_ci   Documentation/process/submitting-patches.rst outlines in the section "Sign
175362306a36Sopenharmony_ci   your work - the Developer's Certificate of Origin".
175462306a36Sopenharmony_ci..
175562306a36Sopenharmony_ci   This text is available under GPL-2.0+ or CC-BY-4.0, as stated at the top
175662306a36Sopenharmony_ci   of the file. If you want to distribute this text under CC-BY-4.0 only,
175762306a36Sopenharmony_ci   please use "The Linux kernel developers" for author attribution and link
175862306a36Sopenharmony_ci   this as source:
175962306a36Sopenharmony_ci   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/Documentation/admin-guide/reporting-issues.rst
176062306a36Sopenharmony_ci..
176162306a36Sopenharmony_ci   Note: Only the content of this RST file as found in the Linux kernel sources
176262306a36Sopenharmony_ci   is available under CC-BY-4.0, as versions of this text that were processed
176362306a36Sopenharmony_ci   (for example by the kernel's build system) might contain content taken from
176462306a36Sopenharmony_ci   files which use a more restrictive license.
1765