-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge tag 'block-6.2-2022-12-29' of git://git.kernel.dk/linux
Pull block fixes from Jens Axboe: "Mostly just NVMe, but also a single fixup for BFQ for a regression that happened during the merge window. In detail: - NVMe pull requests via Christoph: - Fix doorbell buffer value endianness (Klaus Jensen) - Fix Linux vs NVMe page size mismatch (Keith Busch) - Fix a potential use memory access beyong the allocation limit (Keith Busch) - Fix a multipath vs blktrace NULL pointer dereference (Yanjun Zhang) - Fix various problems in handling the Command Supported and Effects log (Christoph Hellwig) - Don't allow unprivileged passthrough of commands that don't transfer data but modify logical block content (Christoph Hellwig) - Add a features and quirks policy document (Christoph Hellwig) - Fix some really nasty code that was correct but made smatch complain (Sagi Grimberg) - Use-after-free regression in BFQ from this merge window (Yu)" * tag 'block-6.2-2022-12-29' of git://git.kernel.dk/linux: nvme-auth: fix smatch warning complaints nvme: consult the CSE log page for unprivileged passthrough nvme: also return I/O command effects from nvme_command_effects nvmet: don't defer passthrough commands with trivial effects to the workqueue nvmet: set the LBCC bit for commands that modify data nvmet: use NVME_CMD_EFFECTS_CSUPP instead of open coding it nvme: fix the NVME_CMD_EFFECTS_CSE_MASK definition docs, nvme: add a feature and quirk policy document nvme-pci: update sqsize when adjusting the queue depth nvme: fix setting the queue depth in nvme_alloc_io_tag_set block, bfq: fix uaf for bfqq in bfq_exit_icq_bfqq nvme: fix multipath crash caused by flush request when blktrace is enabled nvme-pci: fix page size checks nvme-pci: fix mempool alloc size nvme-pci: fix doorbell buffer value endianness
- Loading branch information
Showing
12 changed files
with
186 additions
and
59 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
.. SPDX-License-Identifier: GPL-2.0 | ||
======================================= | ||
Linux NVMe feature and and quirk policy | ||
======================================= | ||
|
||
This file explains the policy used to decide what is supported by the | ||
Linux NVMe driver and what is not. | ||
|
||
|
||
Introduction | ||
============ | ||
|
||
NVM Express is an open collection of standards and information. | ||
|
||
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: | ||
|
||
- 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 | ||
|
||
See https://nvmexpress.org/developers/ for the NVMe specifications. | ||
|
||
|
||
Supported features | ||
================== | ||
|
||
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. | ||
|
||
Any feature implemented in the Linux NVMe host driver must support the | ||
following requirements: | ||
|
||
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. | ||
|
||
Vendor specific extensions are generally not supported in the NVMe host | ||
driver. | ||
|
||
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. | ||
|
||
|
||
Quirks | ||
====== | ||
|
||
Sometimes implementations of open standards fail to correctly implement parts | ||
of the standards. Linux uses identifier-based quirks to work around such | ||
implementation bugs. The intent of quirks is to deal with widely available | ||
hardware, usually consumer, which Linux users can't use without these quirks. | ||
Typically these implementations are not or only superficially tested with Linux | ||
by the hardware manufacturer. | ||
|
||
The 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. | ||
|
||
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.