diff options
author | Thomas Hellström <thomas.hellstrom@linux.intel.com> | 2021-06-02 10:38:10 +0200 |
---|---|---|
committer | Thomas Hellström <thomas.hellstrom@linux.intel.com> | 2021-06-07 16:07:08 +0200 |
commit | 3bf3710e3718a5aebdf465343bc1125b6e8cca96 (patch) | |
tree | fdce250a03876dd8202f69c12c2f22b630f73ab4 /Documentation | |
parent | RDMA/umem: fix missing automated rename (diff) | |
download | linux-3bf3710e3718a5aebdf465343bc1125b6e8cca96.tar.xz linux-3bf3710e3718a5aebdf465343bc1125b6e8cca96.zip |
drm/ttm: Add a generic TTM memcpy move for page-based iomem
The internal ttm_bo_util memcpy uses ioremap functionality, and while it
probably might be possible to use it for copying in- and out of
sglist represented io memory, using io_mem_reserve() / io_mem_free()
callbacks, that would cause problems with fault().
Instead, implement a method mapping page-by-page using kmap_local()
semantics. As an additional benefit we then avoid the occasional global
TLB flushes of ioremap() and consuming ioremap space, elimination of a
critical point of failure and with a slight change of semantics we could
also push the memcpy out async for testing and async driver development
purposes.
A special linear iomem iterator is introduced internally to mimic the
old ioremap behaviour for code-paths that can't immediately be ported
over. This adds to the code size and should be considered a temporary
solution.
Looking at the code we have a lot of checks for iomap tagged pointers.
Ideally we should extend the core memremap functions to also accept
uncached memory and kmap_local functionality. Then we could strip a
lot of code.
Cc: Christian König <christian.koenig@amd.com>
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Link: https://lore.kernel.org/r/20210602083818.241793-4-thomas.hellstrom@linux.intel.com
Diffstat (limited to 'Documentation')
0 files changed, 0 insertions, 0 deletions