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)
|
if (dev->dma_parms && dev->dma_parms->segment_boundary_mask)
|
||||||
return 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