€•9Œ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”Œ1/translations/zh_CN/nvme/feature-and-quirk-policy”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/zh_TW/nvme/feature-and-quirk-policy”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/it_IT/nvme/feature-and-quirk-policy”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/ja_JP/nvme/feature-and-quirk-policy”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/ko_KR/nvme/feature-and-quirk-policy”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/sp_SP/nvme/feature-and-quirk-policy”Œ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ŸŒK/var/lib/git/docbuild/linux/Documentation/nvme/feature-and-quirk-policy.rst”h KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒ#Linux NVMe feature and quirk policy”h]”hŒ#Linux NVMe feature and quirk policy”…””}”(hh»hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hh¶hžhhŸh³h KubhŒ paragraph”“”)”}”(hŒhThis file explains the policy used to decide what is supported by the Linux NVMe driver and what is not.”h]”hŒhThis file explains the policy used to decide what is supported by the Linux NVMe driver and what is not.”…””}”(hhËhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Khh¶hžhubhµ)”}”(hhh]”(hº)”}”(hŒ Introduction”h]”hŒ Introduction”…””}”(hhÜhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hhÙhžhhŸh³h K ubhÊ)”}”(hŒ?NVM Express is an open collection of standards and information.”h]”hŒ?NVM Express is an open collection of standards and information.”…””}”(hhêhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KhhÙhžhubhÊ)”}”(hŒ²The Linux NVMe host driver in drivers/nvme/host/ supports devices implementing the NVM Express (NVMe) family of specifications, which currently consists of a number of documents:”h]”hŒ²The Linux NVMe host driver in drivers/nvme/host/ supports devices implementing the NVM Express (NVMe) family of specifications, which currently consists of a number of documents:”…””}”(hhøhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KhhÙhžhubhŒ block_quote”“”)”}”(hŒÑ- the NVMe Base specification - various Command Set specifications (e.g. NVM Command Set) - various Transport specifications (e.g. PCIe, Fibre Channel, RDMA, TCP) - the NVMe Management Interface specification ”h]”hŒ bullet_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒthe NVMe Base specification”h]”hÊ)”}”(hjh]”hŒthe NVMe Base specification”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)”}”(hŒ9various Command Set specifications (e.g. NVM Command Set)”h]”hÊ)”}”(hj,h]”hŒ9various Command Set specifications (e.g. NVM Command Set)”…””}”(hj.hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Khj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)”}”(hŒFvarious Transport specifications (e.g. PCIe, Fibre Channel, RDMA, TCP)”h]”hÊ)”}”(hjCh]”hŒFvarious Transport specifications (e.g. PCIe, Fibre Channel, RDMA, TCP)”…””}”(hjEhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)”}”(hŒ,the NVMe Management Interface specification ”h]”hÊ)”}”(hŒ+the NVMe Management Interface specification”h]”hŒ+the NVMe Management Interface specification”…””}”(hj\hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1j hŸh³h Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhŸh³h KhhÙhžhubhÊ)”}”(hŒCSee https://nvmexpress.org/developers/ for the NVMe specifications.”h]”(hŒSee ”…””}”(hj~hžhhŸNh NubhŒ reference”“”)”}”(hŒ"https://nvmexpress.org/developers/”h]”hŒ"https://nvmexpress.org/developers/”…””}”(hjˆhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”jŠuh1j†hj~ubhŒ for the NVMe specifications.”…””}”(hj~hžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KhhÙhžhubeh}”(h]”Œ introduction”ah ]”h"]”Œ introduction”ah$]”h&]”uh1h´hh¶hžhhŸh³h K ubhµ)”}”(hhh]”(hº)”}”(hŒSupported features”h]”hŒSupported features”…””}”(hj¬hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hj©hžhhŸh³h KubhÊ)”}”(hX¨NVMe is a large suite of specifications, and contains features that are only useful or suitable for specific use-cases. It is important to note that Linux does not aim to implement every feature in the specification. Every additional feature implemented introduces more code, more maintenance and potentially more bugs. Hence there is an inherent tradeoff between functionality and maintainability of the NVMe host driver.”h]”hX¨NVMe is a large suite of specifications, and contains features that are only useful or suitable for specific use-cases. It is important to note that Linux does not aim to implement every feature in the specification. Every additional feature implemented introduces more code, more maintenance and potentially more bugs. Hence there is an inherent tradeoff between functionality and maintainability of the NVMe host driver.”…””}”(hjºhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Khj©hžhubhÊ)”}”(hŒ^Any feature implemented in the Linux NVMe host driver must support the following requirements:”h]”hŒ^Any feature implemented in the Linux NVMe host driver must support the following requirements:”…””}”(hjÈhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K&hj©hžhubj)”}”(hXÑ1. The feature is specified in a release version of an official NVMe specification, or in a ratified Technical Proposal (TP) that is available on NVMe website. Or if it is not directly related to the on-wire protocol, does not contradict any of the NVMe specifications. 2. Does not conflict with the Linux architecture, nor the design of the NVMe host driver. 3. Has a clear, indisputable value-proposition and a wide consensus across the community. ”h]”hŒenumerated_list”“”)”}”(hhh]”(j)”}”(hX The feature is specified in a release version of an official NVMe specification, or in a ratified Technical Proposal (TP) that is available on NVMe website. Or if it is not directly related to the on-wire protocol, does not contradict any of the NVMe specifications.”h]”hÊ)”}”(hX The feature is specified in a release version of an official NVMe specification, or in a ratified Technical Proposal (TP) that is available on NVMe website. Or if it is not directly related to the on-wire protocol, does not contradict any of the NVMe specifications.”h]”hX The feature is specified in a release version of an official NVMe specification, or in a ratified Technical Proposal (TP) that is available on NVMe website. Or if it is not directly related to the on-wire protocol, does not contradict any of the NVMe specifications.”…””}”(hjãhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K)hjßubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÜubj)”}”(hŒVDoes not conflict with the Linux architecture, nor the design of the NVMe host driver.”h]”hÊ)”}”(hŒVDoes not conflict with the Linux architecture, nor the design of the NVMe host driver.”h]”hŒVDoes not conflict with the Linux architecture, nor the design of the NVMe host driver.”…””}”(hjûhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K-hj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÜubj)”}”(hŒWHas a clear, indisputable value-proposition and a wide consensus across the community. ”h]”hÊ)”}”(hŒVHas a clear, indisputable value-proposition and a wide consensus across the community.”h]”hŒVHas a clear, indisputable value-proposition and a wide consensus across the community.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K/hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÜubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1jÚhjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jhŸh³h K)hj©hžhubhÊ)”}”(hŒOVendor specific extensions are generally not supported in the NVMe host driver.”h]”hŒOVendor specific extensions are generally not supported in the NVMe host driver.”…””}”(hj8hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K2hj©hžhubhÊ)”}”(hŒäIt is strongly recommended to work with the Linux NVMe and block layer maintainers and get feedback on specification changes that are intended to be used by the Linux NVMe host driver in order to avoid conflict at a later stage.”h]”hŒäIt is strongly recommended to work with the Linux NVMe and block layer maintainers and get feedback on specification changes that are intended to be used by the Linux NVMe host driver in order to avoid conflict at a later stage.”…””}”(hjFhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K5hj©hžhubeh}”(h]”Œsupported-features”ah ]”h"]”Œsupported features”ah$]”h&]”uh1h´hh¶hžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒQuirks”h]”hŒQuirks”…””}”(hj_hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hj\hžhhŸh³h Khj\hžhubhÊ)”}”(hXThe Linux NVMe maintainers decide ad hoc whether to quirk implementations based on the impact of the problem to Linux users and how it impacts maintainability of the driver. In general quirks are a last resort, if no firmware updates or other workarounds are available from the vendor.”h]”hXThe Linux NVMe maintainers decide ad hoc whether to quirk implementations based on the impact of the problem to Linux users and how it impacts maintainability of the driver. In general quirks are a last resort, if no firmware updates or other workarounds are available from the vendor.”…””}”(hj{hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KEhj\hžhubhÊ)”}”(hX+Quirks will not be added to the Linux kernel for hardware that isn't available on the mass market. Hardware that fails qualification for enterprise Linux distributions, ChromeOS, Android or other consumers of the Linux kernel should be fixed before it is shipped instead of relying on Linux quirks.”h]”hX-Quirks will not be added to the Linux kernel for hardware that isn’t available on the mass market. Hardware that fails qualification for enterprise Linux distributions, ChromeOS, Android or other consumers of the Linux kernel should be fixed before it is shipped instead of relying on Linux quirks.”…””}”(hj‰hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KJhj\hžhubeh}”(h]”Œquirks”ah ]”h"]”Œquirks”ah$]”h&]”uh1h´hh¶hžhhŸh³h K