Hi all, Ok if we merge the entire series through drm-intel (likely for 4.12, 4.11 is getting a bit late)? We'd like to use this there, and Mauro already reviewed the v4l side ... Thanks, Daniel On Mon, Jan 16, 2017 at 02:12:07PM +0000, Tvrtko Ursulin wrote: > From: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> > > Scatterlist entries have an unsigned int for the offset so > correct the sg_alloc_table_from_pages function accordingly. > > Since these are offsets withing a page, unsigned int is > wide enough. > > Also converts callers which were using unsigned long locally > with the lower_32_bits annotation to make it explicitly > clear what is happening. > > v2: Use offset_in_page. (Chris Wilson) > > Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx> > Cc: Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx> > Cc: Pawel Osciak <pawel@xxxxxxxxxx> > Cc: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> > Cc: Kyungmin Park <kyungmin.park@xxxxxxxxxxx> > Cc: Tomasz Stanislawski <t.stanislaws@xxxxxxxxxxx> > Cc: Matt Porter <mporter@xxxxxxxxxxxxxxxxxxx> > Cc: Alexandre Bounine <alexandre.bounine@xxxxxxx> > Cc: linux-media@xxxxxxxxxxxxxxx > Cc: linux-kernel@xxxxxxxxxxxxxxx > Acked-by: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> (v1) > Reviewed-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Reviewed-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx> > --- > drivers/media/v4l2-core/videobuf2-dma-contig.c | 4 ++-- > drivers/rapidio/devices/rio_mport_cdev.c | 4 ++-- > include/linux/scatterlist.h | 2 +- > lib/scatterlist.c | 2 +- > 4 files changed, 6 insertions(+), 6 deletions(-) > > diff --git a/drivers/media/v4l2-core/videobuf2-dma-contig.c b/drivers/media/v4l2-core/videobuf2-dma-contig.c > index fb6a177be461..51e8765bc3c6 100644 > --- a/drivers/media/v4l2-core/videobuf2-dma-contig.c > +++ b/drivers/media/v4l2-core/videobuf2-dma-contig.c > @@ -478,7 +478,7 @@ static void *vb2_dc_get_userptr(struct device *dev, unsigned long vaddr, > { > struct vb2_dc_buf *buf; > struct frame_vector *vec; > - unsigned long offset; > + unsigned int offset; > int n_pages, i; > int ret = 0; > struct sg_table *sgt; > @@ -506,7 +506,7 @@ static void *vb2_dc_get_userptr(struct device *dev, unsigned long vaddr, > buf->dev = dev; > buf->dma_dir = dma_dir; > > - offset = vaddr & ~PAGE_MASK; > + offset = lower_32_bits(offset_in_page(vaddr)); > vec = vb2_create_framevec(vaddr, size, dma_dir == DMA_FROM_DEVICE); > if (IS_ERR(vec)) { > ret = PTR_ERR(vec); > diff --git a/drivers/rapidio/devices/rio_mport_cdev.c b/drivers/rapidio/devices/rio_mport_cdev.c > index 9013a585507e..0fae29ff47ba 100644 > --- a/drivers/rapidio/devices/rio_mport_cdev.c > +++ b/drivers/rapidio/devices/rio_mport_cdev.c > @@ -876,10 +876,10 @@ rio_dma_transfer(struct file *filp, u32 transfer_mode, > * offset within the internal buffer specified by handle parameter. > */ > if (xfer->loc_addr) { > - unsigned long offset; > + unsigned int offset; > long pinned; > > - offset = (unsigned long)(uintptr_t)xfer->loc_addr & ~PAGE_MASK; > + offset = lower_32_bits(offset_in_page(xfer->loc_addr)); > nr_pages = PAGE_ALIGN(xfer->length + offset) >> PAGE_SHIFT; > > page_list = kmalloc_array(nr_pages, > diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h > index cb3c8fe6acd7..c981bee1a3ae 100644 > --- a/include/linux/scatterlist.h > +++ b/include/linux/scatterlist.h > @@ -263,7 +263,7 @@ int __sg_alloc_table(struct sg_table *, unsigned int, unsigned int, > int sg_alloc_table(struct sg_table *, unsigned int, gfp_t); > int sg_alloc_table_from_pages(struct sg_table *sgt, > struct page **pages, unsigned int n_pages, > - unsigned long offset, unsigned long size, > + unsigned int offset, unsigned long size, > gfp_t gfp_mask); > > size_t sg_copy_buffer(struct scatterlist *sgl, unsigned int nents, void *buf, > diff --git a/lib/scatterlist.c b/lib/scatterlist.c > index 004fc70fc56a..e05e7fc98892 100644 > --- a/lib/scatterlist.c > +++ b/lib/scatterlist.c > @@ -391,7 +391,7 @@ EXPORT_SYMBOL(sg_alloc_table); > */ > int sg_alloc_table_from_pages(struct sg_table *sgt, > struct page **pages, unsigned int n_pages, > - unsigned long offset, unsigned long size, > + unsigned int offset, unsigned long size, > gfp_t gfp_mask) > { > unsigned int chunks; > -- > 2.7.4 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html