• Zack Rusin's avatar
    drm/ttm: Make sure the mapped tt pages are decrypted when needed · 71ce0463
    Zack Rusin authored
    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: default avatarZack Rusin <zack.rusin@broadcom.com>
    Fixes: 3bf3710e ("drm/ttm: Add a generic TTM memcpy move for page-based iomem")
    Reviewed-by: default avatarThomas Hellström <thomas.hellstrom@linux.intel.com>
    Acked-by: default avatarChristian 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
    71ce0463
ttm_tt.c 11.7 KB