RE: [PATCH rdma-next v1 1/1] RDMA/mana_ib: Fix bug in creation of dma regions

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

 



> 
>  	/* Hardware requires dma region to align to chosen page size */
> -	page_sz = ib_umem_find_best_pgsz(umem, PAGE_SZ_BM, 0);
> +	page_sz = ib_umem_find_best_pgsz(umem, PAGE_SZ_BM, virt);
>  	if (!page_sz) {
>  		ibdev_dbg(&dev->ib_dev, "failed to find page size.\n");
>  		return -ENOMEM;
>  	}

How about doing:
page_sz = ib_umem_find_best_pgsz(umem, PAGE_SZ_BM, force_zero_offset  ? 0 : virt);

Will this work? This can get rid of the following while loop.

> +
> +	if (force_zero_offset) {
> +		while (ib_umem_dma_offset(umem, page_sz) && page_sz >
> PAGE_SIZE)
> +			page_sz /= 2;
> +		if (ib_umem_dma_offset(umem, page_sz) != 0) {
> +			ibdev_dbg(&dev->ib_dev, "failed to find page size to
> force zero offset.\n");
> +			return -ENOMEM;
> +		}
> +	}
> +





[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