[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20160418135936.GA25909@infradead.org>
Date: Mon, 18 Apr 2016 06:59:36 -0700
From: Christoph Hellwig <hch@...radead.org>
To: Sinan Kaya <okaya@...eaurora.org>
Cc: Christoph Hellwig <hch@...radead.org>, linux-rdma@...r.kernel.org,
timur@...eaurora.org, cov@...eaurora.org,
Yishai Hadas <yishaih@...lanox.com>, netdev@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH V2] net: ethernet: mellanox: correct page conversion
On Mon, Apr 18, 2016 at 09:49:10AM -0400, Sinan Kaya wrote:
> Here is a good description of logical address vs. virtual address.
>
> https://www.quora.com/What-is-the-Kernel-logical-and-virtual-addresses-What-is-the-difference-between-them-What-is-the-type-of-addresses-listed-in-the-System-map
That's not how we use the terms in Linux. But it's not really the point
of my question either.
> > Is this correct?
> >
> No, the driver is plain broken without this patch. It causes a kernel panic
> during driver probe.
>
> This is the definition of vmap API.
>
> https://www.kernel.org/doc/htmldocs/kernel-api/API-vmap.html
Thanks for the pointer, but I'm actually the person who introduced vmap
to Linux a long time ago, and this is once again not my question.
> You cannot take several virtually mapped addresses returned by dma_alloc_coherent
> and try to make them virtually contiguous again.
But now we're getting closer to the issue: the mlx4_en driver is using
vmap on buffers allocated using dma_alloc_coherent if on a 64-bit
architecture, and that's obviously broken.
Now the big quetions is: why does it do that, given that
dma_alloc_coherent can be used for high order allocations anyway (and in
fact many architectures implement is using a version of vmap).
Let's get some answers on these question from the Mellanox folks and
work from there.
Powered by blists - more mailing lists