Re: [PATCH v2 06/17] RDMA/umem: Split ib_umem_num_pages() into ib_umem_num_dma_blocks()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Sep 04, 2020 at 07:41:47PM -0300, Jason Gunthorpe wrote:
> @@ -33,11 +34,17 @@ static inline int ib_umem_offset(struct ib_umem *umem)
>  	return umem->address & ~PAGE_MASK;
>  }
>  
> +static inline size_t ib_umem_num_dma_blocks(struct ib_umem *umem,
> +					    unsigned long pgsz)
> +{
> +	return (ALIGN(umem->iova + umem->length, pgsz) -
> +		ALIGN_DOWN(umem->iova, pgsz)) /
> +	       pgsz;
> +}

0-day says this triggers a __udivdi3 error because iova is 64 bit,
I'll change this to:

 static inline size_t ib_umem_num_dma_blocks(struct ib_umem *umem,
                                            unsigned long pgsz)
 {
-       return (ALIGN(umem->iova + umem->length, pgsz) -
-               ALIGN_DOWN(umem->iova, pgsz)) /
+       return (size_t)((ALIGN(umem->iova + umem->length, pgsz) -
+                        ALIGN_DOWN(umem->iova, pgsz))) /
               pgsz;
 }
 

Jason



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux