Right, I did not suggest this as a patch but just wanted to pinpoint the 
problematic issue which is that virt_to_page does not give you the correct 
pointer to the page.

-----Original Message-----
From: Christoph Hellwig [mailto:h...@infradead.org] 
Sent: Monday, April 18, 2016 9:33 AM
To: Eli Cohen <e...@mellanox.com>
Cc: Sinan Kaya <ok...@codeaurora.org>; linux-r...@vger.kernel.org; 
ti...@codeaurora.org; c...@codeaurora.org; Yishai Hadas <yish...@mellanox.com>; 
netdev@vger.kernel.org; linux-ker...@vger.kernel.org
Subject: Re: [PATCH V2] net: ethernet: mellanox: correct page conversion

On Mon, Apr 18, 2016 at 09:54:47AM +0300, Eli Cohen wrote:
> Sinan,
> 
> if we get rid of the part this code:
> 
>                 if (BITS_PER_LONG == 64) {
>                         struct page **pages;
>                         pages = kmalloc(sizeof *pages * buf->nbufs, gfp);
>                         if (!pages)
>                                 goto err_free;
>                         ...
>                         ...
>                         if (!buf->direct.buf)
>                                 goto err_free;
>                 }
> 
> Does that solve the arm issue?

Not quite.  You still have code in mlx4_en_map_buffer that performs this 
mapping later if it it wasn't mapped in mlx4_buf_alloc.

You'll need to get rid of that by ensuring max_direct for all the cases 
currently using mlx4_en_map_buffer as well.

Reply via email to