lkml.org 
[lkml]   [2021]   [Jun]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH v5 0/5] iommu/arm-smmu: adreno-smmu page fault handling
    Date
    From: Rob Clark <robdclark@chromium.org>

    This picks up an earlier series[1] from Jordan, and adds additional
    support needed to generate GPU devcore dumps on iova faults. Original
    description:

    This is a stack to add an Adreno GPU specific handler for pagefaults. The first
    patch starts by wiring up report_iommu_fault for arm-smmu. The next patch adds
    a adreno-smmu-priv function hook to capture a handful of important debugging
    registers such as TTBR0, CONTEXTIDR, FSYNR0 and others. This is used by the
    third patch to print more detailed information on page fault such as the TTBR0
    for the pagetable that caused the fault and the source of the fault as
    determined by a combination of the FSYNR1 register and an internal GPU
    register.

    This code provides a solid base that we can expand on later for even more
    extensive GPU side page fault debugging capabilities.

    v5: [Rob] Use RBBM_STATUS3.SMMU_STALLED_ON_FAULT to detect case where
    GPU snapshotting needs to avoid crashdumper, and check the
    RBBM_STATUS3.SMMU_STALLED_ON_FAULT in GPU hang irq paths
    v4: [Rob] Add support to stall SMMU on fault, and let the GPU driver
    resume translation after it has had a chance to snapshot the GPUs
    state
    v3: Always clear FSR even if the target driver is going to handle resume
    v2: Fix comment wording and function pointer check per Rob Clark

    [1] https://lore.kernel.org/dri-devel/20210225175135.91922-1-jcrouse@codeaurora.org/

    Jordan Crouse (3):
    iommu/arm-smmu: Add support for driver IOMMU fault handlers
    iommu/arm-smmu-qcom: Add an adreno-smmu-priv callback to get pagefault
    info
    drm/msm: Improve the a6xx page fault handler

    Rob Clark (2):
    iommu/arm-smmu-qcom: Add stall support
    drm/msm: devcoredump iommu fault support

    drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 23 +++-
    drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 110 +++++++++++++++++++-
    drivers/gpu/drm/msm/adreno/a6xx_gpu_state.c | 42 ++++++--
    drivers/gpu/drm/msm/adreno/adreno_gpu.c | 15 +++
    drivers/gpu/drm/msm/msm_gem.h | 1 +
    drivers/gpu/drm/msm/msm_gem_submit.c | 1 +
    drivers/gpu/drm/msm/msm_gpu.c | 48 +++++++++
    drivers/gpu/drm/msm/msm_gpu.h | 17 +++
    drivers/gpu/drm/msm/msm_gpummu.c | 5 +
    drivers/gpu/drm/msm/msm_iommu.c | 22 +++-
    drivers/gpu/drm/msm/msm_mmu.h | 5 +-
    drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c | 50 +++++++++
    drivers/iommu/arm/arm-smmu/arm-smmu.c | 9 +-
    drivers/iommu/arm/arm-smmu/arm-smmu.h | 2 +
    include/linux/adreno-smmu-priv.h | 38 ++++++-
    15 files changed, 367 insertions(+), 21 deletions(-)

    --
    2.31.1

    \
     
     \ /
      Last update: 2021-06-10 23:45    [W:2.838 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site