Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/msm/adreno: Add MMU fault handler to adreno_gpu_func

Move MMU fault handler for each generation to adreno function list. This
will help to use common code for mmu pagefault handler registration between
a6x/a7x and a8x layer.

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Akhil P Oommen <akhilpo@oss.qualcomm.com>
Patchwork: https://patchwork.freedesktop.org/patch/689007/
Message-ID: <20251118-kaana-gpu-support-v4-8-86eeb8e93fb6@oss.qualcomm.com>
Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com>

authored by

Akhil P Oommen and committed by
Rob Clark
0d9f5ee4 d46b25b8

+5 -1
+4 -1
drivers/gpu/drm/msm/adreno/a6xx_gpu.c
··· 2641 2641 adreno_gpu->uche_trap_base = 0x1fffffffff000ull; 2642 2642 2643 2643 msm_mmu_set_fault_handler(to_msm_vm(gpu->vm)->mmu, gpu, 2644 - a6xx_fault_handler); 2644 + adreno_gpu->funcs->mmu_fault_handler); 2645 2645 2646 2646 ret = a6xx_calc_ubwc_config(adreno_gpu); 2647 2647 if (ret) { ··· 2686 2686 .init = a6xx_gpu_init, 2687 2687 .get_timestamp = a6xx_gmu_get_timestamp, 2688 2688 .bus_halt = a6xx_bus_clear_pending_transactions, 2689 + .mmu_fault_handler = a6xx_fault_handler, 2689 2690 }; 2690 2691 2691 2692 const struct adreno_gpu_funcs a6xx_gmuwrapper_funcs = { ··· 2718 2717 .init = a6xx_gpu_init, 2719 2718 .get_timestamp = a6xx_get_timestamp, 2720 2719 .bus_halt = a6xx_bus_clear_pending_transactions, 2720 + .mmu_fault_handler = a6xx_fault_handler, 2721 2721 }; 2722 2722 2723 2723 const struct adreno_gpu_funcs a7xx_gpu_funcs = { ··· 2752 2750 .init = a6xx_gpu_init, 2753 2751 .get_timestamp = a6xx_gmu_get_timestamp, 2754 2752 .bus_halt = a6xx_bus_clear_pending_transactions, 2753 + .mmu_fault_handler = a6xx_fault_handler, 2755 2754 };
+1
drivers/gpu/drm/msm/adreno/adreno_gpu.h
··· 78 78 struct msm_gpu *(*init)(struct drm_device *dev); 79 79 int (*get_timestamp)(struct msm_gpu *gpu, uint64_t *value); 80 80 void (*bus_halt)(struct adreno_gpu *adreno_gpu, bool gx_off); 81 + int (*mmu_fault_handler)(void *arg, unsigned long iova, int flags, void *data); 81 82 }; 82 83 83 84 struct adreno_reglist {