md/nvme: Enable PCI P2PDMA support for RAID0 and NVMe Multipath#834
md/nvme: Enable PCI P2PDMA support for RAID0 and NVMe Multipath#834blktests-ci[bot] wants to merge 3 commits into
Conversation
|
Upstream branch: aa54b1d |
b1870f6 to
ca57796
Compare
|
Upstream branch: 70eda68 |
513125d to
1948944
Compare
ca57796 to
c1feb59
Compare
|
Upstream branch: 8bc67e4 |
1948944 to
5a16781
Compare
c1feb59 to
ea833a1
Compare
|
Upstream branch: 6779b50 |
5a16781 to
3375912
Compare
ea833a1 to
7af85d1
Compare
|
Upstream branch: 79bd2dd |
3375912 to
95068b5
Compare
7af85d1 to
de94ac7
Compare
|
Upstream branch: eed108e |
95068b5 to
addface
Compare
de94ac7 to
86d8d37
Compare
|
Upstream branch: e8c2f9f |
addface to
b9f5967
Compare
86d8d37 to
9805659
Compare
|
Upstream branch: eb3f4b7 |
b9f5967 to
fe4c8ac
Compare
9805659 to
3f4a345
Compare
|
Upstream branch: 8fde5d1 |
fe4c8ac to
4d475a4
Compare
3f4a345 to
c6dc343
Compare
|
Upstream branch: e43ffb6 |
4d475a4 to
6435167
Compare
c6dc343 to
fc36596
Compare
…ting devices BLK_FEAT_NOWAIT and BLK_FEAT_POLL are cleared in blk_stack_limits() when an underlying device does not support them. Apply the same treatment to BLK_FEAT_PCI_P2PDMA: stacking drivers set it unconditionally and rely on the core to clear it whenever a non-supporting member device is stacked. Tested-by: Pranjal Shrivastava<praan@google.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Sagi Grimberg <sagi@grimberg.me> Reviewed-by: Nitesh Shetty <nj.shetty@samsung.com> Signed-off-by: Chaitanya Kulkarni <kch@nvidia.com>
MD RAID does not propagate BLK_FEAT_PCI_P2PDMA from member devices to the RAID device, preventing peer-to-peer DMA through the RAID layer even when all underlying devices support it. Enable BLK_FEAT_PCI_P2PDMA unconditionally in raid0, raid1 and raid10 personalities during queue limits setup. blk_stack_limits() clears it automatically if any member device lacks support, consistent with how BLK_FEAT_NOWAIT and BLK_FEAT_POLL are handled in the block core. Parity RAID personalities (raid4/5/6) are excluded because they require CPU access to data pages for parity computation, which is incompatible with P2P mappings. Tested with RAID0/1/10 arrays containing multiple NVMe devices with P2PDMA support, confirming that peer-to-peer transfers work correctly through the RAID layer. Tested-by: Pranjal Shrivastava<praan@google.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Sagi Grimberg <sagi@grimberg.me> Reviewed-by: Xiao Ni <xni@redhat.com> Signed-off-by: Kiran Kumar Modukuri <kmodukuri@nvidia.com> Signed-off-by: Chaitanya Kulkarni <kch@nvidia.com>
|
Upstream branch: ba3e43a |
NVMe multipath does not expose BLK_FEAT_PCI_P2PDMA on the head disk even when all underlying controllers support it. Set BLK_FEAT_PCI_P2PDMA unconditionally in nvme_mpath_alloc_disk() alongside the other features. nvme_update_ns_info_block() already calls queue_limits_stack_bdev() to stack each path's limits onto the head disk, which routes through blk_stack_limits(). The core now clears BLK_FEAT_PCI_P2PDMA automatically if any path (e.g., FC) does not support it, consistent with how BLK_FEAT_NOWAIT and BLK_FEAT_POLL are handled. Tested-by: Pranjal Shrivastava<praan@google.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Sagi Grimberg <sagi@grimberg.me> Reviewed-by: Nitesh Shetty <nj.shetty@samsung.com> Signed-off-by: Kiran Kumar Modukuri <kmodukuri@nvidia.com> Signed-off-by: Chaitanya Kulkarni <kch@nvidia.com>
6435167 to
6d7676d
Compare
Pull request for series with
subject: md/nvme: Enable PCI P2PDMA support for RAID0 and NVMe Multipath
version: 4
url: https://patchwork.kernel.org/project/linux-block/list/?series=1094418