On Wed, Apr 22, 2020 at 01:52:32PM -0400, Felix Kuehling wrote:
[+Philip Yang]
Am 2020-04-21 um 8:21 p.m. schrieb Jason Gunthorpe:
From: Jason Gunthorpe jgg@mellanox.com
Presumably the intent here was that hmm_range_fault() could put the data into some HW specific format and thus avoid some work. However, nothing actually does that, and it isn't clear how anything actually could do that as hmm_range_fault() provides CPU addresses which must be DMA mapped.
Perhaps there is some special HW that does not need DMA mapping, but we don't have any examples of this, and the theoretical performance win of avoiding an extra scan over the pfns array doesn't seem worth the complexity. Plus pfns needs to be scanned anyhow to sort out any DEVICE_PRIVATE pages.
This version replaces the uint64_t with an usigned long containing a pfn and fix flags. On input flags is filled with the HMM_PFN_REQ_* values, on successful output it is filled with HMM_PFN_* values, describing the state of the pages.
amdgpu is simple to convert, it doesn't use snapshot and doesn't use per-page flags.
nouveau uses only 16 hmm_pte entries at most (ie fits in a few cache lines), and it sweeps over its pfns array a couple of times anyhow.
Signed-off-by: Jason Gunthorpe jgg@mellanox.com Signed-off-by: Christoph Hellwig hch@lst.de
Hi Jason,
I pointed out a typo in the documentation inline. Other than that, the series is
Acked-by: Felix Kuehling Felix.Kuehling@amd.com
I'll try to build it and run some basic tests later.
Got it, thanks! Let me know if there are problems
Jason