Commit af2880ec authored by Robin Murphy's avatar Robin Murphy Committed by Andrew Morton

scatterlist: add dedicated config for DMA flags

The DMA flags field will be useful for users beyond PCI P2P, so upgrade to
its own dedicated config option.

[catalin.marinas@arm.com: use #ifdef CONFIG_NEED_SG_DMA_FLAGS in scatterlist.h]
[catalin.marinas@arm.com: update PCI_P2PDMA dma_flags comment in scatterlist.h]
Link: https://lkml.kernel.org/r/20230612153201.554742-13-catalin.marinas@arm.comSigned-off-by: default avatarRobin Murphy <robin.murphy@arm.com>
Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Tested-by: default avatarIsaac J. Manjarres <isaacmanjarres@google.com>
Cc: Alasdair Kergon <agk@redhat.com>
Cc: Ard Biesheuvel <ardb@kernel.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Jerry Snitselaar <jsnitsel@redhat.com>
Cc: Joerg Roedel <joro@8bytes.org>
Cc: Jonathan Cameron <jic23@kernel.org>
Cc: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: Lars-Peter Clausen <lars@metafoo.de>
Cc: Logan Gunthorpe <logang@deltatee.com>
Cc: Marc Zyngier <maz@kernel.org>
Cc: Mark Brown <broonie@kernel.org>
Cc: Mike Snitzer <snitzer@kernel.org>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: Saravana Kannan <saravanak@google.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent 9382bc44
...@@ -168,6 +168,7 @@ config PCI_P2PDMA ...@@ -168,6 +168,7 @@ config PCI_P2PDMA
# #
depends on 64BIT depends on 64BIT
select GENERIC_ALLOCATOR select GENERIC_ALLOCATOR
select NEED_SG_DMA_FLAGS
help help
Enableѕ drivers to do PCI peer-to-peer transactions to and from Enableѕ drivers to do PCI peer-to-peer transactions to and from
BARs that are exposed in other devices that are the part of BARs that are exposed in other devices that are the part of
......
...@@ -16,7 +16,7 @@ struct scatterlist { ...@@ -16,7 +16,7 @@ struct scatterlist {
#ifdef CONFIG_NEED_SG_DMA_LENGTH #ifdef CONFIG_NEED_SG_DMA_LENGTH
unsigned int dma_length; unsigned int dma_length;
#endif #endif
#ifdef CONFIG_PCI_P2PDMA #ifdef CONFIG_NEED_SG_DMA_FLAGS
unsigned int dma_flags; unsigned int dma_flags;
#endif #endif
}; };
...@@ -249,12 +249,11 @@ static inline void sg_unmark_end(struct scatterlist *sg) ...@@ -249,12 +249,11 @@ static inline void sg_unmark_end(struct scatterlist *sg)
} }
/* /*
* CONFGI_PCI_P2PDMA depends on CONFIG_64BIT which means there is 4 bytes * One 64-bit architectures there is a 4-byte padding in struct scatterlist
* in struct scatterlist (assuming also CONFIG_NEED_SG_DMA_LENGTH is set). * (assuming also CONFIG_NEED_SG_DMA_LENGTH is set). Use this padding for DMA
* Use this padding for DMA flags bits to indicate when a specific * flags bits to indicate when a specific dma address is a bus address.
* dma address is a bus address.
*/ */
#ifdef CONFIG_PCI_P2PDMA #ifdef CONFIG_NEED_SG_DMA_FLAGS
#define SG_DMA_BUS_ADDRESS (1 << 0) #define SG_DMA_BUS_ADDRESS (1 << 0)
...@@ -312,7 +311,7 @@ static inline void sg_dma_unmark_bus_address(struct scatterlist *sg) ...@@ -312,7 +311,7 @@ static inline void sg_dma_unmark_bus_address(struct scatterlist *sg)
{ {
} }
#endif #endif /* CONFIG_NEED_SG_DMA_FLAGS */
/** /**
* sg_phys - Return physical address of an sg entry * sg_phys - Return physical address of an sg entry
......
...@@ -24,6 +24,9 @@ config DMA_OPS_BYPASS ...@@ -24,6 +24,9 @@ config DMA_OPS_BYPASS
config ARCH_HAS_DMA_MAP_DIRECT config ARCH_HAS_DMA_MAP_DIRECT
bool bool
config NEED_SG_DMA_FLAGS
bool
config NEED_SG_DMA_LENGTH config NEED_SG_DMA_LENGTH
bool bool
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment