Two unrelated fixes; they touch different files and can be applied independently.
Patch 1 sizes the VRAM buffer object backing a device-private region to the region it actually backs. The region grew to DMEM_CHUNK_SIZE * NR_CHUNKS while the buffer object stayed at DMEM_CHUNK_SIZE, so nouveau_dmem_page_addr() resolves every page past the first chunk to VRAM outside the object. Patch 2 rejects a VM_BIND that replaces a mapping with one using a different page size. A new mapping takes over the page tables of the mappings it replaces, which only holds while they all use the same page size. Since select_page_shift() started deriving one per mapping it no longer does, and the new mapping ends up mapping at a size its page tables were never built for. Signed-off-by: Junrui Luo <[email protected]> --- Junrui Luo (2): drm/nouveau/dmem: pin VRAM for the whole registered range drm/nouveau/uvmm: reject replace across page sizes drivers/gpu/drm/nouveau/nouveau_dmem.c | 4 ++-- drivers/gpu/drm/nouveau/nouveau_uvmm.c | 33 ++++++++++++++++++++++++++++++++- 2 files changed, 34 insertions(+), 3 deletions(-) --- base-commit: f5bbbfec59b4e2fb7520a91de3df8a6174325d6a change-id: 20260817-nouveau-fixes-23877845c3ab Best regards, -- Junrui Luo <[email protected]>
