€•îŒsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ./translations/zh_CN/process/maintainer-kvm-x86”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/zh_TW/process/maintainer-kvm-x86”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/it_IT/process/maintainer-kvm-x86”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/ja_JP/process/maintainer-kvm-x86”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/ko_KR/process/maintainer-kvm-x86”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/pt_BR/process/maintainer-kvm-x86”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/sp_SP/process/maintainer-kvm-x86”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒH/var/lib/git/docbuild/linux/Documentation/process/maintainer-kvm-x86.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒKVM x86”h]”hŒKVM x86”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒForeword”h]”hŒForeword”…”�”}”(hhàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÝh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hXâKVM strives to be a welcoming community; contributions from newcomers are valued and encouraged. Please do not be discouraged or intimidated by the length of this document and the many rules/guidelines it contains. Everyone makes mistakes, and everyone was a newbie at some point. So long as you make an honest effort to follow KVM x86's guidelines, are receptive to feedback, and learn from any mistakes you make, you will be welcomed with open arms, not torches and pitchforks.”h]”hXäKVM strives to be a welcoming community; contributions from newcomers are valued and encouraged. Please do not be discouraged or intimidated by the length of this document and the many rules/guidelines it contains. Everyone makes mistakes, and everyone was a newbie at some point. So long as you make an honest effort to follow KVM x86’s guidelines, are receptive to feedback, and learn from any mistakes you make, you will be welcomed with open arms, not torches and pitchforks.”…”�”}”(hhðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhhÝh²hubeh}”(h]”Œforeword”ah ]”h"]”Œforeword”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒTL;DR”h]”hŒTL;DR”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´Kubhï)�”}”(hŒJTesting is mandatory. Be consistent with established styles and patterns.”h]”hŒJTesting is mandatory. Be consistent with established styles and patterns.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khjh²hubeh}”(h]”Œtl-dr”ah ]”h"]”Œtl;dr”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒTrees”h]”hŒTrees”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj-h²hh³hÇh´Kubhï)�”}”(hXKVM x86 is currently in a transition period from being part of the main KVM tree, to being "just another KVM arch". As such, KVM x86 is split across the main KVM tree, ``git.kernel.org/pub/scm/virt/kvm/kvm.git``, and a KVM x86 specific tree, ``github.com/kvm-x86/linux.git``.”h]”(hŒ­KVM x86 is currently in a transition period from being part of the main KVM tree, to being “just another KVM archâ€�. As such, KVM x86 is split across the main KVM tree, ”…”�”}”(hj>h²hh³Nh´NubhŒliteral”“”)�”}”(hŒ+``git.kernel.org/pub/scm/virt/kvm/kvm.git``”h]”hŒ'git.kernel.org/pub/scm/virt/kvm/kvm.git”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj>ubhŒ, and a KVM x86 specific tree, ”…”�”}”(hj>h²hh³Nh´NubjG)�”}”(hŒ ``github.com/kvm-x86/linux.git``”h]”hŒgithub.com/kvm-x86/linux.git”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj>ubhŒ.”…”�”}”(hj>h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj-h²hubhï)�”}”(hXZGenerally speaking, fixes for the current cycle are applied directly to the main KVM tree, while all development for the next cycle is routed through the KVM x86 tree. In the unlikely event that a fix for the current cycle is routed through the KVM x86 tree, it will be applied to the ``fixes`` branch before making its way to the main KVM tree.”h]”(hXGenerally speaking, fixes for the current cycle are applied directly to the main KVM tree, while all development for the next cycle is routed through the KVM x86 tree. In the unlikely event that a fix for the current cycle is routed through the KVM x86 tree, it will be applied to the ”…”�”}”(hjrh²hh³Nh´NubjG)�”}”(hŒ ``fixes``”h]”hŒfixes”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjrubhŒ3 branch before making its way to the main KVM tree.”…”�”}”(hjrh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj-h²hubhï)�”}”(hŒyNote, this transition period is expected to last quite some time, i.e. will be the status quo for the foreseeable future.”h]”hŒyNote, this transition period is expected to last quite some time, i.e. will be the status quo for the foreseeable future.”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K!hj-h²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒBranches”h]”hŒBranches”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj h²hh³hÇh´K%ubhï)�”}”(hXªThe KVM x86 tree is organized into multiple topic branches. The purpose of using finer-grained topic branches is to make it easier to keep tabs on an area of development, and to limit the collateral damage of human errors and/or buggy commits, e.g. dropping the HEAD commit of a topic branch has no impact on other in-flight commits' SHA1 hashes, and having to reject a pull request due to bugs delays only that topic branch.”h]”hX¬The KVM x86 tree is organized into multiple topic branches. The purpose of using finer-grained topic branches is to make it easier to keep tabs on an area of development, and to limit the collateral damage of human errors and/or buggy commits, e.g. dropping the HEAD commit of a topic branch has no impact on other in-flight commits’ SHA1 hashes, and having to reject a pull request due to bugs delays only that topic branch.”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K&hj h²hubhï)�”}”(hŒÑAll topic branches, except for ``next`` and ``fixes``, are rolled into ``next`` via a Cthulhu merge on an as-needed basis, i.e. when a topic branch is updated. As a result, force pushes to ``next`` are common.”h]”(hŒAll topic branches, except for ”…”�”}”(hj¿h²hh³Nh´NubjG)�”}”(hŒ``next``”h]”hŒnext”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj¿ubhŒ and ”…”�”}”(hj¿h²hh³Nh´NubjG)�”}”(hŒ ``fixes``”h]”hŒfixes”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj¿ubhŒ, are rolled into ”…”�”}”(hj¿h²hh³Nh´NubjG)�”}”(hŒ``next``”h]”hŒnext”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj¿ubhŒn via a Cthulhu merge on an as-needed basis, i.e. when a topic branch is updated. As a result, force pushes to ”…”�”}”(hj¿h²hh³Nh´NubjG)�”}”(hŒ``next``”h]”hŒnext”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj¿ubhŒ are common.”…”�”}”(hj¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K-hj h²hubeh}”(h]”Œbranches”ah ]”h"]”Œbranches”ah$]”h&]”uh1hÈhj-h²hh³hÇh´K%ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Lifecycle”h]”hŒ Lifecycle”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´K2ubhï)�”}”(hŒ˜Fixes that target the current release, a.k.a. mainline, are typically applied directly to the main KVM tree, i.e. do not route through the KVM x86 tree.”h]”hŒ˜Fixes that target the current release, a.k.a. mainline, are typically applied directly to the main KVM tree, i.e. do not route through the KVM x86 tree.”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K3hjh²hubhï)�”}”(hX}Changes that target the next release are routed through the KVM x86 tree. Pull requests (from KVM x86 to main KVM) are sent for each KVM x86 topic branch, typically the week before Linus' opening of the merge window, e.g. the week following rc7 for "normal" releases. If all goes well, the topic branches are rolled into the main KVM pull request sent during Linus' merge window.”h]”hX…Changes that target the next release are routed through the KVM x86 tree. Pull requests (from KVM x86 to main KVM) are sent for each KVM x86 topic branch, typically the week before Linus’ opening of the merge window, e.g. the week following rc7 for “normalâ€� releases. If all goes well, the topic branches are rolled into the main KVM pull request sent during Linus’ merge window.”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K6hjh²hubhï)�”}”(hŒåThe KVM x86 tree doesn't have its own official merge window, but there's a soft close around rc5 for new features, and a soft close around rc6 for fixes (for the next release; see above for fixes that target the current release).”h]”hŒéThe KVM x86 tree doesn’t have its own official merge window, but there’s a soft close around rc5 for new features, and a soft close around rc6 for fixes (for the next release; see above for fixes that target the current release).”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K:``, where ```` is one of::”h]”(hŒThe preferred prefix format is ”…”�”}”(hjbh²hh³Nh´NubjG)�”}”(hŒ``KVM: :``”h]”hŒ KVM: :”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjbubhŒ, where ”…”�”}”(hjbh²hh³Nh´NubjG)�”}”(hŒ ````”h]”hŒ”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjbubhŒ is one of:”…”�”}”(hjbh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K–hjQh²hubhŒ literal_block”“”)�”}”(hŒI- x86 - x86/mmu - x86/pmu - x86/xen - selftests - SVM - nSVM - VMX - nVMX”h]”hŒI- x86 - x86/mmu - x86/pmu - x86/xen - selftests - SVM - nSVM - VMX - nVMX”…”�”}”hj–sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j”h³hÇh´K˜hjQh²hubhï)�”}”(hŒÈ**DO NOT use x86/kvm!** ``x86/kvm`` is used exclusively for Linux-as-a-KVM-guest changes, i.e. for arch/x86/kernel/kvm.c. Do not use file names or complete file paths as the subject/shortlog prefix.”h]”(hŒstrong”“”)�”}”(hŒ**DO NOT use x86/kvm!**”h]”hŒDO NOT use x86/kvm!”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¨hj¤ubhŒ ”…”�”}”(hj¤h²hh³Nh´NubjG)�”}”(hŒ ``x86/kvm``”h]”hŒx86/kvm”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj¤ubhŒ¤ is used exclusively for Linux-as-a-KVM-guest changes, i.e. for arch/x86/kernel/kvm.c. Do not use file names or complete file paths as the subject/shortlog prefix.”…”�”}”(hj¤h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¢hjQh²hubhï)�”}”(hŒjNote, these don't align with the topics branches (the topic branches care much more about code conflicts).”h]”hŒlNote, these don’t align with the topics branches (the topic branches care much more about code conflicts).”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¦hjQh²hubhï)�”}”(hŒKAll names are case sensitive! ``KVM: x86:`` is good, ``kvm: vmx:`` is not.”h]”(hŒAll names are case sensitive! ”…”�”}”(hjâh²hh³Nh´NubjG)�”}”(hŒ ``KVM: x86:``”h]”hŒ KVM: x86:”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjâubhŒ is good, ”…”�”}”(hjâh²hh³Nh´NubjG)�”}”(hŒ ``kvm: vmx:``”h]”hŒ kvm: vmx:”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjâubhŒ is not.”…”�”}”(hjâh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K©hjQh²hubhï)�”}”(hŒdCapitalize the first word of the condensed patch description, but omit ending punctionation. E.g.::”h]”hŒcCapitalize the first word of the condensed patch description, but omit ending punctionation. E.g.:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K«hjQh²hubj•)�”}”(hŒ:KVM: x86: Fix a null pointer dereference in function_xyz()”h]”hŒ:KVM: x86: Fix a null pointer dereference in function_xyz()”…”�”}”hj"sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j”h³hÇh´K®hjQh²hubhï)�”}”(hŒnot::”h]”hŒnot:”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K°hjQh²hubj•)�”}”(hŒ9kvm: x86: fix a null pointer dereference in function_xyz.”h]”hŒ9kvm: x86: fix a null pointer dereference in function_xyz.”…”�”}”hj>sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j”h³hÇh´K²hjQh²hubhï)�”}”(hŒÏIf a patch touches multiple topics, traverse up the conceptual tree to find the first common parent (which is often simply ``x86``). When in doubt, ``git log path/to/file`` should provide a reasonable hint.”h]”(hŒ{If a patch touches multiple topics, traverse up the conceptual tree to find the first common parent (which is often simply ”…”�”}”(hjLh²hh³Nh´NubjG)�”}”(hŒ``x86``”h]”hŒx86”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjLubhŒ). When in doubt, ”…”�”}”(hjLh²hh³Nh´NubjG)�”}”(hŒ``git log path/to/file``”h]”hŒgit log path/to/file”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjLubhŒ" should provide a reasonable hint.”…”�”}”(hjLh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K´hjQh²hubhï)�”}”(hŒŽNew topics do occasionally pop up, but please start an on-list discussion if you want to propose introducing a new topic, i.e. don't go rogue.”h]”hŒ�New topics do occasionally pop up, but please start an on-list discussion if you want to propose introducing a new topic, i.e. don’t go rogue.”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¸hjQh²hubhï)�”}”(hXYSee :ref:`the_canonical_patch_format` for more information, with one amendment: do not treat the 70-75 character limit as an absolute, hard limit. Instead, use 75 characters as a firm-but-not-hard limit, and use 80 characters as a hard limit. I.e. let the shortlog run a few characters over the standard limit if you have good reason to do so.”h]”(hŒSee ”…”�”}”(hjŒh²hh³Nh´Nubh)�”}”(hŒ!:ref:`the_canonical_patch_format`”h]”js)�”}”(hj–h]”hŒthe_canonical_patch_format”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”(j~Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jrhj”ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j‹Œ refdomain”j¢Œreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆj‘Œthe_canonical_patch_format”uh1hh³hÇh´K»hjŒubhX4 for more information, with one amendment: do not treat the 70-75 character limit as an absolute, hard limit. Instead, use 75 characters as a firm-but-not-hard limit, and use 80 characters as a hard limit. I.e. let the shortlog run a few characters over the standard limit if you have good reason to do so.”…”�”}”(hjŒh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K»hjQh²hubeh}”(h]”Œshortlog”ah ]”h"]”Œshortlog”ah$]”h&]”uh1hÈhj«h²hh³hÇh´K•ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Changelog”h]”hŒ Changelog”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÆh²hh³hÇh´KÂubhï)�”}”(hŒLMost importantly, write changelogs using imperative mood and avoid pronouns.”h]”hŒLMost importantly, write changelogs using imperative mood and avoid pronouns.”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÃhjÆh²hubhï)�”}”(hXuSee :ref:`describe_changes` for more information, with one amendment: lead with a short blurb on the actual changes, and then follow up with the context and background. Note! This order directly conflicts with the tip tree's preferred approach! Please follow the tip tree's preferred style when sending patches that primarily target arch/x86 code that is _NOT_ KVM code.”h]”(hŒSee ”…”�”}”(hjåh²hh³Nh´Nubh)�”}”(hŒ:ref:`describe_changes`”h]”js)�”}”(hjïh]”hŒdescribe_changes”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”(j~Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jrhjíubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j‹Œ refdomain”jûŒreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆj‘Œdescribe_changes”uh1hh³hÇh´KÅhjåubhX^ for more information, with one amendment: lead with a short blurb on the actual changes, and then follow up with the context and background. Note! This order directly conflicts with the tip tree’s preferred approach! Please follow the tip tree’s preferred style when sending patches that primarily target arch/x86 code that is _NOT_ KVM code.”…”�”}”(hjåh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÅhjÆh²hubhï)�”}”(hX€Stating what a patch does before diving into details is preferred by KVM x86 for several reasons. First and foremost, what code is actually being changed is arguably the most important information, and so that info should be easy to find. Changelogs that bury the "what's actually changing" in a one-liner after 3+ paragraphs of background make it very hard to find that information.”h]”hX†Stating what a patch does before diving into details is preferred by KVM x86 for several reasons. First and foremost, what code is actually being changed is arguably the most important information, and so that info should be easy to find. Changelogs that bury the “what’s actually changingâ€� in a one-liner after 3+ paragraphs of background make it very hard to find that information.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KËhjÆh²hubhï)�”}”(hX“For initial review, one could argue the "what's broken" is more important, but for skimming logs and git archaeology, the gory details matter less and less. E.g. when doing a series of "git blame", the details of each change along the way are useless, the details only matter for the culprit. Providing the "what changed" makes it easy to quickly determine whether or not a commit might be of interest.”h]”hX¡For initial review, one could argue the “what’s brokenâ€� is more important, but for skimming logs and git archaeology, the gory details matter less and less. E.g. when doing a series of “git blameâ€�, the details of each change along the way are useless, the details only matter for the culprit. Providing the “what changedâ€� makes it easy to quickly determine whether or not a commit might be of interest.”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÑhjÆh²hubhï)�”}”(hX»Another benefit of stating "what's changing" first is that it's almost always possible to state "what's changing" in a single sentence. Conversely, all but the most simple bugs require multiple sentences or paragraphs to fully describe the problem. If both the "what's changing" and "what's the bug" are super short then the order doesn't matter. But if one is shorter (almost always the "what's changing), then covering the shorter one first is advantageous because it's less of an inconvenience for readers/reviewers that have a strict ordering preference. E.g. having to skip one sentence to get to the context is less painful than having to skip three paragraphs to get to "what's changing".”h]”hXãAnother benefit of stating “what’s changingâ€� first is that it’s almost always possible to state “what’s changingâ€� in a single sentence. Conversely, all but the most simple bugs require multiple sentences or paragraphs to fully describe the problem. If both the “what’s changingâ€� and “what’s the bugâ€� are super short then the order doesn’t matter. But if one is shorter (almost always the “what’s changing), then covering the shorter one first is advantageous because it’s less of an inconvenience for readers/reviewers that have a strict ordering preference. E.g. having to skip one sentence to get to the context is less painful than having to skip three paragraphs to get to “what’s changingâ€�.”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KØhjÆh²hubeh}”(h]”Œ changelog”ah ]”h"]”Œ changelog”ah$]”h&]”uh1hÈhj«h²hh³hÇh´KÂubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒFixes”h]”hŒFixes”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjIh²hh³hÇh´Kãubhï)�”}”(hŒ°If a change fixes a KVM/kernel bug, add a Fixes: tag even if the change doesn't need to be backported to stable kernels, and even if the change fixes a bug in an older release.”h]”hŒ²If a change fixes a KVM/kernel bug, add a Fixes: tag even if the change doesn’t need to be backported to stable kernels, and even if the change fixes a bug in an older release.”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KähjIh²hubhï)�”}”(hX<Conversely, if a fix does need to be backported, explicitly tag the patch with "Cc: stable@vger.kernel" (though the email itself doesn't need to Cc: stable); KVM x86 opts out of backporting Fixes: by default. Some auto-selected patches do get backported, but require explicit maintainer approval (search MANUALSEL).”h]”(hŒVConversely, if a fix does need to be backported, explicitly tag the patch with “Cc: ”…”�”}”(hjhh²hh³Nh´NubhŒ reference”“”)�”}”(hŒstable@vger.kernel”h]”hŒstable@vger.kernel”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:stable@vger.kernel”uh1jphjhubhŒÚâ€� (though the email itself doesn’t need to Cc: stable); KVM x86 opts out of backporting Fixes: by default. Some auto-selected patches do get backported, but require explicit maintainer approval (search MANUALSEL).”…”�”}”(hjhh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KèhjIh²hubeh}”(h]”Œfixes”ah ]”h"]”Œfixes”ah$]”h&]”uh1hÈhj«h²hh³hÇh´KãubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒFunction References”h]”hŒFunction References”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj”h²hh³hÇh´Kîubhï)�”}”(hŒÅWhen a function is mentioned in a comment, changelog, or shortlog (or anywhere for that matter), use the format ``function_name()``. The parentheses provide context and disambiguate the reference.”h]”(hŒpWhen a function is mentioned in a comment, changelog, or shortlog (or anywhere for that matter), use the format ”…”�”}”(hj¥h²hh³Nh´NubjG)�”}”(hŒ``function_name()``”h]”hŒfunction_name()”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj¥ubhŒB. The parentheses provide context and disambiguate the reference.”…”�”}”(hj¥h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kïhj”h²hubeh}”(h]”Œfunction-references”ah ]”h"]”Œfunction references”ah$]”h&]”uh1hÈhj«h²hh³hÇh´Kîubeh}”(h]”Œ development”ah ]”h"]”Œ development”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KSubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒTesting”h]”hŒTesting”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÕh²hh³hÇh´Kôubhï)�”}”(hX At a bare minimum, *all* patches in a series must build cleanly for KVM_INTEL=m KVM_AMD=m, and KVM_WERROR=y. Building every possible combination of Kconfigs isn't feasible, but the more the merrier. KVM_SMM, KVM_XEN, PROVE_LOCKING, and X86_64 are particularly interesting knobs to turn.”h]”(hŒAt a bare minimum, ”…”�”}”(hjæh²hh³Nh´Nubj˜)�”}”(hŒ*all*”h]”hŒall”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j—hjæubhX  patches in a series must build cleanly for KVM_INTEL=m KVM_AMD=m, and KVM_WERROR=y. Building every possible combination of Kconfigs isn’t feasible, but the more the merrier. KVM_SMM, KVM_XEN, PROVE_LOCKING, and X86_64 are particularly interesting knobs to turn.”…”�”}”(hjæh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KõhjÕh²hubhï)�”}”(hX‚Running KVM selftests and KVM-unit-tests is also mandatory (and stating the obvious, the tests need to pass). The only exception is for changes that have negligible probability of affecting runtime behavior, e.g. patches that only modify comments. When possible and relevant, testing on both Intel and AMD is strongly preferred. Booting an actual VM is encouraged, but not mandatory.”h]”hX‚Running KVM selftests and KVM-unit-tests is also mandatory (and stating the obvious, the tests need to pass). The only exception is for changes that have negligible probability of affecting runtime behavior, e.g. patches that only modify comments. When possible and relevant, testing on both Intel and AMD is strongly preferred. Booting an actual VM is encouraged, but not mandatory.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KúhjÕh²hubhï)�”}”(hXWFor changes that touch KVM's shadow paging code, running with TDP (EPT/NPT) disabled is mandatory. For changes that affect common KVM MMU code, running with TDP disabled is strongly encouraged. For all other changes, if the code being modified depends on and/or interacts with a module param, testing with the relevant settings is mandatory.”h]”hXYFor changes that touch KVM’s shadow paging code, running with TDP (EPT/NPT) disabled is mandatory. For changes that affect common KVM MMU code, running with TDP disabled is strongly encouraged. For all other changes, if the code being modified depends on and/or interacts with a module param, testing with the relevant settings is mandatory.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MhjÕh²hubhï)�”}”(hŒ¿Note, KVM selftests and KVM-unit-tests do have known failures. If you suspect a failure is not due to your changes, verify that the *exact same* failure occurs with and without your changes.”h]”(hŒ…Note, KVM selftests and KVM-unit-tests do have known failures. If you suspect a failure is not due to your changes, verify that the ”…”�”}”(hj"h²hh³Nh´Nubj˜)�”}”(hŒ *exact same*”h]”hŒ exact same”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j—hj"ubhŒ. failure occurs with and without your changes.”…”�”}”(hj"h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MhjÕh²hubhï)�”}”(hŒ†Changes that touch reStructured Text documentation, i.e. .rst files, must build htmldocs cleanly, i.e. with no new warnings or errors.”h]”hŒ†Changes that touch reStructured Text documentation, i.e. .rst files, must build htmldocs cleanly, i.e. with no new warnings or errors.”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M hjÕh²hubhï)�”}”(hŒ’If you can't fully test a change, e.g. due to lack of hardware, clearly state what level of testing you were able to do, e.g. in the cover letter.”h]”hŒ”If you can’t fully test a change, e.g. due to lack of hardware, clearly state what level of testing you were able to do, e.g. in the cover letter.”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M hjÕh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ New Features”h]”hŒ New Features”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj^h²hh³hÇh´Mubhï)�”}”(hX¼With one exception, new features *must* come with test coverage. KVM specific tests aren't strictly required, e.g. if coverage is provided by running a sufficiently enabled guest VM, or by running a related kernel selftest in a VM, but dedicated KVM tests are preferred in all cases. Negative testcases in particular are mandatory for enabling of new hardware features as error and exception flows are rarely exercised simply by running a VM.”h]”(hŒ!With one exception, new features ”…”�”}”(hjoh²hh³Nh´Nubj˜)�”}”(hŒ*must*”h]”hŒmust”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j—hjoubhX— come with test coverage. KVM specific tests aren’t strictly required, e.g. if coverage is provided by running a sufficiently enabled guest VM, or by running a related kernel selftest in a VM, but dedicated KVM tests are preferred in all cases. Negative testcases in particular are mandatory for enabling of new hardware features as error and exception flows are rarely exercised simply by running a VM.”…”�”}”(hjoh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mhj^h²hubhï)�”}”(hŒäThe only exception to this rule is if KVM is simply advertising support for a feature via KVM_GET_SUPPORTED_CPUID, i.e. for instructions/features that KVM can't prevent a guest from using and for which there is no true enabling.”h]”hŒæThe only exception to this rule is if KVM is simply advertising support for a feature via KVM_GET_SUPPORTED_CPUID, i.e. for instructions/features that KVM can’t prevent a guest from using and for which there is no true enabling.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mhj^h²hubhï)�”}”(hŒ´Note, "new features" does not just mean "new hardware features"! New features that can't be well validated using existing KVM selftests and/or KVM-unit-tests must come with tests.”h]”hŒ¾Note, “new featuresâ€� does not just mean “new hardware featuresâ€�! New features that can’t be well validated using existing KVM selftests and/or KVM-unit-tests must come with tests.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mhj^h²hubhï)�”}”(hX+Posting new feature development without tests to get early feedback is more than welcome, but such submissions should be tagged RFC, and the cover letter should clearly state what type of feedback is requested/expected. Do not abuse the RFC process; RFCs will typically not receive in-depth review.”h]”hX+Posting new feature development without tests to get early feedback is more than welcome, but such submissions should be tagged RFC, and the cover letter should clearly state what type of feedback is requested/expected. Do not abuse the RFC process; RFCs will typically not receive in-depth review.”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M!hj^h²hubeh}”(h]”Œ new-features”ah ]”h"]”Œ new features”ah$]”h&]”uh1hÈhjÕh²hh³hÇh´MubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Bug Fixes”h]”hŒ Bug Fixes”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÁh²hh³hÇh´M'ubhï)�”}”(hX©Except for "obvious" found-by-inspection bugs, fixes must be accompanied by a reproducer for the bug being fixed. In many cases the reproducer is implicit, e.g. for build errors and test failures, but it should still be clear to readers what is broken and how to verify the fix. Some leeway is given for bugs that are found via non-public workloads/tests, but providing regression tests for such bugs is strongly preferred.”h]”hX­Except for “obviousâ€� found-by-inspection bugs, fixes must be accompanied by a reproducer for the bug being fixed. In many cases the reproducer is implicit, e.g. for build errors and test failures, but it should still be clear to readers what is broken and how to verify the fix. Some leeway is given for bugs that are found via non-public workloads/tests, but providing regression tests for such bugs is strongly preferred.”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M(hjÁh²hubhï)�”}”(hX In general, regression tests are preferred for any bug that is not trivial to hit. E.g. even if the bug was originally found by a fuzzer such as syzkaller, a targeted regression test may be warranted if the bug requires hitting a one-in-a-million type race condition.”h]”hX In general, regression tests are preferred for any bug that is not trivial to hit. E.g. even if the bug was originally found by a fuzzer such as syzkaller, a targeted regression test may be warranted if the bug requires hitting a one-in-a-million type race condition.”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M/hjÁh²hubhï)�”}”(hŒ§Note, KVM bugs are rarely urgent *and* non-trivial to reproduce. Ask yourself if a bug is really truly the end of the world before posting a fix without a reproducer.”h]”(hŒ!Note, KVM bugs are rarely urgent ”…”�”}”(hjîh²hh³Nh´Nubj˜)�”}”(hŒ*and*”h]”hŒand”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j—hjîubhŒ� non-trivial to reproduce. Ask yourself if a bug is really truly the end of the world before posting a fix without a reproducer.”…”�”}”(hjîh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M4hjÁh²hubeh}”(h]”Œ bug-fixes”ah ]”h"]”Œ bug fixes”ah$]”h&]”uh1hÈhjÕh²hh³hÇh´M'ubeh}”(h]”Œtesting”ah ]”h"]”Œtesting”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KôubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒPosting”h]”hŒPosting”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´M9ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒLinks”h]”hŒLinks”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj/h²hh³hÇh´M<ubhï)�”}”(hXŽDo not explicitly reference bug reports, prior versions of a patch/series, etc. via ``In-Reply-To:`` headers. Using ``In-Reply-To:`` becomes an unholy mess for large series and/or when the version count gets high, and ``In-Reply-To:`` is useless for anyone that doesn't have the original message, e.g. if someone wasn't Cc'd on the bug report or if the list of recipients changes between versions.”h]”(hŒTDo not explicitly reference bug reports, prior versions of a patch/series, etc. via ”…”�”}”(hj@h²hh³Nh´NubjG)�”}”(hŒ``In-Reply-To:``”h]”hŒ In-Reply-To:”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj@ubhŒ headers. Using ”…”�”}”(hj@h²hh³Nh´NubjG)�”}”(hŒ``In-Reply-To:``”h]”hŒ In-Reply-To:”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj@ubhŒV becomes an unholy mess for large series and/or when the version count gets high, and ”…”�”}”(hj@h²hh³Nh´NubjG)�”}”(hŒ``In-Reply-To:``”h]”hŒ In-Reply-To:”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj@ubhŒ© is useless for anyone that doesn’t have the original message, e.g. if someone wasn’t Cc’d on the bug report or if the list of recipients changes between versions.”…”�”}”(hj@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M=hj/h²hubhï)�”}”(hXÍTo link to a bug report, previous version, or anything of interest, use lore links. For referencing previous version(s), generally speaking do not include a Link: in the changelog as there is no need to record the history in git, i.e. put the link in the cover letter or in the section git ignores. Do provide a formal Link: for bug reports and/or discussions that led to the patch. The context of why a change was made is highly valuable for future readers.”h]”hXÍTo link to a bug report, previous version, or anything of interest, use lore links. For referencing previous version(s), generally speaking do not include a Link: in the changelog as there is no need to record the history in git, i.e. put the link in the cover letter or in the section git ignores. Do provide a formal Link: for bug reports and/or discussions that led to the patch. The context of why a change was made is highly valuable for future readers.”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MDhj/h²hubeh}”(h]”Œlinks”ah ]”h"]”Œlinks”ah$]”h&]”uh1hÈhjh²hh³hÇh´M<ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒGit Base”h]”hŒGit Base”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjšh²hh³hÇh´MLubhï)�”}”(hŒËIf you are using git version 2.9.0 or later (Googlers, this is all of you!), use ``git format-patch`` with the ``--base`` flag to automatically include the base tree information in the generated patches.”h]”(hŒQIf you are using git version 2.9.0 or later (Googlers, this is all of you!), use ”…”�”}”(hj«h²hh³Nh´NubjG)�”}”(hŒ``git format-patch``”h]”hŒgit format-patch”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj«ubhŒ with the ”…”�”}”(hj«h²hh³Nh´NubjG)�”}”(hŒ ``--base``”h]”hŒ--base”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhj«ubhŒR flag to automatically include the base tree information in the generated patches.”…”�”}”(hj«h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MMhjšh²hubhï)�”}”(hX@Note, ``--base=auto`` works as expected if and only if a branch's upstream is set to the base topic branch, e.g. it will do the wrong thing if your upstream is set to your personal repository for backup purposes. An alternative "auto" solution is to derive the names of your development branches based on their KVM x86 topic, and feed that into ``--base``. E.g. ``x86/pmu/my_branch_name``, and then write a small wrapper to extract ``pmu`` from the current branch name to yield ``--base=x/pmu``, where ``x`` is whatever name your repository uses to track the KVM x86 remote.”h]”(hŒNote, ”…”�”}”(hjÝh²hh³Nh´NubjG)�”}”(hŒ``--base=auto``”h]”hŒ --base=auto”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjÝubhXK works as expected if and only if a branch’s upstream is set to the base topic branch, e.g. it will do the wrong thing if your upstream is set to your personal repository for backup purposes. An alternative “autoâ€� solution is to derive the names of your development branches based on their KVM x86 topic, and feed that into ”…”�”}”(hjÝh²hh³Nh´NubjG)�”}”(hŒ ``--base``”h]”hŒ--base”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjÝubhŒ. E.g. ”…”�”}”(hjÝh²hh³Nh´NubjG)�”}”(hŒ``x86/pmu/my_branch_name``”h]”hŒx86/pmu/my_branch_name”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjÝubhŒ,, and then write a small wrapper to extract ”…”�”}”(hjÝh²hh³Nh´NubjG)�”}”(hŒ``pmu``”h]”hŒpmu”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjÝubhŒ' from the current branch name to yield ”…”�”}”(hjÝh²hh³Nh´NubjG)�”}”(hŒ``--base=x/pmu``”h]”hŒ --base=x/pmu”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjÝubhŒ, where ”…”�”}”(hjÝh²hh³Nh´NubjG)�”}”(hŒ``x``”h]”hŒx”…”�”}”(hj? h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jFhjÝubhŒC is whatever name your repository uses to track the KVM x86 remote.”…”�”}”(hjÝh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MQhjšh²hubeh}”(h]”Œgit-base”ah ]”h"]”Œgit base”ah$]”h&]”uh1hÈhjh²hh³hÇh´MLubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒCo-Posting Tests”h]”hŒCo-Posting Tests”…”�”}”(hjb h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj_ h²hh³hÇh´M[ubhï)�”}”(hX€KVM selftests that are associated with KVM changes, e.g. regression tests for bug fixes, should be posted along with the KVM changes as a single series. The standard kernel rules for bisection apply, i.e. KVM changes that result in test failures should be ordered after the selftests updates, and vice versa, new tests that fail due to KVM bugs should be ordered after the KVM fixes.”h]”hX€KVM selftests that are associated with KVM changes, e.g. regression tests for bug fixes, should be posted along with the KVM changes as a single series. The standard kernel rules for bisection apply, i.e. KVM changes that result in test failures should be ordered after the selftests updates, and vice versa, new tests that fail due to KVM bugs should be ordered after the KVM fixes.”…”�”}”(hjp h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M\hj_ h²hubhï)�”}”(hXjKVM-unit-tests should *always* be posted separately. Tools, e.g. b4 am, don't know that KVM-unit-tests is a separate repository and get confused when patches in a series apply on different trees. To tie KVM-unit-tests patches back to KVM patches, first post the KVM changes and then provide a lore Link: to the KVM patch/series in the KVM-unit-tests patch(es).”h]”(hŒKVM-unit-tests should ”…”�”}”(hj~ h²hh³Nh´Nubj˜)�”}”(hŒ*always*”h]”hŒalways”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j—hj~ ubhXN be posted separately. Tools, e.g. b4 am, don’t know that KVM-unit-tests is a separate repository and get confused when patches in a series apply on different trees. To tie KVM-unit-tests patches back to KVM patches, first post the KVM changes and then provide a lore Link: to the KVM patch/series in the KVM-unit-tests patch(es).”…”�”}”(hj~ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mbhj_ h²hubeh}”(h]”Œco-posting-tests”ah ]”h"]”Œco-posting tests”ah$]”h&]”uh1hÈhjh²hh³hÇh´M[ubeh}”(h]”Œposting”ah ]”h"]”Œposting”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´M9ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Notifications”h]”hŒ Notifications”…”�”}”(hj± h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj® h²hh³hÇh´Miubhï)�”}”(hXWhen a patch/series is officially accepted, a notification email will be sent in reply to the original posting (cover letter for multi-patch series). The notification will include the tree and topic branch, along with the SHA1s of the commits of applied patches.”h]”hXWhen a patch/series is officially accepted, a notification email will be sent in reply to the original posting (cover letter for multi-patch series). The notification will include the tree and topic branch, along with the SHA1s of the commits of applied patches.”…”�”}”(hj¿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mjhj® h²hubhï)�”}”(hŒéIf a subset of patches is applied, this will be clearly stated in the notification. Unless stated otherwise, it's implied that any patches in the series that were not accepted need more work and should be submitted in a new version.”h]”hŒëIf a subset of patches is applied, this will be clearly stated in the notification. Unless stated otherwise, it’s implied that any patches in the series that were not accepted need more work and should be submitted in a new version.”…”�”}”(hjÍ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mohj® h²hubhï)�”}”(hŒ¶If for some reason a patch is dropped after officially being accepted, a reply will be sent to the notification email explaining why the patch was dropped, as well as the next steps.”h]”hŒ¶If for some reason a patch is dropped after officially being accepted, a reply will be sent to the notification email explaining why the patch was dropped, as well as the next steps.”…”�”}”(hjÛ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mthj® h²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒSHA1 Stability”h]”hŒSHA1 Stability”…”�”}”(hjì h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjé h²hh³hÇh´Myubhï)�”}”(hXySHA1s are not 100% guaranteed to be stable until they land in Linus' tree! A SHA1 is *usually* stable once a notification has been sent, but things happen. In most cases, an update to the notification email be provided if an applied patch's SHA1 changes. However, in some scenarios, e.g. if all KVM x86 branches need to be rebased, individual notifications will not be given.”h]”(hŒXSHA1s are not 100% guaranteed to be stable until they land in Linus’ tree! A SHA1 is ”…”�”}”(hjú h²hh³Nh´Nubj˜)�”}”(hŒ *usually*”h]”hŒusually”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j—hjú ubhX stable once a notification has been sent, but things happen. In most cases, an update to the notification email be provided if an applied patch’s SHA1 changes. However, in some scenarios, e.g. if all KVM x86 branches need to be rebased, individual notifications will not be given.”…”�”}”(hjú h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mzhjé h²hubeh}”(h]”Œsha1-stability”ah ]”h"]”Œsha1 stability”ah$]”h&]”uh1hÈhj® h²hh³hÇh´Myubeh}”(h]”Œ notifications”ah ]”h"]”Œ notifications”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MiubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒVulnerabilities”h]”hŒVulnerabilities”…”�”}”(hj- h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj* h²hh³hÇh´M�ubhï)�”}”(hX-Bugs that can be exploited by the guest to attack the host (kernel or userspace), or that can be exploited by a nested VM to *its* host (L2 attacking L1), are of particular interest to KVM. Please follow the protocol for :ref:`securitybugs` if you suspect a bug can lead to an escape, data leak, etc.”h]”(hŒ}Bugs that can be exploited by the guest to attack the host (kernel or userspace), or that can be exploited by a nested VM to ”…”�”}”(hj; h²hh³Nh´Nubj˜)�”}”(hŒ*its*”h]”hŒits”…”�”}”(hjC h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j—hj; ubhŒ\ host (L2 attacking L1), are of particular interest to KVM. Please follow the protocol for ”…”�”}”(hj; h²hh³Nh´Nubh)�”}”(hŒ:ref:`securitybugs`”h]”js)�”}”(hjW h]”hŒ securitybugs”…”�”}”(hjY h²hh³Nh´Nubah}”(h]”h ]”(j~Œstd”Œstd-ref”eh"]”h$]”h&]”uh1jrhjU ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j‹Œ refdomain”jc Œreftype”Œref”Œ refexplicit”‰Œrefwarn”ˆj‘Œ securitybugs”uh1hh³hÇh´M‚hj; ubhŒ< if you suspect a bug can lead to an escape, data leak, etc.”…”�”}”(hj; h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M‚hj* h²hubeh}”(h]”Œvulnerabilities”ah ]”h"]”Œvulnerabilities”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´M�ubeh}”(h]”Œkvm-x86”ah ]”h"]”Œkvm x86”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”j² Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jŒ j‰ jjj*j'j¨j¥jjj]jZj j�jÒjÏjDjAjÒjÏjùjöjNjKjÃjÀjFjCj‘jŽjÊjÇjjj¾j»jjj« j¨ j—j”j\ jY j£ j  j' j$ j j j„ j� uŒ nametypes”}”(jŒ ‰j‰j*‰j¨‰j‰j]‰j ‰jÒ‰jD‰jÒ‰jù‰jN‰jÉjF‰j‘‰jʉj‰j¾‰j‰j« ‰j—‰j\ ‰j£ ‰j' ‰j ‰j„ ‰uh}”(j‰ hÊjhÝj'jj¥j-jj jZjj�j`jÏj«jAj¼jÏjGjöjÕjKjüjÀjQjCjÆjŽjIjÇj”jjÕj»j^jjÁj¨ jj”j/jY jšj  j_ j$ j® j jé j� j* uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.