All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] Fix NVMe driver support on Power with 32-bit DMA
@ 2015-10-02 17:16 ` Nishanth Aravamudan
  0 siblings, 0 replies; 88+ messages in thread
From: Nishanth Aravamudan @ 2015-10-02 17:16 UTC (permalink / raw)
  To: Matthew Wilcox
  Cc: Keith Busch, Benjamin Herrenschmidt, Paul Mackerras,
	Michael Ellerman, Alexey Kardashevskiy, David Gibson, linux-nvme,
	linux-kernel, linuxppc-dev

We received a bug report recently when DDW (64-bit direct DMA on Power)
is not enabled for NVMe devices. In that case, we fall back to 32-bit
DMA via the IOMMU, which is always done via 4K TCEs (Translation Control
Entries).

The NVMe device driver, though, assumes that the DMA alignment for the
PRP entries will match the device's page size, and that the DMA aligment
matches the kernel's page aligment. On Power, the the IOMMU page size,
as mentioned above, can be 4K, while the device can have a page size of
8K, while the kernel has a page size of 64K. This eventually trips the
BUG_ON in nvme_setup_prps(), as we have a 'dma_len' that is a multiple
of 4K but not 8K (e.g., 0xF000).

In this particular case, and generally, we want to use the IOMMU's page
size for the default device page size, rather than the kernel's page
size.

This series consists of two patches, one of which exposes the IOMMU's
page shift on Power (currently only the page size is exposed, and it
seems unnecessary to ilog2 that value in the driver). The second patch
leverages this value on Power in the NVMe driver.

With these patches, a NVMe device survives our internal hardware
exerciser; the kernel BUGs within a few seconds without the patch.


^ permalink raw reply	[flat|nested] 88+ messages in thread

end of thread, other threads:[~2015-10-19 17:56 UTC | newest]

Thread overview: 88+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-02 17:16 [PATCH 0/2] Fix NVMe driver support on Power with 32-bit DMA Nishanth Aravamudan
2015-10-02 17:16 ` Nishanth Aravamudan
2015-10-02 17:18 ` [PATCH 1/2] powerpc/iommu: expose IOMMU page shift Nishanth Aravamudan
2015-10-02 17:18   ` Nishanth Aravamudan
2015-10-02 17:23   ` [PATCH 2/2] drivers/nvme: default to the IOMMU page size on Power Nishanth Aravamudan
2015-10-02 17:23     ` Nishanth Aravamudan
2015-10-02 17:25     ` Christoph Hellwig
2015-10-02 17:25       ` Christoph Hellwig
2015-10-02 17:39       ` Nishanth Aravamudan
2015-10-02 17:39         ` Nishanth Aravamudan
2015-10-02 17:41         ` Christoph Hellwig
2015-10-02 17:41           ` Christoph Hellwig
2015-10-02 18:57     ` kbuild test robot
2015-10-02 18:57       ` kbuild test robot
2015-10-06  3:19   ` [PATCH 1/2] powerpc/iommu: expose IOMMU page shift David Gibson
2015-10-06  3:19     ` David Gibson
2015-10-12 16:03     ` Nishanth Aravamudan
2015-10-12 16:03       ` Nishanth Aravamudan
2015-10-12 21:10       ` Nishanth Aravamudan
2015-10-12 21:10         ` Nishanth Aravamudan
2015-10-02 20:09 ` [PATCH 0/5 v2] Fix NVMe driver support on Power with 32-bit DMA Nishanth Aravamudan
2015-10-02 20:09   ` Nishanth Aravamudan
2015-10-02 20:11   ` [PATCH 1/5 v2] dma-mapping: add generic dma_get_page_shift API Nishanth Aravamudan
2015-10-02 20:11     ` Nishanth Aravamudan
2015-10-02 20:16     ` [PATCH 2/5 v2] powerpc/dma-mapping: override dma_get_page_shift Nishanth Aravamudan
2015-10-02 20:16       ` Nishanth Aravamudan
2015-10-02 20:19       ` [PATCH 3/5 v2] powerpc/dma: implement per-platform dma_get_page_shift Nishanth Aravamudan
2015-10-02 20:19         ` Nishanth Aravamudan
2015-10-02 20:21         ` [PATCH 4/5 v2] pseries/iommu: implement DDW-aware dma_get_page_shift Nishanth Aravamudan
2015-10-02 20:21           ` Nishanth Aravamudan
2015-10-02 20:30           ` [PATCH 5/5 v2] drivers/nvme: default to the IOMMU page size Nishanth Aravamudan
2015-10-02 20:30             ` Nishanth Aravamudan
2015-10-02 20:43             ` kbuild test robot
2015-10-02 20:43               ` kbuild test robot
2015-10-02 20:33           ` [PATCH 4/5 v2] pseries/iommu: implement DDW-aware dma_get_page_shift kbuild test robot
2015-10-02 20:33             ` kbuild test robot
2015-10-06  3:39             ` Michael Ellerman
2015-10-06  3:39               ` Michael Ellerman
2015-10-07 13:56               ` [kbuild-all] " Fengguang Wu
2015-10-07 13:56                 ` Fengguang Wu
2015-10-08  0:11                 ` Michael Ellerman
2015-10-08  0:11                   ` Michael Ellerman
2015-10-08  0:11                   ` Michael Ellerman
2015-10-08  1:06                   ` Fengguang Wu
2015-10-08  1:06                     ` Fengguang Wu
2015-10-08  1:16                     ` Fengguang Wu
2015-10-08  1:16                       ` Fengguang Wu
2015-10-08  4:06                       ` Michael Ellerman
2015-10-08  4:06                         ` Michael Ellerman
2015-10-08  4:06                         ` Michael Ellerman
2015-10-11 14:22                         ` Fengguang Wu
2015-10-11 14:22                           ` Fengguang Wu
2015-10-12  2:51                           ` Michael Ellerman
2015-10-12  2:51                             ` Michael Ellerman
2015-10-12  2:51                             ` Michael Ellerman
2015-10-08  7:46                       ` Christoph Hellwig
2015-10-08  7:46                         ` Christoph Hellwig
2015-10-11 14:19                         ` testing email patches Fengguang Wu
2015-10-11 14:19                           ` Fengguang Wu
2015-10-06  3:43     ` [PATCH 1/5 v2] dma-mapping: add generic dma_get_page_shift API Michael Ellerman
2015-10-06  3:43       ` Michael Ellerman
2015-10-06  3:43       ` Michael Ellerman
2015-10-06  9:51     ` Christoph Hellwig
2015-10-06  9:51       ` Christoph Hellwig
2015-10-12 16:04       ` Nishanth Aravamudan
2015-10-12 16:04         ` Nishanth Aravamudan
2015-10-12 21:06       ` Nishanth Aravamudan
2015-10-12 21:06         ` Nishanth Aravamudan
2015-10-14 15:39         ` Nishanth Aravamudan
2015-10-14 15:39           ` Nishanth Aravamudan
2015-10-14 15:42           ` Christoph Hellwig
2015-10-14 15:42             ` Christoph Hellwig
2015-10-15 22:52             ` Nishanth Aravamudan
2015-10-15 22:52               ` Nishanth Aravamudan
2015-10-15 22:52               ` Nishanth Aravamudan
2015-10-19 17:56               ` Nishanth Aravamudan
2015-10-19 17:56                 ` Nishanth Aravamudan
2015-10-19 17:56                 ` Nishanth Aravamudan
2015-10-02 20:51   ` [PATCH 0/5 v2] Fix NVMe driver support on Power with 32-bit DMA Benjamin Herrenschmidt
2015-10-02 20:51     ` Benjamin Herrenschmidt
2015-10-02 21:04     ` Nishanth Aravamudan
2015-10-02 21:04       ` Nishanth Aravamudan
2015-10-02 21:35       ` Benjamin Herrenschmidt
2015-10-02 21:35         ` Benjamin Herrenschmidt
2015-10-02 21:48         ` Nishanth Aravamudan
2015-10-02 21:48           ` Nishanth Aravamudan
2015-10-03  8:19     ` Christoph Hellwig
2015-10-03  8:19       ` Christoph Hellwig

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.