NVMe: Correct the Controller Configuration settings
Matthew Wilcox [Tue, 22 Mar 2011 19:55:45 +0000 (15:55 -0400)]
The arbitration field was extended by one bit, shifting the shutdown
notification bits by one.  Also, the SQ/CQ entry size was made
configurable for future extensions.

Reported-by: Paul Luse <paul.e.luse@intel.com>
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>

drivers/block/nvme.c
include/linux/nvme.h

index d3eeca5..014a7f6 100644 (file)
@@ -905,6 +905,7 @@ static int __devinit nvme_configure_admin_queue(struct nvme_dev *dev)
        dev->ctrl_config = NVME_CC_ENABLE | NVME_CC_CSS_NVM;
        dev->ctrl_config |= (PAGE_SHIFT - 12) << NVME_CC_MPS_SHIFT;
        dev->ctrl_config |= NVME_CC_ARB_RR | NVME_CC_SHN_NONE;
+       dev->ctrl_config |= NVME_CC_IOSQES | NVME_CC_IOCQES;
 
        writel(0, &dev->bar->cc);
        writel(aqa, &dev->bar->aqa);
index 347ad5f..9d6febb 100644 (file)
@@ -41,10 +41,12 @@ enum {
        NVME_CC_MPS_SHIFT       = 7,
        NVME_CC_ARB_RR          = 0 << 11,
        NVME_CC_ARB_WRRU        = 1 << 11,
-       NVME_CC_ARB_VS          = 3 << 11,
-       NVME_CC_SHN_NONE        = 0 << 13,
-       NVME_CC_SHN_NORMAL      = 1 << 13,
-       NVME_CC_SHN_ABRUPT      = 2 << 13,
+       NVME_CC_ARB_VS          = 7 << 11,
+       NVME_CC_SHN_NONE        = 0 << 14,
+       NVME_CC_SHN_NORMAL      = 1 << 14,
+       NVME_CC_SHN_ABRUPT      = 2 << 14,
+       NVME_CC_IOSQES          = 6 << 16,
+       NVME_CC_IOCQES          = 4 << 20,
        NVME_CSTS_RDY           = 1 << 0,
        NVME_CSTS_CFS           = 1 << 1,
        NVME_CSTS_SHST_NORMAL   = 0 << 2,