diff options
author | jimharris <jimharris@FreeBSD.org> | 2013-03-26 19:58:17 +0000 |
---|---|---|
committer | jimharris <jimharris@FreeBSD.org> | 2013-03-26 19:58:17 +0000 |
commit | 711dabaf432762eec4942b5f5f7611e7df825260 (patch) | |
tree | 94806202070a4ea8f80eaaf599bf2a85010d5097 /sys/dev/nvme/nvme_private.h | |
parent | cef3145004715132223be663f7e0311b9ac7d779 (diff) | |
download | FreeBSD-src-711dabaf432762eec4942b5f5f7611e7df825260.zip FreeBSD-src-711dabaf432762eec4942b5f5f7611e7df825260.tar.gz |
Add handling for controller fatal status (csts.cfs).
On any I/O timeout, check for csts.cfs==1. If set, the controller
is reporting fatal status and we reset the controller immediately,
rather than trying to abort the timed out command.
This changeset also includes deferring the controller start portion
of the reset to a separate task. This ensures we are always performing
a controller start operation from a consistent context.
Sponsored by: Intel
Reviewed by: carl
Diffstat (limited to 'sys/dev/nvme/nvme_private.h')
-rw-r--r-- | sys/dev/nvme/nvme_private.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/dev/nvme/nvme_private.h b/sys/dev/nvme/nvme_private.h index 695ce5e..2fde631 100644 --- a/sys/dev/nvme/nvme_private.h +++ b/sys/dev/nvme/nvme_private.h @@ -36,6 +36,7 @@ #include <sys/mutex.h> #include <sys/rman.h> #include <sys/systm.h> +#include <sys/taskqueue.h> #include <vm/uma.h> @@ -236,6 +237,8 @@ struct nvme_controller { uint32_t ns_identified; uint32_t queues_created; uint32_t num_start_attempts; + struct task restart_task; + struct taskqueue *taskqueue; /* For shared legacy interrupt. */ int rid; |