• Ralph Campbell's avatar
    drm/nouveau/nouveau/hmm: fix nouveau_dmem_chunk allocations · 1d7f940c
    Ralph Campbell authored
    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: default avatarRalph Campbell <rcampbell@nvidia.com>
    Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
    1d7f940c
nouveau_dmem.c 15.7 KB