Matthew Wilcox
2930353f9f
NVMe: Allow queues to be allocated above 4GB
...
Need to call dma_set_coherent_mask() to allow queues to be allocated
above 4GB.
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
2011-11-04 15:52:53 -04:00
Matthew Wilcox
f64d3365a3
NVMe: Enable device DMA
...
Need to call pci_set_master() to enable device DMA
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
2011-11-04 15:52:53 -04:00
Shane Michael Matthews
0ee5a7d7cb
NVMe: Enable and disable the PCI device
...
Call pci_enable_device_mem() at initialisation and pci_disable_device
at exit.
Signed-off-by: Shane Michael Matthews <shane.matthews@intel.com>
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
2011-11-04 15:52:53 -04:00
Matthew Wilcox
3f85d50b60
NVMe: Check returns from nvme_alloc_queue()
...
It can return NULL, so handle that.
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
2011-11-04 15:52:53 -04:00
Matthew Wilcox
8e9f0e7115
NVMe: Remove 'node' from nvme_dev
...
We don't keep a list of nvme_dev any more
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
2011-11-04 15:52:53 -04:00
Matthew Wilcox
51814232ec
NVMe: Read the model, serial & firmware rev from the controller
...
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
2011-11-04 15:52:53 -04:00
Matthew Wilcox
a53295b699
NVMe: Add NVME_IOCTL_SUBMIT_IO
...
Allow userspace to submit synchronous I/O like the SCSI sg interface does.
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
2011-11-04 15:52:53 -04:00
Matthew Wilcox
7fc3cdabba
NVMe: Create nvme_map_user_pages() and nvme_unmap_user_pages()
...
These are generalisations of the code that was in
nvme_submit_user_admin_command().
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
2011-11-04 15:52:52 -04:00
Matthew Wilcox
bd38c5557c
NVMe: Change NVME_IOCTL_GET_RANGE_TYPE to return all the ranges
...
Factor out most of nvme_identify() into a new nvme_submit_user_admin_command()
function. Change nvme_get_range_type() to call it and change nvme_ioctl to
realise that it's getting back all 64 ranges.
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
2011-11-04 15:52:52 -04:00
Matthew Wilcox
b8deb62cf2
NVMe: Zero the command before we send it
...
Make sure there's no left-over bits set from previous commands that used
this slot.
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
2011-11-04 15:52:52 -04:00
Matthew Wilcox
ff22b54fda
NVMe: Add nvme_setup_prps()
...
Generalise the code from nvme_identify() that sets PRP1 & PRP2 so that
it's usable for commands sent by nvme_submit_bio_queue().
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
2011-11-04 15:52:52 -04:00
Matthew Wilcox
36c14ed9ca
NVMe: Use PRP2 for the nvme_identify ioctl
...
DMA the result straight to userspace instead of bounce-buffering in the
kernel.
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
2011-11-04 15:52:52 -04:00
Matthew Wilcox
53c9577e9c
NVMe: Fix admin IRQ claim on real hardware
...
The admin IRQ is supposed to use the pin-based (or single message MSI)
interrupt. Accomplish this by filling in entry[0]'s vector with the
INTx irq number.
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
2011-11-04 15:52:51 -04:00
Matthew Wilcox
821234603b
NVMe: Rename 'cycle' to 'phase'
...
It's called the phase bit in the current draft
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
2011-11-04 15:52:51 -04:00
Matthew Wilcox
1b23484bd0
NVMe: Implement per-CPU queues
...
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
2011-11-04 15:52:51 -04:00
Matthew Wilcox
b3b06812e1
NVMe: Reduce set_queue_count arguments by one
...
sq_count and cq_count are always the same, so just call it 'count'.
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
2011-11-04 15:52:51 -04:00
Matthew Wilcox
3001082cac
NVMe: Factor out queue_request_irq()
...
Two callers with an almost identical long string of arguments, and
introducing a third soon. Time to factor out the commonalities.
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
2011-11-04 15:52:51 -04:00
Matthew Wilcox
b60503ba43
NVMe: New driver
...
This driver is for devices that follow the NVM Express standard
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
2011-11-04 15:52:51 -04:00