linux/include/drm/ttm
Zack Rusin de125efb3b drm/ttm: Make sure the mapped tt pages are decrypted when needed
[ Upstream commit 71ce046327 ]

Some drivers require the mapped tt pages to be decrypted. In an ideal
world this would have been handled by the dma layer, but the TTM page
fault handling would have to be rewritten to able to do that.

A side-effect of the TTM page fault handling is using a dma allocation
per order (via ttm_pool_alloc_page) which makes it impossible to just
trivially use dma_mmap_attrs. As a result ttm has to be very careful
about trying to make its pgprot for the mapped tt pages match what
the dma layer thinks it is. At the ttm layer it's possible to
deduce the requirement to have tt pages decrypted by checking
whether coherent dma allocations have been requested and the system
is running with confidential computing technologies.

This approach isn't ideal but keeping TTM matching DMAs expectations
for the page properties is in general fragile, unfortunately proper
fix would require a rewrite of TTM's page fault handling.

Fixes vmwgfx with SEV enabled.

v2: Explicitly include cc_platform.h
v3: Use CC_ATTR_GUEST_MEM_ENCRYPT instead of CC_ATTR_MEM_ENCRYPT to
limit the scope to guests and log when memory decryption is enabled.

Signed-off-by: Zack Rusin <zack.rusin@broadcom.com>
Fixes: 3bf3710e37 ("drm/ttm: Add a generic TTM memcpy move for page-based iomem")
Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Acked-by: Christian König <christian.koenig@amd.com>
Cc: Huang Rui <ray.huang@amd.com>
Cc: dri-devel@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org
Cc: <stable@vger.kernel.org> # v5.14+
Link: https://patchwork.freedesktop.org/patch/msgid/20230926040359.3040017-1-zack@kde.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2024-04-03 15:28:38 +02:00
..
ttm_bo.h drm/ttm: Remove two unused function declarations 2023-08-10 09:12:08 +02:00
ttm_caching.h drm/ttm: add kerneldoc for enum ttm_caching 2021-09-09 13:26:43 +02:00
ttm_device.h drm/ttm: let struct ttm_device_funcs be placed in rodata 2023-05-17 11:28:28 +03:00
ttm_execbuf_util.h drm/ttm: merge ttm_bo_api.h and ttm_bo_driver.h v2 2022-12-06 12:54:14 +01:00
ttm_kmap_iter.h dma-buf-map: Rename to iosys-map 2022-02-07 16:35:35 -08:00
ttm_placement.h drm/ttm: Clarify that the TTM_PL_SYSTEM is under TTMs control 2021-12-01 11:58:37 -05:00
ttm_pool.h Merge tag 'amd-drm-next-6.5-2023-06-09' of https://gitlab.freedesktop.org/agd5f/linux into drm-next 2023-06-15 14:11:22 +10:00
ttm_range_manager.h drm/ttm: Try to check if new ttm man out of bounds during compile 2021-09-13 10:14:28 +02:00
ttm_resource.h drm/ttm: rework on ttm_resource to use size_t type 2022-10-27 11:42:58 +02:00
ttm_tt.h drm/ttm: Make sure the mapped tt pages are decrypted when needed 2024-04-03 15:28:38 +02:00