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