Merge tag 'io_uring-5.11-2021-01-16' of git://git.kernel.dk/linux-block
[linux/fpc-iii.git] / Documentation / admin-guide / reporting-issues.rst
blob07879d01fe6854f953adfb3abfcb0ad29e009cf8
1 .. SPDX-License-Identifier: (GPL-2.0+ OR CC-BY-4.0)
2 ..
3    If you want to distribute this text under CC-BY-4.0 only, please use 'The
4    Linux kernel developers' for author attribution and link this as source:
5    https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/Documentation/admin-guide/reporting-issues.rst
6 ..
7    Note: Only the content of this RST file as found in the Linux kernel sources
8    is available under CC-BY-4.0, as versions of this text that were processed
9    (for example by the kernel's build system) might contain content taken from
10    files which use a more restrictive license.
12 .. important::
14    This document is being prepared to replace
15    'Documentation/admin-guide/reporting-bugs.rst'. The main work is done and
16    you are already free to follow its instructions when reporting issues to the
17    Linux kernel developers. But keep in mind, below text still needs a few
18    finishing touches and review. It was merged to the Linux kernel sources at
19    this stage to make this process easier and increase the text's visibility.
21    Any improvements for the text or other feedback is thus very much welcome.
22    Please send it to 'Thorsten Leemhuis <linux@leemhuis.info>' and 'Jonathan
23    Corbet <corbet@lwn.net>', ideally with 'Linux kernel mailing list (LKML)
24    <linux-kernel@vger.kernel.org>' and the 'Linux Kernel Documentation List
25    <linux-doc@vger.kernel.org>' in CC.
27    Areas in the text that still need work or discussion contain a hint like this
28    which point out the remaining issues; all of them start with the word "FIXME"
29    to make them easy to find.
32 Reporting issues
33 ++++++++++++++++
36 The short guide (aka TL;DR)
37 ===========================
39 If you're facing multiple issues with the Linux kernel at once, report each
40 separately to its developers. Try your best guess which kernel part might be
41 causing the issue. Check the :ref:`MAINTAINERS <maintainers>` file for how its
42 developers expect to be told about issues. Note, it's rarely
43 `bugzilla.kernel.org <https://bugzilla.kernel.org/>`_, as in almost all cases
44 the report needs to be sent by email!
46 Check the destination thoroughly for existing reports; also search the LKML
47 archives and the web. Join existing discussion if you find matches. If you
48 don't find any, install `the latest Linux mainline kernel
49 <https://kernel.org/>`_. Make sure it's vanilla, thus is not patched or using
50 add-on kernel modules. Also ensure the kernel is running in a healthy
51 environment and is not already tainted before the issue occurs.
53 If you can reproduce your issue with the mainline kernel, send a report to the
54 destination you determined earlier. Make sure it includes all relevant
55 information, which in case of a regression should mention the change that's
56 causing it which can often can be found with a bisection. Also ensure the
57 report reaches all people that need to know about it, for example the security
58 team, the stable maintainers or the developers of the patch that causes a
59 regression. Once the report is out, answer any questions that might be raised
60 and help where you can. That includes keeping the ball rolling: every time a
61 new rc1 mainline kernel is released, check if the issue is still happening
62 there and attach a status update to your initial report.
64 If you can not reproduce the issue with the mainline kernel, consider sticking
65 with it; if you'd like to use an older version line and want to see it fixed
66 there, first make sure it's still supported. Install its latest release as
67 vanilla kernel. If you cannot reproduce the issue there, try to find the commit
68 that fixed it in mainline or any discussion preceding it: those will often
69 mention if backporting is planed or considered too complex. If backporting was
70 not discussed, ask if it's in the cards. In case you don't find any commits or
71 a preceding discussion, see the Linux-stable mailing list archives for existing
72 reports, as it might be a regression specific to the version line. If it is,
73 report it like you would report a problem in mainline (including the
74 bisection).
76 If you reached this point without a solution, ask for advice one the
77 subsystem's mailing list.
80 Step-by-step guide how to report issues to the kernel maintainers
81 =================================================================
83 The above TL;DR outlines roughly how to report issues to the Linux kernel
84 developers. It might be all that's needed for people already familiar with
85 reporting issues to Free/Libre & Open Source Software (FLOSS) projects. For
86 everyone else there is this section. It is more detailed and uses a
87 step-by-step approach. It still tries to be brief for readability and leaves
88 out a lot of details; those are described below the step-by-step guide in a
89 reference section, which explains each of the steps in more detail.
91 Note: this section covers a few more aspects than the TL;DR and does things in
92 a slightly different order. That's in your interest, to make sure you notice
93 early if an issue that looks like a Linux kernel problem is actually caused by
94 something else. These steps thus help to ensure the time you invest in this
95 process won't feel wasted in the end:
97  * Stop reading this document and report the problem to your vendor instead,
98    unless you are running the latest mainline kernel already or are willing to
99    install it. This kernel must not be modified or enhanced in any way, and
100    thus be considered 'vanilla'.
102  * See if the issue you are dealing with qualifies as regression, security
103    issue, or a really severe problem: those are 'issues of high priority' that
104    need special handling in some steps that are about to follow.
106  * Check if your kernel was 'tainted' when the issue occurred, as the event
107    that made the kernel set this flag might be causing the issue you face.
109  * Locate the driver or kernel subsystem that seems to be causing the issue.
110    Find out how and where its developers expect reports. Note: most of the
111    time this won't be bugzilla.kernel.org, as issues typically need to be sent
112    by mail to a maintainer and a public mailing list.
114  * Search the archives of the bug tracker or mailing list in question
115    thoroughly for reports that might match your issue. Also check if you find
116    something with your favorite internet search engine or in the Linux Kernel
117    Mailing List (LKML) archives. If you find anything, join the discussion
118    instead of sending a new report.
120  * Create a fresh backup and put system repair and restore tools at hand.
122  * Ensure your system does not enhance its kernels by building additional
123    kernel modules on-the-fly, which solutions like DKMS might be doing locally
124    without your knowledge.
126  * Make sure it's not the kernel's surroundings that are causing the issue
127    you face.
129  * Write down coarsely how to reproduce the issue. If you deal with multiple
130    issues at once, create separate notes for each of them and make sure they
131    work independently on a freshly booted system. That's needed, as each issue
132    needs to get reported to the kernel developers separately, unless they are
133    strongly entangled.
135 After these preparations you'll now enter the main part:
137  * Install the latest Linux mainline kernel: that's where all issues get
138    fixed first, because it's the version line the kernel developers mainly
139    care about. Testing and reporting with the latest Linux stable kernel can
140    be an acceptable alternative in some situations, for example during the
141    merge window; but during that period you might want to suspend your efforts
142    till its end anyway.
144  * Ensure the kernel you just installed does not 'taint' itself when
145    running.
147  * Reproduce the issue with the kernel you just installed. If it doesn't show
148    up there, head over to the instructions for issues only happening with
149    stable and longterm kernels.
151  * Optimize your notes: try to find and write the most straightforward way to
152    reproduce your issue. Make sure the end result has all the important
153    details, and at the same time is easy to read and understand for others
154    that hear about it for the first time. And if you learned something in this
155    process, consider searching again for existing reports about the issue.
157  * If the failure includes a stack dump, like an Oops does, consider decoding
158    it to find the offending line of code.
160  * If your problem is a regression, try to narrow down when the issue was
161    introduced as much as possible.
163  * Start to compile the report by writing a detailed description about the
164    issue. Always mention a few things: the latest kernel version you installed
165    for reproducing, the Linux Distribution used, and your notes on how to
166    reproduce the issue. Ideally, make the kernel's build configuration
167    (.config) and the output from ``dmesg`` available somewhere on the net and
168    link to it. Include or upload all other information that might be relevant,
169    like the output/screenshot of an Oops or the output from ``lspci``. Once
170    you wrote this main part, insert a normal length paragraph on top of it
171    outlining the issue and the impact quickly. On top of this add one sentence
172    that briefly describes the problem and gets people to read on. Now give the
173    thing a descriptive title or subject that yet again is shorter. Then you're
174    ready to send or file the report like the MAINTAINERS file told you, unless
175    you are dealing with one of those 'issues of high priority': they need
176    special care which is explained in 'Special handling for high priority
177    issues' below.
179  * Wait for reactions and keep the thing rolling until you can accept the
180    outcome in one way or the other. Thus react publicly and in a timely manner
181    to any inquiries. Test proposed fixes. Do proactive testing: retest with at
182    least every first release candidate (RC) of a new mainline version and
183    report your results. Send friendly reminders if things stall. And try to
184    help yourself, if you don't get any help or if it's unsatisfying.
187 Reporting issues only occurring in older kernel version lines
188 -------------------------------------------------------------
190 This section is for you, if you tried the latest mainline kernel as outlined
191 above, but failed to reproduce your issue there; at the same time you want to
192 see the issue fixed in older version lines or a vendor kernel that's regularly
193 rebased on new stable or longterm releases. If that case follow these steps:
195  * Prepare yourself for the possibility that going through the next few steps
196    might not get the issue solved in older releases: the fix might be too big
197    or risky to get backported there.
199  * Check if the kernel developers still maintain the Linux kernel version
200    line you care about: go to the front page of kernel.org and make sure it
201    mentions the latest release of the particular version line without an
202    '[EOL]' tag.
204  * Check the archives of the Linux stable mailing list for existing reports.
206  * Install the latest release from the particular version line as a vanilla
207    kernel. Ensure this kernel is not tainted and still shows the problem, as
208    the issue might have already been fixed there.
210  * Search the Linux kernel version control system for the change that fixed
211    the issue in mainline, as its commit message might tell you if the fix is
212    scheduled for backporting already. If you don't find anything that way,
213    search the appropriate mailing lists for posts that discuss such an issue
214    or peer-review possible fixes; then check the discussions if the fix was
215    deemed unsuitable for backporting. If backporting was not considered at
216    all, join the newest discussion, asking if it's in the cards.
218  * Check if you're dealing with a regression that was never present in
219    mainline by installing the first release of the version line you care
220    about. If the issue doesn't show up with it, you basically need to report
221    the issue with this version like you would report a problem with mainline
222    (see above). This ideally includes a bisection followed by a search for
223    existing reports on the net; with the help of the subject and the two
224    relevant commit-ids. If that doesn't turn up anything, write the report; CC
225    or forward the report to the stable maintainers, the stable mailing list,
226    and those who authored the change. Include the shortened commit-id if you
227    found the change that causes it.
229  * One of the former steps should lead to a solution. If that doesn't work
230    out, ask the maintainers for the subsystem that seems to be causing the
231    issue for advice; CC the mailing list for the particular subsystem as well
232    as the stable mailing list.
235 Reference section: Reporting issues to the kernel maintainers
236 =============================================================
238 The detailed guides above outline all the major steps in brief fashion, which
239 should be enough for most people. But sometimes there are situations where even
240 experienced users might wonder how to actually do one of those steps. That's
241 what this section is for, as it will provide a lot more details on each of the
242 above steps. Consider this as reference documentation: it's possible to read it
243 from top to bottom. But it's mainly meant to skim over and a place to look up
244 details how to actually perform those steps.
246 A few words of general advice before digging into the details:
248  * The Linux kernel developers are well aware this process is complicated and
249    demands more than other FLOSS projects. We'd love to make it simpler. But
250    that would require work in various places as well as some infrastructure,
251    which would need constant maintenance; nobody has stepped up to do that
252    work, so that's just how things are for now.
254  * A warranty or support contract with some vendor doesn't entitle you to
255    request fixes from developers in the upstream Linux kernel community: such
256    contracts are completely outside the scope of the Linux kernel, its
257    development community, and this document. That's why you can't demand
258    anything such a contract guarantees in this context, not even if the
259    developer handling the issue works for the vendor in question. If you want
260    to claim your rights, use the vendor's support channel instead. When doing
261    so, you might want to mention you'd like to see the issue fixed in the
262    upstream Linux kernel; motivate them by saying it's the only way to ensure
263    the fix in the end will get incorporated in all Linux distributions.
265  * If you never reported an issue to a FLOSS project before you should consider
266    reading `How to Report Bugs Effectively
267    <https://www.chiark.greenend.org.uk/~sgtatham/bugs.html>`_, `How To Ask
268    Questions The Smart Way
269    <http://www.catb.org/esr/faqs/smart-questions.html>`_, and `How to ask good
270    questions <https://jvns.ca/blog/good-questions/>`_.
272 With that off the table, find below the details on how to properly report
273 issues to the Linux kernel developers.
276 Make sure you're using the upstream Linux kernel
277 ------------------------------------------------
279    *Stop reading this document and report the problem to your vendor instead,
280    unless you are running the latest mainline kernel already or are willing to
281    install it. This kernel must not be modified or enhanced in any way, and
282    thus be considered 'vanilla'.*
284 Like most programmers, Linux kernel developers don't like to spend time dealing
285 with reports for issues that don't even happen with the source code they
286 maintain: it's just a waste everybody's time, yours included. That's why you
287 later will have to test your issue with the latest 'vanilla' kernel: a kernel
288 that was build using the Linux sources taken straight from `kernel.org
289 <https://kernel.org/>`_ and not modified or enhanced in any way.
291 Almost all kernels used in devices (Computers, Laptops, Smartphones, Routers,
292 …) and most kernels shipped by Linux distributors are ancient from the point of
293 kernel development and heavily modified. They thus do not qualify for reporting
294 an issue to the Linux kernel developers: the issue you face with such a kernel
295 might be fixed already or caused by the changes or additions, even if they look
296 small or totally unrelated. That's why issues with such kernels need to be
297 reported to the vendor that distributed it. Its developers should look into the
298 report and, in case it turns out to be an upstream issue, fix it directly
299 upstream or report it there. In practice that sometimes does not work out. If
300 that the case, you might want to circumvent the vendor by installing the latest
301 mainline kernel yourself and reporting the issue as outlined in this document;
302 just make sure to use really fresh kernel (see below).
305 .. note::
307    FIXME: Should we accept reports for issues with kernel images that are pretty
308    close to vanilla? But when are they close enough and how to put that line in
309    words? Maybe something like this?
311     *Note: Some Linux kernel developers accept reports from vendor kernels that
312     are known to be close to upstream. That for example is often the case for
313     the kernels that Debian GNU/Linux Sid or Fedora Rawhide ship, which are
314     normally following mainline closely and carry only a few patches. So a
315     report with one of these might be accepted by the developers that need to
316     handle it. But if they do, depends heavily on the individual developers and
317     the issue at hand. That's why installing a mainline vanilla kernel is the
318     safe bet.*
320     *Arch Linux, other Fedora releases, and openSUSE Tumbleweed often use quite
321     recent stable kernels that are pretty close to upstream, too. Some
322     developers accept bugs from them as well. But note that you normally should
323     avoid stable kernels for reporting issues and use a mainline kernel instead
324     (see below).*
326    Are there any other major Linux distributions that should be mentioned here?
329 Issue of high priority?
330 -----------------------
332     *See if the issue you are dealing with qualifies as regression, security
333     issue, or a really severe problem: those are 'issues of high priority' that
334     need special handling in some steps that are about to follow.*
336 Linus Torvalds and the leading Linux kernel developers want to see some issues
337 fixed as soon as possible, hence there are 'issues of high priority' that get
338 handled slightly differently in the reporting process. Three type of cases
339 qualify: regressions, security issues, and really severe problems.
341 You deal with a 'regression' if something that worked with an older version of
342 the Linux kernel does not work with a newer one or somehow works worse with it.
343 It thus is a regression when a WiFi driver that did a fine job with Linux 5.7
344 somehow misbehaves with 5.8 or doesn't work at all. It's also a regression if
345 an application shows erratic behavior with a newer kernel, which might happen
346 due to incompatible changes in the interface between the kernel and the
347 userland (like procfs and sysfs). Significantly reduced performance or
348 increased power consumption also qualify as regression. But keep in mind: the
349 new kernel needs to be built with a configuration that is similar to the one
350 from the old kernel (see below how to achieve that). That's because the kernel
351 developers sometimes can not avoid incompatibilities when implementing new
352 features; but to avoid regressions such features have to be enabled explicitly
353 during build time configuration.
355 What qualifies as security issue is left to your judgment. Consider reading
356 'Documentation/admin-guide/security-bugs.rst' before proceeding, as it
357 provides additional details how to best handle security issues.
359 An issue is a 'really severe problem' when something totally unacceptably bad
360 happens. That's for example the case when a Linux kernel corrupts the data it's
361 handling or damages hardware it's running on. You're also dealing with a severe
362 issue when the kernel suddenly stops working with an error message ('kernel
363 panic') or without any farewell note at all. Note: do not confuse a 'panic' (a
364 fatal error where the kernel stop itself) with a 'Oops' (a recoverable error),
365 as the kernel remains running after the latter.
368 Check 'taint' flag
369 ------------------
371     *Check if your kernel was 'tainted' when the issue occurred, as the event
372     that made the kernel set this flag might be causing the issue you face.*
374 The kernel marks itself with a 'taint' flag when something happens that might
375 lead to follow-up errors that look totally unrelated. The issue you face might
376 be such an error if your kernel is tainted. That's why it's in your interest to
377 rule this out early before investing more time into this process. This is the
378 only reason why this step is here, as this process later will tell you to
379 install the latest mainline kernel; you will need to check the taint flag again
380 then, as that's when it matters because it's the kernel the report will focus
383 On a running system is easy to check if the kernel tainted itself: if ``cat
384 /proc/sys/kernel/tainted`` returns '0' then the kernel is not tainted and
385 everything is fine. Checking that file is impossible in some situations; that's
386 why the kernel also mentions the taint status when it reports an internal
387 problem (a 'kernel bug'), a recoverable error (a 'kernel Oops') or a
388 non-recoverable error before halting operation (a 'kernel panic'). Look near
389 the top of the error messages printed when one of these occurs and search for a
390 line starting with 'CPU:'. It should end with 'Not tainted' if the kernel was
391 not tainted when it noticed the problem; it was tainted if you see 'Tainted:'
392 followed by a few spaces and some letters.
394 If your kernel is tainted, study 'Documentation/admin-guide/tainted-kernels.rst'
395 to find out why. Try to eliminate the reason. Often it's caused by one these
396 three things:
398  1. A recoverable error (a 'kernel Oops') occurred and the kernel tainted
399     itself, as the kernel knows it might misbehave in strange ways after that
400     point. In that case check your kernel or system log and look for a section
401     that starts with this::
403        Oops: 0000 [#1] SMP
405     That's the first Oops since boot-up, as the '#1' between the brackets shows.
406     Every Oops and any other problem that happens after that point might be a
407     follow-up problem to that first Oops, even if both look totally unrelated.
408     Rule this out by getting rid of the cause for the first Oops and reproducing
409     the issue afterwards. Sometimes simply restarting will be enough, sometimes
410     a change to the configuration followed by a reboot can eliminate the Oops.
411     But don't invest too much time into this at this point of the process, as
412     the cause for the Oops might already be fixed in the newer Linux kernel
413     version you are going to install later in this process.
415  2. Your system uses a software that installs its own kernel modules, for
416     example Nvidia's proprietary graphics driver or VirtualBox. The kernel
417     taints itself when it loads such module from external sources (even if
418     they are Open Source): they sometimes cause errors in unrelated kernel
419     areas and thus might be causing the issue you face. You therefore have to
420     prevent those modules from loading when you want to report an issue to the
421     Linux kernel developers. Most of the time the easiest way to do that is:
422     temporarily uninstall such software including any modules they might have
423     installed. Afterwards reboot.
425  3. The kernel also taints itself when it's loading a module that resides in
426     the staging tree of the Linux kernel source. That's a special area for
427     code (mostly drivers) that does not yet fulfill the normal Linux kernel
428     quality standards. When you report an issue with such a module it's
429     obviously okay if the kernel is tainted; just make sure the module in
430     question is the only reason for the taint. If the issue happens in an
431     unrelated area reboot and temporarily block the module from being loaded
432     by specifying ``foo.blacklist=1`` as kernel parameter (replace 'foo' with
433     the name of the module in question).
436 Locate kernel area that causes the issue
437 ----------------------------------------
439     *Locate the driver or kernel subsystem that seems to be causing the issue.
440     Find out how and where its developers expect reports. Note: most of the
441     time this won't be bugzilla.kernel.org, as issues typically need to be sent
442     by mail to a maintainer and a public mailing list.*
444 It's crucial to send your report to the right people, as the Linux kernel is a
445 big project and most of its developers are only familiar with a small subset of
446 it. Quite a few programmers for example only care for just one driver, for
447 example one for a WiFi chip; its developer likely will only have small or no
448 knowledge about the internals of remote or unrelated "subsystems", like the TCP
449 stack, the PCIe/PCI subsystem, memory management or file systems.
451 Problem is: the Linux kernel lacks a central bug tracker where you can simply
452 file your issue and make it reach the developers that need to know about it.
453 That's why you have to find the right place and way to report issues yourself.
454 You can do that with the help of a script (see below), but it mainly targets
455 kernel developers and experts. For everybody else the MAINTAINERS file is the
456 better place.
458 How to read the MAINTAINERS file
459 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
460 To illustrate how to use the :ref:`MAINTAINERS <maintainers>` file, lets assume
461 the WiFi in your Laptop suddenly misbehaves after updating the kernel. In that
462 case it's likely an issue in the WiFi driver. Obviously it could also be some
463 code it builds upon, but unless you suspect something like that stick to the
464 driver. If it's really something else, the driver's developers will get the
465 right people involved.
467 Sadly, there is no way to check which code is driving a particular hardware
468 component that is both universal and easy.
470 In case of a problem with the WiFi driver you for example might want to look at
471 the output of ``lspci -k``, as it lists devices on the PCI/PCIe bus and the
472 kernel module driving it::
474        [user@something ~]$ lspci -k
475        [...]
476        3a:00.0 Network controller: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter (rev 32)
477          Subsystem: Bigfoot Networks, Inc. Device 1535
478          Kernel driver in use: ath10k_pci
479          Kernel modules: ath10k_pci
480        [...]
482 But this approach won't work if your WiFi chip is connected over USB or some
483 other internal bus. In those cases you might want to check your WiFi manager or
484 the output of ``ip link``. Look for the name of the problematic network
485 interface, which might be something like 'wlp58s0'. This name can be used like
486 this to find the module driving it::
488        [user@something ~]$ realpath --relative-to=/sys/module/ /sys/class/net/wlp58s0/device/driver/module
489        ath10k_pci
491 In case tricks like these don't bring you any further, try to search the
492 internet on how to narrow down the driver or subsystem in question. And if you
493 are unsure which it is: just try your best guess, somebody will help you if you
494 guessed poorly.
496 Once you know the driver or subsystem, you want to search for it in the
497 MAINTAINERS file. In the case of 'ath10k_pci' you won't find anything, as the
498 name is too specific. Sometimes you will need to search on the net for help;
499 but before doing so, try a somewhat shorted or modified name when searching the
500 MAINTAINERS file, as then you might find something like this::
502        QUALCOMM ATHEROS ATH10K WIRELESS DRIVER
503        Mail:          A. Some Human <shuman@example.com>
504        Mailing list:  ath10k@lists.infradead.org
505        Status:        Supported
506        Web-page:      https://wireless.wiki.kernel.org/en/users/Drivers/ath10k
507        SCM:           git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
508        Files:         drivers/net/wireless/ath/ath10k/
510 Note: the line description will be abbreviations, if you read the plain
511 MAINTAINERS file found in the root of the Linux source tree. 'Mail:' for
512 example will be 'M:', 'Mailing list:' will be 'L', and 'Status:' will be 'S:'.
513 A section near the top of the file explains these and other abbreviations.
515 First look at the line 'Status'. Ideally it should be 'Supported' or
516 'Maintained'. If it states 'Obsolete' then you are using some outdated approach
517 that was replaced by a newer solution you need to switch to. Sometimes the code
518 only has someone who provides 'Odd Fixes' when feeling motivated. And with
519 'Orphan' you are totally out of luck, as nobody takes care of the code anymore.
520 That only leaves these options: arrange yourself to live with the issue, fix it
521 yourself, or find a programmer somewhere willing to fix it.
523 After checking the status, look for a line starting with 'bugs:': it will tell
524 you where to find a subsystem specific bug tracker to file your issue. The
525 example above does not have such a line. That is the case for most sections, as
526 Linux kernel development is completely driven by mail. Very few subsystems use
527 a bug tracker, and only some of those rely on bugzilla.kernel.org.
530 .. note::
532    FIXME: The old text took a totally different approach to bugzilla.kernel.org,
533    as it mentions it as the place to file issue for people that don't known how
534    to contact the appropriate people. The new one mentions it rarely; and when
535    it does like here, it warns users that it's often the wrong place to go.
537    This approach was chosen as the main author of this document noticed quite a
538    few users (or even a lot?) get no reply to the bugs they file in bugzilla.
539    That's kind of expected, as quite a few (many? most?) of the maintainers
540    don't even get notified when reports for their subsystem get filed there. And
541    not getting a single reply to report is something that is just annoying for
542    users and might make them angry. Improving bugzilla.k.o would be an option,
543    but on the kernel and maintainers summit 2017 it was agreed on to first go
544    this route (sorry it took so long): it's easier to achieve and less
545    controversial, as putting additional burden on already overworked maintainers
546    is unlikely to get well received.
549 In this and many other cases you thus have to look for lines starting with
550 'Mail:' instead. Those mention the name and the email addresses for the
551 maintainers of the particular code. Also look for a line starting with 'Mailing
552 list:', which tells you the public mailing list where the code is developed.
553 Your report later needs to go by mail to those addresses. Additionally, for all
554 issue reports sent by email, make sure to add the Linux Kernel Mailing List
555 (LKML) <linux-kernel@vger.kernel.org> to CC. Don't omit either of the mailing
556 lists when sending your issue report by mail later! Maintainers are busy people
557 and might leave some work for other developers on the subsystem specific list;
558 and LKML is important to have one place where all issue reports can be found.
561 .. note::
563    FIXME: Above section tells users to always CC LKML. These days it's a kind of
564    "catch-all" list anyway, which nearly nobody seems to follow closely. So it
565    seems appropriate to go "all in" and make people send their reports here,
566    too, as everything (reports, fixes, ...) then can be found in one place (at
567    least for all reports sent by mail and all subsystems that CC LKML).
569    Related: Should we create mailing list like 'linux-issues@vger.kernel.org'
570    and tell users above to always CC it when reporting issues? Then there would
571    be one central place reporters could search for existing reports (at least
572    for issues reported by mail) without getting regular LKML traffic mixed into
573    the results.
576 Finding the maintainers with the help of a script
577 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
579 For people that have the Linux sources at hand there is a second option to find
580 the proper place to report: the script 'scripts/get_maintainer.pl' which tries
581 to find all people to contact. It queries the MAINTAINERS file and needs to be
582 called with a path to the source code in question. For drivers compiled as
583 module if often can be found with a command like this::
585        $ modinfo ath10k_pci | grep filename | sed 's!/lib/modules/.*/kernel/!!; s!filename:!!; s!\.ko\(\|\.xz\)!!'
586        drivers/net/wireless/ath/ath10k/ath10k_pci.ko
588 Pass parts of this to the script::
590        $ ./scripts/get_maintainer.pl -f drivers/net/wireless/ath/ath10k*
591        Some Human <shuman@example.com> (supporter:QUALCOMM ATHEROS ATH10K WIRELESS DRIVER)
592        Another S. Human <asomehuman@example.com> (maintainer:NETWORKING DRIVERS)
593        ath10k@lists.infradead.org (open list:QUALCOMM ATHEROS ATH10K WIRELESS DRIVER)
594        linux-wireless@vger.kernel.org (open list:NETWORKING DRIVERS (WIRELESS))
595        netdev@vger.kernel.org (open list:NETWORKING DRIVERS)
596        linux-kernel@vger.kernel.org (open list)
598 Don't sent your report to all of them. Send it to the maintainers, which the
599 script calls "supporter:"; additionally CC the most specific mailing list for
600 the code as well as the Linux Kernel Mailing List (LKML). In this case you thus
601 would need to send the report to 'Some Human <shuman@example.com>' with
602 'ath10k@lists.infradead.org' and 'linux-kernel@vger.kernel.org' in CC.
604 Note: in case you cloned the Linux sources with git you might want to call
605 ``get_maintainer.pl`` a second time with ``--git``. The script then will look
606 at the commit history to find which people recently worked on the code in
607 question, as they might be able to help. But use these results with care, as it
608 can easily send you in a wrong direction. That for example happens quickly in
609 areas rarely changed (like old or unmaintained drivers): sometimes such code is
610 modified during tree-wide cleanups by developers that do not care about the
611 particular driver at all.
614 Search for existing reports
615 ---------------------------
617     *Search the archives of the bug tracker or mailing list in question
618     thoroughly for reports that might match your issue. Also check if you find
619     something with your favorite internet search engine or in the Linux Kernel
620     Mailing List (LKML) archives. If you find anything, join the discussion
621     instead of sending a new report.*
623 Reporting an issue that someone else already brought forward is often a waste
624 of time for everyone involved, especially you as the reporter. So it's in your
625 own interest to thoroughly check if somebody reported the issue already. Thus
626 do not hurry with this step of the reporting process. Spending 30 to 60 minutes
627 or even more time can save you and others quite a lot of time and trouble.
629 The best place to search is the bug tracker or the mailing list where your
630 report needs to be filed. You'll find quite a few of those lists on
631 `lore.kernel.org <https://lore.kernel.org/>`_, but some are hosted in
632 different places. That for example is the case for the ath10k WiFi driver used
633 as example in the previous step. But you'll often find the archives for these
634 lists easily on the net. Searching for 'archive ath10k@lists.infradead.org' for
635 example will quickly lead you to the `Info page for the ath10k mailing list
636 <https://lists.infradead.org/mailman/listinfo/ath10k>`_, which at the top links
637 to its `list archives <https://lists.infradead.org/pipermail/ath10k/>`_.
639 Sadly this and quite a few other lists miss a way to search the archives. In
640 those cases use a regular internet search engine and add something like
641 'site:lists.infradead.org/pipermail/ath10k/' to your search terms, which limits
642 the results to the archives at that URL.
644 Additionally, search the internet and the `Linux Kernel Mailing List (LKML)
645 archives <https://lore.kernel.org/lkml/>`_, as maybe the real culprit might be
646 in some other subsystem. Searching in `bugzilla.kernel.org
647 <https://bugzilla.kernel.org/>`_ might also be a good idea, but if you find
648 anything there keep in mind: most subsystems expect reports in different
649 places, hence those you find there might have not even reached the people
650 responsible for the subsystem in question. Nevertheless, the data there might
651 provide valuable insights.
653 If you get flooded with results consider telling your search engine to limit
654 search timeframe to the past month or year. And wherever you search, make sure
655 to use good search terms; vary them a few times, too. While doing so try to
656 look at the issue from the perspective of someone else: that will help you to
657 come up with other words to use as search terms. Also make sure not to use too
658 many search terms at once. Remember to search with and without information like
659 the name of the kernel driver or the name of the affected hardware component.
660 But its exact brand name (say 'ASUS Red Devil Radeon RX 5700 XT Gaming OC')
661 often is not much helpful, as it is too specific. Instead try search terms like
662 the model line (Radeon 5700 or Radeon 5000) and the code name of the main chip
663 ('Navi' or 'Navi10') with and without its manufacturer ('AMD').
665 In case you find an existing report about your issue, join the discussion, as
666 you might be able to provide valuable additional information. That can be
667 important even when a fix is prepared or in its final stages already, as
668 developers might look for people that can provide additional information or
669 test a proposed fix. Jump to the section 'Duties after the report went out' for
670 details on how to get properly involved.
673 Prepare for emergencies
674 -----------------------
676     *Create a fresh backup and put system repair and restore tools at hand.*
678 Reminder, you are dealing with computers, which sometimes do unexpected things,
679 especially if you fiddle with crucial parts like the kernel of its operating
680 system. That's what you are about to do in this process. Thus, make sure to
681 create a fresh backup; also ensure you have all tools at hand to repair or
682 reinstall the operating system as well as everything you need to restore the
683 backup.
686 Make sure your kernel doesn't get enhanced
687 ------------------------------------------
689     *Ensure your system does not enhance its kernels by building additional
690     kernel modules on-the-fly, which solutions like DKMS might be doing locally
691     without your knowledge.*
693 Your kernel must be 'vanilla' when reporting an issue, but stops being pure as
694 soon as it loads a kernel module not built from the sources used to compile the
695 kernel image itself. That's why you need to ensure your Linux kernel stays
696 vanilla by removing or disabling mechanisms like akmods and DKMS: those might
697 build additional kernel modules automatically, for example when your boot into
698 a newly installed Linux kernel the first time. Reboot after removing them and
699 any modules they installed.
701 Note, you might not be aware that your system is using one of these solutions:
702 they often get set up silently when you install Nvidia's proprietary graphics
703 driver, VirtualBox, or other software that requires a some support from a
704 module not part of the Linux kernel. That why your might need to uninstall the
705 packages with such software to get rid of any 3rd party kernel module.
708 Ensure a healthy environment
709 ----------------------------
711     *Make sure it's not the kernel's surroundings that are causing the issue
712     you face.*
714 Problems that look a lot like a kernel issue are sometimes caused by build or
715 runtime environment. It's hard to rule out that problem completely, but you
716 should minimize it:
718  * Use proven tools when building your kernel, as bugs in the compiler or the
719    binutils can cause the resulting kernel to misbehave.
721  * Ensure your computer components run within their design specifications;
722    that's especially important for the main processor, the main memory, and the
723    motherboard. Therefore, stop undervolting or overclocking when facing a
724    potential kernel issue.
726  * Try to make sure it's not faulty hardware that is causing your issue. Bad
727    main memory for example can result in a multitude of issues that will
728    manifest itself in problems looking like kernel issues.
730  * If you're dealing with a filesystem issue, you might want to check the file
731    system in question with ``fsck``, as it might be damaged in a way that leads
732    to unexpected kernel behavior.
734  * When dealing with a regression, make sure it's not something else that
735    changed in parallel to updating the kernel. The problem for example might be
736    caused by other software that was updated at the same time. It can also
737    happen that a hardware component coincidentally just broke when you rebooted
738    into a new kernel for the first time. Updating the systems BIOS or changing
739    something in the BIOS Setup can also lead to problems that on look a lot
740    like a kernel regression.
743 Document how to reproduce issue
744 -------------------------------
746     *Write down coarsely how to reproduce the issue. If you deal with multiple
747     issues at once, create separate notes for each of them and make sure they
748     work independently on a freshly booted system. That's needed, as each issue
749     needs to get reported to the kernel developers separately, unless they are
750     strongly entangled.*
752 If you deal with multiple issues at once, you'll have to report each of them
753 separately, as they might be handled by different developers. Describing
754 various issues in one report also makes it quite difficult for others to tear
755 it apart. Hence, only combine issues in one report if they are very strongly
756 entangled.
758 Additionally, during the reporting process you will have to test if the issue
759 happens with other kernel versions. Therefore, it will make your work easier if
760 you know exactly how to reproduce an issue quickly on a freshly booted system.
762 Note: it's often fruitless to report issues that only happened once, as they
763 might be caused by a bit flip due to cosmic radiation. That's why you should
764 try to rule that out by reproducing the issue before going further. Feel free
765 to ignore this advice if you are experienced enough to tell a one-time error
766 due to faulty hardware apart from a kernel issue that rarely happens and thus
767 is hard to reproduce.
770 Install a fresh kernel for testing
771 ----------------------------------
773     *Install the latest Linux mainline kernel: that's where all issues get
774     fixed first, because it's the version line the kernel developers mainly
775     care about. Testing and reporting with the latest Linux stable kernel can
776     be an acceptable alternative in some situations, for example during the
777     merge window; but during that period you might want to suspend your efforts
778     till its end anyway.*
780 Reporting an issue to the Linux kernel developers they fixed weeks or months
781 ago is annoying for them and wasting their and your time. That's why it's in
782 everybody's interest to check if the issue occurs with the latest codebase
783 before reporting it.
785 In the scope of the Linux kernel the term 'latest' means: a kernel version
786 recently created from the main line of development, as this 'mainline' tree is
787 where developers first apply fixes; only after that are they are allowed to get
788 backported to older, still supported version lines called 'stable' and
789 'longterm' kernels. That's why you should check a recent mainline kernel, even
790 if you deal with an issue you only want to see fixed in an older version line.
791 Another reason: some fixes are only applied to mainline or recent version
792 lines, as it's too hard or risky to backport them to older versions. If that
793 the case, reporting the issue again is unlikely to change anything.
795 Longterm kernels (sometimes called "LTS kernels") are therefore unsuitable for
796 testing; they simply are too distant from current development. Even the latest
797 Linux 'stable' kernel is a significant bit behind and thus better avoided. At
798 least most of the time, as sometimes a stable kernel can the best choice; but
799 in those situations you might want to wait a few days anyway:
801 Choosing between mainline, stable and waiting
802 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
804 Head over to `kernel.org <https://kernel.org/>`_ to decide which version to
805 use. Ignore the big yellow button that says 'Latest release' and look a little
806 lower for a table. At its top you'll see a line starting with 'mainline', which
807 most of the time will point to a pre-release with a version number like
808 '5.8-rc2'. If that's the case, you'll want to use this mainline kernel for
809 testing. Do not let that 'rc' scare you, these 'development kernels' are pretty
810 reliable — and you made a backup, as you were instructed above, didn't you?
812 In about two out of every nine to ten weeks, 'mainline' might point you to a
813 proper release with a version number like '5.7'. If that happens, consider
814 suspending the reporting process until the first pre-release of the next
815 version (5.8-rc1) shows up on kernel.org. That's because the Linux development
816 cycle then is in its two-week long 'merge window'. The bulk of the changes and
817 all intrusive ones get merged for the next release during this time. It's a bit
818 more risky to use mainline during this period. Kernel developers are also often
819 quite busy then and might have no spare time to deal with issue reports. It's
820 also quite possible that one of the many changes applied during the merge
821 window fixes the issue you face; that's why you soon would have to retest with
822 a newer kernel version anyway, as outlined below in the section 'Duties after
823 the report went out'.
825 That's why it might make sense to wait till the merge window is over. But don't
826 to that if you're dealing with something that shouldn't wait. In that case
827 consider obtaining the latest mainline kernel via git (see below) or use the
828 latest stable version offered on kernel.org. Using that is also acceptable in
829 case mainline for some reason does currently not work for you. An in general:
830 using it for reproducing the issue is also better than not reporting it issue
831 at all.
833 How to obtain a fresh Linux kernel
834 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
836 You can use pre-built or self-compiled kernel for testing; if you choose the
837 latter approach, you can either obtain the source code using git or download it
838 as tar archive.
840 Using a pre-compiled kernel for testing is often the quickest, easiest, and
841 safest way – especially is you are unfamiliar with the Linux kernel. But it
842 needs to be a vanilla kernel, which can be hard to come buy. You are in luck if
843 you are using a popular Linux distribution: for quite a few of them you'll find
844 repositories on the net that contain packages with the latest mainline or
845 stable kernels in vanilla fashion. It's totally okay to use these, just make
846 sure from the repository's documentation they are really vanilla. And ensure
847 the packages contain the latest versions as offered on kernel.org; they are
848 likely unsuitable if the package is older than a week, as new mainline and
849 stable kernels typically get released at least once a week. And be aware that
850 you might need to get build your own kernel later anyway when it comes to
851 helping test fixes, as described later in this document.
853 Developers and experienced Linux users familiar with git are often best served
854 by obtaining the latest Linux kernel sources straight from the `official
855 development repository on kernel.org
856 <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/>`_.
857 Those are likely a bit ahead of the latest mainline pre-release. Don't worry
858 about it: they are as reliable as a proper pre-release, unless the kernel's
859 development cycle is currently in the middle of a merge window. But even then
860 they are quite reliable.
862 People unfamiliar with git are often best served by downloading the sources as
863 tarball from `kernel.org <https://kernel.org/>`_.
865 How to actually build a kernel isnot described here, as many websites explain
866 the necessary steps already. If you are new to it, consider following one of
867 those how-to's that suggest to use ``make localmodconfig``, as that tries to
868 pick up the configuration of your current kernel and then tries to adjust it
869 somewhat for your system. That does not make the resulting kernel any better,
870 but quicker to compile.
873 Check 'taint' flag
874 ------------------
876     *Ensure the kernel you just installed does not 'taint' itself when
877     running.*
879 As outlined above in more detail already: the kernel sets a 'taint' flag when
880 something happens that can lead to follow-up errors that look totally
881 unrelated. That's why you need to check if the kernel you just installed does
882 not set this flag. And if it does, you in almost all the cases needs to
883 eliminate the reason for it before you reporting issues that occur with it. See
884 the section above for details how to do that.
887 Reproduce issue with the fresh kernel
888 -------------------------------------
890     *Reproduce the issue with the kernel you just installed. If it doesn't show
891     up there, head over to the instructions for issues only happening with
892     stable and longterm kernels.*
894 Check if the issue occurs with the fresh Linux kernel version you just
895 installed. If it was fixed there already, consider sticking with this version
896 line and abandoning your plan to report the issue. But keep in mind that other
897 users might still be plagued by it, as long as it's not fixed in either stable
898 and longterm version from kernel.org (and thus vendor kernels derived from
899 those). If you prefer to use one of those or just want to help their users,
900 head over to the section "Details about reporting issues only occurring in
901 older kernel version lines" below.
904 Optimize description to reproduce issue
905 ---------------------------------------
907     *Optimize your notes: try to find and write the most straightforward way to
908     reproduce your issue. Make sure the end result has all the important
909     details, and at the same time is easy to read and understand for others
910     that hear about it for the first time. And if you learned something in this
911     process, consider searching again for existing reports about the issue.*
913 An unnecessarily complex report will make it hard for others to understand your
914 report. Thus try to find a reproducer that's straight forward to describe and
915 thus easy to understand in written form. Include all important details, but at
916 the same time try to keep it as short as possible.
918 In this in the previous steps you likely have learned a thing or two about the
919 issue you face. Use this knowledge and search again for existing reports
920 instead you can join.
923 Decode failure messages
924 -----------------------
926 .. note::
928    FIXME: The text in this section is a placeholder for now and quite similar to
929    the old text found in 'Documentation/admin-guide/reporting-bugs.rst'
930    currently. It and the document it references are known to be outdated and
931    thus need to be revisited. Thus consider this note a request for help: if you
932    are familiar with this topic, please write a few lines that would fit here.
933    Alternatively, simply outline the current situation roughly to the main
934    authors of this document (see intro), as they might be able to write
935    something then.
937    This section in the end should answer questions like "when is this actually
938    needed", "what .config options to ideally set earlier to make this step easy
939    or unnecessary?" (likely CONFIG_UNWINDER_ORC when it's available, otherwise
940    CONFIG_UNWINDER_FRAME_POINTER; but is there anything else needed?).
944     *If the failure includes a stack dump, like an Oops does, consider decoding
945     it to find the offending line of code.*
947 When the kernel detects an error, it will print a stack dump that allows to
948 identify the exact line of code where the issue happens. But that information
949 sometimes needs to get decoded to be readable, which is explained in
950 admin-guide/bug-hunting.rst.
953 Special care for regressions
954 ----------------------------
956     *If your problem is a regression, try to narrow down when the issue was
957     introduced as much as possible.*
959 Linux lead developer Linus Torvalds insists that the Linux kernel never
960 worsens, that's why he deems regressions as unacceptable and wants to see them
961 fixed quickly. That's why changes that introduced a regression are often
962 promptly reverted if the issue they cause can't get solved quickly any other
963 way. Reporting a regression is thus a bit like playing a kind of trump card to
964 get something quickly fixed. But for that to happen the change that's causing
965 the regression needs to be known. Normally it's up to the reporter to track
966 down the culprit, as maintainers often won't have the time or setup at hand to
967 reproduce it themselves.
969 To find the change there is a process called 'bisection' which the document
970 'Documentation/admin-guide/bug-bisect.rst' describes in detail. That process
971 will often require you to build about ten to twenty kernel images, trying to
972 reproduce the issue with each of them before building the next. Yes, that takes
973 some time, but don't worry, it works a lot quicker than most people assume.
974 Thanks to a 'binary search' this will lead you to the one commit in the source
975 code management system that's causing the regression. Once you find it, search
976 the net for the subject of the change, its commit id and the shortened commit id
977 (the first 12 characters of the commit id). This will lead you to existing
978 reports about it, if there are any.
980 Note, a bisection needs a bit of know-how, which not everyone has, and quite a
981 bit of effort, which not everyone is willing to invest. Nevertheless, it's
982 highly recommended performing a bisection yourself. If you really can't or
983 don't want to go down that route at least find out which mainline kernel
984 introduced the regression. If something for example breaks when switching from
985 5.5.15 to 5.8.4, then try at least all the mainline releases in that area (5.6,
986 5.7 and 5.8) to check when it first showed up. Unless you're trying to find a
987 regression in a stable or longterm kernel, avoid testing versions which number
988 has three sections (5.6.12, 5.7.8), as that makes the outcome hard to
989 interpret, which might render your testing useless. Once you found the major
990 version which introduced the regression, feel free to move on in the reporting
991 process. But keep in mind: it depends on the issue at hand if the developers
992 will be able to help without knowing the culprit. Sometimes they might
993 recognize from the report want went wrong and can fix it; other times they will
994 be unable to help unless you perform a bisection.
996 When dealing with regressions make sure the issue you face is really caused by
997 the kernel and not by something else, as outlined above already.
999 In the whole process keep in mind: an issue only qualifies as regression if the
1000 older and the newer kernel got built with a similar configuration. The best way
1001 to archive this: copy the configuration file (``.config``) from the old working
1002 kernel freshly to each newer kernel version you try. Afterwards run ``make
1003 oldnoconfig`` to adjust it for the needs of the new version without enabling
1004 any new feature, as those are allowed to cause regressions.
1007 Write and send the report
1008 -------------------------
1010     *Start to compile the report by writing a detailed description about the
1011     issue. Always mention a few things: the latest kernel version you installed
1012     for reproducing, the Linux Distribution used, and your notes on how to
1013     reproduce the issue. Ideally, make the kernel's build configuration
1014     (.config) and the output from ``dmesg`` available somewhere on the net and
1015     link to it. Include or upload all other information that might be relevant,
1016     like the output/screenshot of an Oops or the output from ``lspci``. Once
1017     you wrote this main part, insert a normal length paragraph on top of it
1018     outlining the issue and the impact quickly. On top of this add one sentence
1019     that briefly describes the problem and gets people to read on. Now give the
1020     thing a descriptive title or subject that yet again is shorter. Then you're
1021     ready to send or file the report like the MAINTAINERS file told you, unless
1022     you are dealing with one of those 'issues of high priority': they need
1023     special care which is explained in 'Special handling for high priority
1024     issues' below.*
1026 Now that you have prepared everything it's time to write your report. How to do
1027 that is partly explained by the three documents linked to in the preface above.
1028 That's why this text will only mention a few of the essentials as well as
1029 things specific to the Linux kernel.
1031 There is one thing that fits both categories: the most crucial parts of your
1032 report are the title/subject, the first sentence, and the first paragraph.
1033 Developers often get quite a lot of mail. They thus often just take a few
1034 seconds to skim a mail before deciding to move on or look closer. Thus: the
1035 better the top section of your report, the higher are the chances that someone
1036 will look into it and help you. And that is why you should ignore them for now
1037 and write the detailed report first. ;-)
1039 Things each report should mention
1040 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1042 Describe in detail how your issue happens with the fresh vanilla kernel you
1043 installed. Try to include the step-by-step instructions you wrote and optimized
1044 earlier that outline how you and ideally others can reproduce the issue; in
1045 those rare cases where that's impossible try to describe what you did to
1046 trigger it.
1048 Also include all the relevant information others might need to understand the
1049 issue and its environment. What's actually needed depends a lot on the issue,
1050 but there are some things you should include always:
1052  * the output from ``cat /proc/version``, which contains the Linux kernel
1053    version number and the compiler it was built with.
1055  * the Linux distribution the machine is running (``hostnamectl | grep
1056    "Operating System"``)
1058  * the architecture of the CPU and the operating system (``uname -mi``)
1060  * if you are dealing with a regression and performed a bisection, mention the
1061    subject and the commit-id of the change that is causing it.
1063 In a lot of cases it's also wise to make two more things available to those
1064 that read your report:
1066  * the configuration used for building your Linux kernel (the '.config' file)
1068  * the kernel's messages that you get from ``dmesg`` written to a file. Make
1069    sure that it starts with a line like 'Linux version 5.8-1
1070    (foobar@example.com) (gcc (GCC) 10.2.1, GNU ld version 2.34) #1 SMP Mon Aug
1071    3 14:54:37 UTC 2020' If it's missing, then important messages from the first
1072    boot phase already got discarded. In this case instead consider using
1073    ``journalctl -b 0 -k``; alternatively you can also reboot, reproduce the
1074    issue and call ``dmesg`` right afterwards.
1076 These two files are big, that's why it's a bad idea to put them directly into
1077 your report. If you are filing the issue in a bug tracker then attach them to
1078 the ticket. If you report the issue by mail do not attach them, as that makes
1079 the mail too large; instead do one of these things:
1081  * Upload the files somewhere public (your website, a public file paste
1082    service, a ticket created just for this purpose on `bugzilla.kernel.org
1083    <https://bugzilla.kernel.org/>`_, ...) and include a link to them in your
1084    report. Ideally use something where the files stay available for years, as
1085    they could be useful to someone many years from now; this for example can
1086    happen if five or ten years from now a developer works on some code that was
1087    changed just to fix your issue.
1089  * Put the files aside and mention you will send them later in individual
1090    replies to your own mail. Just remember to actually do that once the report
1091    went out. ;-)
1093 Things that might be wise to provide
1094 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1096 Depending on the issue you might need to add more background data. Here are a
1097 few suggestions what often is good to provide:
1099  * If you are dealing with a 'warning', an 'OOPS' or a 'panic' from the kernel,
1100    include it. If you can't copy'n'paste it, try to capture a netconsole trace
1101    or at least take a picture of the screen.
1103  * If the issue might be related to your computer hardware, mention what kind
1104    of system you use. If you for example have problems with your graphics card,
1105    mention its manufacturer, the card's model, and what chip is uses. If it's a
1106    laptop mention its name, but try to make sure it's meaningful. 'Dell XPS 13'
1107    for example is not, because it might be the one from 2012; that one looks
1108    not that different from the one sold today, but apart from that the two have
1109    nothing in common. Hence, in such cases add the exact model number, which
1110    for example are '9380' or '7390' for XPS 13 models introduced during 2019.
1111    Names like 'Lenovo Thinkpad T590' are also somewhat ambiguous: there are
1112    variants of this laptop with and without a dedicated graphics chip, so try
1113    to find the exact model name or specify the main components.
1115  * Mention the relevant software in use. If you have problems with loading
1116    modules, you want to mention the versions of kmod, systemd, and udev in use.
1117    If one of the DRM drivers misbehaves, you want to state the versions of
1118    libdrm and Mesa; also specify your Wayland compositor or the X-Server and
1119    its driver. If you have a filesystem issue, mention the version of
1120    corresponding filesystem utilities (e2fsprogs, btrfs-progs, xfsprogs, ...).
1122  * Gather additional information from the kernel that might be of interest. The
1123    output from ``lspci -nn`` will for example help others to identify what
1124    hardware you use. If you have a problem with hardware you even might want to
1125    make the output from ``sudo lspci -vvv`` available, as that provides
1126    insights how the components were configured. For some issues it might be
1127    good to include the contents of files like ``/proc/cpuinfo``,
1128    ``/proc/ioports``, ``/proc/iomem``, ``/proc/modules``, or
1129    ``/proc/scsi/scsi``. Some subsystem also offer tools to collect relevant
1130    information. One such tool is ``alsa-info.sh`` `which the audio/sound
1131    subsystem developers provide <https://www.alsa-project.org/wiki/AlsaInfo>`_.
1133 Those examples should give your some ideas of what data might be wise to
1134 attach, but you have to think yourself what will be helpful for others to know.
1135 Don't worry too much about forgetting something, as developers will ask for
1136 additional details they need. But making everything important available from
1137 the start increases the chance someone will take a closer look.
1140 The important part: the head of your report
1141 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1143 Now that you have the detailed part of the report prepared let's get to the
1144 most important section: the first few sentences. Thus go to the top, add
1145 something like 'The detailed description:' before the part you just wrote and
1146 insert two newlines at the top. Now write one normal length paragraph that
1147 describes the issue roughly. Leave out all boring details and focus on the
1148 crucial parts readers need to know to understand what this is all about; if you
1149 think this bug affects a lot of users, mention this to get people interested.
1151 Once you did that insert two more lines at the top and write a one sentence
1152 summary that explains quickly what the report is about. After that you have to
1153 get even more abstract and write an even shorter subject/title for the report.
1155 Now that you have written this part take some time to optimize it, as it is the
1156 most important parts of your report: a lot of people will only read this before
1157 they decide if reading the rest is time well spent.
1159 Now send or file the report like the :ref:`MAINTAINERS <maintainers>` file told
1160 you, unless it's one of those 'issues of high priority' outlined earlier: in
1161 that case please read the next subsection first before sending the report on
1162 its way.
1164 Special handling for high priority issues
1165 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1167 Reports for high priority issues need special handling.
1169 **Severe bugs**: make sure the subject or ticket title as well as the first
1170 paragraph makes the severeness obvious.
1172 **Regressions**: If the issue is a regression add [REGRESSION] to the mail's
1173 subject or the title in the bug-tracker. If you did not perform a bisection
1174 mention at least the latest mainline version you tested that worked fine (say
1175 5.7) and the oldest where the issue occurs (say 5.8). If you did a successful
1176 bisection mention the commit id and subject of the change that causes the
1177 regression. Also make sure to add the author of that change to your report; if
1178 you need to file your bug in a bug-tracker forward the report to him in a
1179 private mail and mention where your filed it.
1181 **Security issues**: for these issues your will have to evaluate if a
1182 short-term risk to other users would arise if details were publicly disclosed.
1183 If that's not the case simply proceed with reporting the issue as described.
1184 For issues that bear such a risk you will need to adjust the reporting process
1185 slightly:
1187  * If the MAINTAINERS file instructed you to report the issue by mail, do not
1188    CC any public mailing lists.
1190  * If you were supposed to file the issue in a bug tracker make sure to mark
1191    the ticket as 'private' or 'security issue'. If the bug tracker does not
1192    offer a way to keep reports private, forget about it and send your report as
1193    a private mail to the maintainers instead.
1195 In both cases make sure to also mail your report to the addresses the
1196 MAINTAINERS file lists in the section 'security contact'. Ideally directly CC
1197 them when sending the report by mail. If you filed it in a bug tracker, forward
1198 the report's text to these addresses; but on top of it put a small note where
1199 you mention that you filed it with a link to the ticket.
1201 See 'Documentation/admin-guide/security-bugs.rst' for more information.
1204 Duties after the report went out
1205 --------------------------------
1207     *Wait for reactions and keep the thing rolling until you can accept the
1208     outcome in one way or the other. Thus react publicly and in a timely manner
1209     to any inquiries. Test proposed fixes. Do proactive testing: retest with at
1210     least every first release candidate (RC) of a new mainline version and
1211     report your results. Send friendly reminders if things stall. And try to
1212     help yourself, if you don't get any help or if it's unsatisfying.*
1214 If your report was good and you are really lucky then one of the developers
1215 might immediately spot what's causing the issue; they then might write a patch
1216 to fix it, test it, and send it straight for integration in mainline while
1217 tagging it for later backport to stable and longterm kernels that need it. Then
1218 all you need to do is reply with a 'Thank you very much' and switch to a version
1219 with the fix once it gets released.
1221 But this ideal scenario rarely happens. That's why the job is only starting
1222 once you got the report out. What you'll have to do depends on the situations,
1223 but often it will be the things listed below. But before digging into the
1224 details, here are a few important things you need to keep in mind for this part
1225 of the process.
1228 General advice for further interactions
1229 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1231 **Always reply in public**: When you filed the issue in a bug tracker, always
1232 reply there and do not contact any of the developers privately about it. For
1233 mailed reports always use the 'Reply-all' function when replying to any mails
1234 you receive. That includes mails with any additional data you might want to add
1235 to your report: go to your mail applications 'Sent' folder and use 'reply-all'
1236 on your mail with the report. This approach will make sure the public mailing
1237 list(s) and everyone else that gets involved over time stays in the loop; it
1238 also keeps the mail thread intact, which among others is really important for
1239 mailing lists to group all related mails together.
1241 There are just two situations where a comment in a bug tracker or a 'Reply-all'
1242 is unsuitable:
1244  * Someone tells you to send something privately.
1246  * You were told to send something, but noticed it contains sensitive
1247    information that needs to be kept private. In that case it's okay to send it
1248    in private to the developer that asked for it. But note in the ticket or a
1249    mail that you did that, so everyone else knows you honored the request.
1251 **Do research before asking for clarifications or help**: In this part of the
1252 process someone might tell you to do something that requires a skill you might
1253 not have mastered yet. For example, you might be asked to use some test tools
1254 you never have heard of yet; or you might be asked to apply a patch to the
1255 Linux kernel sources to test if it helps. In some cases it will be fine sending
1256 a reply asking for instructions how to do that. But before going that route try
1257 to find the answer own your own by searching the internet; alternatively
1258 consider asking in other places for advice. For example ask a fried or post
1259 about it to a chatroom or forum you normally hang out.
1261 **Be patient**: If you are really lucky you might get a reply to your report
1262 within a few hours. But most of the time it will take longer, as maintainers
1263 are scattered around the globe and thus might be in a different time zone – one
1264 where they already enjoy their night away from keyboard.
1266 In general, kernel developers will take one to five business days to respond to
1267 reports. Sometimes it will take longer, as they might be busy with the merge
1268 windows, other work, visiting developer conferences, or simply enjoying a long
1269 summer holiday.
1271 The 'issues of high priority' (see above for an explanation) are an exception
1272 here: maintainers should address them as soon as possible; that's why you
1273 should wait a week at maximum (or just two days if it's something urgent)
1274 before sending a friendly reminder.
1276 Sometimes the maintainer might not be responding in a timely manner; other
1277 times there might be disagreements, for example if an issue qualifies as
1278 regression or not. In such cases raise your concerns on the mailing list and
1279 ask others for public or private replies how to move on. If that fails, it
1280 might be appropriate to get a higher authority involved. In case of a WiFi
1281 driver that would be the wireless maintainers; if there are no higher level
1282 maintainers or all else fails, it might be one of those rare situations where
1283 it's okay to get Linus Torvalds involved.
1285 **Proactive testing**: Every time the first pre-release (the 'rc1') of a new
1286 mainline kernel version gets released, go and check if the issue is fixed there
1287 or if anything of importance changed. Mention the outcome in the ticket or in a
1288 mail you sent as reply to your report (make sure it has all those in the CC
1289 that up to that point participated in the discussion). This will show your
1290 commitment and that you are willing to help. It also tells developers if the
1291 issue persists and makes sure they do not forget about it. A few other
1292 occasional retests (for example with rc3, rc5 and the final) are also a good
1293 idea, but only report your results if something relevant changed or if you are
1294 writing something anyway.
1296 With all these general things off the table let's get into the details of how
1297 to help to get issues resolved once they were reported.
1299 Inquires and testing request
1300 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1302 Here are your duties in case you got replies to your report:
1304 **Check who you deal with**: Most of the time it will be the maintainer or a
1305 developer of the particular code area that will respond to your report. But as
1306 issues are normally reported in public it could be anyone that's replying —
1307 including people that want to help, but in the end might guide you totally off
1308 track with their questions or requests. That rarely happens, but it's one of
1309 many reasons why it's wise to quickly run an internet search to see who you're
1310 interacting with. By doing this you also get aware if your report was heard by
1311 the right people, as a reminder to the maintainer (see below) might be in order
1312 later if discussion fades out without leading to a satisfying solution for the
1313 issue.
1315 **Inquiries for data**: Often you will be asked to test something or provide
1316 additional details. Try to provide the requested information soon, as you have
1317 the attention of someone that might help and risk losing it the longer you
1318 wait; that outcome is even likely if you do not provide the information within
1319 a few business days.
1321 **Requests for testing**: When you are asked to test a diagnostic patch or a
1322 possible fix, try to test it in timely manner, too. But do it properly and make
1323 sure to not rush it: mixing things up can happen easily and can lead to a lot
1324 of confusion for everyone involved. A common mistake for example is thinking a
1325 proposed patch with a fix was applied, but in fact wasn't. Things like that
1326 happen even to experienced testers occasionally, but they most of the time will
1327 notice when the kernel with the fix behaves just as one without it.
1329 What to do when nothing of substance happens
1330 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1332 Some reports will not get any reaction from the responsible Linux kernel
1333 developers; or a discussion around the issue evolved, but faded out with
1334 nothing of substance coming out of it.
1336 In these cases wait two (better: three) weeks before sending a friendly
1337 reminder: maybe the maintainer was just away from keyboard for a while when
1338 your report arrived or had something more important to take care of. When
1339 writing the reminder, kindly ask if anything else from your side is needed to
1340 get the ball running somehow. If the report got out by mail, do that in the
1341 first lines of a mail that is a reply to your initial mail (see above) which
1342 includes a full quote of the original report below: that's on of those few
1343 situations where such a 'TOFU' (Text Over, Fullquote Under) is the right
1344 approach, as then all the recipients will have the details at hand immediately
1345 in the proper order.
1347 After the reminder wait three more weeks for replies. If you still don't get a
1348 proper reaction, you first should reconsider your approach. Did you maybe try
1349 to reach out to the wrong people? Was the report maybe offensive or so
1350 confusing that people decided to completely stay away from it? The best way to
1351 rule out such factors: show the report to one or two people familiar with FLOSS
1352 issue reporting and ask for their opinion. Also ask them for their advice how
1353 to move forward. That might mean: prepare a better report and make those people
1354 review it before you send it out. Such an approach is totally fine; just
1355 mention that this is the second and improved report on the issue and include a
1356 link to the first report.
1358 If the report was proper you can send a second reminder; in it ask for advice
1359 why the report did not get any replies. A good moment for this second reminder
1360 mail is shortly after the first pre-release (the 'rc1') of a new Linux kernel
1361 version got published, as you should retest and provide a status update at that
1362 point anyway (see above).
1364 If the second reminder again results in no reaction within a week, try to
1365 contact a higher-level maintainer asking for advice: even busy maintainers by
1366 then should at least have sent some kind of acknowledgment.
1368 Remember to prepare yourself for a disappointment: maintainers ideally should
1369 react somehow to every issue report, but they are only obliged to fix those
1370 'issues of high priority' outlined earlier. So don't be too devastating if you
1371 get a reply along the lines of 'thanks for the report, I have more important
1372 issues to deal with currently and won't have time to look into this for the
1373 foreseeable future'.
1375 It's also possible that after some discussion in the bug tracker or on a list
1376 nothing happens anymore and reminders don't help to motivate anyone to work out
1377 a fix. Such situations can be devastating, but is within the cards when it
1378 comes to Linux kernel development. This and several other reasons for not
1379 getting help are explained in 'Why some issues won't get any reaction or remain
1380 unfixed after being reported' near the end of this document.
1382 Don't get devastated if you don't find any help or if the issue in the end does
1383 not get solved: the Linux kernel is FLOSS and thus you can still help yourself.
1384 You for example could try to find others that are affected and team up with
1385 them to get the issue resolved. Such a team could prepare a fresh report
1386 together that mentions how many you are and why this is something that in your
1387 option should get fixed. Maybe together you can also narrow down the root cause
1388 or the change that introduced a regression, which often makes developing a fix
1389 easier. And with a bit of luck there might be someone in the team that knows a
1390 bit about programming and might be able to write a fix.
1393 Details about reporting issues only occurring in older kernel version lines
1394 ---------------------------------------------------------------------------
1396 This subsection provides details for steps you need to take if you could not
1397 reproduce your issue with a mainline kernel, but want to see it fixed in older
1398 version lines (aka stable and longterm kernels).
1400 Some fixes are too complex
1401 ~~~~~~~~~~~~~~~~~~~~~~~~~~
1403     *Prepare yourself for the possibility that going through the next few steps
1404     might not get the issue solved in older releases: the fix might be too big
1405     or risky to get backported there.*
1407 Even small and seemingly obvious code-changes sometimes introduce new and
1408 totally unexpected problems. The maintainers of the stable and longterm kernels
1409 are very aware of that and thus only apply changes to these kernels that are
1410 within rules outlined in 'Documentation/process/stable-kernel-rules.rst'.
1412 Complex or risky changes for example do not qualify and thus only get applied
1413 to mainline. Other fixes are easy to get backported to the newest stable and
1414 longterm kernels, but too risky to integrate into older ones. So be aware the
1415 fix you are hoping for might be one of those that won't be backported to the
1416 version line your care about. In that case you'll have no other choice then to
1417 live with the issue or switch to a newer Linux version, unless you want to
1418 patch the fix into your kernels yourself.
1420 Make sure the particular version line still gets support
1421 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1423     *Check if the kernel developers still maintain the Linux kernel version
1424     line you care about: go to the front page of kernel.org and make sure it
1425     mentions the latest release of the particular version line without an
1426     '[EOL]' tag.*
1428 Most kernel version lines only get supported for about three months, as
1429 maintaining them longer is quite a lot of work. Hence, only one per year is
1430 chosen and gets supported for at least two years (often six). That's why you
1431 need to check if the kernel developers still support the version line you care
1432 for.
1434 Note, if kernel.org lists two 'stable' version lines on the front page, you
1435 should consider switching to the newer one and forget about the older one:
1436 support for it is likely to be abandoned soon. Then it will get a "end-of-life"
1437 (EOL) stamp. Version lines that reached that point still get mentioned on the
1438 kernel.org front page for a week or two, but are unsuitable for testing and
1439 reporting.
1441 Search stable mailing list
1442 ~~~~~~~~~~~~~~~~~~~~~~~~~~
1444     *Check the archives of the Linux stable mailing list for existing reports.*
1446 Maybe the issue you face is already known and was fixed or is about to. Hence,
1447 `search the archives of the Linux stable mailing list
1448 <https://lore.kernel.org/stable/>`_ for reports about an issue like yours. If
1449 you find any matches, consider joining the discussion, unless the fix is
1450 already finished and scheduled to get applied soon.
1452 Reproduce issue with the newest release
1453 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1455     *Install the latest release from the particular version line as a vanilla
1456     kernel. Ensure this kernel is not tainted and still shows the problem, as
1457     the issue might have already been fixed there.*
1459 Before investing any more time in this process you want to check if the issue
1460 was already fixed in the latest release of version line you're interested in.
1461 This kernel needs to be vanilla and shouldn't be tainted before the issue
1462 happens, as detailed outlined already above in the process of testing mainline.
1464 Check code history and search for existing discussions
1465 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1467     *Search the Linux kernel version control system for the change that fixed
1468     the issue in mainline, as its commit message might tell you if the fix is
1469     scheduled for backporting already. If you don't find anything that way,
1470     search the appropriate mailing lists for posts that discuss such an issue
1471     or peer-review possible fixes; then check the discussions if the fix was
1472     deemed unsuitable for backporting. If backporting was not considered at
1473     all, join the newest discussion, asking if it's in the cards.*
1475 In a lot of cases the issue you deal with will have happened with mainline, but
1476 got fixed there. The commit that fixed it would need to get backported as well
1477 to get the issue solved. That's why you want to search for it or any
1478 discussions abound it.
1480  * First try to find the fix in the Git repository that holds the Linux kernel
1481    sources. You can do this with the web interfaces `on kernel.org
1482    <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/>`_
1483    or its mirror `on GitHub <https://github.com/torvalds/linux>`_; if you have
1484    a local clone you alternatively can search on the command line with ``git
1485    log --grep=<pattern>``.
1487    If you find the fix, look if the commit message near the end contains a
1488    'stable tag' that looks like this:
1490           Cc: <stable@vger.kernel.org> # 5.4+
1492    If that's case the developer marked the fix safe for backporting to version
1493    line 5.4 and later. Most of the time it's getting applied there within two
1494    weeks, but sometimes it takes a bit longer.
1496  * If the commit doesn't tell you anything or if you can't find the fix, look
1497    again for discussions about the issue. Search the net with your favorite
1498    internet search engine as well as the archives for the `Linux kernel
1499    developers mailing list <https://lore.kernel.org/lkml/>`_. Also read the
1500    section `Locate kernel area that causes the issue` above and follow the
1501    instructions to find the subsystem in question: its bug tracker or mailing
1502    list archive might have the answer you are looking for.
1504  * If you see a proposed fix, search for it in the version control system as
1505    outlined above, as the commit might tell you if a backport can be expected.
1507    * Check the discussions for any indicators the fix might be too risky to get
1508      backported to the version line you care about. If that's the case you have
1509      to live with the issue or switch to the kernel version line where the fix
1510      got applied.
1512    * If the fix doesn't contain a stable tag and backporting was not discussed,
1513      join the discussion: mention the version where you face the issue and that
1514      you would like to see it fixed, if suitable.
1516 Check if it's a regression specific to stable or longterm kernels
1517 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1519     *Check if you're dealing with a regression that was never present in
1520     mainline by installing the first release of the version line you care
1521     about. If the issue doesn't show up with it, you basically need to report
1522     the issue with this version like you would report a problem with mainline
1523     (see above). This ideally includes a bisection followed by a search for
1524     existing reports on the net; with the help of the subject and the two
1525     relevant commit-ids. If that doesn't turn up anything, write the report; CC
1526     or forward the report to the stable maintainers, the stable mailing list,
1527     and those who authored the change. Include the shortened commit-id if you
1528     found the change that causes it.*
1530 Sometimes you won't find anything in the previous step: the issue you face
1531 might have never occurred in mainline, as it is caused by some change that is
1532 incomplete or not correctly applied. To check this, install the first release
1533 from version line you care about, e.g., if you care about 5.4.x, install 5.4.
1535 If the issue doesn't show itself there, it's a regression specific to the
1536 particular version line. In that case you need to report it like an issue
1537 happening in mainline, like the last few steps in the main section in the above
1538 outline.
1540 One of them suggests doing a bisection, which you are strongly advised to do in
1541 this case. After finding the culprit, search the net for existing reports
1542 again: not only search for the exact subject and the commit-id (proper and
1543 shortened to twelve characters) of the change, but also for the commit-id
1544 (proper and shortened) mentioned as 'Upstream commit' in the commit message.
1546 Write the report; just keep a few specialties in mind: CC or forward the report
1547 to the stable maintainers, the stable mailing list, which the :ref:`MAINTAINERS
1548 <maintainers>` file mentions in the section "STABLE BRANCH". If you performed a
1549 successful bisection, CC the author of the change and include its subject and
1550 the shortened commit-id.
1552 Ask for advice
1553 ~~~~~~~~~~~~~~
1555     *One of the former steps should lead to a solution. If that doesn't work
1556     out, ask the maintainers for the subsystem that seems to be causing the
1557     issue for advice; CC the mailing list for the particular subsystem as well
1558     as the stable mailing list.*
1560 If the previous three steps didn't get you closer to a solution there is only
1561 one option left: ask for advice. Do that in a mail you sent to the maintainers
1562 for the subsystem where the issue seems to have its roots; CC the mailing list
1563 for the subsystem as well as the stable mailing list the :ref:`MAINTAINERS
1564 <maintainers>` file mention in the section "STABLE BRANCH".
1567 Why some issues won't get any reaction or remain unfixed after being reported
1568 =============================================================================
1570 When reporting a problem to the Linux developers, be aware only 'issues of high
1571 priority' (regressions, security issues, severe problems) are definitely going
1572 to get resolved. The maintainers or if all else fails Linus Torvalds himself
1573 will make sure of that. They and the other kernel developers will fix a lot of
1574 other issues as well. But be aware that sometimes they can't or won't help; and
1575 sometimes there isn't even anyone to send a report to.
1577 This is best explained with kernel developers that contribute to the Linux
1578 kernel in their spare time. Quite a few of the drivers in the kernel were
1579 written by such programmers, often because they simply wanted to make their
1580 hardware usable on their favorite operating system.
1582 These programmers most of the time will happily fix problems other people
1583 report. But nobody can force them to do, as they are contributing voluntarily.
1585 Then there are situations where such developers really want to fix an issue,
1586 but can't: sometimes they lack hardware programming documentation to do so.
1587 This often happens when the publicly available docs are superficial or the
1588 driver was written with the help of reverse engineering.
1590 Sooner or later spare time developers will also stop caring for the driver.
1591 Maybe their test hardware broke, got replaced by something more fancy, or is so
1592 old that it's something you don't find much outside of computer museums
1593 anymore. Sometimes developer stops caring for their code and Linux at all, as
1594 something different in their life became way more important. In some cases
1595 nobody is willing to take over the job as maintainer – and nobody can be forced
1596 to, as contributing to the Linux kernel is done on a voluntary basis. Abandoned
1597 drivers nevertheless remain in the kernel: they are still useful for people and
1598 removing would be a regression.
1600 The situation is not that different with developers that are paid for their
1601 work on the Linux kernel. Those contribute most changes these days. But their
1602 employers sooner or later also stop caring for their code or make its
1603 programmer focus on other things. Hardware vendors for example earn their money
1604 mainly by selling new hardware; quite a few of them hence are not investing
1605 much time and energy in maintaining a Linux kernel driver for something they
1606 stopped selling years ago. Enterprise Linux distributors often care for a
1607 longer time period, but in new versions often leave support for old and rare
1608 hardware aside to limit the scope. Often spare time contributors take over once
1609 a company orphans some code, but as mentioned above: sooner or later they will
1610 leave the code behind, too.
1612 Priorities are another reason why some issues are not fixed, as maintainers
1613 quite often are forced to set those, as time to work on Linux is limited.
1614 That's true for spare time or the time employers grant their developers to
1615 spend on maintenance work on the upstream kernel. Sometimes maintainers also
1616 get overwhelmed with reports, even if a driver is working nearly perfectly. To
1617 not get completely stuck, the programmer thus might have no other choice than
1618 to prioritize issue reports and reject some of them.
1620 But don't worry too much about all of this, a lot of drivers have active
1621 maintainers who are quite interested in fixing as many issues as possible.
1624 Closing words
1625 =============
1627 Compared with other Free/Libre & Open Source Software it's hard to report
1628 issues to the Linux kernel developers: the length and complexity of this
1629 document and the implications between the lines illustrate that. But that's how
1630 it is for now. The main author of this text hopes documenting the state of the
1631 art will lay some groundwork to improve the situation over time.