diff options
author | Alexandre Courbot <acourbot@nvidia.com> | 2015-09-04 13:52:11 +0300 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2015-11-03 08:02:18 +0300 |
commit | 69c4938249fb48aeed32fd76c67972e71f471cd2 (patch) | |
tree | c29020bb0ff5396158a91a6f5f055a4e6ae925f2 /include/asm-generic/user.h | |
parent | fcf3f91c34105c3551741febbfc1066aaa7f1db7 (diff) | |
download | linux-69c4938249fb48aeed32fd76c67972e71f471cd2.tar.xz |
drm/nouveau/instmem/gk20a: use direct CPU access
The Great Nouveau Refactoring Take II brought us a lot of goodness,
including acquire/release methods that are called before and after an
instobj is modified. These functions can be used as synchronization
points to manage CPU/GPU coherency if we modify an instobj using the
CPU.
This patch replaces the legacy and slow PRAMIN access for gk20a instmem
with CPU mappings and writes. A LRU list is used to unmap unused
mappings after a certain threshold (currently 1MB) of mapped instobjs is
reached. This allows mappings to be reused most of the time.
Accessing instobjs using the CPU requires to maintain the GPU L2 cache,
which we do in the acquire/release functions. This triggers a lot of L2
flushes/invalidates, but most of them are performed on an empty cache
(and thus return immediately), and overall context setup performance
greatly benefits from this (from 250ms to 160ms on Jetson TK1 for a
simple libdrm program).
Making L2 management more explicit should allow us to grab some more
performance in the future.
Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'include/asm-generic/user.h')
0 files changed, 0 insertions, 0 deletions