From: Sui Jingfeng <sui.jingfeng@linux.dev>
To: Lucas Stach <l.stach@pengutronix.de>,
Russell King <linux+etnaviv@armlinux.org.uk>,
Christian Gmeiner <christian.gmeiner@gmail.com>
Cc: David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
linux-kernel@vger.kernel.org,
Sui Jingfeng <sui.jingfeng@linux.dev>
Subject: [PATCH v2 0/2] drm/etnaviv: Fix GPUVA range collision when CPU page size is not equal to GPU page size
Date: Sat, 26 Oct 2024 04:43:53 +0800 [thread overview]
Message-ID: <20241025204355.595805-1-sui.jingfeng@linux.dev> (raw)
Etnaviv assumes that GPU page size is 4KiB, however, when using
softpin capable GPUs on a different CPU page size configuration.
The userspace allocated GPUVA ranges collision, unable to be
inserted to the specified address hole exactly.
For example, when running glmark2-drm:
[kernel space debug log]
etnaviv 0000:03:00.0: Insert bo failed, va: 0xfd38b000, size: 0x4000
etnaviv 0000:03:00.0: Insert bo failed, va: 0xfd38a000, size: 0x4000
[user space debug log]
bo->va = 0xfd38c000, bo->size=0x100000
bo->va = 0xfd38b000, bo->size=0x1000 <-- Insert IOVA fails here.
bo->va = 0xfd38a000, bo->size=0x1000
bo->va = 0xfd389000, bo->size=0x1000
The root cause is that kernel side BO takes up bigger address space
than userspace assumes.
To solve this problem, we first track the GPU visible size of GEM buffer
object, then map and unmap the GEM BOs exactly with respect to its GPUVA
size. Ensure that GPU VA is fully mapped/unmapped, not more and not less.
v2:
- Aligned to the GPU page size (Lucas)
v1:
- No GPUVA range wasting (Lucas)
Link: https://lore.kernel.org/dri-devel/20241004194207.1013744-1-sui.jingfeng@linux.dev/
v0:
Link: https://lore.kernel.org/dri-devel/20240930221706.399139-1-sui.jingfeng@linux.dev/
Sui Jingfeng (2):
drm/etnaviv: Record GPU visible size of GEM BO separately
drm/etnaviv: Map and unmap GPUVA range with respect to the GPUVA size
drivers/gpu/drm/etnaviv/etnaviv_gem.c | 11 ++++----
drivers/gpu/drm/etnaviv/etnaviv_gem.h | 5 ++++
drivers/gpu/drm/etnaviv/etnaviv_mmu.c | 36 +++++++++------------------
3 files changed, 22 insertions(+), 30 deletions(-)
--
2.34.1
next reply other threads:[~2024-10-25 20:44 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-25 20:43 Sui Jingfeng [this message]
2024-10-25 20:43 ` [PATCH v2 1/2] drm/etnaviv: Record GPU visible size of GEM BO separately Sui Jingfeng
2024-10-25 20:43 ` [PATCH v2 2/2] drm/etnaviv: Map and unmap GPUVA range with respect to the GPUVA size Sui Jingfeng
2024-10-28 15:57 ` [PATCH v2 0/2] drm/etnaviv: Fix GPUVA range collision when CPU page size is not equal to GPU page size Lucas Stach
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=20241025204355.595805-1-sui.jingfeng@linux.dev \
--to=sui.jingfeng@linux.dev \
--cc=airlied@gmail.com \
--cc=christian.gmeiner@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=etnaviv@lists.freedesktop.org \
--cc=l.stach@pengutronix.de \
--cc=linux+etnaviv@armlinux.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=simona@ffwll.ch \
/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