lkml.org 
[lkml]   [2021]   [Apr]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 09/16] dma-direct: Support PCI P2PDMA pages in dma-direct map_sg
    On Thu, Apr 08, 2021 at 11:01:16AM -0600, Logan Gunthorpe wrote:
    > Add PCI P2PDMA support for dma_direct_map_sg() so that it can map
    > PCI P2PDMA pages directly without a hack in the callers. This allows
    > for heterogeneous SGLs that contain both P2PDMA and regular pages.
    >
    > SGL segments that contain PCI bus addresses are marked with
    > sg_mark_pci_p2pdma() and are ignored when unmapped.
    >
    > Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
    > kernel/dma/direct.c | 25 ++++++++++++++++++++++---
    > 1 file changed, 22 insertions(+), 3 deletions(-)
    >
    > diff --git a/kernel/dma/direct.c b/kernel/dma/direct.c
    > index 002268262c9a..108dfb4ecbd5 100644
    > +++ b/kernel/dma/direct.c
    > @@ -13,6 +13,7 @@
    > #include <linux/vmalloc.h>
    > #include <linux/set_memory.h>
    > #include <linux/slab.h>
    > +#include <linux/pci-p2pdma.h>
    > #include "direct.h"
    >
    > /*
    > @@ -387,19 +388,37 @@ void dma_direct_unmap_sg(struct device *dev, struct scatterlist *sgl,
    > struct scatterlist *sg;
    > int i;
    >
    > - for_each_sg(sgl, sg, nents, i)
    > + for_each_sg(sgl, sg, nents, i) {
    > + if (sg_is_pci_p2pdma(sg)) {
    > + sg_unmark_pci_p2pdma(sg);

    This doesn't seem nice, the DMA layer should only alter the DMA
    portion of the SG, not the other portions. Is it necessary?

    Jason

    \
     
     \ /
      Last update: 2021-04-27 21:36    [W:7.006 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site