#
a6d222eb |
| 03-Aug-2019 |
Alexander Motin <mav@FreeBSD.org> |
Add more random bits from NVMe 1.4.
MFC after: 2 weeks
|
#
90dfa8f0 |
| 02-Aug-2019 |
Alexander Motin <mav@FreeBSD.org> |
Add more new fields and values from NVMe 1.4.
MFC after: 2 weeks
|
#
a63915c2 |
| 28-Jul-2019 |
Alan Somers <asomers@FreeBSD.org> |
MFHead @r350386
Sponsored by: The FreeBSD Foundation
|
#
5e83c2ff |
| 19-Jul-2019 |
Warner Losh <imp@FreeBSD.org> |
Keep track of the number of commands that exhaust their retry limit.
While we print failure messages on the console, sometimes logs are lost or overwhelmed. Keeping a count of how many times we've f
Keep track of the number of commands that exhaust their retry limit.
While we print failure messages on the console, sometimes logs are lost or overwhelmed. Keeping a count of how many times we've failed retriable commands helps get a magnitude of the problem.
show more ...
|
#
c37fc318 |
| 19-Jul-2019 |
Warner Losh <imp@FreeBSD.org> |
Keep track of the number of retried commands.
Retried commands can indicate a performance degredation of an nvme drive. Keep track of the number of retries and report it out via sysctl, just like nu
Keep track of the number of retried commands.
Retried commands can indicate a performance degredation of an nvme drive. Keep track of the number of retries and report it out via sysctl, just like number of commands an interrupts.
show more ...
|
#
c75bdc04 |
| 18-Jul-2019 |
Warner Losh <imp@FreeBSD.org> |
Provide new tunable hw.nvme.verbose_cmd_dump
The nvme drive dumps only the most relevant details about a command when it fails. However, there are times this is not sufficient (such as debugging wei
Provide new tunable hw.nvme.verbose_cmd_dump
The nvme drive dumps only the most relevant details about a command when it fails. However, there are times this is not sufficient (such as debugging weird issues for a new drive with a vendor). Setting hw.nvme.verbose_cmd_dump=1 in loader.conf will enable more complete debugging information about each command that fails.
Reviewed by: rpokala Sponsored by: Netflix Differential Version: https://reviews.freebsd.org/D20988
show more ...
|
Revision tags: release/11.3.0 |
|
#
0269ae4c |
| 06-Jun-2019 |
Alan Somers <asomers@FreeBSD.org> |
MFHead @348740
Sponsored by: The FreeBSD Foundation
|
#
d0aaeffd |
| 01-Jun-2019 |
Warner Losh <imp@FreeBSD.org> |
Since a fatal trap can happen at aribtrary times, don't panic when the completions are not in a consistent state. Cope with the different places the normal I/O completion polling thread can be interr
Since a fatal trap can happen at aribtrary times, don't panic when the completions are not in a consistent state. Cope with the different places the normal I/O completion polling thread can be interrupted and then re-entered during a kernel panic + dump.
Reviewed by: jhb and markj (both prior versions) Differential Revision: https://reviews.freebsd.org/D20478
show more ...
|
#
2aaf9152 |
| 18-Mar-2019 |
Alan Somers <asomers@FreeBSD.org> |
MFHead@r345275
|
#
ff511f1f |
| 11-Mar-2019 |
Enji Cooper <ngie@FreeBSD.org> |
MFhead@r344996
|
#
2ffd6fce |
| 09-Mar-2019 |
Warner Losh <imp@FreeBSD.org> |
Don't print all the I/O we abort on a reset, unless we're out of retries.
When resetting the controller, we abort I/O. Prior to this fix, we printed a ton of abort messages for I/O that we're going
Don't print all the I/O we abort on a reset, unless we're out of retries.
When resetting the controller, we abort I/O. Prior to this fix, we printed a ton of abort messages for I/O that we're going to retry. This imparts no useful information. Stop printing them unless our retry count is exhausted. Clarify code for when we don't retry, and remove useless arg to a routine that's always called with it as 'true'. All the other debug is still printed (including multiple reset messages if we have multiple timeouts before the taskqueue runs the actual reset) so that we know when we reset.
Reviewed by: jimharris@, chuck@ Differential Revision: https://reviews.freebsd.org/D19431
show more ...
|
#
b18a4cca |
| 05-Mar-2019 |
Enji Cooper <ngie@FreeBSD.org> |
MFhead@r344786
|
#
844fc3e9 |
| 04-Mar-2019 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r344549 through r344775.
|
#
95108cad |
| 03-Mar-2019 |
Warner Losh <imp@FreeBSD.org> |
Add ABORTED_BY_REQUEST to the list of things we look at DNR bit and tell why to comment (code already does this)
|
#
45d7e233 |
| 27-Feb-2019 |
Warner Losh <imp@FreeBSD.org> |
Unconditionally support unmapped BIOs. This was another shim for supporting older kernels. However, all supported versions of FreeBSD have unmapped I/Os (as do several that have gone EOL), remove it.
Unconditionally support unmapped BIOs. This was another shim for supporting older kernels. However, all supported versions of FreeBSD have unmapped I/Os (as do several that have gone EOL), remove it. It's unlikely the driver would work on the older kernels anyway at this point.
show more ...
|
#
d706306d |
| 27-Feb-2019 |
Warner Losh <imp@FreeBSD.org> |
Remove #ifdef code to support FreeBSD versions that haven't been supported in years. A number of changes have been made to the driver that likely wouldn't work on those older versions that aren't pro
Remove #ifdef code to support FreeBSD versions that haven't been supported in years. A number of changes have been made to the driver that likely wouldn't work on those older versions that aren't properly ifdef'd and it's project policy to GC such code once it is stale.
show more ...
|
#
a6461357 |
| 27-Dec-2018 |
Alexander Motin <mav@FreeBSD.org> |
Add descriptions to NVMe interrupts.
MFC after: 1 month
|
Revision tags: release/12.0.0 |
|
#
7847e041 |
| 24-Aug-2018 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r338026 through r338297, and resolve conflicts.
|
#
9544e6dc |
| 22-Aug-2018 |
Chuck Tuffli <chuck@FreeBSD.org> |
Make NVMe compatible with the original API
The original NVMe API used bit-fields to represent fields in data structures defined by the specification (e.g. the op-code in the command data structure).
Make NVMe compatible with the original API
The original NVMe API used bit-fields to represent fields in data structures defined by the specification (e.g. the op-code in the command data structure). The implementation targeted x86_64 processors and defined the bit fields for little endian dwords (i.e. 32 bits).
This approach does not work as-is for big endian architectures and was changed to use a combination of bit shifts and masks to support PowerPC. Unfortunately, this changed the NVMe API and forces #ifdef's based on the OS revision level in user space code.
This change reverts to something that looks like the original API, but it uses bytes instead of bit-fields inside the packed command structure. As a bonus, this works as-is for both big and little endian CPU architectures.
Bump __FreeBSD_version to 1200081 due to API change
Reviewed by: imp, kbowling, smh, mav Approved by: imp (mentor) Differential Revision: https://reviews.freebsd.org/D16404
show more ...
|
#
14b841d4 |
| 11-Aug-2018 |
Kyle Evans <kevans@FreeBSD.org> |
MFH @ r337607, in preparation for boarding
|
#
bbd7a929 |
| 04-Aug-2018 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r336870 through r337285, and resolve conflicts.
|
#
2e0090af |
| 03-Aug-2018 |
Justin Hibbits <jhibbits@FreeBSD.org> |
nvme(4): Add bus_dmamap_sync() at the end of the request path
Summary: Some architectures, in this case powerpc64, need explicit synchronization barriers vs device accesses.
Prior to this change, w
nvme(4): Add bus_dmamap_sync() at the end of the request path
Summary: Some architectures, in this case powerpc64, need explicit synchronization barriers vs device accesses.
Prior to this change, when running 'make buildworld -j72' on a 18-core (72-thread) POWER9, I would see controller resets often. With this change, I don't see these resets messages, though another tester still does, for yet to be determined reasons, so this may not be a complete fix. Additionally, I see a ~5-10% speed up in buildworld times, likely due to not needing to reset the controller.
Reviewed By: jimharris Differential Revision: https://reviews.freebsd.org/D16570
show more ...
|
Revision tags: release/11.2.0 |
|
#
c6c70c07 |
| 30-Apr-2018 |
Alexander Motin <mav@FreeBSD.org> |
Fix use-after-free in nvme_qpair_destroy().
dma_tag_payload should not be destroyed before payload_dma_map, and seems it should be used there instead of dma_tag to match creation.
Sponsored by: iXs
Fix use-after-free in nvme_qpair_destroy().
dma_tag_payload should not be destroyed before payload_dma_map, and seems it should be used there instead of dma_tag to match creation.
Sponsored by: iXsystems, Inc.
show more ...
|
#
d85d9648 |
| 16-Mar-2018 |
Warner Losh <imp@FreeBSD.org> |
Try polling the qpairs on timeout.
On some systems, we're getting timeouts when we use multiple queues on drives that work perfectly well on other systems. On a hunch, Jim Harris suggested I poll th
Try polling the qpairs on timeout.
On some systems, we're getting timeouts when we use multiple queues on drives that work perfectly well on other systems. On a hunch, Jim Harris suggested I poll the completion queue when we get a timeout. This patch polls the completion queue if no fatal status was indicated. If it had pending I/O, we complete that request and return. Otherwise, if aborts are enabled and no fatal status, we abort the command and return. Otherwise we reset the card.
This may clear up the problem, or we may see it result in lots of timeouts and a performance problem. Either way, we'll know the next step. We may also need to pay attention to the fatal status bit of the controller.
PR: 211713 Suggested by: Jim Harris Sponsored by: Netflix
show more ...
|
#
6b1a96b1 |
| 11-Mar-2018 |
Alexander Motin <mav@FreeBSD.org> |
Add new opcodes and statuses from NVMe 1.3a.
MFC after: 2 weeks Sponsored by: iXsystems, Inc.
|