This looks like a good start, though I wonder can we just refactor out the common code from the vma and non-vma paths easier. Also I wonder should we add a new GETPARAM so userspace can know this change is available. Of course we also need a pointer to the userspace implementation to move forward. Thanks, Dave. On Sun, 28 Apr 2024 at 19:32, Mohamed Ahmed <mohamedahmedegypt2001@xxxxxxxxx> wrote: > > Allows PTE kind and tile mode on BO create with VM_BIND. This is needed to support modifiers in NVK and ensure correctness when dealing with the nouveau GL driver. > > Signed-off-by: Mohamed Ahmed <mohamedahmedegypt2001@xxxxxxxxx> > --- > drivers/gpu/drm/nouveau/nouveau_bo.c | 24 +++++++++++++++++++----- > 1 file changed, 19 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c > index db8cbf615..0da0b5286 100644 > --- a/drivers/gpu/drm/nouveau/nouveau_bo.c > +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c > @@ -304,11 +304,25 @@ nouveau_bo_alloc(struct nouveau_cli *cli, u64 *size, int *align, u32 domain, > } > nvbo->page = vmm->page[pi].shift; > } else { > - /* reject other tile flags when in VM mode. */ > - if (tile_mode) > - return ERR_PTR(-EINVAL); > - if (tile_flags & ~NOUVEAU_GEM_TILE_NONCONTIG) > - return ERR_PTR(-EINVAL); > + if (cli->device.info.family >= NV_DEVICE_INFO_V0_FERMI) { > + nvbo->kind = (tile_flags & 0x0000ff00) >> 8; > + if (!nvif_mmu_kind_valid(mmu, nvbo->kind)) { > + kfree(nvbo); > + return ERR_PTR(-EINVAL); > + } > + > + nvbo->comp = mmu->kind[nvbo->kind] != nvbo->kind; > + } else if (cli->device.info.family >= NV_DEVICE_INFO_V0_TESLA) { > + nvbo->kind = (tile_flags & 0x00007f00) >> 8; > + nvbo->comp = (tile_flags & 0x00030000) >> 16; > + if (!nvif_mmu_kind_valid(mmu, nvbo->kind)) { > + kfree(nvbo); > + return ERR_PTR(-EINVAL); > + } > + } else { > + nvbo->zeta = (tile_flags & 0x00000007); > + } > + nvbo->mode = tile_mode; > > /* Determine the desirable target GPU page size for the buffer. */ > for (i = 0; i < vmm->page_nr; i++) { > -- > 2.44.0 >