forked from mirrors/linux
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.com Signed-off-by: Robin Murphy <robin.murphy@arm.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Tested-by: Isaac 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: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
9382bc44b5
commit
af2880ec44
3 changed files with 10 additions and 7 deletions
|
|
@ -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 {
|
||||||
#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)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 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)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
#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
|
||||||
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
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue