Hey, Understood. Thanks a lot and sorry for any inconvenience.
Mohamed On Mon, May 13, 2024 at 11:28 PM Danilo Krummrich <d...@redhat.com> wrote: > Hi Mohamed, > > Thank you for fixing this up! > > On 5/9/24 22:43, Mohamed Ahmed wrote: > > Allows PTE kind and tile mode on BO create with VM_BIND, > > and adds a GETPARAM to indicate this change. This is needed to support > > It's usually better to use imperative verb form for commit messages. No > need to send a new version though. > > > modifiers in NVK and ensure correctness when dealing with the nouveau > > GL driver. > > > > The userspace modifiers implementation this is for can be found here: > > https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24795 > > > > Fixes: b88baab82871 ("drm/nouveau: implement new VM_BIND uAPI") > > Signed-off-by: Mohamed Ahmed <mohamedahmedegypt2...@gmail.com> > > Applied to drm-misc-next-fixes. > > Generally, please make sure to use scripts/get_maintainer.pl before > sending > patches. > > - Danilo > > > --- > > drivers/gpu/drm/nouveau/nouveau_abi16.c | 3 ++ > > drivers/gpu/drm/nouveau/nouveau_bo.c | 44 +++++++++++-------------- > > include/uapi/drm/nouveau_drm.h | 7 ++++ > > 3 files changed, 29 insertions(+), 25 deletions(-) > > > > diff --git a/drivers/gpu/drm/nouveau/nouveau_abi16.c > b/drivers/gpu/drm/nouveau/nouveau_abi16.c > > index 80f74ee0f..47e53e17b 100644 > > --- a/drivers/gpu/drm/nouveau/nouveau_abi16.c > > +++ b/drivers/gpu/drm/nouveau/nouveau_abi16.c > > @@ -272,6 +272,9 @@ nouveau_abi16_ioctl_getparam(ABI16_IOCTL_ARGS) > > getparam->value = > (u64)ttm_resource_manager_usage(vram_mgr); > > break; > > } > > + case NOUVEAU_GETPARAM_HAS_VMA_TILEMODE: > > + getparam->value = 1; > > + break; > > default: > > NV_PRINTK(dbg, cli, "unknown parameter %lld\n", > getparam->param); > > return -EINVAL; > > diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c > b/drivers/gpu/drm/nouveau/nouveau_bo.c > > index db8cbf615..186add400 100644 > > --- a/drivers/gpu/drm/nouveau/nouveau_bo.c > > +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c > > @@ -241,28 +241,28 @@ nouveau_bo_alloc(struct nouveau_cli *cli, u64 > *size, int *align, u32 domain, > > } > > > > nvbo->contig = !(tile_flags & NOUVEAU_GEM_TILE_NONCONTIG); > > - if (!nouveau_cli_uvmm(cli) || internal) { > > - /* for BO noVM allocs, don't assign kinds */ > > - 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); > > + 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); > > } > > - nvbo->mode = tile_mode; > > + } else { > > + nvbo->zeta = (tile_flags & 0x00000007); > > + } > > + nvbo->mode = tile_mode; > > > > + if (!nouveau_cli_uvmm(cli) || internal) { > > /* Determine the desirable target GPU page size for the > buffer. */ > > for (i = 0; i < vmm->page_nr; i++) { > > /* Because we cannot currently allow VMM maps to > fail > > @@ -304,12 +304,6 @@ 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); > > - > > /* Determine the desirable target GPU page size for the > buffer. */ > > for (i = 0; i < vmm->page_nr; i++) { > > /* Because we cannot currently allow VMM maps to > fail > > diff --git a/include/uapi/drm/nouveau_drm.h > b/include/uapi/drm/nouveau_drm.h > > index cd84227f1..5402f77ee 100644 > > --- a/include/uapi/drm/nouveau_drm.h > > +++ b/include/uapi/drm/nouveau_drm.h > > @@ -68,6 +68,13 @@ extern "C" { > > */ > > #define NOUVEAU_GETPARAM_VRAM_USED 19 > > > > +/* > > + * NOUVEAU_GETPARAM_HAS_VMA_TILEMODE > > + * > > + * Query whether tile mode and PTE kind are accepted with VM allocs or > not. > > + */ > > +#define NOUVEAU_GETPARAM_HAS_VMA_TILEMODE 20 > > + > > struct drm_nouveau_getparam { > > __u64 param; > > __u64 value; > >