dma-mapping: set default segment_boundary_mask to ULONG_MAX
The default segment_boundary_mask was set to DMA_BIT_MAKS(32) a decade ago by referencing SCSI/block subsystem, as a 32-bit mask was good enough for most of the devices. Now more and more drivers set dma_masks above DMA_BIT_MAKS(32) while only a handful of them call dma_set_seg_boundary(). This means that most drivers have a 4GB segmention boundary because DMA API returns a 32-bit default value, though they might not really have such a limit. The default segment_boundary_mask should mean "no limit" since the device doesn't explicitly set the mask. But a 32-bit mask certainly limits those devices capable of 32+ bits addressing. So this patch sets default segment_boundary_mask to ULONG_MAX. Signed-off-by: Nicolin Chen <nicoleotsuka@gmail.com> Acked-by: Niklas Schnelle <schnelle@linux.ibm.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
1e9d90dbed
commit
135ba11a7a
|
@ -629,7 +629,7 @@ static inline unsigned long dma_get_seg_boundary(struct device *dev)
|
|||
{
|
||||
if (dev->dma_parms && dev->dma_parms->segment_boundary_mask)
|
||||
return dev->dma_parms->segment_boundary_mask;
|
||||
return DMA_BIT_MASK(32);
|
||||
return ULONG_MAX;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue