forked from torvalds/linux
-
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 branch 'master' into mm-stable
- Loading branch information
Showing
378 changed files
with
7,405 additions
and
2,092 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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -39,6 +39,7 @@ | |
*.o.* | ||
*.patch | ||
*.rmeta | ||
*.rpm | ||
*.rsi | ||
*.s | ||
*.so | ||
|
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,18 @@ | ||
What: /sys/kernel/debug/pktcdvd/pktcdvd[0-7] | ||
Date: Oct. 2006 | ||
KernelVersion: 2.6.20 | ||
Contact: Thomas Maier <[email protected]> | ||
Description: | ||
|
||
The pktcdvd module (packet writing driver) creates | ||
these files in debugfs: | ||
|
||
/sys/kernel/debug/pktcdvd/pktcdvd[0-7]/ | ||
|
||
==== ====== ==================================== | ||
info 0444 Lots of driver statistics and infos. | ||
==== ====== ==================================== | ||
|
||
Example:: | ||
|
||
cat /sys/kernel/debug/pktcdvd/pktcdvd0/info |
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,97 @@ | ||
sysfs interface | ||
--------------- | ||
The pktcdvd module (packet writing driver) creates the following files in the | ||
sysfs: (<devid> is in the format major:minor) | ||
|
||
What: /sys/class/pktcdvd/add | ||
What: /sys/class/pktcdvd/remove | ||
What: /sys/class/pktcdvd/device_map | ||
Date: Oct. 2006 | ||
KernelVersion: 2.6.20 | ||
Contact: Thomas Maier <[email protected]> | ||
Description: | ||
|
||
========== ============================================== | ||
add (WO) Write a block device id (major:minor) to | ||
create a new pktcdvd device and map it to the | ||
block device. | ||
|
||
remove (WO) Write the pktcdvd device id (major:minor) | ||
to remove the pktcdvd device. | ||
|
||
device_map (RO) Shows the device mapping in format: | ||
pktcdvd[0-7] <pktdevid> <blkdevid> | ||
========== ============================================== | ||
|
||
|
||
What: /sys/class/pktcdvd/pktcdvd[0-7]/dev | ||
What: /sys/class/pktcdvd/pktcdvd[0-7]/uevent | ||
Date: Oct. 2006 | ||
KernelVersion: 2.6.20 | ||
Contact: Thomas Maier <[email protected]> | ||
Description: | ||
dev: (RO) Device id | ||
|
||
uevent: (WO) To send a uevent | ||
|
||
|
||
What: /sys/class/pktcdvd/pktcdvd[0-7]/stat/packets_started | ||
What: /sys/class/pktcdvd/pktcdvd[0-7]/stat/packets_finished | ||
What: /sys/class/pktcdvd/pktcdvd[0-7]/stat/kb_written | ||
What: /sys/class/pktcdvd/pktcdvd[0-7]/stat/kb_read | ||
What: /sys/class/pktcdvd/pktcdvd[0-7]/stat/kb_read_gather | ||
What: /sys/class/pktcdvd/pktcdvd[0-7]/stat/reset | ||
Date: Oct. 2006 | ||
KernelVersion: 2.6.20 | ||
Contact: Thomas Maier <[email protected]> | ||
Description: | ||
packets_started: (RO) Number of started packets. | ||
|
||
packets_finished: (RO) Number of finished packets. | ||
|
||
kb_written: (RO) kBytes written. | ||
|
||
kb_read: (RO) kBytes read. | ||
|
||
kb_read_gather: (RO) kBytes read to fill write packets. | ||
|
||
reset: (WO) Write any value to it to reset | ||
pktcdvd device statistic values, like | ||
bytes read/written. | ||
|
||
|
||
What: /sys/class/pktcdvd/pktcdvd[0-7]/write_queue/size | ||
What: /sys/class/pktcdvd/pktcdvd[0-7]/write_queue/congestion_off | ||
What: /sys/class/pktcdvd/pktcdvd[0-7]/write_queue/congestion_on | ||
Date: Oct. 2006 | ||
KernelVersion: 2.6.20 | ||
Contact: Thomas Maier <[email protected]> | ||
Description: | ||
============== ================================================ | ||
size (RO) Contains the size of the bio write queue. | ||
|
||
congestion_off (RW) If bio write queue size is below this mark, | ||
accept new bio requests from the block layer. | ||
|
||
congestion_on (RW) If bio write queue size is higher as this | ||
mark, do no longer accept bio write requests | ||
from the block layer and wait till the pktcdvd | ||
device has processed enough bio's so that bio | ||
write queue size is below congestion off mark. | ||
A value of <= 0 disables congestion control. | ||
============== ================================================ | ||
|
||
|
||
Example: | ||
-------- | ||
To use the pktcdvd sysfs interface directly, you can do:: | ||
|
||
# create a new pktcdvd device mapped to /dev/hdc | ||
echo "22:0" >/sys/class/pktcdvd/add | ||
cat /sys/class/pktcdvd/device_map | ||
# assuming device pktcdvd0 was created, look at stat's | ||
cat /sys/class/pktcdvd/pktcdvd0/stat/kb_written | ||
# print the device id of the mapped block device | ||
fgrep pktcdvd0 /sys/class/pktcdvd/device_map | ||
# remove device, using pktcdvd0 device id 253:0 | ||
echo "253:0" >/sys/class/pktcdvd/remove |
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
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. |
Oops, something went wrong.