summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Wilcox <matthew.r.wilcox@intel.com>2014-04-11 11:58:45 -0400
committerMatthew Wilcox <matthew.r.wilcox@intel.com>2014-05-05 10:41:25 -0400
commit27e8166c31656f7780e682eaf6bc9c3b8dd03253 (patch)
tree7954a4c32ccc89db93c34e195be69e034d8c2232
parent8757ad65d30f009fe0beeb2d70d3cd834cb998f2 (diff)
downloadlinux-stable-27e8166c31656f7780e682eaf6bc9c3b8dd03253.tar.gz
linux-stable-27e8166c31656f7780e682eaf6bc9c3b8dd03253.tar.bz2
linux-stable-27e8166c31656f7780e682eaf6bc9c3b8dd03253.zip
NVMe: Improve error messages
Help people diagnose what is going wrong at initialisation time by printing out which command has gone wrong and what the device returned. Also fix the error message printed while waiting for reset. Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com> Reviewed-by: Keith Busch <keith.busch@intel.com>
-rw-r--r--drivers/block/nvme-core.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/block/nvme-core.c b/drivers/block/nvme-core.c
index eacd64e36be3..074e9829bb08 100644
--- a/drivers/block/nvme-core.c
+++ b/drivers/block/nvme-core.c
@@ -1354,7 +1354,8 @@ static int nvme_wait_ready(struct nvme_dev *dev, u64 cap, bool enabled)
return -EINTR;
if (time_after(jiffies, timeout)) {
dev_err(&dev->pci_dev->dev,
- "Device not ready; aborting initialisation\n");
+ "Device not ready; aborting %s\n", enabled ?
+ "initialisation" : "reset");
return -ENODEV;
}
}
@@ -2058,8 +2059,13 @@ static int set_queue_count(struct nvme_dev *dev, int count)
status = nvme_set_features(dev, NVME_FEAT_NUM_QUEUES, q_count, 0,
&result);
- if (status)
- return status < 0 ? -EIO : -EBUSY;
+ if (status < 0)
+ return status;
+ if (status > 0) {
+ dev_err(&dev->pci_dev->dev, "Could not set queue count (%d)\n",
+ status);
+ return -EBUSY;
+ }
return min(result & 0xffff, result >> 16) + 1;
}
@@ -2180,6 +2186,7 @@ static int nvme_dev_add(struct nvme_dev *dev)
res = nvme_identify(dev, 0, 1, dma_addr);
if (res) {
+ dev_err(&pdev->dev, "Identify Controller failed (%d)\n", res);
res = -EIO;
goto out;
}