Messages in this thread Patch in this message | | | From | Logan Gunthorpe <> | Date | Fri, 6 Nov 2020 10:00:25 -0700 | Subject | [RFC PATCH 04/15] lib/scatterlist: Add flag for indicating P2PDMA segments in an SGL |
| |
We make use of the top bit of the dma_length to indicate a P2PDMA segment. Code that uses this will need to use sg_dma_p2pdma_len() to get the length and ensure no lengths exceed 2GB.
An sg_dma_is_p2pdma() helper is included to check if a particular segment is p2pdma().
Signed-off-by: Logan Gunthorpe <logang@deltatee.com> --- include/linux/scatterlist.h | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h index 36c47e7e66a2..e738159d56f9 100644 --- a/include/linux/scatterlist.h +++ b/include/linux/scatterlist.h @@ -39,6 +39,10 @@ struct scatterlist { #define sg_dma_len(sg) ((sg)->length) #endif +#define SG_P2PDMA_FLAG (1U << 31) +#define sg_dma_p2pdma_len(sg) (sg_dma_len(sg) & ~SG_P2PDMA_FLAG) +#define sg_dma_is_p2pdma(sg) (sg_dma_len(sg) & SG_P2PDMA_FLAG) + struct sg_table { struct scatterlist *sgl; /* the list */ unsigned int nents; /* number of mapped entries */ -- 2.20.1
| |