Messages in this thread | | | Date | Tue, 19 May 2020 01:04:08 -0700 | From | Nicolin Chen <> | Subject | Re: [RFC/RFT][PATCH v2] dma-mapping: set default segment_boundary_mask to ULONG_MAX |
| |
Hi Robin/Christoph,
This v2 was sent a while ago. I know that we had a concern, yet will we have a closure whether merging it or not?
Thanks! Nic
On Mon, Apr 06, 2020 at 02:06:43PM -0700, Nicolin Chen wrote: > 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> > --- > Changelog: > v1->v2 > * Followed Robin's comments to revise the commit message by > dropping one paragraph of not-entirely-true justification > (no git-diff level change, so please ack if you tested v1) > > include/linux/dma-mapping.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h > index 330ad58fbf4d..ff8cefe85f30 100644 > --- a/include/linux/dma-mapping.h > +++ b/include/linux/dma-mapping.h > @@ -736,7 +736,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; > } > > static inline int dma_set_seg_boundary(struct device *dev, unsigned long mask) > -- > 2.17.1 >
| |