[ Sasha's backport helper bot ]
Hi,
The upstream commit SHA1 provided is correct: 71ce046327cfd3aef3f93d1c44e091395eb03f8f
WARNING: Author mismatch between patch and upstream commit: Backport author: Ajay Kaher ajay.kaher@broadcom.com Commit author: Zack Rusin zack.rusin@broadcom.com
Status in newer kernel trees: 6.12.y | Present (exact SHA1) 6.6.y | Present (different SHA1: de125efb3bae) 6.1.y | Not found
Note: The patch differs from the upstream commit: --- 1: 71ce046327cfd ! 1: fcdf2063a135c drm/ttm: Make sure the mapped tt pages are decrypted when needed @@ Metadata ## Commit message ## drm/ttm: Make sure the mapped tt pages are decrypted when needed
+ commit 71ce046327cfd3aef3f93d1c44e091395eb03f8f upstream. + 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. @@ Commit message Cc: linux-kernel@vger.kernel.org Cc: stable@vger.kernel.org # v5.14+ Link: https://patchwork.freedesktop.org/patch/msgid/20230926040359.3040017-1-zack@... + Signed-off-by: Sasha Levin sashal@kernel.org + Signed-off-by: Ye Li ye.li@broadcom.com + Signed-off-by: Ajay Kaher ajay.kaher@broadcom.com
## drivers/gpu/drm/ttm/ttm_bo_util.c ## @@ drivers/gpu/drm/ttm/ttm_bo_util.c: pgprot_t ttm_io_prot(struct ttm_buffer_object *bo, struct ttm_resource *res, @@ drivers/gpu/drm/ttm/ttm_tt.c #include <linux/module.h> #include <drm/drm_cache.h> +#include <drm/drm_device.h> - #include <drm/drm_util.h> - #include <drm/ttm/ttm_bo.h> - #include <drm/ttm/ttm_tt.h> + #include <drm/ttm/ttm_bo_driver.h> + + #include "ttm_module.h" @@ drivers/gpu/drm/ttm/ttm_tt.c: static atomic_long_t ttm_dma32_pages_allocated; int ttm_tt_create(struct ttm_buffer_object *bo, bool zero_alloc) { @@ include/drm/ttm/ttm_tt.h: struct ttm_tt { * set by TTM after ttm_tt_populate() has successfully returned, and is * then unset when TTM calls ttm_tt_unpopulate(). @@ include/drm/ttm/ttm_tt.h: struct ttm_tt { - #define TTM_TT_FLAG_ZERO_ALLOC BIT(1) - #define TTM_TT_FLAG_EXTERNAL BIT(2) - #define TTM_TT_FLAG_EXTERNAL_MAPPABLE BIT(3) -+#define TTM_TT_FLAG_DECRYPTED BIT(4) + #define TTM_TT_FLAG_ZERO_ALLOC (1 << 1) + #define TTM_TT_FLAG_EXTERNAL (1 << 2) + #define TTM_TT_FLAG_EXTERNAL_MAPPABLE (1 << 3) ++#define TTM_TT_FLAG_DECRYPTED (1 << 4)
--#define TTM_TT_FLAG_PRIV_POPULATED BIT(4) -+#define TTM_TT_FLAG_PRIV_POPULATED BIT(5) + #define TTM_TT_FLAG_PRIV_POPULATED (1U << 31) uint32_t page_flags; - /** @num_pages: Number of pages in the page array. */ - uint32_t num_pages; ---
Results of testing on various branches:
| Branch | Patch Apply | Build Test | |---------------------------|-------------|------------| | stable/linux-6.1.y | Success | Success |