Re: [PATCH 0/2] [radeon] Getting rid of GUP and use HMM for user ptr features.

From: Christian KÃnig
Date: Mon Sep 10 2018 - 03:00:52 EST


Am 10.09.2018 um 02:57 schrieb jglisse@xxxxxxxxxx:
From: JÃrÃme Glisse <jglisse@xxxxxxxxxx>

[This depends on some HMM patchset queued upstream see branch [1]]

This is simple change to switch to use HMM for user ptr buffer object
which conveniently avoid to pin pages. I have more things in the pipe
to make HMM more usefull for such cases (like sharing more resources
accross multiple mirror of a same process).

Beside avoiding pining, this is also an attempt to isolate core mm
from device drivers by having clearly define API and boundary where
we can set expection of everyone and thus having mm folks to have to
read and understand driver code and conversly having driver folks
understand mm maze.

This is also part of what i want to discuss during XDC2018.

Consider this as an RFC to start the discussion.

Looks good on first glance, but please drop support for radeon and use amdgpu instead.

The radeon implementation has quite a number of bugs which aren't fixed upstream and I actually considered to drop it again.

We can add it back as soon as the HMM implementation works as expected.

Thanks,
Christian.


[1] https://cgit.freedesktop.org/~glisse/linux/log/?h=hmm-radeon-v00

Cc: dri-devel@xxxxxxxxxxxxxxxxxxxxx
Cc: Alex Deucher <alexander.deucher@xxxxxxx>
Cc: Christian KÃnig <christian.koenig@xxxxxxx>
Cc: Felix Kuehling <Felix.Kuehling@xxxxxxx>
Cc: David (ChunMing) Zhou <David1.Zhou@xxxxxxx>
Cc: Nicolai HÃhnle <nicolai.haehnle@xxxxxxx>
Cc: amd-gfx@xxxxxxxxxxxxxxxxxxxxx
Cc: David Airlie <airlied@xxxxxxxx>
Cc: Daniel Vetter <daniel.vetter@xxxxxxxx>

JÃrÃme Glisse (2):
gpu/radeon: use HMM mirror instead of mmu_notifier
gpu/radeon: use HMM mirror for userptr buffer object.

drivers/gpu/drm/radeon/radeon.h | 14 +-
drivers/gpu/drm/radeon/radeon_gem.c | 16 +-
drivers/gpu/drm/radeon/radeon_mn.c | 283 +++++++++++++++++++++-------
drivers/gpu/drm/radeon/radeon_ttm.c | 129 ++-----------
4 files changed, 259 insertions(+), 183 deletions(-)