From: Faith Ekstrand <faith@gfxstrand.net>
To: Mohamed Ahmed <mohamedahmedegypt2001@gmail.com>
Cc: dri-devel@lists.freedesktop.org, airlied@redhat.com,
nouveau@lists.freedesktop.org
Subject: Re: [PATCH v3] drm/nouveau: use tile_mode and pte_kind for VM_BIND bo allocations
Date: Wed, 8 May 2024 18:09:52 -0500 [thread overview]
Message-ID: <CAOFGe96aGP=kkyCr+Fy-N4_uXNLb-raLARLG7GMiicfyAkhn-w@mail.gmail.com> (raw)
In-Reply-To: <20240508230624.7598-1-mohamedahmedegypt2001@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 5679 bytes --]
On Wed, May 8, 2024 at 6:06 PM Mohamed Ahmed <
mohamedahmedegypt2001@gmail.com> 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
> 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/28843
>
> Fixes: b88baab82871 ("drm/nouveau: implement new VM_BIND uAPI")
> Signed-off-by: Mohamed Ahmed <mohamedahmedegypt2001@gmail.com>
> ---
> drivers/gpu/drm/nouveau/nouveau_abi16.c | 3 ++
> drivers/gpu/drm/nouveau/nouveau_bo.c | 45 +++++++++++--------------
> include/uapi/drm/nouveau_drm.h | 7 ++++
> 3 files changed, 30 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..583c962ef 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_bo.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
> @@ -241,28 +241,29 @@ 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);
> + /* for BO allocs, don't assign kinds */
>
I think this comment is stale. We're now assigning them in both cases.
> + 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 +305,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;
> --
> 2.44.0
>
>
[-- Attachment #2: Type: text/html, Size: 7335 bytes --]
prev parent reply other threads:[~2024-05-08 23:10 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-08 23:06 [PATCH v3] drm/nouveau: use tile_mode and pte_kind for VM_BIND bo allocations Mohamed Ahmed
2024-05-08 23:09 ` Faith Ekstrand [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAOFGe96aGP=kkyCr+Fy-N4_uXNLb-raLARLG7GMiicfyAkhn-w@mail.gmail.com' \
--to=faith@gfxstrand.net \
--cc=airlied@redhat.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=mohamedahmedegypt2001@gmail.com \
--cc=nouveau@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).