Re: [PATCH] nouveau/hmm: fix nouveau_dmem_chunk allocations

From: Ralph Campbell
Date: Thu Apr 23 2020 - 14:32:41 EST



On 4/23/20 5:17 AM, Jason Gunthorpe wrote:
On Tue, Apr 21, 2020 at 04:11:07PM -0700, Ralph Campbell wrote:
In nouveau_dmem_init(), a number of struct nouveau_dmem_chunk are allocated
and put on the dmem->chunk_empty list. Then in nouveau_dmem_pages_alloc(),
a nouveau_dmem_chunk is removed from the list and GPU memory is allocated.
However, the nouveau_dmem_chunk is never removed from the chunk_empty
list nor placed on the chunk_free or chunk_full lists. This results
in only one chunk ever being actually used (2MB) and quickly leads to
migration to device private memory failures.

Fix this by having just one list of free device private pages and if no
pages are free, allocate a chunk of device private pages and GPU memory.

Signed-off-by: Ralph Campbell <rcampbell@xxxxxxxxxx>
---
drivers/gpu/drm/nouveau/nouveau_dmem.c | 304 +++++++++----------------
1 file changed, 112 insertions(+), 192 deletions(-)

Does this generate any conflicts with my series to rework
hmm_range_fault?

Jason

I based it on top of your series and the patch that Ben already has queued
("nouveau/hmm: map pages after migration") so it shouldn't have any conflicts.

I guess I should have mentioned that in a cover letter.